Download OpenAPI specification:Download
The Faradyn platform is designed to allow you to automate the process of receiving auction requirements and submitting your resulting bids and offers.
The platform aims to achieve this through the use of a RESTful API which allows you to query and submit data and a WebSocket Interface to enable the timely delivery of relevant notifications.
The Faradyn Platform API allows you to programmatically submit bids and offers for electricity auctions run by NESO.
The API is designed around REST concepts, accepts JSON-encoded request bodies and returns JSON-encoded responses.
The API is available at the following URLs:
Rate limiting is currently disabled. These limits will be reviewed after the beta period.
Requests to the API are rate limited to 200 requests per minute per Organisation. If you exceed this limit, you will receive a 429 Too Many Requests response. You can view your current rate limit status within your organisation dashboard.
The API uses API keys to authenticate requests. You can view and manage your API keys within your organisation dashboard. All requests must be authenticated with an API key and signed with a JWT and will fail if the key is invalid or missing.
API keys can be generated through the Web UI. An API key should be included with every request in a header called X-API-Key
. Every API key will be prefixed with the intended environment, for example test-api-
or live-api-
Any requests missing an API key will be rejected with a 401 Unauthorized
response.
An API key can be marked as Read Only. This restricts it to only making GET requests.
All requests and responses must be signed with a JWT. These signatures will be included within the X-JWT
HTTP header.
Any requests missing a valid JWT signature will be rejected with a 401 Unauthorized
response.
JWTs must be signed with one of the following algorithms:
RS256
- RSA SHA256ES256
- ECDSA SHA256EdDSA
- Ed25519You can select the algorithm you would like to use when creating your API Key. This algorithm will be used for both request and response signatures.
You can inspect the JWT signature of a request through the API Key's request log within the Web UI.
Any requests missing a valid JWT signature will be rejected with a 401 Unauthorized
response.
The request JWT signature must include the following claims:
iat
- The current UNIX timestamp as an integer. Any signatures with an iat
claim that is in the future will be rejected.method
- The HTTP method of the request. This must be upper case, for example "GET"
url
- The pathname of the request. This must not include the hostname, for example "/v1/submissions"
query
- SHA256 hash of the query string being used for this request.SHA256('perPage=100&page=2')
→ d678362383069d5aa7382aed7e0a86816cdc1fd0235fae09f57e36cb5d27b6ef
body
- SHA256 hash of the request body.SHA256('{"submissions":[]}")
→ ff9adb183df850d5bac15521142bbff3825a2c33470c34cef6a67d17957543b8
The request JWT signature may optionally include the following claims:
exp
- The UNIX timestamp at which the JWT expires and should be rejected as an integer.iat
claim.iat
claim.The JWT must be signed with the private key that matches the public key you provided for the API key in use.
Note that the JSON examples show below have been formatted. They were not formatted when generating the example signature.
{
"alg": "RS256",
"typ": "JWT"
}
{
"iat": 1550000000,
"method": "GET",
"url": "/v1/submissions",
"query": "d678362383069d5aa7382aed7e0a86816cdc1fd0235fae09f57e36cb5d27b6ef",
"body": "ff9adb183df850d5bac15521142bbff3825a2c33470c34cef6a67d17957543b8"
}
Hpwh8vTAdXobNpeyP71426BbkBT5oiZoJ1qy-6Bh6aZ8OThmtt45AQ5-hC7UueKqSYmeI5B75oZMYVNgf5eA20rkG3WNL9AHHvFDaWOtpgAP3x7OHsgI57_BJkFQqkEYQl0gPlWbrxmosUOJeo6bEwM5wNeipsB337XSXoC2sxU7mv4Eks8zxAn7FEAXY9hWzQNukyFnejc-nf2tYKyjIUnffXgePAJUHFQNpoQ5KruOczov64U8tmXGJeBplinjbzplcZh1IelvQYAx4IH1pz-USU8MEKmF6PEgj8_Ivfhp4PGjlOcsrX4kXaFVseBPiEGyNzptrehy3dr82KmS6Q51D9ZUXDXQIwyhhS2Puot8unpVk51oEeY0ZIyWeohHfGVpvTy_Z5YZ0UZEGJv5FiI7_rofW_3l9J5D1U5j1eH37QjqFsUvT96WX_T1eDXd9PoX1wq-XEsKf_-vahKWFvNbLAi6tT0YzeTU5MSxOa5zDaNO8WTVHhIz-6Iag00d4nNYCZNN8ZVWJJhDzG64gf1z-VSWLC4aUyvxx3NhtDP8IJCgeSvZn368Z0-VydPd5Dlo9ZMROuxOeQJjsXgLkSKzcHNUpKR2ku99Pu4kMmng1Yl5u4CmRmxZEH_Q4D9PayjW7FksvvSvEgJKvN0vjBCjiZfZp7E8-0tSLaN9k3k
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE1NTAwMDAwMDAsIm1ldGhvZCI6IkdFVCIsInVybCI6Ii92MS9zdWJtaXNzaW9ucyIsInF1ZXJ5IjoiZDY3ODM2MjM4MzA2OWQ1YWE3MzgyYWVkN2UwYTg2ODE2Y2RjMWZkMDIzNWZhZTA5ZjU3ZTM2Y2I1ZDI3YjZlZiIsImJvZHkiOiJmZjlhZGIxODNkZjg1MGQ1YmFjMTU1MjExNDJiYmZmMzgyNWEyYzMzNDcwYzM0Y2VmNmE2N2QxNzk1NzU0M2I4In0.Hpwh8vTAdXobNpeyP71426BbkBT5oiZoJ1qy-6Bh6aZ8OThmtt45AQ5-hC7UueKqSYmeI5B75oZMYVNgf5eA20rkG3WNL9AHHvFDaWOtpgAP3x7OHsgI57_BJkFQqkEYQl0gPlWbrxmosUOJeo6bEwM5wNeipsB337XSXoC2sxU7mv4Eks8zxAn7FEAXY9hWzQNukyFnejc-nf2tYKyjIUnffXgePAJUHFQNpoQ5KruOczov64U8tmXGJeBplinjbzplcZh1IelvQYAx4IH1pz-USU8MEKmF6PEgj8_Ivfhp4PGjlOcsrX4kXaFVseBPiEGyNzptrehy3dr82KmS6Q51D9ZUXDXQIwyhhS2Puot8unpVk51oEeY0ZIyWeohHfGVpvTy_Z5YZ0UZEGJv5FiI7_rofW_3l9J5D1U5j1eH37QjqFsUvT96WX_T1eDXd9PoX1wq-XEsKf_-vahKWFvNbLAi6tT0YzeTU5MSxOa5zDaNO8WTVHhIz-6Iag00d4nNYCZNN8ZVWJJhDzG64gf1z-VSWLC4aUyvxx3NhtDP8IJCgeSvZn368Z0-VydPd5Dlo9ZMROuxOeQJjsXgLkSKzcHNUpKR2ku99Pu4kMmng1Yl5u4CmRmxZEH_Q4D9PayjW7FksvvSvEgJKvN0vjBCjiZfZp7E8-0tSLaN9k3k
All responses with a valid API Key will include a JWT signature.
The response JWT signature will include the following claims:
iat
- The current UNIX timestamp as an integer.exp
- iat
+ 30 seconds.code
- The HTTP response code of the request as an integer.body
- SHA256 hash of the response body.SHA256('{"submissions":[]}")
→ ff9adb183df850d5bac15521142bbff3825a2c33470c34cef6a67d17957543b8
The JWT must be signed using our private key and should be validated using the public key provided on the API Key page within the Web UI.
Note that the JSON examples show below have been formatted. They were not formatted when generating the example signature.
{
"typ": "JWT",
"alg": "RS256"
}
{
"iat": 1550000000,
"exp": 1550000030,
"code": 200,
"body": "3ae44b19724a05e2d9ab88bac2acc3402e8fc421da6fc016af185546ae00765f"
}
PyhkKOzJzjUzpjGcQQVco5WN24tKXw3D5E9kvuHYw7Wkq1nnqsn2iHbRpgUicqFKPVZfidnY7vaRXKRTeLqCv7Hv7q3Z8dLSdmgGCxRHeQOOJwsXlVMQz4JkcP4LAMmsDBq0R6ZnhSAX0xMSMtZ9PoOpEcIad8gVXoSyrNaiwB4453fzp-Bi72t5_J4phgExgPdMkYZvfbWwzZC6OtQIH2ZiBLiGOi4XyV4RNOA9qk_94EdkmzKYcb6Ipq8IHJWWPcRDseGmua2UEwbOOp2zrvHQoe4BbkSt98wA2IUhcNA3PFNxMg_LTT1j4JBtYpPqs7SQRHd82VYS4GjWcm3P5EFjRcKHPlyU9FxIziTkPREXp7ag2SJknzEmP4JsNiqArs1FjPOCb1yMe36mGfj1wWBc8b1NzvoH_AgFL8lQq_RD7pmYZx4IcbRh4WHemVpqD2Pr5Vl6hCOOAMc-0ldU3C4__9cjF1Sc69lx4Dvo0wZ5VA-Zy5UHnNIQW74rgl9bhJFtsDhrLrYR75gCUcn3F32BejibeZn2VE3cNfLCOXO4se0aTZydeTxAeWLLqGk1QWdE5wqtV06cCPpOP_YSgsMho5hZtfnXsmsNpBsHi5uQ9aGCKI5tK-aOOkOccB_q_rxprKdPZ6GscWZxK5bK_p1jhkVsliqZIMKXYtT7KeM
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE1NTAwMDAwMDAsImV4cCI6MTU1MDAwMDAzMCwiY29kZSI6MjAwLCJib2R5IjoiM2FlNDRiMTk3MjRhMDVlMmQ5YWI4OGJhYzJhY2MzNDAyZThmYzQyMWRhNmZjMDE2YWYxODU1NDZhZTAwNzY1ZiJ9.PyhkKOzJzjUzpjGcQQVco5WN24tKXw3D5E9kvuHYw7Wkq1nnqsn2iHbRpgUicqFKPVZfidnY7vaRXKRTeLqCv7Hv7q3Z8dLSdmgGCxRHeQOOJwsXlVMQz4JkcP4LAMmsDBq0R6ZnhSAX0xMSMtZ9PoOpEcIad8gVXoSyrNaiwB4453fzp-Bi72t5_J4phgExgPdMkYZvfbWwzZC6OtQIH2ZiBLiGOi4XyV4RNOA9qk_94EdkmzKYcb6Ipq8IHJWWPcRDseGmua2UEwbOOp2zrvHQoe4BbkSt98wA2IUhcNA3PFNxMg_LTT1j4JBtYpPqs7SQRHd82VYS4GjWcm3P5EFjRcKHPlyU9FxIziTkPREXp7ag2SJknzEmP4JsNiqArs1FjPOCb1yMe36mGfj1wWBc8b1NzvoH_AgFL8lQq_RD7pmYZx4IcbRh4WHemVpqD2Pr5Vl6hCOOAMc-0ldU3C4__9cjF1Sc69lx4Dvo0wZ5VA-Zy5UHnNIQW74rgl9bhJFtsDhrLrYR75gCUcn3F32BejibeZn2VE3cNfLCOXO4se0aTZydeTxAeWLLqGk1QWdE5wqtV06cCPpOP_YSgsMho5hZtfnXsmsNpBsHi5uQ9aGCKI5tK-aOOkOccB_q_rxprKdPZ6GscWZxK5bK_p1jhkVsliqZIMKXYtT7KeM
Use this endpoint to retrieve auctions. This includes auctions in all statuses, including closed and cancelled auctions.
Results are returned in reverse chronological order with newest auctions being returned first.
page | integer The page number to return |
perPage | integer Number of results to return per page. This value must be between 1 and 200, and the default is 20 |
AuctionStatus (string) or Array of AuctionStatus (strings) Filter by auction status. This can be a single status or a list of statuses. If no status is provided, all auctions will be returned. | |
startedAfter | string <date-time> Example: startedAfter=2022-12-08T10:00:00Z Filter by the auction start date. Only auctions started after this date will be included. |
startedBefore | string <date-time> Example: startedBefore=2022-12-08T10:00:00Z Filter by the auction start date. Only auctions started before this date will be included. |
{- "results": [
- {
- "id": "2022_12_08-10_00",
- "dateStarted": "2022-12-08T10:00:00Z",
- "biddingCloseDate": "2022-12-08T12:00:00Z",
- "status": "Running",
- "dateCompleted": "2022-12-08T12:30:00Z",
- "dateCancelled": null,
- "cancellationReason": "string",
- "currentVersionNumber": 1,
}
], - "pages": {
- "current": 1,
- "max": 5,
- "perPage": 20,
- "totalResults": 100
}
}
Retrieve the details of an auction using the auction's unique ID.
auctionId required | string The ID of the auction, this value is case sensitive. |
{- "lots": [
- {
- "lotNumber": 1,
- "direction": "Offer",
- "deliveryPoints": [
- "IFA1",
- "EL"
], - "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "defaultPrice": 125.25
}
], - "id": "2022_12_08-10_00",
- "dateStarted": "2022-12-08T10:00:00Z",
- "biddingCloseDate": "2022-12-08T12:00:00Z",
- "status": "Running",
- "dateCompleted": "2022-12-08T12:30:00Z",
- "dateCancelled": null,
- "cancellationReason": "string",
- "currentVersionNumber": 1,
}
Use this endpoint to retrieve all submissions relevant to this auction. This includes submissions in all statuses, including withdrawn ones.
Results are returned in reverse chronological order with newest submissions being returned first.
Note: This endpoint is essentially an alias of /v1/submissions with the relevantToAuction
parameter set
page | integer The page number to return |
perPage | integer Number of results to return per page. This value must be between 1 and 200, and the default is 20 |
sortBy | string Default: "deliveryTime" Enum: "deliveryTime" "dateUpdated" How to sort the results. By default, results are sorted by the submissions delivery time. |
sortOrder | string Default: "desc" Enum: "asc" "desc" The order to sort the results. By default, results are sorted in descending order. |
SubmissionStatus (string) or Array of SubmissionStatus (strings) Filter results by status. | |
SubmissionStage (string) or Array of SubmissionStage (strings) Filter results by stage. | |
DeliveryPoint (string) or Array of DeliveryPoint (strings) Filter results by the delivery point they were submitted to. | |
AuctionDirection (string) or Array of AuctionDirection (strings) Filter results by their direction | |
startAfter | string <date-time> Example: startAfter=2020-01-01T00:00:00Z Filter results by their start date. Only submissions with a start date after this date will be returned. |
startBefore | string <date-time> Example: startBefore=2020-01-01T00:00:00Z Filter results by their start date. Only submissions with a start date before this date will be returned. |
endAfter | string <date-time> Example: endAfter=2020-01-01T00:00:00Z Filter results by their end date. Only submissions with a end date after this date will be returned. |
endBefore | string <date-time> Example: endBefore=2020-01-01T00:00:00Z Filter results by their end date. Only submissions with a end date before this date will be returned. |
submittedByUser | string Return only submissions that were last updated by this user. This should be the user's ID |
submittedByApiKey | string Return submissions that were last updated by this API key. This should be the API key's ID |
{- "results": [
- {
- "id": "submission-id",
- "auctionId": "2022_12_08-10_00",
- "status": "Active",
- "stage": "Received",
- "dateSubmitted": "2022-12-08T10:00:00Z",
- "direction": "Offer",
- "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "price": 125.25,
- "deliveryPoint": "IFA1",
- "expiryDate": "2022-12-08T14:00:00Z",
- "expiryDateIsAutomatic": false
}
], - "pages": {
- "current": 1,
- "max": 5,
- "perPage": 20,
- "totalResults": 100
}
}
Lists all the versions of an auction. This provides a full history of the requirements of an auction.
Results do not include the lots of each version. These can be retrieved using the Retrieve an auction version endpoint.
Results are returned in reverse chronological order with newest version being returned first.
auctionId required | string The ID of the auction, this value is case sensitive. |
page | integer The page number to return |
perPage | integer Number of results to return per page. This value must be between 1 and 200, and the default is 20 |
{- "results": [
- {
- "id": "2022_12_08-10_00",
- "versionNumber": 1,
- "dateCreated": "2022-12-08T10:00:00Z",
- "biddingCloseDate": "2022-12-08T12:00:00Z",
- "lots": [
- {
- "lotNumber": 1,
- "direction": "Offer",
- "deliveryPoints": [
- "IFA1",
- "EL"
], - "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "defaultPrice": 125.25
}
], - "comments": "string"
}
], - "pages": {
- "current": 1,
- "max": 5,
- "perPage": 20,
- "totalResults": 100
}
}
Retrieve the details of an auction version using the version's unique ID.
auctionId required | string The ID of the auction, this value is case sensitive. |
auctionVersionId required | string The ID of the auction version |
{- "id": "2022_12_08-10_00",
- "versionNumber": 1,
- "dateCreated": "2022-12-08T10:00:00Z",
- "biddingCloseDate": "2022-12-08T12:00:00Z",
- "lots": [
- {
- "lotNumber": 1,
- "direction": "Offer",
- "deliveryPoints": [
- "IFA1",
- "EL"
], - "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "defaultPrice": 125.25
}
], - "comments": "string"
}
Lists all of your scheduled trades for an auction. Scheduled trades are sorted by their start date, ascending.
auctionId required | string The ID of the auction, this value is case sensitive. |
page | integer The page number to return |
perPage | integer Number of results to return per page. This value must be between 1 and 200, and the default is 20 |
{- "results": [
- {
- "submissionId": "string",
- "tradeId": "string",
- "direction": "Offer",
- "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "price": 125.25,
- "deliveryPoint": "IFA1"
}
], - "pages": {
- "current": 1,
- "max": 5,
- "perPage": 20,
- "totalResults": 100
}
}
Use this endpoint to retrieve submissions made by your organisation. This includes submissions in all statuses, including withdrawn ones.
Results are returned in reverse chronological order with newest submissions being returned first.
page | integer The page number to return |
perPage | integer Number of results to return per page. This value must be between 1 and 200, and the default is 20 |
sortBy | string Default: "deliveryTime" Enum: "deliveryTime" "dateUpdated" How to sort the results. By default, results are sorted by the submissions delivery time. |
sortOrder | string Default: "desc" Enum: "asc" "desc" The order to sort the results. By default, results are sorted in descending order. |
SubmissionStatus (string) or Array of SubmissionStatus (strings) Filter results by status. | |
SubmissionStage (string) or Array of SubmissionStage (strings) Filter results by stage. | |
auctionId | string Filter results by the auction they were submitted to. Note that this does not return all submission that will be considered for an auction. Open submissions that match the auction's requirements will also be considered for the auction. |
relevantToAuction | string Filter results by whether they are relevant to an auction. This will return all submissions that are specifically for this auction or are open and match the auction's requirements. |
DeliveryPoint (string) or Array of DeliveryPoint (strings) Filter results by the delivery point they were submitted to. | |
AuctionDirection (string) or Array of AuctionDirection (strings) Filter results by their direction | |
startAfter | string <date-time> Example: startAfter=2020-01-01T00:00:00Z Filter results by their start date. Only submissions with a start date after this date will be returned. |
startBefore | string <date-time> Example: startBefore=2020-01-01T00:00:00Z Filter results by their start date. Only submissions with a start date before this date will be returned. |
endAfter | string <date-time> Example: endAfter=2020-01-01T00:00:00Z Filter results by their end date. Only submissions with a end date after this date will be returned. |
endBefore | string <date-time> Example: endBefore=2020-01-01T00:00:00Z Filter results by their end date. Only submissions with a end date before this date will be returned. |
submittedByUser | string Return only submissions that were last updated by this user. This should be the user's ID |
submittedByApiKey | string Return submissions that were last updated by this API key. This should be the API key's ID |
{- "results": [
- {
- "id": "submission-id",
- "auctionId": "2022_12_08-10_00",
- "status": "Active",
- "stage": "Received",
- "dateSubmitted": "2022-12-08T10:00:00Z",
- "direction": "Offer",
- "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "price": 125.25,
- "deliveryPoint": "IFA1",
- "expiryDate": "2022-12-08T14:00:00Z",
- "expiryDateIsAutomatic": false
}
], - "pages": {
- "current": 1,
- "max": 5,
- "perPage": 20,
- "totalResults": 100
}
}
Retrieve the details of a submission using the submission's unique ID.
submissionId required | string The ID of submission |
{- "id": "submission-id",
- "auctionId": "2022_12_08-10_00",
- "status": "Active",
- "stage": "Received",
- "dateSubmitted": "2022-12-08T10:00:00Z",
- "direction": "Offer",
- "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "price": 125.25,
- "deliveryPoint": "IFA1",
- "expiryDate": "2022-12-08T14:00:00Z",
- "expiryDateIsAutomatic": false
}
Retrieve all versions of a submission.
Results are returned in reverse chronological order with newest version being returned first.
submissionId required | string The ID of submission |
{- "results": [
- {
- "id": "0123456789abcdef",
- "versionNumber": 1,
- "auctionId": "2022_12_08-10_00",
- "withdrawn": false,
- "dateSubmitted": "2022-12-08T10:00:00Z",
- "direction": "Offer",
- "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "price": 125.25,
- "deliveryPoint": "IFA1",
- "expiryDate": "2022-12-08T14:00:00Z",
- "expiryDateIsAutomatic": false,
- "user": {
- "id": "0123456789abcdef",
- "name": "John Smith"
}, - "apiKey": {
- "id": "0123456789abcdef",
- "label": "string"
}
}
], - "pages": {
- "current": 1,
- "max": 5,
- "perPage": 20,
- "totalResults": 100
}
}
Retrieve the details of a submission version using the version's unique ID.
submissionId required | string The ID of submission |
submissionVersionId required | string The ID of the submission version |
{- "id": "0123456789abcdef",
- "versionNumber": 1,
- "auctionId": "2022_12_08-10_00",
- "withdrawn": false,
- "dateSubmitted": "2022-12-08T10:00:00Z",
- "direction": "Offer",
- "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "price": 125.25,
- "deliveryPoint": "IFA1",
- "expiryDate": "2022-12-08T14:00:00Z",
- "expiryDateIsAutomatic": false,
- "user": {
- "id": "0123456789abcdef",
- "name": "John Smith"
}, - "apiKey": {
- "id": "0123456789abcdef",
- "label": "string"
}
}
All requests related to writing submission data. This includes adding, updating, and withdrawing submissions.
Write multiple submissions. Submissions that already exist will be updated, new submissions will be created.
All actions are performed as a batch. If any of the submissions fail validation, none of the submissions will be created or updated.
Array of objects (WriteSubmission) The submissions to write. Writing a submission will automatically transition it from withdrawn to submitted. | |
withdraw | Array of strings The IDs of submissions to withdraw |
{- "submissions": [
- {
- "id": "submission-id",
- "auctionId": "2022_12_08-10_00",
- "direction": "Offer",
- "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "price": 125.25,
- "deliveryPoint": "IFA1",
- "expiryDate": "2022-12-08T14:00:00Z"
}
], - "withdraw": [
- "submission-id"
]
}
{- "updated": [
- {
- "id": "submission-id",
- "auctionId": "2022_12_08-10_00",
- "status": "Active",
- "stage": "Received",
- "dateSubmitted": "2022-12-08T10:00:00Z",
- "direction": "Offer",
- "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "price": 125.25,
- "deliveryPoint": "IFA1",
- "expiryDate": "2022-12-08T14:00:00Z",
- "expiryDateIsAutomatic": false
}
], - "withdrawn": [
- {
- "id": "submission-id",
- "auctionId": "2022_12_08-10_00",
- "status": "Active",
- "stage": "Received",
- "dateSubmitted": "2022-12-08T10:00:00Z",
- "direction": "Offer",
- "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "price": 125.25,
- "deliveryPoint": "IFA1",
- "expiryDate": "2022-12-08T14:00:00Z",
- "expiryDateIsAutomatic": false
}
], - "unchanged": [
- {
- "id": "submission-id",
- "auctionId": "2022_12_08-10_00",
- "status": "Active",
- "stage": "Received",
- "dateSubmitted": "2022-12-08T10:00:00Z",
- "direction": "Offer",
- "volume": 1000,
- "start": "2022-12-08T13:00:00Z",
- "end": "2022-12-08T14:00:00Z",
- "price": 125.25,
- "deliveryPoint": "IFA1",
- "expiryDate": "2022-12-08T14:00:00Z",
- "expiryDateIsAutomatic": false
}
]
}
The Faradyn Platform WebSocket interface allows you to subscribe to timely notifications triggered by the Faradyn Platform.
Messages exchanged by the WebSocket interface are JSON-encoded.
A WebSocket can be added through the Web UI. This is also where you can configure which notifications will be delivered to each WebSocket.
Each WebSocket Key can only have one active connection at a time. If you attempt to connect using a WebSocket Key that already has an established connection, the previous connection will be closed.
The WebSockets are available at the following URLs:
Connections to the WebSocket are authenticated using a WebSocket Key generated within the Web UI.
There are two methods to authenticate to the WebSocket:
X-WebSocket-Key
headerauthenticate
messageThis is the preferred method of authentication. The WebSocket Key, generated within the Web UI, is passed to the WebSocket interface using the X-WebSocket-Key
header.
The WebSocket key will then be authenticated before the request is upgraded to a WebSocket. A connected
event will then be sent to the client.
Some WebSocket client implementations do not allow for custom headers to be sent. In this case, the WebSocket Key can be sent as a message to the WebSocket interface.
Upon the request being upgraded to a WebSocket, the client must send an authenticate
message:
{
"action": "authenticate",
"key": "Your WebSocket Key"
}
The WebSocket key will then be authenticated before the connected
event is sent to the client.
The connection will be closed if the WebSocket key is invalid or if no key is sent within 2 seconds.
Events are sent to the client as JSON objects. The following events are supported:
connected
notification
object.auction-created
auction-ended
auction-results
auction-deadline-approaching
auction-updated
auction-cancelled
submissions-received
The general format for events is:
{
"type": "event-type",
"payload": {},
"notification": {
"id": "notification ID",
"dateCreated": "2023-01-01T00:00:00Z"
}
}
The notification ID is used to acknowledge the event and is consistent between WebSocket connections. See Acknowledging Events for more information.
This event is triggered when the WebSocket connection is successfully established and authenticated. It is not related to a notification and therefore doesn't contain a notification
object.
The connection ID can be used to view events related to the connection in the Web UI.
{
"type": "connected",
"payload": {
"connection": "connection ID"
}
}
This event is triggered when a new auction is published by NESO.
The payload will contain the full auction, similarly to the Retrieve an auction request
This event is triggered when the bidding period for an auction has ended.
The payload will contain the full auction, similarly to the Retrieve an auction request
This event is triggered when the results for an auction have been processed and published by NESO.
This notification will only be fired if you have submitted any bids to the auction.
The payload will contain both the full auction, similarly to the Retrieve an auction request, and a list of your scheduled trades.
The scheduled trades will be in the same format as the Get auction results request.
{
"auction": {},
"scheduledTrades": [
{
"submissionId": "submission ID",
"tradeId": "",
"direction": "Buy",
"volume": 1,
"start": "2023-01-01T00:00:00Z",
"end": "2023-01-01T00:30:00Z",
"price": 1,
"deliveryPoint": "IFA1"
}
]
}
Please note that each submission may result in multiple scheduled trades, depending on NESO's requirements. The sum of accepted volume will not be greater than the volume submitted.
This event is triggered 10 minutes before the end of the bidding period for an auction.
The payload will contain the full auction, similarly to the Retrieve an auction request
This event is triggered when an auction is updated by NESO. This could be due to a change in the auction requirements or a change in the bidding deadline.
The payload will contain the full auction, similarly to the Retrieve an auction request
This event is triggered when an auction is cancelled by NESO.
The payload will contain the full auction, similarly to the Retrieve an auction request
This event is triggered when the Faradyn platform has received any submissions from your organisation.
The payload will contain a list of submissions that have been added or updated, including all of their data. The payload will also include a list of submissions that have been withdrawn.
{
"updated": [
{
"id": "submission ID",
"auctionId": "auction ID",
"status": "Active",
"stage": "Received",
"dateSubmitted": "2023-01-01T00:00:00Z",
"direction": "Buy",
"volume": 1,
"start": "2023-01-01T00:00:00Z",
"end": "2023-01-01T00:30:00Z",
"price": 1,
"deliveryPoint": "IFA1",
"expiryDate": "2023-01-01T00:00:00Z",
"expiryDateIsAutomatic": true
}
],
"withdrawn": [
{
"id": "submission ID",
"auctionId": "auction ID",
"status": "Active",
"stage": "Received",
"dateSubmitted": "2023-01-01T00:00:00Z",
"direction": "Buy",
"volume": 1,
"start": "2023-01-01T00:00:00Z",
"end": "2023-01-01T00:30:00Z",
"price": 1,
"deliveryPoint": "IFA1",
"expiryDate": "2023-01-01T00:00:00Z",
"expiryDateIsAutomatic": true
}
]
}
All notifications received by your WebSocket client should be acknowledged.
This is done by sending a message back to the server with the id
property from the notification
object.
Upon connecting to the WebSocket server, you will be re-sent any unacknowledged notifications from the last 30 minutes.
{
"action": "ack",
"id": "notification id"
}