{"openapi":"3.1.0","info":{"title":"Istravex API","version":"1.0.0","description":"Read-only access to the Istravex corpus: fixtures, their raw XDR, the canonical ledgers they were verified against, and the kit's results. Also hosts a mock Stellar RPC that replays the corpus for any RPC-backed indexer.","license":{"name":"Apache-2.0","url":"https://www.apache.org/licenses/LICENSE-2.0"},"contact":{"url":"https://github.com/hackcat29/istravex"}},"servers":[{"url":"https://api.istravex.com","description":"Production"},{"url":"http://localhost:8080","description":"Local (`npm run api`)"}],"tags":[{"name":"Service"},{"name":"Fixtures"},{"name":"Ledgers"},{"name":"Results"},{"name":"RPC"}],"paths":{"/v1/health":{"get":{"tags":["Service"],"summary":"Health","operationId":"getHealth","description":"Liveness and the build the server is running. Never cached.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"},"example":{"status":"ok","version":"41398ce","uptime_s":3600,"fixtures":6,"rpc_networks":["pubnet","testnet","local"]}}}}}}},"/v1/stats":{"get":{"tags":["Service"],"summary":"Corpus statistics","operationId":"getStats","description":"The headline numbers: fixtures, SDK checks, provenance checks, golden frames, the wallet-backend pilot and CAP coverage.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Stats"}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/fixtures":{"get":{"tags":["Fixtures"],"summary":"List fixtures","operationId":"listFixtures","parameters":[{"name":"cap","in":"query","schema":{"type":"string","example":"CAP-0027"},"description":"Only fixtures for this CAP."},{"name":"network","in":"query","schema":{"type":"string","enum":["pubnet","testnet","local"]},"description":"Only fixtures from this network."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["fixtures"],"properties":{"fixtures":{"type":"array","items":{"$ref":"#/components/schemas/FixtureSummary"}}}}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/fixtures/{id}":{"get":{"tags":["Fixtures"],"summary":"Get a fixture manifest","operationId":"getFixture","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"cap27-muxed-payment-pubnet-0001"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Manifest"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"not_found","message":"Fixture not found"}}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/fixtures/{id}/files/{name}":{"get":{"tags":["Fixtures"],"summary":"Download a fixture's XDR","operationId":"getFixtureFile","description":"Returns one XDR value from the fixture, base64 by default (exactly as stored in the repository), or raw bytes with `encoding=binary`. `X-XDR-Type` names the XDR type and `X-Content-SHA256` is the sha256 of the decoded bytes, matching the manifest.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"cap27-muxed-payment-pubnet-0001"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"envelope"},"description":"File name from the manifest's `files` (e.g. `envelope`, `meta`, `result`, `fee_meta`, `ledger_entry`)."},{"name":"encoding","in":"query","schema":{"type":"string","enum":["base64","binary"],"default":"base64"}}],"responses":{"200":{"description":"XDR value","headers":{"X-XDR-Type":{"schema":{"type":"string"}},"X-Content-SHA256":{"schema":{"type":"string"}}},"content":{"text/plain":{"schema":{"type":"string"}},"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"not_found","message":"Fixture not found"}}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/ledgers":{"get":{"tags":["Ledgers"],"summary":"List canonical ledgers","operationId":"listLedgers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["ledgers"],"properties":{"ledgers":{"type":"array","items":{"$ref":"#/components/schemas/LedgerEntry"}}}}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/ledgers/{network}/{seq}":{"get":{"tags":["Ledgers"],"summary":"Download a canonical ledger","operationId":"getLedger","description":"The full `LedgerCloseMeta` a fixture was verified against, as a zstd-compressed `LedgerCloseMetaBatch` (the layout of SDF's public data lake). `X-Content-SHA256` is the sha256 of the decompressed XDR.","parameters":[{"name":"network","in":"path","required":true,"schema":{"type":"string","enum":["pubnet","testnet","local"]}},{"name":"seq","in":"path","required":true,"schema":{"type":"integer","example":65474279}}],"responses":{"200":{"description":"zstd LedgerCloseMetaBatch","content":{"application/zstd":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"not_found","message":"Fixture not found"}}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/results":{"get":{"tags":["Results"],"summary":"List result sets","operationId":"listResults","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"string"}}}},"example":{"results":["go","goldens-go","goldens-javascript","goldens-patterns","goldens-rust","javascript","pilot-wallet-backend","provenance","replay","rust"]}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/results/{name}":{"get":{"tags":["Results"],"summary":"Get a result set","operationId":"getResult","description":"The raw output of one kit stage, exactly as committed in `corpus/results/`: SDK runs (`javascript`, `go`, `rust`), golden checks (`goldens-*`), `provenance`, `replay` and `pilot-wallet-backend`. 64-bit integers are JSON strings.","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","example":"provenance"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"not_found","message":"Fixture not found"}}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/coverage":{"get":{"tags":["Results"],"summary":"CAP coverage audit","operationId":"getCoverage","description":"Every live CAP (Final or Implemented) from the pinned stellar-protocol checkout, whether it changes XDR, and which fixtures cover it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"not_found","message":"Fixture not found"}}}}},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rpc/{network}":{"post":{"tags":["RPC"],"summary":"Mock Stellar RPC","operationId":"rpc","description":"JSON-RPC 2.0 with the wire shapes of Stellar RPC. Supports `getHealth`, `getNetwork`, `getLatestLedger` and `getLedgers` (cursor paging over the corpus's sparse ledgers). Point an RPC-backed indexer at `https://rpc.istravex.com/{network}` to replay the corpus. Batches of up to 20 requests; bodies up to 64 KB.","parameters":[{"name":"network","in":"path","required":true,"schema":{"type":"string","enum":["pubnet","testnet","local"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcRequest"},"example":{"jsonrpc":"2.0","id":1,"method":"getLedgers","params":{"startLedger":65474279,"pagination":{"limit":1}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"not_found","message":"Fixture not found"}}}}},"413":{"description":"Body over 64 KB"},"429":{"description":"Rate limited","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"Health":{"type":"object","required":["status","version","uptime_s","fixtures","rpc_networks"],"properties":{"status":{"type":"string","const":"ok"},"version":{"type":"string"},"uptime_s":{"type":"integer"},"fixtures":{"type":"integer"},"rpc_networks":{"type":"array","items":{"type":"string"}}}},"Ratio":{"type":"object","properties":{"passed":{"type":"integer"},"total":{"type":"integer"}}},"Stats":{"type":"object","properties":{"fixtures":{"type":"integer"},"caps":{"type":"integer"},"networks":{"type":"array","items":{"type":"string"}},"sdk_checks":{"$ref":"#/components/schemas/Ratio"},"provenance_checks":{"$ref":"#/components/schemas/Ratio"},"golden_frames":{"type":"object","properties":{"exact":{"type":"integer"},"total":{"type":"integer"}}},"wallet_backend_pilot":{"type":"object","properties":{"correct":{"type":"integer"},"total":{"type":"integer"}}},"cap_coverage":{"type":"object","properties":{"live":{"type":"integer"},"xdr_changing":{"type":"integer"},"xdr_covered":{"type":"integer"}}}}},"FixtureSummary":{"type":"object","properties":{"id":{"type":"string"},"cap_ids":{"type":"array","items":{"type":"string"}},"network":{"type":"string"},"protocol_version":{"type":"integer"},"ledger":{"type":"integer"},"tx_hash":{"type":"string"},"kind":{"type":"string","enum":["captured","generated"]},"xdr_type":{"type":"string"},"sha256":{"type":"string"},"files":{"type":"array","items":{"type":"string"}}}},"Manifest":{"type":"object","description":"A fixture manifest. Full schema: https://github.com/hackcat29/istravex/blob/main/corpus/manifest.schema.json","properties":{"id":{"type":"string"},"cap_ids":{"type":"array","items":{"type":"string"}},"protocol_version":{"type":"integer"},"network":{"type":"string"},"xdr_type":{"type":"string"},"xdr_path":{"type":"string"},"sha256":{"type":"string"},"source":{"type":"object"},"synthetic":{"type":"boolean"},"expected_decoded":{"type":"object"},"expected_indexed":{"type":"object"},"files":{"type":"array","items":{"type":"object"}}}},"LedgerEntry":{"type":"object","properties":{"network":{"type":"string"},"ledger":{"type":"integer"},"path":{"type":"string"},"xdr_type":{"type":"string"},"source":{"type":"string"},"sha256":{"type":"string"},"bytes":{"type":"integer"},"compressed_bytes":{"type":"integer"}}},"JsonRpcRequest":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"type":["string","integer","null"]},"method":{"type":"string","enum":["getHealth","getNetwork","getLatestLedger","getLedgers"]},"params":{"type":"object"}}},"JsonRpcResponse":{"type":"object","properties":{"jsonrpc":{"type":"string"},"id":{"type":["string","integer","null"]},"result":{"type":"object"},"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}}}}}