Time SeventeenDocs
API Reference

Indexes

Discover indexes, immutable versions, constituent weights, venue mappings, and calculation methodologies.

Draft v0.1 — design contract, not yet a live service

This documentation set defines a proposed Time Seventeen protocol for review and implementation planning. https://api.t17.capital is the approved and reserved REST origin, but neither that origin nor any documented endpoint is claimed to be live. The WebSocket origin remains unspecified. Credentials, chain IDs, contract addresses, rate limits, and SLAs remain unapproved; IDs, prices, and timestamps shown throughout are illustrative, not real production data.

The Index API is the entry point for every packaged prediction-market benchmark. It separates the stable Index identity from immutable Index Versions so a client can reproduce exactly which methodology, constituents, weights, and venue mappings applied at any point in time.

Endpoint summary

Method & pathPurpose
GET /indexesDiscover indexes by family, status, tag, or constituent market
GET /indexes/{index_id}Read the stable definition and active version
GET /indexes/{index_id}/versionsRead immutable version history
GET /indexes/{index_id}/versions/{version_id}Read one configuration snapshot
GET /indexes/{index_id}/versions/{version_id}/constituentsRead point-in-time constituents, mappings, and weights
GET /methodologies/{methodology_id}/versions/{version}Read the calculation and governance method

All endpoints are public in this Draft contract. Paths are relative to the reserved REST origin https://api.t17.capital/v1; this does not claim that the endpoints are live.

Index identity and status

An Index has a stable opaque index_id. Its slug, symbol, display name, and tags MAY change without changing identity. Draft status values are:

StatusMeaning
draftDefinition is under review and MUST NOT publish official observations
scheduledApproved, with a future activation time
activeHas an effective version and may publish observations
suspendedPublication or use is temporarily paused
archivedNo longer active; history remains readable
Illustrative GET /indexes/{index_id} response
{
  "data": {
    "index_id": "idx_demo_conflict_001",
    "slug": "demo-conflict-signal",
    "symbol": "DCSX",
    "name": "Demonstration Conflict Signal Index",
    "family": "geopolitical",
    "description": "Illustrative weighted prediction-market benchmark.",
    "status": "active",
    "unit": "index_points",
    "base_value": "100.0000000000",
    "base_date": "2026-07-01T00:00:00Z",
    "active_version_id": "idxv_demo_003",
    "tags": ["conflict", "demo"],
    "created_at": "2026-06-01T00:00:00Z",
    "updated_at": "2026-08-15T09:00:00Z"
  },
  "meta": {
    "request_id": "req_demo_idx_001",
    "published_at": "2026-08-31T12:00:00Z",
    "schema_version": "1.0"
  }
}

List indexes

GET /indexes accepts family, status, tag, constituent_market_id, as_of, cursor, and limit. The default ordering is index_id ascending; a production implementation MAY publish additional supported sort fields, but MUST reject unknown sorts.

as_of returns the catalog and active-version projection known at that instant. It MUST NOT silently substitute today’s active version.

Immutable Index Versions

Each published version fixes:

  • the effective interval;
  • methodology_id and methodology_version;
  • constituent identities, target weights, caps, and eligibility decisions;
  • source Market/Outcome/Venue mappings and normalization rules;
  • calculation frequency, rebalance schedule, base/reset treatment, and quality thresholds;
  • governance approval and publication metadata.
Illustrative version detail
{
  "data": {
    "index_version_id": "idxv_demo_003",
    "index_id": "idx_demo_conflict_001",
    "version": "3",
    "status": "published",
    "effective_from": "2026-08-15T00:00:00Z",
    "effective_to": null,
    "methodology_id": "meth_demo_weighted_001",
    "methodology_version": "2.1",
    "calculation_frequency": "PT1M",
    "rebalance_rule": "monthly_review_event_driven_exception",
    "weight_sum": "1.0000000000",
    "minimum_coverage_ratio": "0.8000",
    "approved_by": "committee_demo_001",
    "approved_at": "2026-08-10T08:00:00Z",
    "published_at": "2026-08-11T09:00:00Z",
    "supersedes_version_id": "idxv_demo_002",
    "change_summary": ["scheduled_rebalance", "market_mapping_update"]
  },
  "meta": {
    "request_id": "req_demo_idxv_001",
    "published_at": "2026-08-31T12:00:00Z",
    "schema_version": "1.0"
  }
}

Published versions are immutable. A mistake is corrected by publishing a replacement version or an explicit price correction, never by editing historical configuration in place.

Constituents and venue mappings

GET /indexes/{index_id}/versions/{version_id}/constituents defaults to deterministic constituent_id order and supports expand=market,outcomes,venue. Each item records the selection decision, target/effective weights, caps, and the exact source used.

Illustrative constituent item
{
  "constituent_id": "con_demo_001",
  "index_version_id": "idxv_demo_003",
  "market_id": "mkt_demo_001",
  "outcome_id": "out_demo_yes_001",
  "target_weight": "0.2500000000",
  "effective_weight_at_publication": "0.2500000000",
  "weight_cap": "0.3000000000",
  "normalization": "probability_0_1",
  "eligibility_status": "eligible",
  "eligibility_reason_codes": ["RULES_CLEAR", "DATA_FRESH"],
  "rating_assessment_id_at_selection": "mra_demo_118",
  "market_mapping": {
    "mapping_id": "map_demo_001",
    "venue_id": "ven_demo_001",
    "source_event_id": "source_evt_demo_701",
    "source_series_id": "source_ser_demo_201",
    "source_market_id": "source_mkt_demo_901",
    "source_outcome_id": "source_out_demo_yes_901",
    "valid_from": "2026-08-15T00:00:00Z",
    "valid_to": null
  }
}

Market Rating may be evidence in a separately published eligibility policy, but the rating resource remains independent. Severity Assessment MUST NOT be implicitly used as a quality rating or eligibility decision.

Methodology versions

GET /methodologies/{methodology_id}/versions/{version} returns the normative calculation method: input selection, normalization, weighting, capping, missing/stale/outlier treatment, publication thresholds, correction policy, governance, and a machine-verifiable content hash where available.

Illustrative methodology identity
{
  "data": {
    "methodology_id": "meth_demo_weighted_001",
    "version": "2.1",
    "status": "published",
    "name": "Illustrative weighted probability method",
    "document_uri": "urn:t17:methodology:demo-weighted:2.1",
    "content_hash": "sha256:ILLUSTRATIVE_ONLY",
    "published_at": "2026-08-01T00:00:00Z",
    "supersedes_version": "2.0"
  },
  "meta": {
    "request_id": "req_demo_meth_001",
    "published_at": "2026-08-31T12:00:00Z",
    "schema_version": "1.0"
  }
}

Point-in-time reproduction

To reproduce an index level, a client MUST retain the observation’s index_version_id, fetch that immutable version and its constituents, fetch the referenced methodology version, and resolve every input_observation_id from the price detail endpoint. See Prices for the complete audit chain.