TradeDataHub Public API · OpenAPI Overlay 1.0.0

TradeDataHub Public API — API Evangelist enhancement overlay

14 actions 14 updates documentation extends openapi/tradedatahub-openapi.json
Generated by API Evangelist Written by API Evangelist tooling for TradeDataHub Public API's API. It is a proposal applied on top of the contract, not a document TradeDataHub Public API publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

operationIdx-observed-divergencex-runtime-version-fieldx-observed-runtime-versionx-agent-entry-pointsx-contact-emailx-auth-gapx-entry-point

Targets 13

$.info
$.paths['/api/v1/'].get
$.paths['/api/v1/texas-trades-teaser.json'].get
$.paths['/api/v1/coverage'].get
$.paths['/api/v1/states'].get
$.paths['/api/v1/trades'].get
$.paths['/api/v1/cities'].get
$.paths['/api/v1/datasets'].get
$.paths['/api/v1/datasets/{product_id}'].get
$.paths['/api/v1/datasets/{product_id}/price'].get
$.paths['/api/v1/datasets/{product_id}/preview'].get
$.paths['/api/v1/datasets/{product_id}/download'].get
$.components

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: TradeDataHub Public API — API Evangelist enhancement overlay
  version: 1.0.0
extends: openapi/tradedatahub-openapi.json
x-provenance:
  generated: '2026-08-29'
  method: generated
  source: openapi/tradedatahub-openapi.json
  note: >-
    Captures API Evangelist enhancements to the provider's OpenAPI without mutating it. Every value
    below is either a mechanical addition (operationIds synthesised from method+path) or a fact
    verified by live probe on 2026-08-29 — no behaviour is invented. The provider's spec declares no
    operationIds at all, which is the largest single generation-blocker in the contract.
actions:
  - target: $.info
    description: Record the observed runtime contract version and the agent-facing discovery entry points.
    update:
      x-runtime-version-field: api_version
      x-observed-runtime-version: '1.0.0'
      x-agent-entry-points:
        - https://www.tradedatahub.net/llms.txt
        - https://www.tradedatahub.net/llms-full.txt
        - https://www.tradedatahub.net/api/v1/coverage
      x-contact-email: tradedatahub@gmail.com
  - target: $.info
    description: Note the absence of a machine-readable security scheme for the paid rail.
    update:
      x-auth-gap: >-
        The paid retrieval endpoint requires a PAYMENT-SIGNATURE request header (x402 v2), but the
        contract declares no securitySchemes, so a generated client cannot discover it.
  - target: $.paths['/api/v1/'].get
    description: Add a stable operationId.
    update:
      operationId: getApiIndex
  - target: $.paths['/api/v1/texas-trades-teaser.json'].get
    description: Add a stable operationId.
    update:
      operationId: getTexasTradesTeaser
  - target: $.paths['/api/v1/coverage'].get
    description: Add a stable operationId and mark the documented starting point.
    update:
      operationId: getCoverage
      x-entry-point: true
  - target: $.paths['/api/v1/states'].get
    description: Add a stable operationId.
    update:
      operationId: listStates
  - target: $.paths['/api/v1/trades'].get
    description: Add a stable operationId.
    update:
      operationId: listTrades
  - target: $.paths['/api/v1/cities'].get
    description: Add a stable operationId.
    update:
      operationId: listCities
  - target: $.paths['/api/v1/datasets'].get
    description: Add a stable operationId and record the observed limit-clamping behaviour.
    update:
      operationId: listDatasets
      x-pagination:
        style: limit-offset
        total_field: pagination.total
      x-observed-divergence: >-
        limit=9999 returned HTTP 200 with limit silently clamped to 100, not the declared 400.
        Probed 2026-08-29.
  - target: $.paths['/api/v1/datasets/{product_id}'].get
    description: Add a stable operationId and document the product_id grammar.
    update:
      operationId: getDataset
      x-id-formats:
        - 'state:{state_slug}'
        - 'state-trade:{state_slug}:{trade_slug}'
        - 'city-trade:{state_slug}:{city_slug}:{trade_slug}'
        - 'mega-pack:seven-live-states'
  - target: $.paths['/api/v1/datasets/{product_id}/price'].get
    description: Add a stable operationId.
    update:
      operationId: getDatasetPrice
  - target: $.paths['/api/v1/datasets/{product_id}/preview'].get
    description: Add a stable operationId and record that an error body can arrive under HTTP 200.
    update:
      operationId: getDatasetPreview
      x-availability: city_trade and state_trade products only
      x-observed-divergence: >-
        Requesting a preview for a state or mega_pack product returns the error envelope
        {error.code preview_unavailable} under HTTP 200, not a 4xx. Probed 2026-08-29.
  - target: $.paths['/api/v1/datasets/{product_id}/download'].get
    description: Add a stable operationId and make the x402 contract and its irreversibility explicit.
    update:
      operationId: downloadDataset
      x-payment:
        protocol: x402
        version: 2
        header: PAYMENT-SIGNATURE
        network: 'eip155:84532'
        network_name: Base Sepolia
        asset: USDC (testnet)
        mainnet_settlement_enabled: false
        challenge_inspectable_without_payment: true
      x-reversibility:
        api_reversal_operation: null
        out_of_band_reversal: Email tradedatahub@gmail.com with the Stripe session id (cs_ prefix).
        window: 7 days from purchase
        window_source: https://www.tradedatahub.net/refunds/
        grade: documented
      x-delivery:
        format: text/csv
        link_validity_hours: 24
        max_downloads: 5
  - target: $.components
    description: Declare the payment header as a discoverable security scheme.
    update:
      securitySchemes:
        x402PaymentSignature:
          type: apiKey
          in: header
          name: PAYMENT-SIGNATURE
          description: >-
            x402 v2 payment signature. Obtain the challenge from the HTTP 402 response, settle on Base
            Sepolia (eip155:84532) with testnet USDC, then retry with this header. TESTNET ONLY.

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/tradedatahub-openapi-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.