Skip to main content

Quick reference

Ids​

ItemStored asId
Library templatePublic report configuration, reportType: CompositionTemplate#CT_<NAME>
Your templatePrivate report configuration, reportType: CompositionTemplateCT_<NAME>
CompositionReport configuration (reportType: Composition) held on a private master data recordOBJECTID:KEY
Build of a compositionReport outputOBJECTID:KEY:ONDATE
Composed curveVarComposedCurve data item on a private master data recordOBJECTID:DATAID
Composed timeseriesVarComposedTimeSeries data item on a private master data recordOBJECTID:DATAID
Analytics areaMaster data record of type analytics_areafor example GAS_ANALYTICS

Composition format​

{
"_id": "COLIN_HARTLEY_BRENT_WTI",
"_type": "VarReportConfiguration",
"reportType": "Composition",
"name": "Brent WTI",
"template": "#composition-default-template",
"enabled": true,
"cacheOptions": {"type": "OnDemand", "store": "private"},
"properties": {
"composition": {
"meta": {"owner": "colin.hartley@opendatadsl.com", "stage": "dev"},
"scripts": [],
"elements": [
{"_id": "A", "_type": "CompositionDataElement", "caption": "Brent", "id": "ICE.IFEU.B:SETTLE",
"options": {"display": {"grid": true, "chart": true, "excel": true,
"chartOptions": {"type": "line", "colour": "#1B4F8A", "style": "Solid", "axis": 1}}}},
{"_id": "W", "_type": "CompositionLinkElement", "caption": "WTI",
"element": "OIL_ANALYTICS:COLIN_HARTLEY_WTI_USD/WTI"},
{"_id": "SPREAD", "_type": "CompositionExpressionElement", "caption": "Spread", "expression": "A - W"}
],
"options": {
"index": "curve",
"tenors": [{"type": "Month", "count": 12}, {"type": "Quarter", "count": 4}],
"conversion": {"currency": "USD"},
"display": {"layout": "table+chart"}
},
"fromTemplate": {"template": "#CT_CURVE_SPREAD", "name": "Curve spread", "revision": 1,
"values": {"curveA": "ICE.IFEU.B:SETTLE"}}
}
}
}

A template has the same properties.composition, with input placeholders such as @{input.curveA}, plus properties.template with its category, icon, tags, featured, revision, inputs and, for a copy, copiedFrom.


Column types​

_typeFieldValue
CompositionDataElementidA curve or timeseries id. On a timeseries worksheet, CURVE:TENOR is one tenor of a curve as a timeseries, for example ICIS.ESGM.NL.TTF.ASS.FUT:MID:GM01.
CompositionExpressionElementexpressionAn ODSL expression using the ids of earlier columns
CompositionLinkElementelementCOMPOSITION/COLUMN, a column of another composition's stored build for the same ondate

Chart indicators​

properties.composition.indicators is a list of indicators, each with an id, a type, an optional label, colour and style, and these settings:

typeSettings
trendpoints: two {x, y}, where x is a tenor or date of the index; extend (default true); axis (1 or 2)
levelvalue; axis
sma, emacolumn (a column id); period
bollingercolumn; period; deviations
regressioncolumn
FieldMeaning
fromThe ondate it was added on. Not shown on earlier ondates. Empty: every ondate.
carrytrue (default): also shown on every later ondate. false: only on from.
removedFromNot shown on this ondate or later.
"indicators": [
{"id": "ind1", "type": "trend", "from": "2026-10-13", "carry": true, "axis": 1,
"points": [{"x": "M02", "y": 73.52}, {"x": "M06", "y": 76}], "extend": true},
{"id": "ind2", "type": "sma", "from": "2026-10-13", "carry": true, "column": "SPREAD", "period": 3}
]

Settings​

SettingField
Worksheet typeoptions.index: curve or timeseries
Tenor types (curve)options.tenors: a list of type and count
Fixed ondate (curve)options.ondate
Calendar and range (timeseries)options.calendar, options.range
Observed (timeseries)options.observed, or a column's options.observed
Conversionoptions.conversion (worksheet) or a column's options.conversion: fx, currency, units, timezone, precision, rounding, factors.density, factors.timefactor, factors.heatRate and custom unit factors
Charta column's options.display.chartOptions: type, colour, style, axis
Portal layoutoptions.display.layout: table, table+chart or chart
Automatic buildsoptions.autoBuild: false turns the build automation off
Scriptsscripts: the scripts whose functions the expressions use
Meta datameta.owner, team, stage, commodity, product, location

REST calls​

CallWhat it does
POST report/v1?_test=true&_ondate=2026-10-08 with a composition in the bodyRun a composition without saving it (what Run does)
GET report/v1/private/OBJECTID:KEY:2026-10-08?_run=trueBuild and store a saved composition for an ondate (what Build does)
GET report/v1/private/OBJECTID:KEY:2026-10-08Read the stored build for an ondate
GET report/v1/private/OBJECTID:KEYThe ondates the composition has been built for
GET report/v1/private/OBJECTID:KEY:2026-10-08?_element=SPREADOne column of a build, as a curve or a timeseries
GET data/v1/private/OBJECTID:DATAID:2026-10-08A composed curve for an ondate
GET data/v1/private/OBJECTID:DATAIDA composed timeseries from all the builds (_range limits the dates, _ondate reads one build)

Automation​

Build automationOne per composition, kept by the platform when it is saved: target odsl.composition, properties.report = OBJECTID:KEY
TriggersAn update of each data item its columns read (OBJECTID:DATAID), and a build of each composition it links to
What it doesBuilds the composition for the ondate of the update, or today when the update has none
Composed curves and timeseriesTheir automations run each time a build of their composition is stored