Skip to content

Integrations

Existing integrations

ETRM systems we integrate directly through APIs we exposed to them:

  • Pioneer
  • Allegro

Other ETRM systems we integrate through middleware or data import / export jobs

  • Robotron
  • Endur
  • FIS
  • Contigo
  • Triple Point

Our standard set of APIs

What we as EGSSIS provide to SAP / ETRM systems to integrate with us:

As more and more parties want to integrate their platforms in a near real-time manner, we would like to provide more modern options:

  • RESTful APIs to connect your C/ETRM platform to send your:
  • Trading info
  • Capacity info
  • Web hooks to keep our clients / partners / customers systems tuned with our updates on market positions, metering data / we received in our components

For the moment we have done several integrations with different ETRM systems via APIs we use from them and APIs we provide to them.

We are providing a set of APIs which are generic for different ETRM system, these APIs are capable to do the following:

  • Book trades
  • Book capacities

And currently we are extending them with providing information to our clients with our contract / time series information.

So, to conclude, we would love to integrate with new parties like you to make our software even more connected then today.

Architecture

As you can see in the design EGSSIS does a lot of integrations today, these integrations are provided by different protocols and message formats

  • AS2/AS4 messages for market communications
  • RESTful APIs to provide integrations with SAP / ETRM / message broker systems
  • sFTP / email for parties who don't support AS2/AS4 yet.
  • EventHub / Webhook integrations where changes of our timeseries information will be pushed.

Api Security

For our server to server integrations with customers we configure a client in our Identity solution to allow making communication with the gateway API's The OAuth2 flow for getting an access token will be Client Credentials Grant

We will provide you with a set of credentials so you can request an access token.

Each call towards our gateway API will need to have an Authorization header.


POST /gateway/api/trade HTTP/1.1
Host: acceptanceapi.egssis.com
Content-Type: application/json
Authorization: Bearer <here comes the access token>

Trade API for Border / Hub / Customer contracts

To sent positions from ETRM system towards EGSSIS can be done via

https://host/gateway/api/trade

Some more context on the json request payload:

"contractType": [required] enum with the following values (
                    "Storage",
                    "Border",
                    "Transfer",
                    "Customer",
                    "Hub",
                    "Clearing",
                    "ProDoc",
                    "BioGas",
                    "Transit",
                    "Fake",
                    "MiniMut",
                    "ReportedDailyImbalance",
                    "Field",
                    "ImbalancePooling",
                    "BioInjection",
                    "CounterpartyCustomer")
"grid": [required] string (name of energy grid: for example NCG)
"zone": [required] string (edigascode of the location from: for example NCHB400121310000)
"location": [required] string (edigascode of the to location: for example 1210003)
"locationType": [required] enum, type of the location values can be: 
                    "Border",
                    "RegularBorder",
                    "IndustrialClient",
                    "PowerPlant",
                    "Field",
                    "Hub",
                    "Storage"),
"internalShipper": [optional] string (shippercode of EGSSIS customer: for examle NCHB400110400000),
"counterParty": [optional]  string (shippercode of counterparty: for example NCHB400110400032)
"hourlyTrade": [optional but must be available when daily is missing] array of  {
                    "utc": "2020-08-25T00:00:00Z",
                    "forecastOverridesQuantity": false,
                    "value": 0
                }
"dailyTrade": [optional but must be available when hourly is missing] array of  {
                    "utc": "2020-08-25T00:00:00Z",
                    "forecastOverridesQuantity": false,
                    "value": 0
                }

The body of the API should have following contract:

{
    "Trade": {
        "required": [
            "creationDate",
            "from"
        ],
        "type": "object",
        "properties": {
            "creationDate": {
                "format": "date-time",
                "minLength": 1,
                "type": "string"
            },
            "from": {
                "minLength": 1,
                "type": "string"
            },
            "contract": {
                "type": "array",
                "items": {
                    "$ref": "#/definitions/TradeContract"
                }
            }
        }
    },
    "TradeContract": {
        "required": [
            "grid",
            "contractType",
            "zone",
            "location",
            "locationType"
        ],
        "type": "object",
        "properties": {
            "grid": {
                "minLength": 1,
                "type": "string"
            },
            "contractType": {
                "minLength": 1,
                "enum": [
                    "Unknown",
                    "Storage",
                    "Border",
                    "Transfer",
                    "Customer",
                    "Hub",
                    "Clearing",
                    "ProDoc",
                    "BioGas",
                    "Transit",
                    "Fake",
                    "MiniMut",
                    "ReportedDailyImbalance",
                    "Field",
                    "ImbalancePooling",
                    "BioInjection",
                    "CounterpartyCustomer"
                ],
                "type": "string"
            },
            "zone": {
                "minLength": 1,
                "type": "string"
            },
            "location": {
                "minLength": 1,
                "type": "string"
            },
            "locationType": {
                "minLength": 1,
                "type": "string"
            },
            "internalShipper": {
                "type": "string"
            },
            "counterparty": {
                "type": "string"
            },
            "counterpartyContractReference": {
                "type": "string"
            },
            "marketPartyId": {
                "type": "string"
            },
            "hourlyTrade": {
                "type": "array",
                "items": {
                    "$ref": "#/definitions/HourlyTrade"
                }
            },
            "dailyTrade": {
                "type": "array",
                "items": {
                    "$ref": "#/definitions/DailyTrade"
                }
            }
        }
    },
    "HourlyTrade": {
        "required": [
            "utc",
            "value"
        ],
        "type": "object",
        "properties": {
            "utc": {
                "format": "date-time",
                "minLength": 1,
                "type": "string"
            },
            "forecastOverridesQuantity": {
                "type": "boolean"
            },
            "value": {
                "format": "double",
                "type": "number"
            }
        }
    },
    "DailyTrade": {
        "required": [
            "gasDay",
            "value"
        ],
        "type": "object",
        "properties": {
            "gasDay": {
                "format": "date-time",
                "minLength": 1,
                "type": "string"
            },
            "forecastOverridesQuantity": {
                "type": "boolean"
            },
            "startHour": {
                "format": "int32",
                "maximum": 24,
                "minimum": 0,
                "type": "integer"
            },
            "value": {
                "format": "double",
                "type": "number"
            }
        }
    }
}

Trade API for Commodity contracts

To sent positions from ETRM system towards EGSSIS can be done via

https://host/gateway/api/trade

Some more context on the json request payload:

"type": [required] enum with the following values (Scheduling/Reqest/ReqRes/Prevalidation)
"location": [required] string (name of location: for example TTF)
"externalShipperCode": [required] string (shippercode counterparty: for example GSBERGERMEER)
"contractReference": [required] string (to be agreed with counterparty: for example EEM_TTF_Hedges_RWE_DayAhead)
"internalShipperCode": [optional] string (shippercode of EGSSIS customer: for examle EON),
"recipientCode": [optional] string (edigascode of recipient: for example GSBERGERMEER),
"issuerCode": [optional] string (eic/edigascode of EGSSIS customer: for example EON)
"subContractReference": [optional] string (can be used to split up a single contract),
"hourlyTrade": [optional but must be available when daily is missing] array of  {
                    "utc": "2020-08-25T00:00:00Z",
                    "forecastOverridesQuantity": false,
                    "value": 0
                }
"dailyTrade": [optional but must be available when hourly is missing] array of  {
                    "utc": "2020-08-25T00:00:00Z",
                    "forecastOverridesQuantity": false,
                    "value": 0
                }

The body of the API should have following contract:

{
    "Trade": {
        "required": [
            "creationDate",
            "from"
        ],
        "type": "object",
        "properties": {
            "creationDate": {
                "format": "date-time",
                "minLength": 1,
                "type": "string"
            },
            "from": {
                "minLength": 1,
                "type": "string"
            },            
            "commodity": {
                "type": "array",
                "items": {
                    "$ref": "#/definitions/CommodityContract"
                }
            }
        }
    },    
    "CommodityContract": {
        "required": [
            "type",
            "location",
            "externalShipperCode",
            "contractReference"
        ],
        "type": "object",
        "properties": {
            "type": {
                "minLength": 1,
                "enum": [
                    "Unknown",
                    "Scheduling",
                    "Reqest",
                    "ReqRes",
                    "Prevalidation"
                ],
                "type": "string"
            },
            "location": {
                "minLength": 1,
                "type": "string"
            },
            "internalShipperCode": {
                "type": "string"
            },
            "externalShipperCode": {
                "minLength": 1,
                "type": "string"
            },
            "contractReference": {
                "minLength": 1,
                "type": "string"
            },
            "recipientCode": {
                "type": "string"
            },
            "issuerCode": {
                "type": "string"
            },
            "subContractReference": {
                "type": "string"
            },
            "hourlyTrade": {
                "type": "array",
                "items": {
                    "$ref": "#/definitions/HourlyTrade"
                }
            },
            "dailyTrade": {
                "type": "array",
                "items": {
                    "$ref": "#/definitions/DailyTrade"
                }
            }
        }
    },
    "HourlyTrade": {
        "required": [
            "utc",
            "value"
        ],
        "type": "object",
        "properties": {
            "utc": {
                "format": "date-time",
                "minLength": 1,
                "type": "string"
            },
            "forecastOverridesQuantity": {
                "type": "boolean"
            },
            "value": {
                "format": "double",
                "type": "number"
            }
        }
    },
    "DailyTrade": {
        "required": [
            "gasDay",
            "value"
        ],
        "type": "object",
        "properties": {
            "gasDay": {
                "format": "date-time",
                "minLength": 1,
                "type": "string"
            },
            "forecastOverridesQuantity": {
                "type": "boolean"
            },
            "startHour": {
                "format": "int32",
                "maximum": 24,
                "minimum": 0,
                "type": "integer"
            },
            "value": {
                "format": "double",
                "type": "number"
            }
        }
    }
}

Capacity API

Swagger Gateway API specs

{
    "swagger": "2.0",
    "info": {
        "version": "v1",
        "title": "Egssis.EgssPort.Gateway.Api"
    },
    "host": "acceptanceapi.egssis.com",
    "schemes": [
        "http"
    ],
    "paths": {
        "/api/capacity": {
            "post": {
                "tags": [
                    "Capacity"
                ],
                "operationId": "Capacity_HandleCapacity",
                "consumes": [
                    "application/json",
                    "text/json",
                    "multipart/form-data",
                    "application/x-www-form-urlencoded"
                ],
                "produces": [
                    "application/json",
                    "text/json",
                    "multipart/form-data"
                ],
                "parameters": [
                    {
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/CapacityRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/OkResult"
                        }
                    },
                    "400": {
                        "description": "The request was in a bad format.",
                        "schema": {
                            "$ref": "#/definitions/BadRequestErrorMessageResult"
                        }
                    },
                    "500": {
                        "description": "Something has gone wrong.",
                        "schema": {
                            "$ref": "#/definitions/ExceptionResult"
                        }
                    }
                },
                "security": [
                    {
                        "oauth2": [
                            "egssPortGatewayApi"
                        ]
                    }
                ]
            }
        },
        "/api/messages/dcs/{date}": {
            "get": {
                "tags": [
                    "Messages"
                ],
                "operationId": "Messages_FindDcs",
                "consumes": [],
                "produces": [
                    "application/json",
                    "text/json",
                    "multipart/form-data"
                ],
                "parameters": [
                    {
                        "name": "date",
                        "in": "path",
                        "required": true,
                        "type": "string",
                        "format": "date-time"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/OkResult"
                        }
                    },
                    "400": {
                        "description": "The request was in a bad format.",
                        "schema": {
                            "$ref": "#/definitions/BadRequestErrorMessageResult"
                        }
                    },
                    "500": {
                        "description": "Something has gone wrong.",
                        "schema": {
                            "$ref": "#/definitions/ExceptionResult"
                        }
                    }
                },
                "security": [
                    {
                        "oauth2": [
                            "egssPortGatewayApi"
                        ]
                    }
                ]
            }
        },
        "/api/messages/availy/{date}": {
            "get": {
                "tags": [
                    "Messages"
                ],
                "operationId": "Messages_FindAvaily",
                "consumes": [],
                "produces": [
                    "application/json",
                    "text/json",
                    "multipart/form-data"
                ],
                "parameters": [
                    {
                        "name": "date",
                        "in": "path",
                        "required": true,
                        "type": "string",
                        "format": "date-time"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/OkResult"
                        }
                    },
                    "400": {
                        "description": "The request was in a bad format.",
                        "schema": {
                            "$ref": "#/definitions/BadRequestErrorMessageResult"
                        }
                    },
                    "500": {
                        "description": "Something has gone wrong.",
                        "schema": {
                            "$ref": "#/definitions/ExceptionResult"
                        }
                    }
                },
                "security": [
                    {
                        "oauth2": [
                            "egssPortGatewayApi"
                        ]
                    }
                ]
            }
        },
        "/api/messages/dars/{date}": {
            "get": {
                "tags": [
                    "Messages"
                ],
                "operationId": "Messages_FindDars",
                "consumes": [],
                "produces": [
                    "application/json",
                    "text/json",
                    "multipart/form-data"
                ],
                "parameters": [
                    {
                        "name": "date",
                        "in": "path",
                        "required": true,
                        "type": "string",
                        "format": "date-time"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/OkResult"
                        }
                    },
                    "400": {
                        "description": "The request was in a bad format.",
                        "schema": {
                            "$ref": "#/definitions/BadRequestErrorMessageResult"
                        }
                    },
                    "500": {
                        "description": "Something has gone wrong.",
                        "schema": {
                            "$ref": "#/definitions/ExceptionResult"
                        }
                    }
                },
                "security": [
                    {
                        "oauth2": [
                            "egssPortGatewayApi"
                        ]
                    }
                ]
            }
        },
        "/api/trade": {
            "post": {
                "tags": [
                    "Trade"
                ],
                "operationId": "Trade_HandleTrade",
                "consumes": [
                    "application/json",
                    "text/json",
                    "multipart/form-data",
                    "application/x-www-form-urlencoded"
                ],
                "produces": [
                    "application/json",
                    "text/json",
                    "multipart/form-data"
                ],
                "parameters": [
                    {
                        "name": "trade",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/Trade"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/OkResult"
                        }
                    },
                    "400": {
                        "description": "The request was in a bad format.",
                        "schema": {
                            "$ref": "#/definitions/BadRequestErrorMessageResult"
                        }
                    },
                    "500": {
                        "description": "Something has gone wrong.",
                        "schema": {
                            "$ref": "#/definitions/ExceptionResult"
                        }
                    }
                },
                "security": [
                    {
                        "oauth2": [
                            "egssPortGatewayApi"
                        ]
                    }
                ]
            }
        }
    },
    "definitions": {
        "CapacityRequest": {
            "type": "object",
            "properties": {
                "capacities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Capacity"
                    }
                }
            }
        },
        "Capacity": {
            "required": [
                "zone",
                "location",
                "locationType",
                "startDate",
                "endDate",
                "direction",
                "value",
                "type"
            ],
            "type": "object",
            "properties": {
                "zone": {
                    "minLength": 1,
                    "type": "string"
                },
                "location": {
                    "minLength": 1,
                    "type": "string"
                },
                "locationType": {
                    "minLength": 1,
                    "type": "string"
                },
                "startDate": {
                    "format": "date-time",
                    "minLength": 1,
                    "type": "string"
                },
                "endDate": {
                    "format": "date-time",
                    "minLength": 1,
                    "type": "string"
                },
                "direction": {
                    "minLength": 1,
                    "enum": [
                        "Entry",
                        "Exit"
                    ],
                    "type": "string"
                },
                "value": {
                    "format": "int32",
                    "minLength": 1,
                    "type": "integer"
                },
                "type": {
                    "minLength": 1,
                    "enum": [
                        "Interruptible",
                        "AdditionalInterruptible",
                        "Operational",
                        "Conditional",
                        "Firm",
                        "FuelGasThreshold"
                    ],
                    "type": "string"
                },
                "granularity": {
                    "enum": [
                        "Hourly",
                        "Daily"
                    ],
                    "type": "string"
                },
                "unit": {
                    "enum": [
                        "m3",
                        "kWh"
                    ],
                    "type": "string"
                },
                "uniqueId": {
                    "type": "string"
                },
                "bookingReference": {
                    "type": "string"
                },
                "startTime": {
                    "format": "int32",
                    "maximum": 25,
                    "minimum": 0,
                    "type": "integer"
                }
            }
        },
        "OkResult": {
            "type": "object",
            "properties": {
                "request": {
                    "type": "object",
                    "readOnly": true
                }
            }
        },
        "BadRequestErrorMessageResult": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string",
                    "readOnly": true
                },
                "contentNegotiator": {
                    "$ref": "#/definitions/IContentNegotiator",
                    "readOnly": true
                },
                "request": {
                    "type": "object",
                    "readOnly": true
                },
                "formatters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/MediaTypeFormatter"
                    },
                    "readOnly": true
                }
            }
        },
        "IContentNegotiator": {
            "type": "object",
            "properties": {}
        },
        "MediaTypeFormatter": {
            "type": "object",
            "properties": {
                "supportedMediaTypes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/MediaTypeHeaderValue"
                    },
                    "readOnly": true
                },
                "supportedEncodings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Encoding"
                    },
                    "readOnly": true
                },
                "mediaTypeMappings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/MediaTypeMapping"
                    },
                    "readOnly": true
                },
                "requiredMemberSelector": {
                    "$ref": "#/definitions/IRequiredMemberSelector"
                }
            }
        },
        "MediaTypeHeaderValue": {
            "type": "object",
            "properties": {
                "charSet": {
                    "type": "string"
                },
                "parameters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/NameValueHeaderValue"
                    },
                    "readOnly": true
                },
                "mediaType": {
                    "type": "string"
                }
            }
        },
        "Encoding": {
            "type": "object",
            "properties": {
                "bodyName": {
                    "type": "string",
                    "readOnly": true
                },
                "encodingName": {
                    "type": "string",
                    "readOnly": true
                },
                "headerName": {
                    "type": "string",
                    "readOnly": true
                },
                "webName": {
                    "type": "string",
                    "readOnly": true
                },
                "windowsCodePage": {
                    "format": "int32",
                    "type": "integer",
                    "readOnly": true
                },
                "isBrowserDisplay": {
                    "type": "boolean",
                    "readOnly": true
                },
                "isBrowserSave": {
                    "type": "boolean",
                    "readOnly": true
                },
                "isMailNewsDisplay": {
                    "type": "boolean",
                    "readOnly": true
                },
                "isMailNewsSave": {
                    "type": "boolean",
                    "readOnly": true
                },
                "isSingleByte": {
                    "type": "boolean",
                    "readOnly": true
                },
                "encoderFallback": {
                    "$ref": "#/definitions/EncoderFallback"
                },
                "decoderFallback": {
                    "$ref": "#/definitions/DecoderFallback"
                },
                "isReadOnly": {
                    "type": "boolean",
                    "readOnly": true
                },
                "codePage": {
                    "format": "int32",
                    "type": "integer",
                    "readOnly": true
                }
            }
        },
        "MediaTypeMapping": {
            "type": "object",
            "properties": {
                "mediaType": {
                    "$ref": "#/definitions/MediaTypeHeaderValue",
                    "readOnly": true
                }
            }
        },
        "IRequiredMemberSelector": {
            "type": "object",
            "properties": {}
        },
        "NameValueHeaderValue": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "readOnly": true
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "EncoderFallback": {
            "type": "object",
            "properties": {
                "maxCharCount": {
                    "format": "int32",
                    "type": "integer",
                    "readOnly": true
                }
            }
        },
        "DecoderFallback": {
            "type": "object",
            "properties": {
                "maxCharCount": {
                    "format": "int32",
                    "type": "integer",
                    "readOnly": true
                }
            }
        },
        "ExceptionResult": {
            "type": "object",
            "properties": {
                "exception": {
                    "type": "object",
                    "readOnly": true
                },
                "includeErrorDetail": {
                    "type": "boolean",
                    "readOnly": true
                },
                "contentNegotiator": {
                    "$ref": "#/definitions/IContentNegotiator",
                    "readOnly": true
                },
                "request": {
                    "type": "object",
                    "readOnly": true
                },
                "formatters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/MediaTypeFormatter"
                    },
                    "readOnly": true
                }
            }
        },
        "Trade": {
            "required": [
                "creationDate",
                "from"
            ],
            "type": "object",
            "properties": {
                "creationDate": {
                    "format": "date-time",
                    "minLength": 1,
                    "type": "string"
                },
                "from": {
                    "minLength": 1,
                    "type": "string"
                },
                "contract": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/TradeContract"
                    }
                },
                "commodity": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/CommodityContract"
                    }
                }
            }
        },
        "TradeContract": {
            "required": [
                "grid",
                "contractType",
                "zone",
                "location",
                "locationType"
            ],
            "type": "object",
            "properties": {
                "grid": {
                    "minLength": 1,
                    "type": "string"
                },
                "contractType": {
                    "minLength": 1,
                    "enum": [
                        "Unknown",
                        "Storage",
                        "Border",
                        "Transfer",
                        "Customer",
                        "Hub",
                        "Clearing",
                        "ProDoc",
                        "BioGas",
                        "Transit",
                        "Fake",
                        "MiniMut",
                        "ReportedDailyImbalance",
                        "Field",
                        "ImbalancePooling",
                        "BioInjection",
                        "CounterpartyCustomer"
                    ],
                    "type": "string"
                },
                "zone": {
                    "minLength": 1,
                    "type": "string"
                },
                "location": {
                    "minLength": 1,
                    "type": "string"
                },
                "locationType": {
                    "minLength": 1,
                    "type": "string"
                },
                "internalShipper": {
                    "type": "string"
                },
                "counterparty": {
                    "type": "string"
                },
                "counterpartyContractReference": {
                    "type": "string"
                },
                "marketPartyId": {
                    "type": "string"
                },
                "hourlyTrade": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/HourlyTrade"
                    }
                },
                "dailyTrade": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/DailyTrade"
                    }
                }
            }
        },
        "CommodityContract": {
            "required": [
                "type",
                "location",
                "externalShipperCode",
                "contractReference"
            ],
            "type": "object",
            "properties": {
                "type": {
                    "minLength": 1,
                    "enum": [
                        "Unknown",
                        "Scheduling",
                        "Reqest",
                        "ReqRes",
                        "Prevalidation"
                    ],
                    "type": "string"
                },
                "location": {
                    "minLength": 1,
                    "type": "string"
                },
                "internalShipperCode": {
                    "type": "string"
                },
                "externalShipperCode": {
                    "minLength": 1,
                    "type": "string"
                },
                "contractReference": {
                    "minLength": 1,
                    "type": "string"
                },
                "recipientCode": {
                    "type": "string"
                },
                "issuerCode": {
                    "type": "string"
                },
                "subContractReference": {
                    "type": "string"
                },
                "hourlyTrade": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/HourlyTrade"
                    }
                },
                "dailyTrade": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/DailyTrade"
                    }
                }
            }
        },
        "HourlyTrade": {
            "required": [
                "utc",
                "value"
            ],
            "type": "object",
            "properties": {
                "utc": {
                    "format": "date-time",
                    "minLength": 1,
                    "type": "string"
                },
                "forecastOverridesQuantity": {
                    "type": "boolean"
                },
                "value": {
                    "format": "double",
                    "type": "number"
                }
            }
        },
        "DailyTrade": {
            "required": [
                "gasDay",
                "value"
            ],
            "type": "object",
            "properties": {
                "gasDay": {
                    "format": "date-time",
                    "minLength": 1,
                    "type": "string"
                },
                "forecastOverridesQuantity": {
                    "type": "boolean"
                },
                "startHour": {
                    "format": "int32",
                    "maximum": 24,
                    "minimum": 0,
                    "type": "integer"
                },
                "value": {
                    "format": "double",
                    "type": "number"
                }
            }
        }
    },
    "securityDefinitions": {
        "oauth2": {
            "type": "oauth2",
            "description": "OAuth2 Implicit Grant",
            "flow": "application",
            "authorizationUrl": "",
            "tokenUrl": "",
            "scopes": {
                "egssPortGatewayApi": "gateway api access"
            }
        }
    }
}