entsoe-api-client
Unofficial ENTSO-e REST API Client for Deno and Node. Complete. Easy to use. Minimal.
Features
- Supports all requests listed in Entso-e REST API Documentation
- Support zip-file endpoints, unzips documents transparently
- Examples written to support both Node and Deno
- Supports Deno and Node
- Fully Typed, written in TypeScript
- ESM (Deno, Node) and CommonJS (Node) support
- Adds description to codes while parsing the documents
Installation
Make sure to use a recent version of your runtime, Node.js >=18 and Deno >=1.26 is supported.
Deno
import { QueryConfiguration } from "https://deno.land/x/entsoe_api_client/mod.ts";Node
npm install entsoe-api-client --saveDocumentation
Documents structure and parameters returned by this library closely resemble what you find in ENTSO-e REST API documentation, so have a look there too.
If you want a Publication_MarketDocument, the corresponding function in this library is QueryPublication. In the resulting document (object), the key receiver_MarketParticipant.mRID will become receiverMarketParticipantId. The same goes for parameters. We recommend have auto-completion enabled in your editor, the types will give great help in navigating the parameters and document objects.
Another difference compared to source documents is that most ids automatically get a complementary description, where applicable.
As an example businessType=B33 in the raw xml will result in keys businessType: "B33" and businessTypeDescription: "Area Control Error" in the output.
Note Full library and method documentation can be found at deno.land/x/entsoe_api_client.
Methods
| Method | Interface | Description |
|---|---|---|
| Query | (securityToken, params) => Promise |
Fetch any document, and return a array of typed and parsed JavaScript object(s). Primarily internal, but exported. |
| QueryPublication | (securityToken, params) => Promise |
Request Publication_MarketDocument(s), and return a array of typed and parsed JavaScript object(s) |
| QueryGL | (securityToken, params) => Promise |
Same, for GL_MarketDocument |
| QueryUnavailability | (securityToken, params) => Promise |
Same, for Unavailability_MarketDocument |
| QueryConfiguration | (securityToken, params) => Promise |
Same, for Configuration_MarketDocument |
| QueryBalancing | (securityToken, params) => Promise |
Same, for Balancing_MarketDocument(s) |
| QueryTransmissionNetwork | (securityToken, params) => Promise |
Same, for Transmission_MarketDocument(s) |
| QueryCriticalNetworkElement | (securityToken, params) => Promise |
Same, for CriticalNetworkElement_MarketDocument(s) |
| ParseDocument | (xmlDocument) => PublicationDocument|BalancingDoc… |
Parses raw XML into a typed object. Primarily internal, but exported and usable. |
| FirstAreaByIdentifier | (identifier) => string[] | undefined |
Finds internal id (10YL-1001A00074) of all areas having aspecific identier (CTA|SE, BZN|DE-LU etc…) |
| AllAreasByIdentifier | (identifier) => string | undefined |
Same as above, but return first match |
Parameters
All parameters that can be passes to Query(), QueryPublication() etc.
| Parameter Name | Type | Name in ENSO-e REST API | Note |
|---|---|---|---|
| documentType | string | DocumentType | |
| processType (optional) | string | ProcessType | |
| businessType (optional) | string | BusinessType | |
| psrType (optional) | string | PsrType | |
| inDomain (optional) | string | In_Domain | |
| inBiddingZoneDomain (optional) | string | InBiddingZone_Domain | |
| biddingZoneDomain (optional) | string | BiddingZone_Domain | |
| outDomain (optional) | string | Out_Domain | |
| outBiddingZoneDomain (optional) | string | OutBiddingZone_Domain | |
| startDateTime(optional) | Date | TimeInterval | ISO8601 string |
| endDateTime (optional) | Date | TimeInterval | ISO8601 string |
| startDateTimeUpdate (optional) | Date | TimeIntervalUpdate | ISO8601 string |
| endDateTimeUpdate (optional) | Date | TimeIntervalUpdate | ISO8601 string |
| offset (optional) | number | Offset | Enables fetching more than x documents by using pagination |
| implementationDateAndOrTime (optional) | string | Implementation_DateAndOrTime | ISO8601 string |
| contractMarketAgreementType (optional) | string | Contract_MarketAgreement.Type | |
| auctionType (optional) | string | Auction.Type | |
| auctionCategory (optional) | string | Auction.Category | |
| classificationSequenceAICPosition (optional) | string | ClassificationSequence_(…).Position | |
| connectingDomain (optional) | string | connecting_Domain | |
| standardMarketProduct (optional) | string | Standard_MarketProduct | |
| originalMarketProduct(optional) | string | Original_MarketProduct | |
| registeredResource (optional) | string | registeredResource | |
| acquiringDomain (optional) | string | Acquiring_Domain | |
| mRID (optional) | string | mRID | |
| docStatus (optional) | string | DocStatus |
Examples
Examples can be found in the /examples directory.
To run the examples, pass your ENTSO-e API key by environment variable API_TOKEN.
Deno
Powershell
$env:API_TOKEN="your-api-token"; deno run -A .\spot-prices-today.tsBash
API_TOKEN="your-api-token" deno run -A .\spot-prices-today.tsNode
Powershell
$env:API_TOKEN="your-api-token"; node .\spot-prices-today.tsBash
API_TOKEN="your-api-token" node .\spot-prices-today.tsContributing
All contributions are welcome.
Module is developed in Deno. Node module is generated by dnt, using scripts/build_npm.ts.
Note Please run
deno task precommitbefore each commit, to make sure every file is tested/formatted/linted to standards.
Donations
Sponsor me on GitHub, or
License
MIT