Skip to main content

Dataset Service

The dataset resource contains the configuration for dataset monitoring

Dataset REST API

The Dataset REST API is accessed through the following URL:

https://api.opendatadsl.com/api/dataset

General

MethodPathExampleDescription
GETGet the build information for this service

Dataset info methods

The API consists of the following calls:

MethodPathExampleDescription
GET{release}/infov1/infoLists all the datasets you have configured for monitoring
GET{release}/alldsv1/alldsLists all the datasets you have access to (both managed and unmanaged)
GET{release}/info/{id}v1/info/ICE.NDEX.NLBGets a dataset configuration
POST{release}/infov1/infoUpdate a dataset monitoring configuration
DELETE{release}/info/{id}v1/info/ICE.NDEX.NLBRemove a dataset monitoring configuration

Dataset feed methods

The API consists of the following calls:

MethodPathExampleDescription
GET{release}/feedv1/feedLists all the dataset feeds you have configured for monitoring
GET{release}/alldfv1/alldfLists all the dataset feeds you have access to (both managed and unmanaged)
GET{release}/feed/{id}v1/feed/ICE.NDEXGets a dataset feed configuration
POST{release}/feedv1/feedUpdate a dataset feed configuration
DELETE{release}/feed/{id}v1/feed/ICE.NDEXRemove a dataset feed monitoring configuration

Dataset delivery methods

The API consists of the following calls:

MethodPathExampleDescription
GET{release}/deliveryv1/deliveryLists all the dataset deliveries for the current ondate
GET{release}/delivery/{ondate}v1/delivery/2024-06-12Lists all the dataset deliveries for the provided ondate
GET{release}/delivery/{id}v1/delivery/ICE.NDEX.NLB:2024-06-12Gets the specified dataset delivery for the provided ondate

Dataset entities

Dataset configuration

Here are the properties of a Dataset configuration

NameDescriptionType
_idUnique id for the DataSet in the format {provider}.{feed}.{product}String
_typeAlways 'Dataset'String
dsidSame as _idString
nameThe name of the datasetString
providerThe id of the providerString
feedThe id of the feedString
productThe id of the productString
sourceThe source of the dataset private, common or publicString
qualityGroupThe name of the quality group used to check the quality of the dataset (group type:quality)String
expectedAn object defining the number of each tenor type we expect to receive for this dataset - only applicable for private datasetsObject

Example dataset

  {
"_id": "ICE.NDEX.BEP",
"_type": "Dataset",
"dsid": "ICE.NDEX.BEP",
"provider": "ICE",
"feed": "NDEX",
"product": "BEP",
"name": "ICE NDEX BEP - Belgian Power Financial Peak Futures",
"qualityGroup": "default",
"expected": {
"*": 82,
"Month": 59,
"Year": 4,
"Quarter": 19
},
"source": "common"
}

Dataset Feed configuration

Here are the properties of a Dataset Feed configuration

NameDescriptionType
_idUnique id for the DataSet Feed in the format {provider}.{feed}String
_typeAlways 'DatasetFeed'String
dsidSame as _idString
nameThe name of the dataset feedString
providerThe id of the providerString
feedThe id of the feedString
sourceThe source of the dataset private, common or publicString
calendarThe holiday calendar defining when the feed is available for collectionString
timeThe start time when the feed should be available in the format HH:mmString
lateThe time when the feed is considered to be late in the format HH:mmString

Example dataset feed

{
"_id": "ODSL.FEED",
"_type": "DatasetFeed",
"calendar": "BUSINESS",
"source": "private",
"time": "20:00 EU1",
"late": "23:00 EU1",
"provider": "ODSL",
"feed": "FEED",
"name": "ODSL Sample Feed"
}

Smart feed configuration

If this dataset feed is being loaded using the Smart Feed, the following additional configuration information can be added:

NameDescriptionType
smartFeedA boolean indicating to load this dataset feed using the smart loaderBoolean
loadersAn array of loader configurationsObject
Loader configuration
NameDescriptionType
typeThe type of loader - standard, auto or manualString
idThe name of the loader, has to be unique within this feedString
processThe name of the process to runString
calendarThe days this loader should be runString
startThe start time for the loader to fireString
retryStrategyOnly applicable to standard loaders and configures how the loader handles retriesObject
Retry strategies
NameDescriptionType
strategyThe type - linear, random, eager or lazyString
retryMinutesThe number of minutes to wait for linear and a hint to the othersInteger
Example loader configuration
{
"calendar": "DAILY",
"process": "BSP_EL_DA_DATA",
"start": "19:30 EU2",
"type": "standard",
"id": "standard",
"retryStrategy": {
"strategy": "linear",
"retryMinutes": 10
}
}

Dataset Delivery configuration

Here are the properties of a Dataset Delivery configuration

NameDescriptionType
_idUnique id for the Dataset Delivery in the format {provider}.{feed}.{product}.{ondate}String
_typeAlways 'DatasetDelivery'String
dsidThe dataset idString
ondateThe date for the data being deliveredString
completeA boolean indicating if this dataset is completeBoolean
initialisedA datetime when this delivery was initialisedDatetime
scoreAn integer defining the score for this delivery - 4=No issues, 3=Late<1h, 2=Late<4h, 1=Late>4h, 0=HolidayInteger
scoreinfoText to add context to the score valueString
statusThe current status of the deliveryString
statusinfoText to add context to the statusString
expectedExpected tenors to be delivered, copied from the dataset configurationObject
expectedChecksInformation about the quantitative checks performed for each deliveryObject
actualActual tenors delivered, same format as expectedObject
timingsAn object with info about the timingsObject
deliveriesInformation about all the feed deliveries that were madeObject
checksInformation about all the quality checks that were madeObject
timelineA log of everything that has happened in connection with this deliveryArray(String)
timestampThe last time this delivery information was updatedDatetime
issuesThe current list of issues preventing this dataset from being completeArray(String)
loadedTimeUTCThe UTC timestamp that this dataset was loadedDateTime

Timeline messages

Each timeline message consists of the following parts separated by spaces:

  • Timestamp

    The UTC timestamp of the message

  • Level

    The log level, can be one of:

    * info - General information
    * warning - A non-fatal event has occurred that you need to be aware of
    * fatal - A fatal issue, usually missing data or failed quality check
    * severe - A severe issue that means this data is unusable
  • Origin

    The origin of the input data that triggered this dataset event, can be a process name or a user email

  • Phase

    The phase where this occurred, can be one of:

    * initialise - Initialisation at the start of the day
    * delivery - Details about a data lod/delivery event
    * completeness - Completeness checks that verify that all data for this dataset has been loaded
    * lateness - Lateness notifications
    * quality - Qualitative check on the data content
  • Message

    The rest of the timeline message is the message output from the process

Example Timeline Message:

"2024-11-08T17:22:06.029272Z[UTC] fatal ODSL_LOADER completeness Check: has tenor D00 has failed"

Dataset delivery timings object

NameDescriptionType
expectedThe time when this dataset is expected to be ready in the format HH:mm [tz]String
lateThe time when this dataset is considered to be late in the format HH:mm [tz]String
loadedThe time the data was loaded completely in the format HH:mm [tz]String
late_deltaAn integer indicating the number of minutes that this dataset is lateInteger

Dataset delivery deliveries object

NameDescriptionType
idThe transaction id - usually the same as the process execution idString
timestampThe datetime for this deliveryDatetime
reasonThe reason string, usually crontab informationString
originThe origin of the delivery, usually the name of the processString
tenorsThe actual tenors delivered in this deliveryObject

Dataset delivery expected checks object

NameDescriptionType
idThe transaction id - usually the same as the process execution idString
timestampThe datetime for the quality checksDatetime
logLog messages produced from the checksList(String)
{check name}Object containing output from the quality check functionObject

Dataset delivery quality check object

NameDescriptionType
idThe transaction id - usually the same as the process execution idString
timestampThe datetime for the quality checksDatetime
logLog messages produced from the checksList(String)
{check name}Object containing output from the quality check functionObject

Example Dataset Delivery

{
"_id": "ODSL.DS.TEST:2024-11-04",
"complete": true,
"dsid": "ODSL.DS.TEST",
"initialised": {
"$date": "2024-11-08T17:22:04.290Z"
},
"ondate": "2024-11-04",
"qualityStatus": "valid",
"score": 4,
"scoreinfo": "No issues on this day",
"status": "loaded",
"statusinfo": "Loaded data matches expected",
"timeline": [
"2024-11-08T17:22:04.290137Z[UTC] info ODSL_LOADER initialise status changed to waiting",
"2024-11-08T17:22:04.393592Z[UTC] info ODSL_LOADER delivery Got delivery 7b33f31b-f321-4fac-beef-989fa30e5cf7 with 3 tenors",
"2024-11-08T17:22:04.416355Z[UTC] info ODSL_LOADER delivery Delivery 7b33f31b-f321-4fac-beef-989fa30e5cf7 had 3 new tenors",
"2024-11-08T17:22:06.029272Z[UTC] fatal ODSL_LOADER completeness Check: has tenor D00 has failed",
"2024-11-08T17:22:07.459795Z[UTC] fatal ODSL_LOADER completeness Check: has tenor M00 has failed",
"2024-11-08T17:22:07.460078Z[UTC] info ODSL_LOADER completeness status changed to partial",
"2024-11-08T17:22:26.657711Z[UTC] info ODSL_LOADER delivery Got delivery 661cc59c-be3a-42de-8f21-9527fedade13 with 5 tenors",
"2024-11-08T17:22:26.658153Z[UTC] info ODSL_LOADER delivery Delivery 661cc59c-be3a-42de-8f21-9527fedade13 had 2 new tenors",
"2024-11-08T17:22:28.081597Z[UTC] info ODSL_LOADER completeness Check: has tenor D00 valid",
"2024-11-08T17:22:29.399952Z[UTC] info ODSL_LOADER completeness Check: has tenor M00 valid",
"2024-11-08T17:22:29.400029Z[UTC] info ODSL_LOADER completeness status changed to loaded",
"2024-11-08T17:22:29.436052Z[UTC] info ODSL_LOADER completeness statusinfo changed to Loaded data matches expected",
"2024-11-08T17:23:18.905957Z[UTC] info qualityChecks quality Running quality checks from group: DS Quality",
"2024-11-08T17:24:25.502120Z[UTC] info qualityChecks quality Running quality checks from group: DS Quality"
],
"timings": {
"expected": "23:35 EU1",
"late": "+05:00 EU1",
"timezone": "Europe/London",
"actual": [
{
"+17:22 EU1": "partial"
},
{
"+17:22 EU1": "loaded"
}
],
"late_delta": 5062,
"loaded": "+17:22 EU1"
},
"actual": {
"*": 5,
"CalendarDay": 3,
"Month": 2
},
"deliveries": {
"7b33f31b-f321-4fac-beef-989fa30e5cf7": {
"id": "7b33f31b-f321-4fac-beef-989fa30e5cf7",
"timestamp": "2024-11-08T17:22:04.393Z",
"reason": "Unknown",
"origin": "ODSL_LOADER",
"tenors": {
"*": 3,
"CalendarDay": 2,
"Month": 1
}
},
"661cc59c-be3a-42de-8f21-9527fedade13": {
"id": "661cc59c-be3a-42de-8f21-9527fedade13",
"timestamp": "2024-11-08T17:22:26.657Z",
"reason": "Unknown",
"origin": "ODSL_LOADER",
"tenors": {
"*": 2,
"CalendarDay": 1,
"Month": 1
}
}
},
"expected": {
"*": 2,
"CalendarDay": 2,
"Month": 2
},
"expectedChecks": {
"7b33f31b-f321-4fac-beef-989fa30e5cf7": {
"timestamp": "2024-11-08T17:22:04.434Z",
"has tenor D00": {
"_id": "#LOG",
"ScriptReturnStatus": "failed",
"failures": [
"Missing D00 tenor"
]
},
"has tenor M00": {
"_id": "#LOG",
"ScriptReturnStatus": "failed",
"failures": [
"Missing M00 tenor"
]
}
},
"661cc59c-be3a-42de-8f21-9527fedade13": {
"timestamp": "2024-11-08T17:22:26.659Z",
"has tenor D00": {
"_id": "#LOG",
"ScriptReturnStatus": "valid",
"failures": []
},
"has tenor M00": {
"_id": "#LOG",
"ScriptReturnStatus": "valid",
"failures": []
},
"log": [
"2024-11-08T17:22:28.081511Z[UTC] INFO D00 found",
"2024-11-08T17:22:29.399916Z[UTC] INFO M00 found"
]
}
},
"issues": [],
"loadedTimeUTC": "2024-11-08T17:22:29.400Z",
"timestamp": "2024-11-08T17:22:29.400Z",
"checks": {
"21f55cdd-700d-424e-884f-31c0489de60f": {
"timestamp": "2024-11-08T17:23:18.977Z",
"Check for zero values": {
"_id": "#LOG",
"ScriptReturnStatus": "valid",
"failures": []
},
"log": [
"2024-11-08T17:23:22.895729Z[UTC] INFO Checking 5 events for dataset: ODSL.DS.TEST for 2024-11-04"
]
},
"c7b00b05-4c29-46ac-8099-4499742006b7": {
"timestamp": "2024-11-08T17:24:25.524Z",
"Check for zero values": {
"_id": "#LOG",
"ScriptReturnStatus": "valid",
"failures": []
},
"log": [
"2024-11-08T17:24:29.788058Z[UTC] INFO Checking 5 events for dataset: ODSL.DS.TEST for 2024-11-04"
]
}
}
}

Functions

The following functions are available on the dataset REST API:

FunctionExampleDescription
expected/dataset/v1/ODSL.NDEX.BEP?_function=expectedCalculate the expected tenors for a dataset based on historic data loads
expected/dataset/v1/ODSL?_function=expectedCalculate the expected tenors for all datasets starting with ODSL based on historic data loads
initialise/dataset/v1/2024-04-30?_function=initialiseInitialise a dataset for a specified ondate
lateness/dataset/v1/2024-03-11?_function=latenessCheck the lateness of all datasets for the specified ondate

Examples

Datasets

### Get full list of datasets
GET {{url}}/dataset/v1/allds
?_project=name
Authorization: Bearer {{token}}

### Get Dataset infos
GET {{url}}/dataset/v1/info
Authorization: Bearer {{token}}

### Get Dataset infos - filtered
GET {{url}}/dataset/v1/info
?_id=ICE.NDEX.GAB
&_id=ICE.NDEX.BEP
Authorization: Bearer {{token}}

### Get Dataset infos - projected
GET {{url}}/dataset/v1/info
?_project=dsid,source
Authorization: Bearer {{token}}

### Get a Dataset info
GET {{url}}/dataset/v1/info/ICE.NDEX.BEB
Authorization: Bearer {{token}}

### Add a Dataset Info
POST {{url}}/dataset/v1/info
Authorization: Bearer {{token}}

{
"_id": "ODSL.TRADER1.NBP",
"expected": {
"*": 1
}
}

### Add a common Dataset Info
POST {{url}}/dataset/v1/info
Authorization: Bearer {{token}}

{
"_id": "ICE.NDEX.NLB",
"source":"common"
}

### Delete a Dataset info
DELETE {{url}}/dataset/v1/info/ICE.NDEX.DDA
Authorization: Bearer {{token}}

Dataset Feed

### Get full list of datasets
GET {{url}}/dataset/v1/alldf
?_project=name
Authorization: Bearer {{token}}

### Get Dataset Feeds
GET {{url}}/dataset/v1/feed
Authorization: Bearer {{token}}

### Get Dataset Feeds - filtered
GET {{url}}/dataset/v1/feed
?_id=ICE.NDEX
Authorization: Bearer {{token}}

### Get Dataset Feeds - filtered
GET {{url}}/dataset/v1/feed
?source=common
Authorization: Bearer {{token}}

### Get Dataset Feeds - projected
GET {{url}}/dataset/v1/feed
?_project=calendar,time,late
Authorization: Bearer {{token}}

### Get a Dataset Feed
GET {{url}}/dataset/v1/feed/ICE.NDEX
Authorization: Bearer {{token}}

### Get a Dataset Feed - projected
GET {{url}}/dataset/v1/feed/ICE.NDEX
?_project=time,late
Authorization: Bearer {{token}}

### Add a dataset feed
POST {{url}}/dataset/v1/feed
Authorization: Bearer {{token}}

{
"_id": "ODSL.TRADER1",
"time": "20:00 EU1",
"late": "23:00 EU1"
}

### Delete a feed
DELETE {{url}}/dataset/v1/feed/ODSL.TRADER1
Authorization: Bearer {{token}}

Dataset deliveries

### Get Dataset Deliveries - current ondate
GET {{url}}/dataset/v1/delivery
Authorization: Bearer {{token}}

### Get Dataset Deliveries - specific ondate
GET {{url}}/dataset/v1/delivery/2024-06-12
Authorization: Bearer {{token}}

### Get Dataset Deliveries - filtered
GET {{url}}/dataset/v1/delivery/2024-06-12
?dsid=ICE.NDEX.NLB
Authorization: Bearer {{token}}

### Get Dataset Deliveries - projected
GET {{url}}/dataset/v1/delivery/2024-06-12
?_project=score,scoreinfo
Authorization: Bearer {{token}}

### Get Dataset Delivery
GET {{url}}/dataset/v1/delivery/ICE.NDEX.NLB:2024-06-12
?_project=score,scoreinfo
Authorization: Bearer {{token}}