openapi: 3.2.0 info: title: Elhub Notice API version: '1.0' description: 'Operations tagged notice across 2 of this provider''s published API definitions: elhub-flex-information-system-main-api-openapi.json, elhub-postgrest-openapi-3-0-openapi.json. Each path carries the servers of the definition it was published in.' servers: - url: https://test.flex.internal:6443/api/v1 description: Development - url: http://localhost:3000/ tags: - name: notice description: Notice paths: /notice: summary: Notice description: '' get: operationId: list_notice summary: List Notice tags: - notice parameters: - in: query schema: type: string pattern: ^eq\.[0-9]+$ example: eq.55 description: Unique surrogate identifier. name: id - in: query name: status schema: type: string example: eq.somestatus - in: query schema: type: string pattern: ^eq\.[0-9]+$ example: eq.55 description: Reference to the party targeted by the notice. name: party_id - in: query name: type schema: type: string example: eq.sometype description: The type of the notice. - description: Filtering Columns in: query name: select schema: type: string - description: Ordering in: query name: order schema: type: string - description: Limiting and Pagination in: query name: offset schema: type: string - description: Limiting and Pagination in: query name: limit schema: type: string - in: query name: embed schema: type: string description: Comma-separated list of related resources to embed in the response. - $ref: '#/components/parameters/ApiVersion' responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/notice_response' type: array description: OK '206': content: application/json: schema: items: $ref: '#/components/schemas/notice_response' type: array description: Partial Content '400': content: application/json: schema: $ref: '#/components/schemas/error_message' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/error_message' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/error_message' description: Forbidden '404': content: application/json: schema: oneOf: - $ref: '#/components/schemas/error_message' - $ref: '#/components/schemas/empty_object' description: Not Found '406': content: application/json: schema: $ref: '#/components/schemas/error_message' description: Not Acceptable '416': content: application/json: schema: $ref: '#/components/schemas/error_message' description: Range Not Satisfiable '500': content: application/json: schema: $ref: '#/components/schemas/error_message' description: Internal Server Error security: - bearerAuth: - read:data:notice - {} delete: parameters: - in: query name: id schema: type: string - in: query name: data schema: type: string - in: query name: party_id schema: type: string - in: query name: type schema: type: string - in: query name: status schema: type: string - in: query name: recorded_by schema: type: string - in: query name: source schema: type: string - in: query name: recorded_at schema: type: string - description: Preference in: header name: Prefer schema: enum: - return=representation - return=minimal - return=none type: string responses: '204': content: {} description: No Content tags: - notice summary: Delete notice x-summary-source: derived operationId: deleteNotice x-operation-id-source: derived patch: parameters: - in: query name: id schema: type: string - in: query name: data schema: type: string - in: query name: party_id schema: type: string - in: query name: type schema: type: string - in: query name: status schema: type: string - in: query name: recorded_by schema: type: string - in: query name: source schema: type: string - in: query name: recorded_at schema: type: string - description: Preference in: header name: Prefer schema: enum: - return=representation - return=minimal - return=none type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/notice' application/vnd.pgrst.object+json;nulls=stripped: schema: $ref: '#/components/schemas/notice' application/vnd.pgrst.object+json: schema: $ref: '#/components/schemas/notice' text/csv: schema: $ref: '#/components/schemas/notice' description: notice required: false responses: '204': content: {} description: No Content tags: - notice x-codegen-request-body-name: notice summary: Update notice x-summary-source: derived operationId: patchNotice x-operation-id-source: derived post: parameters: - description: Filtering Columns in: query name: select schema: type: string - description: Preference in: header name: Prefer schema: enum: - return=representation - return=minimal - return=none - resolution=ignore-duplicates - resolution=merge-duplicates type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/notice' application/vnd.pgrst.object+json;nulls=stripped: schema: $ref: '#/components/schemas/notice' application/vnd.pgrst.object+json: schema: $ref: '#/components/schemas/notice' text/csv: schema: $ref: '#/components/schemas/notice' description: notice required: false responses: '201': content: {} description: Created tags: - notice x-codegen-request-body-name: notice summary: Create notice x-summary-source: derived operationId: postNotice x-operation-id-source: derived servers: - url: https://test.flex.internal:6443/api/v1 description: Development /notice/{id}: summary: Notice - single description: '' parameters: - in: path name: id required: true schema: format: bigint type: integer example: 14 get: operationId: read_notice summary: Read Notice tags: - notice responses: '200': content: application/json: schema: $ref: '#/components/schemas/notice_response' description: OK links: party_id: operationId: read_party parameters: path.id: $response.body#/party_id description: The `party_id` value returned in the response can be used as the `id` parameter in `GET /party/{id}`. '400': content: application/json: schema: $ref: '#/components/schemas/error_message' description: Bad Request '401': content: application/json: schema: $ref: '#/components/schemas/error_message' description: Unauthorized '403': content: application/json: schema: $ref: '#/components/schemas/error_message' description: Forbidden '404': content: application/json: schema: oneOf: - $ref: '#/components/schemas/error_message' - $ref: '#/components/schemas/empty_object' description: Not Found '406': content: application/json: schema: $ref: '#/components/schemas/error_message' description: Not Acceptable '500': content: application/json: schema: $ref: '#/components/schemas/error_message' description: Internal Server Error security: - bearerAuth: - read:data:notice - {} parameters: - in: query name: embed schema: type: string description: Comma-separated list of related resources to embed in the response. - $ref: '#/components/parameters/ApiVersion' servers: - url: https://test.flex.internal:6443/api/v1 description: Development components: schemas: identity_response: summary: Response - Identity description: Response schema - Resource uniquely identifying a user by linking its entity and the potentially assumed party. type: object properties: id: description: Unique surrogate identifier. format: bigint type: integer readOnly: true example: 44 entity_id: description: Reference to the entity using the identity. format: bigint type: integer readOnly: true example: 3 entity_name: description: Name of the entity using the identity. format: text type: string readOnly: true example: Martin Andersen party_id: description: Reference to the party assumed by the entity. format: bigint type: integer readOnly: true nullable: true example: 17 party_name: description: Name of the party assumed by the entity. format: text type: string readOnly: true nullable: true example: Andersen SO entity: description: Embedded entity oneOf: - $ref: '#/components/schemas/entity_response' - type: 'null' nullable: true party: description: Embedded party oneOf: - $ref: '#/components/schemas/party_response' - type: 'null' nullable: true required: - id - entity_id - entity_name error_message: description: Error message returned from the API. type: object properties: code: type: string pattern: ^[A-Z0-9]+$ description: The error code. example: PT418 details: type: - string - 'null' description: Detailed information about the error. hint: type: - string - 'null' description: A hint to help resolve the error. message: type: string description: The error message. example: error required: - code - message entity_response: summary: Response - Entity description: 'Response schema - Entity - Natural or legal person An entity is a natural or legal person that can be a party in the Flexibility Information System. Example entity types: * Person * Organisation' type: object properties: id: description: 'Unique surrogate identifier. Note: This is a Primary Key.' format: bigint type: integer readOnly: true example: 14 business_id: description: The business identifier of the entity. Format depends on `business_id_type`. format: text type: string example: '13370000000' business_id_type: $ref: '#/components/schemas/entity_business_id_type' name: description: Name of the entity. Maximum 128 characters. format: text type: string example: John Smith type: $ref: '#/components/schemas/entity_type' recorded_at: description: When the resource was recorded (created or updated) in the system. format: date-time type: string readOnly: true example: '2023-12-31T23:59:00+00:00' recorded_by: description: The identity that recorded the resource. format: bigint type: integer readOnly: true example: 145 client: description: Embedded entity_client oneOf: - type: array items: $ref: '#/components/schemas/entity_client_response' - type: 'null' nullable: true party: description: Embedded party oneOf: - type: array items: $ref: '#/components/schemas/party_response' - type: 'null' nullable: true party_membership: description: Embedded party_membership oneOf: - type: array items: $ref: '#/components/schemas/party_membership_response' - type: 'null' nullable: true identity: description: Embedded identity oneOf: - type: array items: $ref: '#/components/schemas/identity_response' - type: 'null' nullable: true required: - id - business_id - business_id_type - name - type - recorded_at - recorded_by auth_scope: description: Authorization scopes. format: text type: string enum: - manage:attachment - manage:attachment:service_providing_group_product_application_attachment - manage:auth - manage:data - manage:data:accounting_point_grid_location - manage:data:controllable_unit - manage:data:controllable_unit_service_provider - manage:data:controllable_unit_suspension - manage:data:controllable_unit_suspension_comment - manage:data:entity - manage:data:entity_client - manage:data:notification - manage:data:party - manage:data:party_membership - manage:data:service_provider_product_application - manage:data:service_provider_product_application_comment - manage:data:service_provider_product_suspension - manage:data:service_provider_product_suspension_comment - manage:data:service_providing_group - manage:data:service_providing_group_grid_prequalification - manage:data:service_providing_group_grid_prequalification_comment - manage:data:service_providing_group_grid_suspension - manage:data:service_providing_group_grid_suspension_comment - manage:data:service_providing_group_membership - manage:data:service_providing_group_product_application - manage:data:service_providing_group_product_application_comment - manage:data:service_providing_group_product_suspension - manage:data:service_providing_group_product_suspension_comment - manage:data:system_operator_product_type - manage:data:technical_resource - read:attachment - read:attachment:service_providing_group_product_application_attachment - read:attachment:service_providing_group_product_application_attachment_history - read:auth - read:data - read:data:accounting_point - read:data:accounting_point_balance_responsible_party - read:data:accounting_point_bidding_zone - read:data:accounting_point_end_user - read:data:accounting_point_energy_supplier - read:data:accounting_point_grid_location - read:data:accounting_point_grid_location_history - read:data:accounting_point_metering_grid_area - read:data:controllable_unit - read:data:controllable_unit_history - read:data:controllable_unit_service_provider - read:data:controllable_unit_service_provider_history - read:data:controllable_unit_summary - read:data:controllable_unit_suspension - read:data:controllable_unit_suspension_comment - read:data:controllable_unit_suspension_comment_history - read:data:controllable_unit_suspension_history - read:data:entity - read:data:entity_client - read:data:event - read:data:identity - read:data:metering_grid_area - read:data:notice - read:data:notification - read:data:party - read:data:party_history - read:data:party_membership - read:data:party_membership_history - read:data:product_type - read:data:service_provider_product_application - read:data:service_provider_product_application_comment - read:data:service_provider_product_application_comment_history - read:data:service_provider_product_application_history - read:data:service_provider_product_suspension - read:data:service_provider_product_suspension_comment - read:data:service_provider_product_suspension_comment_history - read:data:service_provider_product_suspension_history - read:data:service_providing_group - read:data:service_providing_group_grid_prequalification - read:data:service_providing_group_grid_prequalification_comment - read:data:service_providing_group_grid_prequalification_comment_history - read:data:service_providing_group_grid_prequalification_history - read:data:service_providing_group_grid_suspension - read:data:service_providing_group_grid_suspension_comment - read:data:service_providing_group_grid_suspension_comment_history - read:data:service_providing_group_grid_suspension_history - read:data:service_providing_group_history - read:data:service_providing_group_membership - read:data:service_providing_group_membership_history - read:data:service_providing_group_power_per_substation - read:data:service_providing_group_product_application - read:data:service_providing_group_product_application_comment - read:data:service_providing_group_product_application_comment_history - read:data:service_providing_group_product_application_history - read:data:service_providing_group_product_suspension - read:data:service_providing_group_product_suspension_comment - read:data:service_providing_group_product_suspension_comment_history - read:data:service_providing_group_product_suspension_history - read:data:service_providing_group_summary - read:data:system_operator_product_type - read:data:system_operator_product_type_history - read:data:technical_resource - read:data:technical_resource_history - read:grid - read:grid:line - read:grid:substation - read:grid:substation_cluster - use:auth - use:data - use:data:controllable_unit - use:data:controllable_unit:lookup - use:data:entity - use:data:entity:lookup party_response: summary: Response - Party description: 'Response schema - The body that interacts with the Flexibility Information System A party is the thing that is authorized to access or modify data in the Flexiblity Information System. Example party types: * Service Provider * System Operator * End User' type: object properties: id: description: Unique surrogate identifier. format: bigint type: integer readOnly: true example: 11 business_id: description: The business identifier of the party. Format depends on `business_id_type`. format: text type: string example: '1337099000000' business_id_type: $ref: '#/components/schemas/party_business_id_type' default: uuid entity_id: description: Reference to the entity that is the parent of the party. format: bigint type: integer example: 30 name: description: Name of the party. Maximum 128 characters. format: text type: string example: Flex Energy Supplier role: $ref: '#/components/schemas/party_role' type: $ref: '#/components/schemas/party_type' status: $ref: '#/components/schemas/party_status' default: new recorded_at: description: When the resource was recorded (created or updated) in the system. format: date-time type: string readOnly: true example: '2023-12-31T23:59:00+00:00' recorded_by: description: The identity that recorded the resource. format: bigint type: integer readOnly: true example: 145 entity: description: Embedded entity oneOf: - $ref: '#/components/schemas/entity_response' - type: 'null' nullable: true required: - id - business_id - business_id_type - entity_id - name - role - type - status - recorded_at - recorded_by notice_data_party_outdated: type: object description: Format of the data field in a notice with data.kind = notice.data.party.outdated required: - kind properties: kind: description: Identifies the notice data schema for discriminated union deserialization. type: string const: notice.data.party.outdated entity: description: Details about the possibly new entity owning the party. $ref: '#/components/schemas/entity_response' party: description: Updated fields of the party. $ref: '#/components/schemas/party_response' notice_data_controllable_unit_product_duplication: type: object description: Format of the data field in a notice with data.kind = notice.data.controllable_unit.product_duplication required: - kind properties: kind: description: Identifies the notice data schema for discriminated union deserialization. type: string const: notice.data.controllable_unit.product_duplication product_type_id: description: The product type for which the controllable unit is registered in multiple service providing groups with active applications. format: bigint type: integer example: 2 service_providing_group_ids: description: The service providing groups the controllable unit is a member of that have active applications for the product type. type: array items: format: bigint type: integer example: 5 notice_data_party_missing: type: object description: Format of the data field in a notice with data.kind = notice.data.party.missing required: - kind properties: kind: description: Identifies the notice data schema for discriminated union deserialization. type: string const: notice.data.party.missing entity: description: Details about the entity owning the missing party. $ref: '#/components/schemas/entity_response' party: description: Details about the missing party. $ref: '#/components/schemas/party_response' empty_object: description: An empty object type: object properties: {} additionalProperties: false entity_type: description: The type of the entity, e.g Person, Organisation format: text type: string example: person enum: - person - organisation notice_data_product_type_not_qualified: type: object description: Format of the data field in a notice with data.kind = notice.data.product_type.not_qualified required: - kind properties: kind: description: Identifies the notice data schema for discriminated union deserialization. type: string const: notice.data.product_type.not_qualified product_type_ids: description: List of product types that are not qualified. type: array items: format: bigint type: integer example: 2 party_status: description: The status of the party. format: text type: string default: new enum: - new - active - inactive - suspended - terminated example: active party_type: description: The type of the party, e.g SystemOperator, ServiceProvider format: text type: string example: energy_supplier enum: - balance_responsible_party - end_user - energy_supplier - flexibility_information_system_operator - market_operator - organisation - service_provider - system_operator - third_party entity_client_response: summary: Response - Entity client description: Response schema - Client linked to an entity for client credentials and JWT grant authentication methods. type: object properties: id: description: Unique surrogate identifier. format: bigint type: integer readOnly: true example: 14 entity_id: description: Reference to the entity that this client is attached to. format: bigint type: integer example: 30 name: description: Name of the client. format: text type: string maxLength: 256 nullable: true example: Laptop client_id: description: The identifier of the entity. For use with client credentials authentication method. format: text type: string readOnly: true example: addr@flex.test party_id: description: Reference to the party this client allows to assume. A null value means the client cannot assume any party. format: bigint type: integer nullable: true example: 30 scopes: description: 'List of scopes granted to the user when it logs in as an entity or when it acts as the party. When assuming a party through party membership, the least privileged set of scopes will be kept. Scopes are inspired from OAuth 2.0 and allow refinement of access control and privilege delegation mechanisms.' type: array items: $ref: '#/components/schemas/auth_scope' nullable: false example: - read:data client_secret: description: The secret of the entity. For use with client credentials authentication method. Input as plain text but stored encrypted. format: text type: string minLength: 12 nullable: true example: mysupersecretpassword public_key: description: The public key of the entity (X.509 SubjectPublicKeyInfo). For use with JWT grant authentication method. format: text type: string nullable: true pattern: ^-----BEGIN PUBLIC KEY-----\nMIIB[-A-Za-z0-9+/\n]*={0,3}\n-----END PUBLIC KEY-----$ example: '-----BEGIN PUBLIC KEY----- MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAq3DnhgYgLVJknvDA3clA TozPtjI7yauqD/ZuqgZn4KzzzkQ4BzJar4jRygpzbghlFn0Luk1mdVKzPUgYj0V kbRlHyYfxahbgOHixOOnXkKXrtZW7yWGjXPqy/ZJ/+kFBNPAzxy7fDuAzKfU3Rn5 0sBakg95pua14W1oE4rtd4/U+sg2maCq6HgGdCLLxRWwXA8IBtvHZ48i6kxiz9tu -----END PUBLIC KEY-----' recorded_at: description: When the resource was recorded (created or updated) in the system. format: date-time type: string readOnly: true example: '2023-12-31T23:59:00+00:00' recorded_by: description: The identity that recorded the resource. format: bigint type: integer readOnly: true example: 145 entity: description: Embedded entity oneOf: - $ref: '#/components/schemas/entity_response' - type: 'null' nullable: true party: description: Embedded party oneOf: - $ref: '#/components/schemas/party_response' - type: 'null' nullable: true required: - id - entity_id - client_id - scopes - recorded_at - recorded_by entity_business_id_type: description: The type of the business identifier. format: text type: string example: pid enum: - pid - org - email notice_response: summary: Response - Notice description: Response schema - Notice to users about various issues or actions expected from them. type: object properties: id: description: Unique surrogate identifier. format: bigint type: integer readOnly: true example: 254 status: $ref: '#/components/schemas/notice_status' default: active party_id: description: Reference to the party targeted by the notice. format: bigint type: integer readOnly: true example: 18 type: description: The type of the notice. format: text type: string pattern: ^no.elhub.flex. readOnly: true example: no.elhub.flex.service_providing_group_membership.valid_time.outside_contract source: description: The URI of the resource concerned by the event. format: text type: string pattern: ^(\/([a-z][a-z_]*|[0-9]+))+$ readOnly: true nullable: true example: /service_providing_group_membership/4 data: description: The data of the notice. type: object oneOf: - $ref: '#/components/schemas/notice_data' - type: 'null' readOnly: true nullable: true recorded_at: description: When the resource was recorded (created or updated) in the system. format: date-time type: string readOnly: true example: '2023-12-31T23:59:00+00:00' recorded_by: description: The identity that recorded the resource. format: bigint type: integer readOnly: true example: 145 party: description: Embedded party oneOf: - $ref: '#/components/schemas/party_response' - type: 'null' nullable: true required: - id - status - party_id - type - recorded_at - recorded_by notice_data: oneOf: - $ref: '#/components/schemas/notice_data_valid_time_outside_contract' - $ref: '#/components/schemas/notice_data_party_missing' - $ref: '#/components/schemas/notice_data_party_outdated' - $ref: '#/components/schemas/notice_data_product_type_not_qualified' - $ref: '#/components/schemas/notice_data_controllable_unit_product_duplication' discriminator: propertyName: kind mapping: notice.data.valid_time.outside_contract: '#/components/schemas/notice_data_valid_time_outside_contract' notice.data.party.missing: '#/components/schemas/notice_data_party_missing' notice.data.party.outdated: '#/components/schemas/notice_data_party_outdated' notice.data.product_type.not_qualified: '#/components/schemas/notice_data_product_type_not_qualified' notice.data.controllable_unit.product_duplication: '#/components/schemas/notice_data_controllable_unit_product_duplication' notice_data_valid_time_outside_contract: type: object description: Format of the data field in a notice with data.kind = notice.data.valid_time.outside_contract required: - kind properties: kind: description: Identifies the notice data schema for discriminated union deserialization. type: string const: notice.data.valid_time.outside_contract invalid_timeline: description: Part of the timeline where the end user on the CUSP relation does not match the end user on the accounting point. $ref: '#/components/schemas/timeline_multi_range' party_business_id_type: description: The type of the business identifier. format: text type: string default: uuid enum: - gln - uuid - eic_x - org example: gln timeline_multi_range: description: Partial timeline data that is relevant to mention, in a notice for instance. Multirange format, i.e., array of start/end timestamp pairs. type: array items: type: object properties: valid_from: type: string format: date-time description: The start time of the timeline section. example: '2023-01-01T00:00:00+00:00' valid_to: type: string format: date-time description: The end time of the timeline section. example: '2023-01-02T00:00:00+00:00' party_role: description: The role of the party. Currently maps to 1:1 to `type`. E.g. system_operator, service_provider. format: text type: string example: flex_energy_supplier enum: - flex_balance_responsible_party - flex_end_user - flex_energy_supplier - flex_flexibility_information_system_operator - flex_market_operator - flex_organisation - flex_service_provider - flex_system_operator - flex_third_party notice_status: description: The status of the notice. format: text type: string default: active enum: - active - resolved example: active party_membership_response: summary: Response - Party Membership description: Response schema - The relation between a party and entity. type: object properties: id: description: Unique surrogate identifier. format: bigint type: integer readOnly: true example: 44 party_id: description: Reference to the party that the membership links to an entity. format: bigint type: integer example: 379 entity_id: description: Reference to the entity that the party represents. format: bigint type: integer example: 30 scopes: description: List of scopes granted to the entity when it acts as the party. Scopes are inspired from OAuth 2.0 and allow refinement of access control and privilege delegation mechanisms. type: array items: $ref: '#/components/schemas/auth_scope' nullable: false example: - read:data recorded_at: description: When the resource was recorded (created or updated) in the system. format: date-time type: string readOnly: true example: '2023-12-31T23:59:00+00:00' recorded_by: description: The identity that recorded the resource. format: bigint type: integer readOnly: true example: 145 party: description: Embedded party oneOf: - $ref: '#/components/schemas/party_response' - type: 'null' nullable: true entity: description: Embedded entity oneOf: - $ref: '#/components/schemas/entity_response' - type: 'null' nullable: true required: - id - party_id - entity_id - scopes - recorded_at - recorded_by notice: properties: id: description: 'Note: This is a Primary Key.' format: bigint type: integer data: format: jsonb type: object party_id: description: 'Note: This is a Foreign Key to `party.id`.' format: bigint type: integer type: format: public.ltree type: string status: format: text type: string recorded_by: format: bigint type: integer source: format: text type: string recorded_at: format: timestamp with time zone type: string type: object parameters: ApiVersion: name: Api-Version in: header required: true description: 'The API version to use. Must be a supported version date. See the [changelog](https://elhub.github.io/flex-information-system/changelog/) for available versions. ' schema: type: string enum: - '2026-06-08' example: '2026-06-08' securitySchemes: bearerAuth: description: Bearer token using a JWT type: http scheme: Bearer bearerFormat: JWT JWT: description: Add the token prepending "Bearer " (without quotes) to it in: header name: Authorization type: apiKey x-refined-from: - elhub-flex-information-system-main-api-openapi.json - elhub-postgrest-openapi-3-0-openapi.json