Skip to content

General

Balazs Kovacs edited this page Mar 20, 2025 · 12 revisions

Please make sure to also familiarise yourselves with the πŸŽ“ General Concepts regarding technical topics including:

Handling MTUs

Empire is working with Market Time Units (MTUs) when handling the "time resolution" of the Auctions, Nominations, etc. The system is prepared to handle 60 minute, 30 minute and 15 minute MTUs for each Platform functionality resulting in a delivery day being split into 24, 48 or 96 chunks respectively (on a standard, non-DST day).

πŸ’‘ Although Empire is prepared for it, the MTU resolution used in any functionality is not expected to change without notice - any change in them will be communicated towards Participants in due time.

The best practice to handle the (possibly dynamic) nature of the MTUs is to do the following general 2-step process:

1. Rely on the system calculating the right MTUs for you

  • always use the respective "get" endpoint to fetch the list of MTUs to be submitted
  • for example first fetch getTimescaleNominations for your desired delivery day, direction, etc
  • be prepared that the list of MTUs can be of variable length based on the delivery day being a long or short day

2. Make use of the returned list of MTUs

  • when constructing your "submit" request, map the mtu values from Step #1 to always match what is expected by Empire to be submitted
  • for example send your submitTimescaleNominations request with the mapped list of MTUs
  • enjoy the benefit of not needing to calculate exact UTC timestamps and handling long or short days

Handling Validations

Every endpoint in the specification have their validations and possible error cases thoroughly defined in the non 2xx error codes. The best practice for handling Platform Validations is to observe the API specification and try to prepare your integration code to avoid hitting the validations.

1) User authentication

For authenticated endpoints User authentication will be checked first and will immediately result in a 401 Unauthorized HTTP status if the check failed

Solution: To avoid hitting these validations make sure you always use a valid API Key when submitting your API requests.

⚠️ It is the Participants' responsibility to securely store API Keys and implement a rotation mechanism which changes the API Keys at least every 90 days, Empire won't enforce key rotation.

2) Permission check

The second step on validating requests is to check for the necessary Permissions which are required to perform the request. Each Role a User can have in Empire has a set of Permissions assigned to them.

Solution: To avoid hitting the Permission validations please make sure you use an API Key that belongs to a User which has the necessary Role (and thus Permission) to perform the operation.

πŸ’‘ Changes in the assigned Permissions to a specific role won't be expected to change on-the-fly: any change in the permission matrix will be communicated towards the Participants.

3) Business Validations

The various business validations are encapsulated under the 400 Bad Request, 422 Unprocessable Entity and 409 Conflict HTTP statuses with specific error codes (e.g MTU_LIST_MISALIGNED) assigned to each validation.

Solution: When writing your integration code, please study the specification carefully and follow either of the following approaches:

  1. write your code to ensure that validations won't be hit with the inputs you specify
    • for example in submitTimescaleNominationsin order to avoid hitting the INVALID_NOMINATION_VALUE validation, make sure you submit
      • a value for each MTU between 0 and the number of your available Transmission Rights
      • or between the flooredValue and your TRs in case the MTU is in FLOORED state
  2. prepare for your request being rejected and handle validation errors
    • errors can and should be handled individually using the code field returned in the error response (e.g INVALID_NOMINATION_VALUE)

Rate Limiting

In order to prevent DDoS attacks or any third party overloading the system, Empire has two levels of Rate Limiting for API requests:

Request Type Rate Limit
non-authenticated a.k.a public API calls 250 requests / 5 minutes / IP address
authenticated API calls using an API Key 500 requests / 5 minutes / API Key

Role / Permission Matrix

You can find the current configuration of Roles and Permissions that are available for Participants. Any other Permission that can be found throughout the specification are reserved for Interconnector Operators and cannot be added to any Participant Role.

Permission / Role PART_ADMIN PART_TRADER PART_NOMINATOR PART_NOM_TRADER PART_VIEW
Auction Management
VIEW_PUBLISHED_AUCTIONS βœ“ βœ“ βœ“ βœ“ βœ“
MANAGE_LT_AUCTION_BIDS βœ“ βœ“ βœ“
MANAGE_DA_ID_AUCTION_BIDS βœ“ βœ“ βœ“
TRs & Nominations
VIEW_OWN_TRANSMISSION_RIGHTS βœ“ βœ“ βœ“ βœ“ βœ“
VIEW_OWN_TIMESCALE_NOMINATIONS βœ“ βœ“ βœ“ βœ“
MANAGE_OWN_TIMESCALE_NOMINATIONS βœ“ βœ“ βœ“
Aggregated Nominations
VIEW_OWN_TIMESCALE_OR_BPP_AGGREGATED_NOMINATIONS βœ“ βœ“ βœ“ βœ“
Default Bids
VIEW_OWN_DEFAULT_BIDS βœ“ βœ“ βœ“ βœ“
MANAGE_OWN_DEFAULT_BIDS βœ“ βœ“ βœ“
Default Nominations
VIEW_OWN_DEFAULT_NOMINATIONS βœ“ βœ“ βœ“ βœ“
MANAGE_OWN_DEFAULT_NOMINATIONS βœ“ βœ“ βœ“
Organisations & Users
VIEW_OWN_ORGANISATIONS βœ“ βœ“ βœ“ βœ“ βœ“
VIEW_OWN_USERS βœ“ βœ“ βœ“ βœ“ βœ“
MANAGE_OWN_USERS βœ“
Dashboards
VIEW_PARTICIPANT_DASHBOARD βœ“ βœ“ βœ“ βœ“ βœ“
Messages
VIEW_GENERAL_SYSTEM_MESSAGES βœ“ βœ“ βœ“ βœ“ βœ“
VIEW_PARTICIPANT_MESSAGES βœ“ βœ“ βœ“ βœ“ βœ“
Bidding Configuration
VIEW_OWN_BIDDING_CONFIGURATION βœ“ βœ“ βœ“ βœ“
MANAGE_OWN_BIDDING_CONFIGURATION βœ“ βœ“ βœ“
Organisation Documents
VIEW_OWN_ORGANISATION_DOCUMENTS βœ“ βœ“ βœ“ βœ“ βœ“
MANAGE_OWN_ORGANISATION_DOCUMENTS βœ“
Secondary Market
VIEW_OWN_SECONDARY_MARKET_RETURNS βœ“ βœ“ βœ“ βœ“
MANAGE_SECONDARY_MARKET_RETURNS βœ“ βœ“ βœ“
VIEW_OWN_SECONDARY_MARKET_TRANSFERS βœ“ βœ“ βœ“ βœ“
MANAGE_SECONDARY_MARKET_LT_TRANSFERS βœ“ βœ“ βœ“
MANAGE_SECONDARY_MARKET_DA_ID_TRANSFERS βœ“ βœ“ βœ“
Manual File Upload
MANAGE_OWN_MANUAL_FILE_UPLOAD_BIDS βœ“ βœ“ βœ“
MANAGE_OWN_MANUAL_FILE_UPLOAD_NOMINATIONS βœ“ βœ“ βœ“
Audit Logs
VIEW_OWN_AUDIT_LOGS βœ“
Finance
VIEW_OWN_SETTLEMENT βœ“ βœ“ βœ“ βœ“
VIEW_OWN_INVOICES βœ“ βœ“ βœ“ βœ“
VIEW_OWN_UIOSI βœ“ βœ“ βœ“ βœ“
Buy Now Offers
VIEW_OWN_BUY_NOW_OFFERS βœ“ βœ“ βœ“ βœ“
PURCHASE_BUY_NOW_OFFERS βœ“ βœ“ βœ“
Reporting
VIEW_OWN_FINANCE_REPORTS βœ“ βœ“ βœ“ βœ“ βœ“
Webhooks
VIEW_OWN_WEBHOOKS βœ“
MANAGE_OWN_WEBHOOKS βœ“
Help / FAQ
VIEW_HELP_FAQ βœ“ βœ“ βœ“ βœ“ βœ“

Clone this wiki locally