CantonCapDocsExplorer

Provenance

What a published figure tells you about how it was reached — and, just as precisely, what it does not.

CantonCap separates the value from the audit trail. The public API publishes the figure a venue or calculation produced, together with the time it was last updated. The evidence behind it — every observation considered, the checks it passed, and the operational state of the source that supplied it — is administrative, and reaching it needs an administrative key.

This split is deliberate and it is worth stating plainly, because most market-data sites blur it: a compact public payload is not the same as an unaccountable one. The audit trail exists, it is queryable, and this page says exactly where.

What a public quote carries

A quote is a map from convert currency to a figure. Every monetary value is an exact decimal string — never a JSON number — because Canton amounts routinely exceed IEEE-754 safe integer precision.

json

{
  "asset_id": "ast_09fdff10fa834da7831fc92d1ac47f75",
  "quotes": {
    "USD": {
      "price": "0.0412",
      "market_cap": null,
      "fdv": "412000000.00",
      "volume_24h": "1840221.55",
      "volume": { "method": "trades", "coverage": "partial", "change_24h_pct": "0.0731" },
      "price_changes_pct": { "1h": "0.0021", "24h": "-0.0184", "7d": "0.0412", "30d": null },
      "last_updated_at": "2026-09-08T13:28:00.000Z"
    }
  }
}

Two fields carry more meaning than their size suggests. volume.coverage states whether every venue that trades the instrument contributed, and market_cap is null for every asset — no reviewed circulating-supply methodology exists for Canton instruments, so the honest answer is an absence rather than a number. Read a null as a statement, not a gap.

What it deliberately omits

A public figure does not carry per-observation provenance: no constituent list, no venue weights, no exclusion reasons, no calculation run identifier, and no confidence score. Those fields exist in the pipeline and are recorded — they are simply not published on the public surface.

What a public consumer can reconstruct is the observable spread. Ask /v1/assets/market-pairs/latest for an asset and you get every market that trades it, each with its own venue and ticker. The range across those venues, against the published aggregate, is a genuine measurement — and it is what the caliper on an asset page draws.

The administrative audit trail

Every observation is scored against 15 checks before it can support a published figure. A failure is recorded as a quality incident, addressable at /internal/v1/system/quality/incidents, and each incident names the stage that raised it and the check that failed.

Stages

  • sourceRaised while reading from the venue itself, before any interpretation.
  • normalizationRaised while mapping a venue's payload onto the canonical model.
  • calculationRaised while deriving a published figure from admitted observations.
  • streamRaised on the live delivery path rather than in stored data.
  • dependencyRaised because something this stage relies on was itself unavailable.

Checks

They are stable identifiers, safe to branch on:

  • decimal_validityThe reported value did not parse as an exact decimal.
  • timestamp_validityThe observation carried a missing or implausible time.
  • identity_resolutionThe record could not be tied to a known asset or market.
  • price_validityThe price was non-positive or outside the bounds the instrument can take.
  • reserve_validityPool reserves were inconsistent with the curve they claim to follow.
  • book_crossedThe best bid exceeded the best ask, so the book was not internally consistent.
  • book_emptyOne or both sides of the book carried no levels to price against.
  • sequence_gapThe source's sequence numbers skipped, so at least one update was missed.
  • stalenessThe observation was older than the freshness window for this calculation.
  • price_outlierThe price sat outside the accepted dispersion band for its peers.
  • supply_jumpReported token supply moved further between observations than issuance allows.
  • ohlc_invariantA candle broke its own invariants — high below open, low above close, or similar.
  • duplicate_eventThe same source event arrived twice and was counted once.
  • volume_reconciliationReported volume did not agree with the trades observed over the same window.
  • dependency_availabilityAn input this figure depends on was not available when it was calculated.

Source availability

/v1/status/sources answers whether each venue is currently answering, and when it last did. It is deliberately coarse: availability is independent of age, so a lagging source still reports as available. The nine-state operational classification — lagging, degraded, stale, rate-limited, and the rest — is administrative.