OrdinateDB

Documentation

product Pre-releaseunwritten sections are marked
POST/v1/model/resolve

Resolve model selectors to assets, attributes, and binding segments

operation ID: post_v1_model_resolve

Overview

Resolve model selectors to assets, attributes, and binding segments. The model API describes assets, attributes, bindings, templates, views, registries, and governed changes that give series data its operational meaning.

When to use it

  • Use it when an application needs to resolve model selectors to assets, attributes, and binding segments.
  • Use it when a modeling tool is building, governing, resolving, or inspecting the asset and attribute hierarchy.

Quick example

Set the base URL and replace generated identifiers or credentials with values from your installation.

cURL

curl --request POST \
  --url "$ORDINATE_URL/v1/model/resolve" \
  --header "Authorization: Bearer $ORDINATE_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "select": {
      "kind": "attributes_named",
      "content": {
        "name": "string"
      }
    },
    "scope": {}
  }'

Expected output · 200

Pinned resolved set

Example 200 output

{
  "model_as_of_ns": 0,
  "entries": [
    {
      "attribute_id": "00000000-0000-4000-8000-000000000001",
      "asset_id": "00000000-0000-4000-8000-000000000001",
      "path": "string",
      "timezone": "string",
      "effective_timezone": "string",
      "timezone_source_asset": "00000000-0000-4000-8000-000000000001",
      "segments": [
        {
          "series": "00000000-0000-4000-8000-000000000001",
          "start_ns": 0,
          "end_ns": 0
        }
      ],
      "continuity_class": "string",
      "writer_class": "string",
      "enum_set_id": "00000000-0000-4000-8000-000000000001",
      "quantity_kind_id": "00000000-0000-4000-8000-000000000001",
      "display_unit_id": "00000000-0000-4000-8000-000000000001"
    }
  ],
  "assets": [
    {
      "asset_id": "00000000-0000-4000-8000-000000000001",
      "path": "string",
      "template_id": "00000000-0000-4000-8000-000000000001",
      "timezone": "string",
      "effective_timezone": "string",
      "timezone_source_asset": "00000000-0000-4000-8000-000000000001"
    }
  ],
  "unresolved": [
    {
      "asset_id": "00000000-0000-4000-8000-000000000001",
      "path": "string",
      "requested_name": "string",
      "requested_id": "00000000-0000-4000-8000-000000000001",
      "reason": "string"
    }
  ]
}

The cURL request sends the smallest contract-derived body and asks OrdinateDB to resolve model selectors to assets, attributes, and binding segments. The documented 200 response is pinned resolved set.

How it works

Assets form the composition hierarchy, attributes describe values on those assets, and time-bounded bindings connect attributes to stored series.

Reference

Required capability
read
Authorization scope
each resolved result

Parameters

No parameters.

Request body

application/json

as_of_nsany ofoptional

any of

option 1

integer

UTC Unix timestamp in nanoseconds

format: int64

option 2

null
include_retiredbooleanoptional
rangeany ofoptional

any of

option 1

array · min 2 · max 2

item 1
integer

UTC Unix timestamp in nanoseconds

format: int64
item 2
integer

UTC Unix timestamp in nanoseconds

format: int64

option 2

null
scopeobjectrequired
unknown fields rejected
downstream_ofany ofoptional

any of

option 1

assetstringrequired
format: uuid
depthintegeroptional
minimum: 0
viaarrayrequired

array

string
unknown fields rejected

option 2

null
templateany ofoptional

any of

option 1

one of

option 1

contentstringrequired
format: uuid
kindstringrequired
unknown fields rejected

option 2

contentstringrequired
kindstringrequired
unknown fields rejected

option 2

null
underany ofoptional

any of

option 1

one of

option 1

contentstringrequired
kindstringrequired
unknown fields rejected

option 2

contentstringrequired
format: uuid
kindstringrequired
unknown fields rejected

option 2

null
upstream_ofany ofoptional

any of

option 1

assetstringrequired
format: uuid
depthintegeroptional
minimum: 0
viaarrayrequired

array

string
unknown fields rejected

option 2

null
unknown fields rejected
selectone ofrequired

one of

option 1

contentobjectrequired
unknown fields rejected
namestringrequired
unknown fields rejected
kindstringrequired
unknown fields rejected

option 2

contentarrayrequired

array

stringformat: uuid
kindstringrequired
unknown fields rejected

option 3

kindstringrequired
unknown fields rejected
unknown fields rejected

Example request body

{
  "select": {
    "kind": "attributes_named",
    "content": {
      "name": "string"
    }
  },
  "scope": {}
}

Responses

200Pinned resolved set

application/json

assetsarrayrequired

array

asset_idstringrequired
format: uuid
effective_timezonestringrequired
pathstringrequired
template_idany ofrequired

any of

option 1

stringformat: uuid

option 2

null
timezoneany ofrequired

any of

option 1

string

option 2

null
timezone_source_assetany ofrequired

any of

option 1

stringformat: uuid

option 2

null
unknown fields rejected
entriesarrayrequired

array

asset_idstringrequired
format: uuid
attribute_idstringrequired
format: uuid
continuity_classstringrequired
display_unit_idany ofrequired

any of

option 1

stringformat: uuid

option 2

null
effective_timezonestringrequired
enum_set_idany ofrequired

any of

option 1

stringformat: uuid

option 2

null
pathstringrequired
quantity_kind_idany ofrequired

any of

option 1

stringformat: uuid

option 2

null
segmentsarrayrequired

array

end_nsintegerrequired

UTC Unix timestamp in nanoseconds

format: int64
seriesstringrequired
format: uuid
start_nsintegerrequired

UTC Unix timestamp in nanoseconds

format: int64
unknown fields rejected
timezoneany ofrequired

any of

option 1

string

option 2

null
timezone_source_assetany ofrequired

any of

option 1

stringformat: uuid

option 2

null
writer_classstringrequired
unknown fields rejected
model_as_of_nsintegerrequired

UTC Unix timestamp in nanoseconds

format: int64
unresolvedarrayrequired

array

asset_idany ofrequired

any of

option 1

stringformat: uuid

option 2

null
pathany ofrequired

any of

option 1

string

option 2

null
reasonstringrequired
requested_idany ofrequired

any of

option 1

stringformat: uuid

option 2

null
requested_nameany ofrequired

any of

option 1

string

option 2

null
unknown fields rejected
unknown fields rejected

Example 200 output

{
  "model_as_of_ns": 0,
  "entries": [
    {
      "attribute_id": "00000000-0000-4000-8000-000000000001",
      "asset_id": "00000000-0000-4000-8000-000000000001",
      "path": "string",
      "timezone": "string",
      "effective_timezone": "string",
      "timezone_source_asset": "00000000-0000-4000-8000-000000000001",
      "segments": [
        {
          "series": "00000000-0000-4000-8000-000000000001",
          "start_ns": 0,
          "end_ns": 0
        }
      ],
      "continuity_class": "string",
      "writer_class": "string",
      "enum_set_id": "00000000-0000-4000-8000-000000000001",
      "quantity_kind_id": "00000000-0000-4000-8000-000000000001",
      "display_unit_id": "00000000-0000-4000-8000-000000000001"
    }
  ],
  "assets": [
    {
      "asset_id": "00000000-0000-4000-8000-000000000001",
      "path": "string",
      "template_id": "00000000-0000-4000-8000-000000000001",
      "timezone": "string",
      "effective_timezone": "string",
      "timezone_source_asset": "00000000-0000-4000-8000-000000000001"
    }
  ],
  "unresolved": [
    {
      "asset_id": "00000000-0000-4000-8000-000000000001",
      "path": "string",
      "requested_name": "string",
      "requested_id": "00000000-0000-4000-8000-000000000001",
      "reason": "string"
    }
  ]
}
400Invalid read request

application/json

ErrorEnvelope
codestringrequired
correlation_idstringrequired
format: uuid
detailsobjectoptional
errorstringrequired

Example 400 output

{
  "error": "string",
  "code": "account-sealed",
  "correlation_id": "00000000-0000-4000-8000-000000000001"
}
401Authentication required

application/json

ErrorEnvelope
codestringrequired
correlation_idstringrequired
format: uuid
detailsobjectoptional
errorstringrequired

Example 401 output

{
  "error": "string",
  "code": "account-sealed",
  "correlation_id": "00000000-0000-4000-8000-000000000001"
}
403Read capability is not granted

application/json

ErrorEnvelope
codestringrequired
correlation_idstringrequired
format: uuid
detailsobjectoptional
errorstringrequired

Example 403 output

{
  "error": "string",
  "code": "account-sealed",
  "correlation_id": "00000000-0000-4000-8000-000000000001"
}
503Model database is not configured, unavailable, or render capacity is exhausted

application/json

ErrorEnvelope
codestringrequired
correlation_idstringrequired
format: uuid
detailsobjectoptional
errorstringrequired

Example 503 output

{
  "error": "string",
  "code": "account-sealed",
  "correlation_id": "00000000-0000-4000-8000-000000000001"
}

Code examples

These examples are generated from the source contract. Replace the base URL, credentials, identifiers, and minimal generated values for your instance.

JavaScript

const ordinateUrl = "http://localhost:8080";
const token = "<bearer-token>";

const response = await fetch(`${ordinateUrl}/v1/model/resolve`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${token}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
  "select": {
    "kind": "attributes_named",
    "content": {
      "name": "string"
    }
  },
  "scope": {}
})
});

if (!response.ok) {
  throw new Error(`OrdinateDB returned ${response.status}: ${await response.text()}`);
}

const data = await response.json();
console.log(data);