{"openapi":"3.1.0","info":{"title":"Kansai ADS-B Live API","version":"1.0.0","description":"Live ADS-B aircraft data for Kansai / western Japan, pay-per-call with USDC on Base mainnet via the x402 protocol (v2). Paid endpoints answer HTTP 402 with payment requirements in the PAYMENT-REQUIRED header until payment is presented. NOT for operational, navigation, or safety-of-life use."},"servers":[{"url":"https://x402-adsb.x402-adsb-worker.workers.dev"}],"paths":{"/aircraft":{"get":{"summary":"Live aircraft snapshot (paid, $0.001 USDC)","description":"Every aircraft currently received (~1s freshness), with r_dst/r_dir/rssi removed and callsign-to-route resolution merged in.","responses":{"200":{"description":"Snapshot JSON: {source, observed_at, age_sec, count, routes_resolved, aircraft[]}"},"402":{"description":"Payment required (x402 v2). Payment requirements are base64-encoded in the PAYMENT-REQUIRED response header; the JSON body is a human/agent-readable hint. Pay with an x402 client and retry."}}}},"/history/flight":{"get":{"summary":"Flight track history (paid, $0.01 USDC)","parameters":[{"name":"hex","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{6}$"},"description":"ICAO 24-bit address, lowercase hex"},{"name":"from","in":"query","schema":{"type":"integer"},"description":"unix seconds (default: to-3h)"},{"name":"to","in":"query","schema":{"type":"integer"},"description":"unix seconds (default: now). Max window 24h, retention 90 days"}],"responses":{"200":{"description":"Track JSON: {hex, from, to, granularity_sec: 60, points, series[]}"},"402":{"description":"Payment required (x402 v2). Payment requirements are base64-encoded in the PAYMENT-REQUIRED response header; the JSON body is a human/agent-readable hint. Pay with an x402 client and retry."}}}},"/pass/hour":{"get":{"summary":"1-hour unlimited pass (paid, $0.50 USDC)","description":"Returns a bearer token for /live/aircraft and /live/history/flight, valid 1 hour.","responses":{"200":{"description":"{token, tier, expires_at, usage}"},"402":{"description":"Payment required (x402 v2). Payment requirements are base64-encoded in the PAYMENT-REQUIRED response header; the JSON body is a human/agent-readable hint. Pay with an x402 client and retry."}}}},"/live/aircraft":{"get":{"summary":"Live snapshot for pass holders (token required)","parameters":[{"name":"token","in":"query","schema":{"type":"string"},"description":"Pass token (or Authorization: Bearer)"}],"responses":{"200":{"description":"Same as /aircraft"},"401":{"description":"Pass required"}}}},"/live/history/flight":{"get":{"summary":"History for pass holders (token required)","responses":{"200":{"description":"Same as /history/flight"},"401":{"description":"Pass required"}}}},"/typhoon/verification":{"get":{"summary":"Typhoon AI-model verification dataset (paid, $0.05 USDC)","description":"Historical verification records of an experimental AI cyclone model vs JMA analysis. NOT a weather forecast.","responses":{"200":{"description":"{dataset, summary, rows[]}"},"402":{"description":"Payment required (x402 v2). Payment requirements are base64-encoded in the PAYMENT-REQUIRED response header; the JSON body is a human/agent-readable hint. Pay with an x402 client and retry."}}}},"/typhoon/summary":{"get":{"summary":"Free dataset preview","responses":{"200":{"description":"{summary, n_rows}"}}}},"/aircraft-testnet":{"get":{"summary":"Integration test ($0.001 test-USDC, base-sepolia, 5-aircraft sample)","responses":{"200":{"description":"Sample snapshot"},"402":{"description":"Payment required (x402 v2). Payment requirements are base64-encoded in the PAYMENT-REQUIRED response header; the JSON body is a human/agent-readable hint. Pay with an x402 client and retry."}}}},"/health":{"get":{"summary":"Free data-freshness check","responses":{"200":{"description":"{status, observed_at, age_sec, aircraft_count}"}}}},"/history/coverage":{"get":{"summary":"Free archived-range check","responses":{"200":{"description":"{granularity_sec, rows, oldest, newest, aircraft}"}}}},"/docs":{"get":{"summary":"Free documentation (field dictionary, pricing, disclaimer)","responses":{"200":{"description":"Documentation JSON"}}}}}}