{
  "contract_version": 1,
  "published_at": "2026-08-23",
  "query_surface": {
    "model": "structured_filter_projection_pagination",
    "general_sql": false,
    "endpoint": "GET /platform/v1/datasets/{name}/query",
    "operators": [
      "version",
      "symbol",
      "start",
      "end",
      "as_of",
      "columns",
      "limit",
      "offset",
      "tail",
      "format"
    ],
    "ordering": "Rows use the dataset's effective/date ordering; tail=true selects the newest bounded window. Callers cannot submit SQL or an arbitrary ORDER BY."
  },
  "coverage": {
    "history": "History is dataset- and version-specific. Inspect schema.date_min and schema.date_max; Kappa makes no catalog-wide duration promise. Lanes whose time axis the schema route cannot auto-detect report both bounds as null and state their covered range in their own row below.",
    "universe": "US equity reference data includes active and inactive/delisted symbols where supplied. That reduces survivorship bias; it does not certify any dataset or any reconstructed universe as complete. The us-listing-status lane records dated listing and delisting events for those symbols, so membership on a date can be rebuilt from the events effective on or before it, down to a 2005-01-01 floor. It is not index membership, it carries no delisting reason, and listing dates below that floor are not recoverable from it. Its membership is inclusive of non-common security types. See that lane's row for the security_class column that separates them.",
    "point_in_time": "Only registry rows whose schema.capabilities.point_in_time_supported is true accept as_of. Unsupported rows return 400 instead of silently ignoring the bound.",
    "exports": "Parquet exports are version-pinned and include content_sha256. The export endpoint does not accept as_of; point-in-time pulls use query with format=csv within its documented row ceiling."
  },
  "lanes": [
    {
      "id": "sec_13f_history",
      "catalog_selector": "us-13f-hist-*",
      "label": "SEC 13F filing history",
      "point_in_time_supported": true,
      "availability_time_field": "filing_date",
      "effective_time_field": "period",
      "revision_model": "filing_history_with_amendments",
      "revision_definition": "Every retained 13F-HR and 13F-HR/A accession remains a separate filing-time observation.",
      "retained_history": "Dataset-specific; query responses expose knowledge_time_min and knowledge_time_max.",
      "limitations": "Accession-level data, not an amendment-resolved canonical portfolio. ADD-type amendments and multi-entity filers require consumer-side interpretation."
    },
    {
      "id": "sec_form4_history",
      "catalog_selector": "us-form4-*",
      "label": "SEC Form 4 transaction history",
      "point_in_time_supported": true,
      "availability_time_field": "filing_date",
      "effective_time_field": "transaction_date",
      "revision_model": "filing_history_with_amendments",
      "revision_definition": "Original Form 4 and Form 4/A rows become available on their own filing dates.",
      "retained_history": "Dataset-specific; query responses expose knowledge_time_min and knowledge_time_max.",
      "limitations": "A transaction is not treated as knowable on transaction_date. Malformed filing stamps are excluded from as_of views."
    },
    {
      "id": "house_ptr_history",
      "catalog_selector": "house-ptr-*",
      "label": "US House PTR disclosure history",
      "point_in_time_supported": true,
      "availability_time_field": "filed_date",
      "effective_time_field": "transaction_date",
      "revision_model": "rolling_disclosure_history",
      "revision_definition": "Disclosures become available on filed_date; successful source re-parses can replace or tombstone rows for the same document.",
      "retained_history": "Rolling approximately 24-month source window; inspect knowledge_time_min and knowledge_time_max.",
      "limitations": "Disclosure can lag the trade by weeks. Parse-failed rows remain outside point-in-time views."
    },
    {
      "id": "sec_13f_snapshot",
      "catalog_selector": "us-13f-<filer> (excluding us-13f-hist-*)",
      "label": "SEC 13F latest-filing snapshot",
      "point_in_time_supported": false,
      "availability_time_field": null,
      "effective_time_field": null,
      "revision_model": "latest_filing_accession_snapshot",
      "revision_definition": "A new source filing replaces the served latest snapshot.",
      "retained_history": "Latest source accession only; use us-13f-hist-* for retained filing history.",
      "limitations": "as_of returns 400. The snapshot is not an amendment-resolved canonical portfolio."
    },
    {
      "id": "company_fundamentals",
      "catalog_selector": "us-fin-*",
      "label": "Company financial statement snapshots",
      "point_in_time_supported": false,
      "availability_time_field": "filing_date",
      "effective_time_field": "end_date",
      "revision_model": "versioned_filing_snapshot",
      "revision_definition": "Each Kappa version captures the producer's returned filing set; a later version may contain amended or restated facts.",
      "retained_history": "Company- and source-specific; inspect schema.date_min/date_max and the selected version.",
      "limitations": "filing_date is present for provenance, but Kappa does not yet promise an as_of filter for this family. as_of returns 400."
    },
    {
      "id": "economic_actuals",
      "catalog_selector": "economic-calendar and source fred:* / fred-licensed:*",
      "label": "Economic calendar and macro observations",
      "point_in_time_supported": false,
      "availability_time_field": null,
      "effective_time_field": "date",
      "revision_model": "latest_revised_snapshot",
      "revision_definition": "Refreshes use the latest value published by the upstream series, including historical revisions.",
      "retained_history": "Series-specific; inspect schema.date_min and schema.date_max.",
      "limitations": "Not an ALFRED-style vintage archive and not release-time actuals. as_of returns 400."
    },
    {
      "id": "ken_french_factors",
      "catalog_selector": "us-factor-returns-daily",
      "label": "Ken French research factors",
      "point_in_time_supported": false,
      "availability_time_field": null,
      "effective_time_field": "date",
      "revision_model": "upstream_revisable_snapshot",
      "revision_definition": "Each version captures the then-current upstream research files; upstream history may later change.",
      "retained_history": "Inspect schema.date_min/date_max for the selected version.",
      "limitations": "No release-vintage or historical-revision archive. as_of returns 400."
    },
    {
      "id": "current_index_membership",
      "catalog_selector": "index-membership",
      "label": "Current US index membership",
      "point_in_time_supported": false,
      "availability_time_field": null,
      "effective_time_field": "asof",
      "revision_model": "current_membership_snapshot",
      "revision_definition": "A refreshed committed constituent snapshot replaces the current membership view.",
      "retained_history": "One current constituent snapshot per Kappa version.",
      "limitations": "Not historical per-date membership. Applying it to older facts or prices introduces survivorship bias; as_of returns 400."
    },
    {
      "id": "us_listing_status_history",
      "catalog_selector": "us-listing-status",
      "label": "US equity listing status history",
      "point_in_time_supported": false,
      "availability_time_field": "knowledge_date",
      "effective_time_field": "effective_date",
      "revision_model": "accumulating_reference_history",
      "revision_definition": "Each version appends listing and delisting events first derived from that week's reference snapshot; an event's knowledge_date is stamped once and never rewritten.",
      "retained_history": "Listing and delisting effective dates start at a 2005-01-01 floor and never go below it; knowledge_date coverage begins at the first retained reference snapshot, so earlier vendor restatements are not recoverable. This lane carries two date columns; schema.date_column resolves to effective_date, so schema.date_min and schema.date_max report the effective-time coverage, and knowledge_date is never the query axis.",
      "limitations": "Listing status only. This is not index membership, and it carries no delisting reason. The universe is inclusive and is not restricted to common equity. Warrants, preferreds, rights, units, when-issued and when-distributed lines, ADRs, ETFs, ETNs, funds, structured products and index symbols are all members, each with its own listing and delisting events. Every row declares a security_class, and that column is the only way to filter them out. A membership set rebuilt from these events without filtering on it contains derivatives alongside common stock. Rows that nothing identifies carry security_class=unknown rather than common, so a filter naming the classes it wants excludes them. Listings that took effect before 2005-01-01 are reported at the 2005-01-01 floor, not their true date. Delistings that took effect before that floor are not carried at all. Rows that no vendor date asserted are identifiable by cell value: list_date is absent for many delisted tickers, so those rows carry evidence=first_bar and confidence=inferred_from_bars; a floored listing carries evidence=floored and confidence=inferred_from_bars; and a ticker rename adds a listing for the surviving symbol on the retired symbol's last date, carrying evidence=ticker_change and confidence=inferred_from_reference. The start and end operators narrow effective_date, the effective-time axis; they never consult knowledge_date. Knowledge-time depth is shallow until several snapshots accumulate; as_of returns 400."
    },
    {
      "id": "sec_fails_to_deliver_year",
      "catalog_selector": "us-sec-ftd-<year>",
      "label": "SEC fails-to-deliver balances (one table per calendar year, 2004 onward)",
      "point_in_time_supported": false,
      "availability_time_field": null,
      "effective_time_field": "settlement_date",
      "revision_model": "period_replacement_year_snapshot",
      "revision_definition": "Each official semi-monthly (2004-2009: quarterly) archive, or an SEC re-upload of it, replaces that settlement period's rows in the year table; source_archive and source_row retain the row's provenance.",
      "retained_history": "The complete official series from 2004-Q1; inspect schema.date_min/date_max per year table.",
      "limitations": "fails_quantity is the aggregate balance outstanding on a settlement date, not a daily flow and not evidence of short selling. CUSIP identifiers are omitted; rows carry ticker and issuer name only. The file has no per-row publication stamp, so as_of is not supported."
    },
    {
      "id": "eia_grid_hourly",
      "catalog_selector": "us-eia-grid-<region> (us48, caiso, ercot, pjm, miso, nyiso, isone, spp)",
      "label": "EIA-930 hourly electric-grid operations",
      "point_in_time_supported": false,
      "availability_time_field": null,
      "effective_time_field": "datetime",
      "revision_model": "rolling_window_merge_snapshot",
      "revision_definition": "A daily refetch of the trailing seven days merges late estimates and corrections over prior hours; a newer non-null value replaces the older one and a missing value retains the prior estimate.",
      "retained_history": "Hourly UTC rows from 2019-01-01 (the EIA-930 feed's inception); inspect schema.date_min/date_max per region table.",
      "limitations": "Regional tables cover the Lower 48 aggregate and the seven organized markets only, not every balancing authority. Values are EIA's reported MWh per hour and carry EIA's own revision behavior; the most recent hours may still change."
    },
    {
      "id": "other_catalog_datasets",
      "catalog_selector": "all other curated and customer-owned datasets",
      "label": "Other catalog datasets",
      "point_in_time_supported": false,
      "availability_time_field": null,
      "effective_time_field": null,
      "revision_model": "producer-declared or versioned_snapshot",
      "revision_definition": "Inspect schema.capabilities.revision_model for the resolved registry row and pin a version when reproducibility matters.",
      "retained_history": "Inspect schema.date_min/date_max and the selected version.",
      "limitations": "No point-in-time behavior is inferred from a name or column. as_of returns 400 unless the resolved schema explicitly declares support."
    }
  ]
}
