TradeObservation trade.observation@1

Generated at from openvibe-contracts v0.53.0 and openvibe-sdk v0.11.0.

Version
1.0.0
Owner
trade
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/trade/observation.v1.json

trade.observation@1: one market observation on OpenVibe.Trade (server/domain/observations.js dto): a value a source stated (the decimal exactly as stated), when it was true and when it was fetched, where from, and (in reads) whether it is stale by its source's freshness or its own max age. Rows are immutable.

Fields

FieldTypeRequiredDescriptionConstraints
idstringyes
metricstringyes
valuestringyesThe decimal as the source stated it.
unitstringyes
currencystring | null
periodstring | null
observed_atstring | nullyes
  • format date-time
retrieved_atstring | nullyes
  • format date-time
recorded_atstring | nullyes
  • format date-time
max_age_secinteger | null
sourceobjectyes
source.keystringyes
source.item_idstring | null
source.urlstring | null
source.refstring
freshnessobject
freshness.staleboolean
freshness.stale_sincestring | null
  • format date-time
freshness.reasonenum
  • one of "value_older_than_max_age", "source_unknown", "source_stale", null
freshness.source_statusany
freshness.source_last_success_atany

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: close
{
  "id": "obs_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "metric": "close",
  "value": "182.40",
  "unit": "USD",
  "currency": "USD",
  "period": "2026-09-24",
  "observed_at": "2026-09-24T20:00:00.000Z",
  "retrieved_at": "2026-09-24T21:05:00.000Z",
  "recorded_at": "2026-09-24T21:05:02.000Z",
  "max_age_sec": 172800,
  "source": {
    "key": "example-quotes",
    "item_id": null,
    "url": "https://quotes.example.com/ACME",
    "ref": "ACME:2026-09-24:close"
  },
  "freshness": {
    "stale": false,
    "stale_since": null,
    "reason": null,
    "source_status": "healthy",
    "source_last_success_at": "2026-09-24T21:05:00.000Z"
  }
}
Rejected: number-value
{
  "id": "o",
  "metric": "close",
  "value": 182.4,
  "unit": "USD",
  "observed_at": null,
  "retrieved_at": null,
  "recorded_at": null,
  "source": {
    "key": "k"
  }
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('trade.observation@1', value);   // { valid, errors: [{ path, message }] }