Skip to content

REST Outbound Connector

The REST outbound connector is available under <host>:<eddie.management.server.port>/outbound-connectors/rest.

ParameterTypeDefaultDescription
outbound-connector.rest.enabledtrue or falsefalseEnables or disables the REST outbound connector.
outbound-connector.rest.retention-timeISO-8601 for durationsPT48HSets how long the outbound connector retains the messages.
outbound-connector.rest.retention-removalSpring Cron Syntax0 0 * * * *Sets the interval in which messages are deleted.
outbound-connector.rest.oauth2.enabledtrue or falsefalseEnables security via an oauth 2.0 server. If this property is set, the outbound-connector.rest.oauth2.issuer-url has also be set.
outbound-connector.rest.oauth2.issuer-urlURISets the issuer URL of the oauth 2.0 server, for keycloak this is the realm URL, for example http://localhost:8888/realms/master. Only OAuth 2.0 with JWT is supported.
outbound-connector.rest.oauth2.scopes.enabledtrue or falsefalseAdds finely grained scopes to the REST endpoints, see the Scopes section for more information. The access token used for each endpoint requires to contain the required scope, to be able to read or write to the endpoint. This property may only be used in combination with outbound-connector.rest.oauth2.enabled.
properties
outbound-connector.rest.enabled=true
outbound-connector.rest.retention-time=PT48H
outbound-connector.rest.retention-removal=0 0 * * * *
outbound-connector.rest.oauth2.enabled=false
outbound-connector.rest.oauth2.issuer-url=http://localhost:8888/realms/EDDIE
yaml
outbound-connector:
  rest:
    enabled: true
    retention-time: PT48H
    retention-removal: 0 0 * * * *
    oauth2:
      enabled: false
      issuer-url: http://localhost:8888/realms/EDDIE
dotenv
OUTBOUND_CONNECTOR_REST_ENABLED=true
OUTBOUND_CONNECTOR_REST_RETENTION_TIME=PT48H
OUTBOUND_CONNECTOR_REST_RETENTION_REMOVAL=0 0 * * * *
OUTBOUND_CONNECTOR_REST_OAUTH2_ENABLED=false
OUTBOUND_CONNECTOR_REST_OAUTH2_ISSUER_URL=http://localhost:8888/realms/EDDIE

Endpoints

The endpoints are documented via OpenAPI and are made available during the runtime under <host>:<eddie.management.server.port>/outbound-connectors/rest/v3/api-docs. They can be seen via the hosted swagger UI under <host>:<server.port>/data-needs/swagger-ui/index.html. While OpenAPI provides examples and schemas, it is recommended to use the client library to parse CIM documents, since the OpenAPI generated schemas are not true to the actual schema.

http
### GET connection status messages as json
GET http://localhost:9090/outbound-connectors/rest/agnostic/connection-status-messages
Accept: application/json
Authorization: Bearer {{$auth.token("keycloak")}}

### GET connection status messages as xml
GET http://localhost:9090/outbound-connectors/rest/agnostic/connection-status-messages
Accept: application/xml
Authorization: Bearer {{$auth.token("keycloak")}}

### Get connection status messages as event stream
GET http://localhost:9090/outbound-connectors/rest/agnostic/connection-status-messages
Accept: text/event-stream
Authorization: Bearer {{$auth.token("keycloak")}}

### GET raw data messages as json
GET http://localhost:9090/outbound-connectors/rest/agnostic/raw-data-messages
Accept: application/json
Authorization: Bearer {{$auth.token("keycloak")}}

### GET raw data messages as xml
GET http://localhost:9090/outbound-connectors/rest/agnostic/raw-data-messages
Accept: application/xml
Authorization: Bearer {{$auth.token("keycloak")}}

### Get raw data messages as event stream
GET http://localhost:9090/outbound-connectors/rest/agnostic/raw-data-messages
Accept: text/event-stream
Authorization: Bearer {{$auth.token("keycloak")}}

### Get validated historical data market documents as json
GET http://localhost:9090/outbound-connectors/rest/cim_0_82/validated-historical-data-md
Accept: application/json
Authorization: Bearer {{$auth.token("keycloak")}}

### Get validated historical data market documents as xml
GET http://localhost:9090/outbound-connectors/rest/cim_0_82/validated-historical-data-md
Accept: application/xml
Authorization: Bearer {{$auth.token("keycloak")}}

### Get validated historical data market documents as event stream
GET http://localhost:9090/outbound-connectors/rest/cim_0_82/validated-historical-data-md
Accept: text/event-stream
Authorization: Bearer {{$auth.token("keycloak")}}

### Get validated historical data market documents as json V1.04
GET http://localhost:9090/outbound-connectors/rest/cim_1_04/validated-historical-data-md
Accept: application/json
Authorization: Bearer {{$auth.token("keycloak")}}

### Get validated historical data market documents as xml V1.04
GET http://localhost:9090/outbound-connectors/rest/cim_1_04/validated-historical-data-md
Accept: application/xml
Authorization: Bearer {{$auth.token("keycloak")}}

### Get validated historical data market documents as event stream V1.04
GET http://localhost:9090/outbound-connectors/rest/cim_1_04/validated-historical-data-md
Accept: text/event-stream
Authorization: Bearer {{$auth.token("keycloak")}}

### Get near real-time data market documents as json
GET http://localhost:9090/outbound-connectors/rest/cim_1_04/near-real-time-data-md
Accept: application/json
Authorization: Bearer {{$auth.token("keycloak")}}

### Get near real-time data market documents as xml
GET http://localhost:9090/outbound-connectors/rest/cim_1_04/near-real-time-data-md
Accept: application/xml
Authorization: Bearer {{$auth.token("keycloak")}}

### Get near real-time data market documents as event stream
GET http://localhost:9090/outbound-connectors/rest/cim_1_04/near-real-time-data-md
Accept: text/event-stream
Authorization: Bearer {{$auth.token("keycloak")}}

### Get permission market documents as json
GET http://localhost:9090/outbound-connectors/rest/cim_0_82/permission-md
Accept: application/json
Authorization: Bearer {{$auth.token("keycloak")}}

### Get permission market documents as xml
GET http://localhost:9090/outbound-connectors/rest/cim_0_82/permission-md
Accept: application/xml
Authorization: Bearer {{$auth.token("keycloak")}}

### Get permission market documents as event stream
GET http://localhost:9090/outbound-connectors/rest/cim_0_82/permission-md
Accept: text/event-stream
Authorization: Bearer {{$auth.token("keycloak")}}

### Get accounting point data market documents as json
GET http://localhost:9090/outbound-connectors/rest/cim_0_82/accounting-point-data-md
Accept: application/json
Authorization: Bearer {{$auth.token("keycloak")}}

### Get accounting point data market documents as xml
GET http://localhost:9090/outbound-connectors/rest/cim_0_82/accounting-point-data-md
Accept: application/xml
Authorization: Bearer {{$auth.token("keycloak")}}

### Get accounting point data market documents as event stream
GET http://localhost:9090/outbound-connectors/rest/cim_0_82/accounting-point-data-md
Accept: text/event-stream
Authorization: Bearer {{$auth.token("keycloak")}}

# Termination Market Documents

### POST termination market document as json
@permissionId=REPLACE_ME
@region-connector-id=REPLACE_ME
POST http://localhost:9090/outbound-connectors/rest/cim_0_82/termination-md
Content-Type: application/json
Authorization: Bearer {{$auth.token("keycloak")}}

{
  "Permission_MarketDocument": {
    "mRID": "{{permissionId}}",
    "type": "Z01",
    "PermissionList": {
      "Permission": [
        {
          "MktActivityRecordList": {
            "MktActivityRecord": [
              {
                "type": "{{region-connector-id}}"
              }
            ]
          },
          "ReasonList": {
            "Reason": [
              {
                "code": "Z03"
              }
            ]
          }
        }
      ]
    }
  }
}


### POST termination market document as xml
POST http://localhost:9090/outbound-connectors/rest/cim_0_82/termination-md
Content-Type: application/xml
Authorization: Bearer {{$auth.token("keycloak")}}

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Permission_Envelope xmlns="http://www.eddie.energy/Consent/EDD02/20240125">
    <Permission_MarketDocument>
        <mRID>{{permissionId}}</mRID>
        <type>Z01</type>
        <PermissionList>
            <Permission>
                <MktActivityRecordList>
                    <MktActivityRecord>
                        <type>{{region-connector-id}}</type>
                    </MktActivityRecord>
                </MktActivityRecordList>
                <ReasonList>
                    <Reason>
                        <code>Z03</code>
                    </Reason>
                </ReasonList>
            </Permission>
        </PermissionList>
    </Permission_MarketDocument>
</Permission_Envelope>

### POST Redistribution Transaction Request as JSON
POST http://localhost:9090/outbound-connectors/rest/cim_0_91_08/redistribution-transaction-rd
Accept: application/json
Content-Type: application/json
Authorization: Bearer {{$auth.token("keycloak")}}

{
  "messageDocumentHeader.creationDateTime": "2025-01-03T00:00:00Z",
  "messageDocumentHeader.metaInformation.permissionId": "permissionId",
  "messageDocumentHeader.metaInformation.region.connector": "rc-id",
  "marketDocument.period.timeInterval": {
    "start": "2025-01-01T01:01Z",
    "end": "2025-01-02T00:00Z"
  }
}

### POST Redistribution Transaction Request as XML
POST http://localhost:9090/outbound-connectors/rest/cim_0_91_08/redistribution-transaction-rd
Accept: application/json
Content-Type: application/xml
Authorization: Bearer {{$auth.token("keycloak")}}

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns4:RTR_Envelope
        xmlns:ns4="https://eddie.energy/CIM/RTR">
    <ns4:messageDocumentHeader.creationDateTime>2025-01-03T00:00:00Z</ns4:messageDocumentHeader.creationDateTime>
    <ns4:messageDocumentHeader.metaInformation.permissionId>permissionId
    </ns4:messageDocumentHeader.metaInformation.permissionId>
    <ns4:messageDocumentHeader.metaInformation.region.connector>rc-id
    </ns4:messageDocumentHeader.metaInformation.region.connector>
    <ns4:marketDocument.period.timeInterval>
        <ns4:start>2025-01-01T01:01Z</ns4:start>
        <ns4:end>2025-01-02T00:00Z</ns4:end>
    </ns4:marketDocument.period.timeInterval>
</ns4:RTR_Envelope>

Scopes

The following table lists all the endpoints and its required scopes, if the setting is enabled.

EndpointScope
/agnostic/connection-status-messagesagnostic-connection-status-messages:read
/agnostic/raw-data-messagesagnostic-raw-data-messages:read
/cim_0_82/permission-mdcim-permission-md:read
/cim_0_82/accounting-point-data-mdcim-accounting-point-data-md:read
/cim_0_82/validated-historical-data-mdcim-validated-historical-data-md:read
/cim_1_04/validated-historical-data-mdcim-validated-historical-data-md:read
/cim_1_04/near-real-time-data-mdcim-near-real-time-data-md:read
/cim_0_82/termination-mdcim-termination-md:write
/cim_0_91_08/redistribution-transaction-rdcim-redistribution-transaction-rd:write