{
  "openapi": "3.1.0",
  "info": {
    "title": "Mycelia Signal \u2014 Sovereign Price Oracle",
    "version": "2.5.0",
    "description": "Cryptographically signed price attestations across 131 endpoints \u2014 crypto, FX, precious metals, US/EU macro, and commodities. Pay-per-query via Lightning (L402) or USDC on Base (x402). Every response is a canonical signed payload independently verifiable against a published public key. No API keys. No subscriptions.\n\n## Preview Endpoints (Free)\n\nAppend `/preview` to any paid endpoint for free unsigned sample data (up to 5 minutes stale). Not suitable for production use.\n\n## Payment Protocols\n\n**L402 (Lightning):** Send a GET request. Receive a `402 Payment Required` with a Lightning invoice and macaroon. Pay the invoice, extract the preimage, resend with `Authorization: L402 <macaroon>:<preimage>`. Cost: 10 sats (spot/FX/metals), 20 sats (VWAP), 1000 sats (econ/commodities).\n\n**x402 (USDC on Base):** Send a GET request. Receive a `402 Payment Required` with payment details. Submit USDC payment on Base, resend with `X-Payment` header. Cost: $0.01 (spot/FX/metals), $0.02 (VWAP), $0.10 (econ/commodities).\n\n## Response Format\n\nAll paid endpoints return a canonical pipe-delimited attestation string (Oracle Attestation Spec v0.4):\n\n`v1|PRICE|PAIR|PRICE|CURRENCY|DECIMALS|SOURCES|METHOD|TIMESTAMP|NONCE`\n\nExample: `v1|PRICE|BTCUSD|84231.50|USD|2|binance,binance_us,bitfinex,bitstamp,coinbase,gateio,gemini,kraken,okx|median|1741521600|562204`\n\n**To get price:** `canonical.split('|')[3]`\n**To get sources:** `canonical.split('|')[6].split(',')`\n\nL402 responses are signed with secp256k1 ECDSA. x402 responses are signed with Ed25519. Per-instance keypairs \u2014 see `/health` for active pubkey.\n\n## Base URL\n\n`https://api.myceliasignal.com`",
    "contact": {
      "email": "info@myceliasignal.com",
      "url": "https://myceliasignal.com"
    },
    "license": {
      "name": "See repository",
      "url": "https://github.com/jonathanbulkeley/Mycelia-Signal-Sovereign-Oracle"
    }
  },
  "servers": [
    {
      "url": "https://api.myceliasignal.com",
      "description": "Production"
    }
  ],
  "tags": [
    {
      "name": "Crypto",
      "description": "Crypto spot and VWAP price attestations"
    },
    {
      "name": "Metals",
      "description": "Precious metals price attestations"
    },
    {
      "name": "FX",
      "description": "Foreign exchange rate attestations"
    },
    {
      "name": "Econ US",
      "description": "US economic indicator attestations"
    },
    {
      "name": "Econ EU",
      "description": "EU economic indicator attestations"
    },
    {
      "name": "Commodities",
      "description": "Commodity price attestations"
    },
    {
      "name": "DLC",
      "description": "Discreet Log Contract oracle (Schnorr attestations)"
    },
    {
      "name": "Free",
      "description": "No payment required"
    },
    {
      "name": "MSVI",
      "description": "Mycelia Signal Volatility Index \u2014 5-component signed volatility oracle for BTC and ETH"
    },
    {
      "name": "MSXI",
      "description": "Mycelia Signal Sentiment Index \u2014 5-component signed sentiment oracle for BTC and ETH. Range: -100 to +100."
    },
    {
      "name": "MSSI",
      "description": "Mycelia Signal Stress Index \u2014 4-component signed market stress oracle. Range: 0 to 100."
    },
    {
      "name": "Marine Oracle",
      "description": "Sea state, vessel position, route risk, and voyage forecast \u2014 Ed25519 signed. Data: Open-Meteo Marine + aisstream.io AIS."
    },
    {
      "name": "Weather Oracle",
      "description": "Parametric weather data for crop insurance and climate risk \u2014 WRSI, rainfall, temperature, wind. Global ERA5 coverage. Ed25519 signed."
    }
  ],
  "components": {
    "schemas": {
      "AttestationResponse": {
        "type": "object",
        "description": "Signed price attestation. All fields are derived from the canonical string.",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Trading pair or indicator identifier",
            "example": "BTCUSD"
          },
          "canonical": {
            "type": "string",
            "description": "Pipe-delimited canonical attestation string (Oracle Attestation Spec v0.4). Price pairs: v1|PRICE|PAIR|PRICE|CURRENCY|DECIMALS|SOURCES|METHOD|TIMESTAMP|NONCE. Econ: v1|ECON|REGION|INDICATOR|VALUE|UNIT|...|NONCE",
            "example": "v1|PRICE|BTCUSD|84231.50|USD|2|binance,binance_us,bitfinex,bitstamp,coinbase,gateio,gemini,kraken,okx|median|1741521600|562204"
          },
          "signature": {
            "type": "string",
            "description": "Base64-encoded signature over SHA-256 hash of the canonical string. L402: secp256k1 ECDSA. x402: Ed25519.",
            "example": "MEUCIQDx..."
          },
          "pubkey": {
            "type": "string",
            "description": "Hex-encoded public key used to sign this attestation. Per-instance keypair \u2014 US GC: 03c1955b8c543494c4ecd86d167105bcc7ca9a91b8e06cb9d6601f2f55a89abfbf",
            "example": "03c1955b8c543494c4ecd86d167105bcc7ca9a91b8e06cb9d6601f2f55a89abfbf"
          }
        },
        "required": [
          "domain",
          "canonical",
          "signature",
          "pubkey"
        ]
      },
      "PreviewResponse": {
        "type": "object",
        "description": "Unsigned preview price data for development and testing. Data may be up to 5 minutes stale. No cryptographic signature.",
        "properties": {
          "pair": {
            "type": "string",
            "example": "BTC/USD"
          },
          "price": {
            "type": "string",
            "example": "84231.50"
          },
          "currency": {
            "type": "string",
            "example": "USD"
          },
          "timestamp": {
            "type": "string",
            "example": "1741521600"
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "binance",
              "coinbase",
              "kraken"
            ]
          },
          "method": {
            "type": "string",
            "enum": [
              "median",
              "vwap"
            ],
            "example": "median"
          },
          "preview": {
            "type": "boolean",
            "example": true
          },
          "signed": {
            "type": "boolean",
            "example": false
          },
          "note": {
            "type": "string",
            "example": "Preview mode \u2014 data up to 5 minutes stale, no cryptographic signature."
          }
        },
        "required": [
          "pair",
          "price",
          "currency",
          "timestamp",
          "sources",
          "method",
          "preview",
          "signed"
        ]
      },
      "CanonicalPriceFields": {
        "type": "object",
        "description": "Fields of the canonical pipe-delimited string for PRICE type (Oracle Attestation Spec v0.4)",
        "properties": {
          "version": {
            "type": "string",
            "example": "v1",
            "description": "Position 0"
          },
          "type": {
            "type": "string",
            "example": "PRICE",
            "description": "Position 1 \u2014 always PRICE for price pairs"
          },
          "pair": {
            "type": "string",
            "example": "BTCUSD",
            "description": "Position 2"
          },
          "price": {
            "type": "string",
            "example": "84231.50",
            "description": "Position 3 \u2014 extract via canonical.split('|')[3]"
          },
          "currency": {
            "type": "string",
            "example": "USD",
            "description": "Position 4"
          },
          "decimals": {
            "type": "string",
            "example": "2",
            "description": "Position 5"
          },
          "timestamp": {
            "type": "string",
            "example": "1741521600",
            "description": "Position 8 \u2014 Unix integer timestamp"
          },
          "nonce": {
            "type": "string",
            "example": "562204",
            "description": "Position 9 \u2014 random 6-digit integer per request"
          },
          "sources": {
            "type": "string",
            "example": "binance,binance_us,coinbase,kraken",
            "description": "Position 6 \u2014 extract via canonical.split('|')[6].split(',')"
          },
          "method": {
            "type": "string",
            "example": "median",
            "description": "Position 7"
          }
        }
      },
      "HealthResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "example": "ok"
          },
          "protocol": {
            "type": "string",
            "example": "x402"
          },
          "version": {
            "type": "string",
            "example": "1.2.0"
          },
          "price_pairs": {
            "type": "integer",
            "example": 37
          },
          "econ_indicators": {
            "type": "integer",
            "example": 19
          }
        }
      },
      "DLCPubkeyResponse": {
        "type": "object",
        "properties": {
          "pubkey": {
            "type": "string",
            "description": "Schnorr public key for DLC attestations"
          }
        }
      },
      "DLCStatusResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "last_attestation": {
            "type": "string"
          }
        }
      },
      "ThresholdContractCreate": {
        "type": "object",
        "required": [
          "pair",
          "strike",
          "direction"
        ],
        "properties": {
          "pair": {
            "type": "string",
            "description": "Trading pair as uppercase concatenated string with no slash. Supported: BTCUSD, BTCEUR, BTCJPY, ETHUSD, ETHEUR, ETHJPY, SOLUSD, SOLEUR, SOLJPY, XRPUSD, ADAUSD, DOGEUSD, XAUUSD, XAUEUR, XAUJPY.",
            "example": "BTCUSD"
          },
          "strike": {
            "type": "number",
            "description": "The price threshold to monitor, in the quote currency of the pair. For BTCUSD, strike:90000 means $90,000 USD. For XAUUSD, strike:3000 means $3,000 per troy oz. Oracle attests when price breaches this level in the specified direction. Must be a positive number.",
            "example": 90000
          },
          "direction": {
            "type": "string",
            "enum": [
              "above",
              "below"
            ],
            "description": "Direction of breach to monitor. 'above' = oracle attests when price rises above strike level. 'below' = oracle attests when price falls below strike level.",
            "example": "above"
          },
          "expiry": {
            "type": "integer",
            "description": "Unix timestamp for contract expiry. Optional \u2014 defaults to 1 year from registration. Maximum 1 year forward. Example: use Math.floor(Date.now()/1000) + 86400*30 for 30 days.",
            "example": 1780000000
          },
          "webhookUrl": {
            "type": "string",
            "description": "Optional URL to POST attestation payload on breach or expiry",
            "example": "https://your-server.com/dlc-webhook"
          }
        }
      },
      "ThresholdContractOut": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "example": "registered"
          },
          "eventid": {
            "type": "string",
            "example": "BTCUSD-ABOVE-90000-1774050380"
          },
          "pair": {
            "type": "string",
            "example": "BTCUSD"
          },
          "strike": {
            "type": "number",
            "example": 90000
          },
          "direction": {
            "type": "string",
            "example": "above"
          },
          "expiry": {
            "type": "integer",
            "example": 1780000000
          },
          "oraclePubkey": {
            "type": "string",
            "example": "03ff5589b5812f07dec1aad7af189e0513160799820386128a80d37d1503a8e84f"
          },
          "rpoints": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "webhookUrl": {
            "type": "string"
          },
          "rail": {
            "type": "string",
            "example": "l402"
          }
        }
      },
      "MSVIComponent": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "description": "Component value"
          },
          "weight": {
            "type": "number",
            "description": "Component weight in composite"
          },
          "confidence": {
            "type": "number",
            "description": "Component confidence 0.0-1.0"
          }
        }
      },
      "MSVIResponse": {
        "type": "object",
        "properties": {
          "pair": {
            "type": "string",
            "description": "Asset pair e.g. BTCUSD"
          },
          "canonical": {
            "type": "string",
            "description": "Pipe-delimited MSVI canonical string v1|VOLATILITY|BTCUSD|MSVI|..."
          },
          "signature": {
            "type": "string",
            "description": "Ed25519 signature over SHA-256(canonical), base64"
          },
          "signingScheme": {
            "type": "string",
            "enum": [
              "ed25519"
            ]
          },
          "pubkey": {
            "type": "string",
            "description": "Ed25519 public key hex"
          },
          "value": {
            "type": "number",
            "description": "MSVI composite value 0-100"
          },
          "unit": {
            "type": "string",
            "description": "index (normalized) or pct_annualized (pre-normalization)"
          },
          "normalized": {
            "type": "boolean"
          },
          "confidence": {
            "type": "number",
            "description": "Composite confidence 0.0-1.0"
          },
          "degraded": {
            "type": "boolean"
          },
          "methodVersion": {
            "type": "integer"
          },
          "spotPrice": {
            "type": "number"
          },
          "computedAt": {
            "type": "integer",
            "description": "Unix timestamp"
          },
          "components": {
            "type": "object",
            "properties": {
              "rv": {
                "$ref": "#/components/schemas/MSVIComponent"
              },
              "iv": {
                "$ref": "#/components/schemas/MSVIComponent"
              },
              "ts": {
                "$ref": "#/components/schemas/MSVIComponent"
              },
              "fr": {
                "$ref": "#/components/schemas/MSVIComponent"
              },
              "pcr": {
                "$ref": "#/components/schemas/MSVIComponent"
              }
            }
          }
        },
        "required": [
          "pair",
          "canonical",
          "signature",
          "value",
          "confidence"
        ]
      },
      "MSXIComponent": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number"
          },
          "weight": {
            "type": "number"
          },
          "confidence": {
            "type": "number"
          }
        }
      },
      "MSXIResponse": {
        "type": "object",
        "properties": {
          "pair": {
            "type": "string",
            "description": "Asset pair e.g. BTCUSD"
          },
          "canonical": {
            "type": "string",
            "description": "v1|SENTIMENT|BTCUSD|MSXI|{value}|INDEX|FR:{fr}:{w},SKEW:{skew}:{w},PCR:{pcr}:{w},TS:{ts}:{w},BASIS:{basis}:{w}|REGIME:{regime}|CONFIDENCE:{c}|METHOD:v1|{ts}|{nonce}"
          },
          "signature": {
            "type": "string",
            "description": "Ed25519 signature over SHA-256(canonical), base64"
          },
          "signingScheme": {
            "type": "string",
            "enum": [
              "ed25519"
            ]
          },
          "pubkey": {
            "type": "string"
          },
          "value": {
            "type": "number",
            "description": "MSXI value -100 to +100. Positive=bullish, negative=bearish."
          },
          "unit": {
            "type": "string",
            "example": "index"
          },
          "regime": {
            "type": "string",
            "enum": [
              "EXTREMEBULLISH",
              "BULLISH",
              "NEUTRAL",
              "BEARISH",
              "EXTREMEBEARISH"
            ]
          },
          "confidence": {
            "type": "number"
          },
          "degraded": {
            "type": "boolean"
          },
          "methodVersion": {
            "type": "integer"
          },
          "computedAt": {
            "type": "integer"
          },
          "components": {
            "type": "object",
            "properties": {
              "fr": {
                "$ref": "#/components/schemas/MSXIComponent"
              },
              "skew": {
                "$ref": "#/components/schemas/MSXIComponent"
              },
              "pcr": {
                "$ref": "#/components/schemas/MSXIComponent"
              },
              "ts": {
                "$ref": "#/components/schemas/MSXIComponent"
              },
              "basis": {
                "$ref": "#/components/schemas/MSXIComponent"
              }
            }
          }
        },
        "required": [
          "pair",
          "canonical",
          "signature",
          "value",
          "regime",
          "confidence"
        ]
      },
      "MSSIComponent": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number"
          },
          "weight": {
            "type": "number"
          },
          "confidence": {
            "type": "number"
          }
        }
      },
      "MSSIResponse": {
        "type": "object",
        "properties": {
          "scope": {
            "type": "string",
            "example": "MARKET"
          },
          "canonical": {
            "type": "string",
            "description": "v1|STRESS|MARKET|MSSI|{value}|INDEX|VOL:{vol}:{w},STBL:{stbl}:{w},FR:{fr}:{w}|REGIME:{regime}|CONFIDENCE:{c}|METHOD:v1|{ts}|{nonce}"
          },
          "signature": {
            "type": "string",
            "description": "Ed25519 signature over SHA-256(canonical), base64"
          },
          "signingScheme": {
            "type": "string",
            "enum": [
              "ed25519"
            ]
          },
          "pubkey": {
            "type": "string"
          },
          "value": {
            "type": "number",
            "description": "MSSI value 0-100. Higher=more stressed."
          },
          "unit": {
            "type": "string",
            "example": "index"
          },
          "regime": {
            "type": "string",
            "enum": [
              "CALM",
              "ELEVATED",
              "HIGH",
              "EXTREME"
            ]
          },
          "confidence": {
            "type": "number"
          },
          "degraded": {
            "type": "boolean"
          },
          "methodVersion": {
            "type": "integer"
          },
          "computedAt": {
            "type": "integer"
          },
          "components": {
            "type": "object",
            "properties": {
              "vol": {
                "$ref": "#/components/schemas/MSSIComponent"
              },
              "stbl": {
                "$ref": "#/components/schemas/MSSIComponent"
              },
              "fr": {
                "$ref": "#/components/schemas/MSSIComponent"
              }
            }
          }
        },
        "required": [
          "scope",
          "canonical",
          "signature",
          "value",
          "regime",
          "confidence"
        ]
      },
      "MarineSeaStatePreview": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "example": 50.0
          },
          "lon": {
            "type": "number",
            "example": -20.0
          },
          "wave_height_m": {
            "type": "number",
            "example": 4.02
          },
          "sea_state": {
            "type": "string",
            "example": "HEAVY",
            "enum": [
              "CALM",
              "SLIGHT",
              "MODERATE",
              "ROUGH",
              "HEAVY",
              "SEVERE",
              "EXTREME"
            ]
          },
          "heavy_weather": {
            "type": "boolean",
            "example": true
          },
          "preview": {
            "type": "boolean",
            "example": true
          },
          "signed": {
            "type": "boolean",
            "example": false
          }
        }
      },
      "MarineSeaStateResponse": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number"
          },
          "lon": {
            "type": "number"
          },
          "wave_height_m": {
            "type": "number",
            "example": 4.02
          },
          "swell_height_m": {
            "type": "number",
            "example": 3.62
          },
          "sea_state": {
            "type": "string",
            "example": "HEAVY"
          },
          "triggers": {
            "type": "object",
            "properties": {
              "heavy": {
                "type": "boolean"
              },
              "severe": {
                "type": "boolean"
              },
              "extreme": {
                "type": "boolean"
              }
            }
          },
          "data_timestamp": {
            "type": "string",
            "example": "2026-04-20T23:00"
          },
          "source": {
            "type": "string",
            "example": "Open-Meteo Marine"
          },
          "canonical": {
            "type": "string",
            "example": "v1|MARINE|50.0,-20.0|WAVE:4.02m|SWELL:3.62m|HEAVY|1776697348|794426"
          },
          "signature": {
            "type": "string"
          },
          "signingScheme": {
            "type": "string",
            "example": "ed25519"
          },
          "pubkey": {
            "type": "string"
          },
          "computedAt": {
            "type": "integer"
          }
        }
      },
      "MarineVesselResponse": {
        "type": "object",
        "properties": {
          "mmsi": {
            "type": "string",
            "example": "563247300"
          },
          "ship_name": {
            "type": "string",
            "example": "LOWLANDS OBERLIN"
          },
          "position": {
            "type": "object",
            "properties": {
              "lat": {
                "type": "number"
              },
              "lon": {
                "type": "number"
              }
            }
          },
          "sog_kts": {
            "type": "number",
            "example": 7.7
          },
          "wave_height_m": {
            "type": "number",
            "example": 1.08
          },
          "swell_height_m": {
            "type": "number"
          },
          "sea_state": {
            "type": "string",
            "example": "SLIGHT"
          },
          "triggers": {
            "type": "object"
          },
          "ais_timestamp": {
            "type": "string"
          },
          "canonical": {
            "type": "string"
          },
          "signature": {
            "type": "string"
          },
          "signingScheme": {
            "type": "string"
          },
          "pubkey": {
            "type": "string"
          },
          "computedAt": {
            "type": "integer"
          }
        }
      },
      "MarineRouteResponse": {
        "type": "object",
        "properties": {
          "route": {
            "type": "object"
          },
          "waypoints_sampled": {
            "type": "integer"
          },
          "max_wave_height_m": {
            "type": "number",
            "example": 4.54
          },
          "mean_wave_height_m": {
            "type": "number"
          },
          "worst_sea_state": {
            "type": "string",
            "example": "HEAVY"
          },
          "heavy_weather_encountered": {
            "type": "boolean"
          },
          "severe_weather_encountered": {
            "type": "boolean"
          },
          "readings": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "canonical": {
            "type": "string"
          },
          "signature": {
            "type": "string"
          },
          "signingScheme": {
            "type": "string"
          },
          "pubkey": {
            "type": "string"
          },
          "computedAt": {
            "type": "integer"
          }
        }
      },
      "MarineVoyageResponse": {
        "type": "object",
        "properties": {
          "mmsi": {
            "type": "string"
          },
          "ship_name": {
            "type": "string"
          },
          "departure": {
            "type": "object"
          },
          "destination": {
            "type": "object"
          },
          "speed_kts": {
            "type": "number"
          },
          "distance_nm": {
            "type": "number",
            "example": 3160
          },
          "voyage_hours": {
            "type": "number",
            "example": 168
          },
          "max_forecast_wave_m": {
            "type": "number",
            "example": 4.48
          },
          "worst_sea_state": {
            "type": "string",
            "example": "HEAVY"
          },
          "heavy_weather_hours": {
            "type": "integer",
            "example": 72
          },
          "heavy_weather_encountered": {
            "type": "boolean"
          },
          "severe_weather_encountered": {
            "type": "boolean"
          },
          "waypoint_forecasts": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "canonical": {
            "type": "string"
          },
          "signature": {
            "type": "string"
          },
          "signingScheme": {
            "type": "string"
          },
          "pubkey": {
            "type": "string"
          },
          "computedAt": {
            "type": "integer"
          },
          "note": {
            "type": "string"
          }
        }
      },
      "COTResponse": {
        "type": "object",
        "description": "CFTC COT TFF Futures Only response for BTC CME futures",
        "properties": {
          "pair": {
            "type": "string",
            "example": "BTCUSD"
          },
          "report_date": {
            "type": "string",
            "example": "2026-04-14"
          },
          "open_interest": {
            "type": "integer",
            "example": 23761
          },
          "leveraged_funds": {
            "type": "object",
            "properties": {
              "long": {
                "type": "integer"
              },
              "short": {
                "type": "integer"
              },
              "net": {
                "type": "integer"
              },
              "pct_long": {
                "type": "number"
              },
              "pct_short": {
                "type": "number"
              },
              "change_long": {
                "type": "integer"
              },
              "change_short": {
                "type": "integer"
              }
            }
          },
          "asset_managers": {
            "type": "object",
            "properties": {
              "long": {
                "type": "integer"
              },
              "short": {
                "type": "integer"
              },
              "net": {
                "type": "integer"
              },
              "pct_long": {
                "type": "number"
              },
              "pct_short": {
                "type": "number"
              },
              "change_long": {
                "type": "integer"
              },
              "change_short": {
                "type": "integer"
              }
            }
          },
          "dealers": {
            "type": "object",
            "properties": {
              "long": {
                "type": "integer"
              },
              "short": {
                "type": "integer"
              },
              "net": {
                "type": "integer"
              },
              "pct_long": {
                "type": "number"
              },
              "pct_short": {
                "type": "number"
              },
              "change_long": {
                "type": "integer"
              },
              "change_short": {
                "type": "integer"
              }
            }
          },
          "source": {
            "type": "string",
            "example": "CFTC"
          },
          "report_type": {
            "type": "string",
            "example": "TFF_futures_only"
          },
          "cftc_code": {
            "type": "string",
            "example": "133741"
          },
          "lag_note": {
            "type": "string"
          },
          "canonical": {
            "type": "string"
          },
          "signature": {
            "type": "string"
          },
          "signing_scheme": {
            "type": "string",
            "example": "ed25519"
          },
          "pubkey": {
            "type": "string"
          },
          "fetched_at": {
            "type": "integer"
          }
        }
      },
      "WeatherWRSIResponse": {
        "type": "object",
        "description": "Signed WRSI (Water Requirement Satisfaction Index) attestation for parametric drought insurance.",
        "properties": {
          "lat": {
            "type": "number",
            "description": "Latitude of measurement",
            "example": -0.3031
          },
          "lon": {
            "type": "number",
            "description": "Longitude of measurement",
            "example": 36.08
          },
          "window_days": {
            "type": "integer",
            "description": "Rolling window in days",
            "example": 30
          },
          "wrsi": {
            "type": "number",
            "description": "WRSI value (0-1). Below 0.50 = drought, below 0.25 = severe drought",
            "example": 0.45
          },
          "drought_status": {
            "type": "string",
            "description": "NORMAL, DROUGHT, or SEVERE_DROUGHT",
            "example": "DROUGHT"
          },
          "trigger": {
            "type": "boolean",
            "description": "True if WRSI below threshold",
            "example": true
          },
          "rainfall_mm": {
            "type": "number",
            "description": "Cumulative rainfall in mm over window",
            "example": 62.2
          },
          "source": {
            "type": "string",
            "example": "ERA5 via Open-Meteo"
          },
          "canonical": {
            "type": "string",
            "description": "Pipe-delimited canonical attestation string"
          },
          "signature": {
            "type": "string",
            "description": "Ed25519 signature over canonical string"
          },
          "pubkey": {
            "type": "string",
            "description": "Ed25519 public key hex"
          }
        }
      },
      "WeatherRainfallResponse": {
        "type": "object",
        "description": "Signed cumulative rainfall attestation.",
        "properties": {
          "lat": {
            "type": "number",
            "example": -0.3031
          },
          "lon": {
            "type": "number",
            "example": 36.08
          },
          "window_days": {
            "type": "integer",
            "example": 30
          },
          "rainfall_mm": {
            "type": "number",
            "description": "Cumulative rainfall in mm",
            "example": 62.2
          },
          "source": {
            "type": "string",
            "example": "ERA5 via Open-Meteo"
          },
          "canonical": {
            "type": "string"
          },
          "signature": {
            "type": "string"
          },
          "pubkey": {
            "type": "string"
          }
        }
      },
      "WeatherTemperatureResponse": {
        "type": "object",
        "description": "Signed temperature attestation with frost and heat stress triggers.",
        "properties": {
          "lat": {
            "type": "number",
            "example": -0.3031
          },
          "lon": {
            "type": "number",
            "example": 36.08
          },
          "window_days": {
            "type": "integer",
            "example": 30
          },
          "tmin": {
            "type": "number",
            "description": "Minimum temperature \u00b0C",
            "example": 12.3
          },
          "tmax": {
            "type": "number",
            "description": "Maximum temperature \u00b0C",
            "example": 31.5
          },
          "tmean": {
            "type": "number",
            "description": "Mean temperature \u00b0C",
            "example": 22.1
          },
          "frost_trigger": {
            "type": "boolean",
            "description": "True if tmin < 0\u00b0C",
            "example": false
          },
          "heat_trigger": {
            "type": "boolean",
            "description": "True if tmax > 35\u00b0C",
            "example": false
          },
          "source": {
            "type": "string",
            "example": "ERA5 via Open-Meteo"
          },
          "canonical": {
            "type": "string"
          },
          "signature": {
            "type": "string"
          },
          "pubkey": {
            "type": "string"
          }
        }
      },
      "WeatherWindResponse": {
        "type": "object",
        "description": "Signed wind speed attestation with gale and storm triggers.",
        "properties": {
          "lat": {
            "type": "number",
            "example": -0.3031
          },
          "lon": {
            "type": "number",
            "example": 36.08
          },
          "window_days": {
            "type": "integer",
            "example": 14
          },
          "wind_max_kmh": {
            "type": "number",
            "description": "Maximum wind speed km/h",
            "example": 45.2
          },
          "wind_mean_kmh": {
            "type": "number",
            "description": "Mean wind speed km/h",
            "example": 18.7
          },
          "gale_trigger": {
            "type": "boolean",
            "description": "True if > 62 km/h",
            "example": false
          },
          "storm_trigger": {
            "type": "boolean",
            "description": "True if > 117 km/h",
            "example": false
          },
          "source": {
            "type": "string",
            "example": "ERA5 via Open-Meteo"
          },
          "canonical": {
            "type": "string"
          },
          "signature": {
            "type": "string"
          },
          "pubkey": {
            "type": "string"
          }
        }
      },
      "EnumEventCreate": {
        "type": "object",
        "required": [
          "label",
          "outcomes",
          "maturityTs"
        ],
        "properties": {
          "label": {
            "type": "string",
            "description": "Human-readable event label"
          },
          "outcomes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 2,
            "maxItems": 100,
            "description": "Disjoint union outcomes (2-100)"
          },
          "maturityTs": {
            "type": "integer",
            "description": "Unix timestamp for event maturity (60s to 365d future)"
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata including resolverConfig for auto-resolution",
            "properties": {
              "resolverConfig": {
                "type": "object",
                "description": "Auto-resolution config: {kind: 'price_buckets', source: <url>, boundaries: [n1,n2,...]} or {kind: 'webhook', url: <url>}"
              }
            }
          }
        }
      },
      "NumericEventCreate": {
        "type": "object",
        "required": [
          "label",
          "maturityTs"
        ],
        "properties": {
          "label": {
            "type": "string",
            "description": "Human-readable event label"
          },
          "base": {
            "type": "integer",
            "minimum": 2,
            "maximum": 256,
            "default": 10,
            "description": "Numeral base for digit decomposition"
          },
          "nbDigits": {
            "type": "integer",
            "minimum": 1,
            "maximum": 32,
            "default": 7,
            "description": "Number of digits"
          },
          "isSigned": {
            "type": "boolean",
            "default": false,
            "description": "Whether value can be negative"
          },
          "unit": {
            "type": "string",
            "default": "USD",
            "description": "Unit label (max 32 chars)"
          },
          "maturityTs": {
            "type": "integer",
            "description": "Unix timestamp for event maturity"
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata including resolverConfig for auto-resolution",
            "properties": {
              "resolverConfig": {
                "type": "object",
                "description": "Auto-resolution config: {kind: 'price_source', source: <url>, scaleFactor: <float>} or {kind: 'webhook', url: <url>}"
              }
            }
          }
        }
      },
      "EnumEventOut": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "eventid": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "enum"
            ]
          },
          "label": {
            "type": "string"
          },
          "outcomes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "maturityTs": {
            "type": "integer"
          },
          "oraclePubkey": {
            "type": "string",
            "description": "BIP-340 x-only oracle public key (hex)"
          },
          "rpoints": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Pre-committed x-only nonce R points (one per outcome)"
          },
          "announcementSignature": {
            "type": "string",
            "description": "BIP-340 Schnorr signature over oracle_event"
          },
          "serialized": {
            "type": "string",
            "description": "Hex-encoded TLV blob per dlcspecs \u2014 feed directly to kormir/dlcdevkit/rust-dlc"
          },
          "rail": {
            "type": "string",
            "enum": [
              "x402",
              "l402"
            ]
          },
          "priceUsd": {
            "type": "number"
          }
        }
      },
      "NumericEventOut": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "eventid": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "numeric"
            ]
          },
          "label": {
            "type": "string"
          },
          "base": {
            "type": "integer"
          },
          "nbDigits": {
            "type": "integer"
          },
          "isSigned": {
            "type": "boolean"
          },
          "unit": {
            "type": "string"
          },
          "maturityTs": {
            "type": "integer"
          },
          "oraclePubkey": {
            "type": "string"
          },
          "rpoints": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Pre-committed nonces (one per digit + optional sign nonce)"
          },
          "announcementSignature": {
            "type": "string"
          },
          "serialized": {
            "type": "string"
          },
          "rail": {
            "type": "string",
            "enum": [
              "x402",
              "l402"
            ]
          },
          "priceUsd": {
            "type": "number"
          }
        }
      },
      "AttestationOut": {
        "type": "object",
        "properties": {
          "eventid": {
            "type": "string"
          },
          "outcome": {
            "type": "string",
            "description": "Winning outcome (enum) or comma-separated digits (numeric)"
          },
          "signatures": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "BIP-340 Schnorr signatures"
          },
          "serialized": {
            "type": "string",
            "description": "Hex-encoded TLV attestation blob"
          },
          "attestedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      }
    }
  },
  "paths": {
    "/health": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "Health Check",
        "description": "Returns health status of the oracle proxy including version, protocol, and active endpoint counts.",
        "responses": {
          "200": {
            "description": "Health status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/x402": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "x402 Discovery",
        "description": "Returns the x402 well-known discovery document listing all 56 paid endpoints with payment requirements.",
        "responses": {
          "200": {
            "description": "x402 discovery document"
          }
        }
      }
    },
    "/oracle/price/btc/usd": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "BTC/USD Spot",
        "description": "Signed BTC/USD price attestation. Median of 9 sources (Binance, Binance US, Bitfinex, Bitstamp, Coinbase, Gate.io, Gemini, Kraken, OKX) with USDT normalization. ~1-2s response.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base\n\nFree preview: `/oracle/price/btc/usd/preview`",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required (L402 or x402)"
          }
        }
      }
    },
    "/oracle/price/btc/usd/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "BTC/USD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/btc/usd/vwap": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "BTC/USD VWAP (5-min)",
        "description": "Signed BTC/USD 5-minute VWAP attestation. 7-source VWAP with USDT normalization.\n\n**L402:** 20 sats \u00b7 **x402:** $0.02 USDC on Base\n\nFree preview: `/oracle/price/btc/usd/vwap/preview`",
        "responses": {
          "200": {
            "description": "Signed VWAP attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/btc/usd/vwap/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "BTC/USD VWAP Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/btc/eur": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "BTC/EUR Spot",
        "description": "Signed BTC/EUR price attestation. Cross-rate from BTCUSD/EURUSD (17 combined sources). ~6-7s response.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/btc/eur/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "BTC/EUR Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/btc/eur/vwap": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "BTC/EUR VWAP (5-min)",
        "description": "Signed BTC/EUR 5-minute VWAP. Cross-rate from BTCUSD VWAP / EURUSD. ~6-7s response.\n\n**L402:** 20 sats \u00b7 **x402:** $0.02 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/btc/eur/vwap/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "BTC/EUR VWAP Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/btc/jpy": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "BTC/JPY Spot",
        "description": "Signed BTC/JPY price attestation.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/btc/jpy/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "BTC/JPY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/eth/usd": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "ETH/USD Spot",
        "description": "Signed ETH/USD price attestation. Median of 5 sources (Coinbase, Kraken, Bitstamp, Gemini, Bitfinex). ~1-2s response.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/eth/usd/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "ETH/USD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/eth/eur": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "ETH/EUR Spot",
        "description": "Signed ETH/EUR price attestation. Hybrid median: 3 direct EUR pairs + cross-rate. ~6-7s response.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/eth/eur/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "ETH/EUR Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/eth/jpy": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "ETH/JPY Spot",
        "description": "Signed ETH/JPY price attestation.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/eth/jpy/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "ETH/JPY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/sol/usd": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "SOL/USD Spot",
        "description": "Signed SOL/USD price attestation. Median of 9 sources (Coinbase, Kraken, Bitstamp, Gemini, Bitfinex, Binance, OKX, Gate.io, Bybit) with USDT normalization. ~1-2s response.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/sol/usd/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "SOL/USD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/sol/eur": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "SOL/EUR Spot",
        "description": "Signed SOL/EUR price attestation. Hybrid median: 3 direct EUR pairs + cross-rate. ~6-7s response.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/sol/eur/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "SOL/EUR Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/sol/jpy": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "SOL/JPY Spot",
        "description": "Signed SOL/JPY price attestation.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/sol/jpy/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "SOL/JPY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/xrp/usd": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "XRP/USD Spot",
        "description": "Signed XRP/USD price attestation.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/xrp/usd/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "XRP/USD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/ada/usd": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "ADA/USD Spot",
        "description": "Signed ADA/USD price attestation.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/ada/usd/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "ADA/USD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/doge/usd": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "DOGE/USD Spot",
        "description": "Signed DOGE/USD price attestation.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/doge/usd/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "DOGE/USD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/xau/usd": {
      "get": {
        "tags": [
          "Metals"
        ],
        "summary": "XAU/USD Spot (Gold)",
        "description": "Signed Gold/USD price attestation. Median of 8 sources (Kitco, JM Bullion, GoldBroker, Coinbase, Kraken, Gemini, Binance, OKX) with PAXG exclusion logic. ~1-2s response.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/xau/usd/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "XAU/USD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/xau/eur": {
      "get": {
        "tags": [
          "Metals"
        ],
        "summary": "XAU/EUR Spot (Gold)",
        "description": "Signed Gold/EUR price attestation. Cross-rate from XAUUSD / EURUSD. ~6-7s response.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/xau/eur/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "XAU/EUR Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/xau/jpy": {
      "get": {
        "tags": [
          "Metals"
        ],
        "summary": "XAU/JPY Spot (Gold)",
        "description": "Signed Gold/JPY price attestation.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/xau/jpy/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "XAU/JPY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/eur/usd": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "EUR/USD",
        "description": "Signed EUR/USD rate. Median of 8 sources (ECB/Frankfurter, ECB Direct, Bank of Canada, RBA, Norges Bank, CNB, Kraken, Bitstamp). ~1-2s response.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/eur/usd/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "EUR/USD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/eur/jpy": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "EUR/JPY",
        "description": "Signed EUR/JPY rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/eur/jpy/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "EUR/JPY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/eur/gbp": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "EUR/GBP",
        "description": "Signed EUR/GBP rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/eur/gbp/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "EUR/GBP Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/eur/chf": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "EUR/CHF",
        "description": "Signed EUR/CHF rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/eur/chf/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "EUR/CHF Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/eur/cny": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "EUR/CNY",
        "description": "Signed EUR/CNY rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/eur/cny/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "EUR/CNY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/eur/cad": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "EUR/CAD",
        "description": "Signed EUR/CAD rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/eur/cad/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "EUR/CAD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/gbp/usd": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "GBP/USD",
        "description": "Signed GBP/USD rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/gbp/usd/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "GBP/USD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/gbp/jpy": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "GBP/JPY",
        "description": "Signed GBP/JPY rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/gbp/jpy/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "GBP/JPY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/gbp/chf": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "GBP/CHF",
        "description": "Signed GBP/CHF rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/gbp/chf/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "GBP/CHF Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/gbp/cny": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "GBP/CNY",
        "description": "Signed GBP/CNY rate. Single source (min_sources: 1).\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/gbp/cny/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "GBP/CNY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/gbp/cad": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "GBP/CAD",
        "description": "Signed GBP/CAD rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/gbp/cad/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "GBP/CAD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/usd/jpy": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "USD/JPY",
        "description": "Signed USD/JPY rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/usd/jpy/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "USD/JPY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/usd/chf": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "USD/CHF",
        "description": "Signed USD/CHF rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/usd/chf/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "USD/CHF Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/usd/cny": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "USD/CNY",
        "description": "Signed USD/CNY rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/usd/cny/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "USD/CNY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/usd/cad": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "USD/CAD",
        "description": "Signed USD/CAD rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/usd/cad/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "USD/CAD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/chf/jpy": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "CHF/JPY",
        "description": "Signed CHF/JPY rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/chf/jpy/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "CHF/JPY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/chf/cad": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "CHF/CAD",
        "description": "Signed CHF/CAD rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/chf/cad/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "CHF/CAD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/cny/jpy": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "CNY/JPY",
        "description": "Signed CNY/JPY rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/cny/jpy/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "CNY/JPY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/cny/cad": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "CNY/CAD",
        "description": "Signed CNY/CAD rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/cny/cad/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "CNY/CAD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/cad/jpy": {
      "get": {
        "tags": [
          "FX"
        ],
        "summary": "CAD/JPY",
        "description": "Signed CAD/JPY rate.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/cad/jpy/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "CAD/JPY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/us/cpi": {
      "get": {
        "tags": [
          "Econ US"
        ],
        "summary": "US CPI",
        "description": "Signed US Consumer Price Index attestation (BLS).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10 USDC on Base",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/us/cpi/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "US CPI Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/us/cpi_core": {
      "get": {
        "tags": [
          "Econ US"
        ],
        "summary": "US CPI Core",
        "description": "Signed US CPI Core (ex food & energy) attestation (BLS).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/us/cpi_core/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "US CPI Core Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/us/unrate": {
      "get": {
        "tags": [
          "Econ US"
        ],
        "summary": "US Unemployment Rate",
        "description": "Signed US Unemployment Rate attestation (BLS).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/us/unrate/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "US Unemployment Rate Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/us/nfp": {
      "get": {
        "tags": [
          "Econ US"
        ],
        "summary": "US Nonfarm Payrolls",
        "description": "Signed US Nonfarm Payrolls attestation (BLS).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/us/nfp/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "US NFP Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/us/fedfunds": {
      "get": {
        "tags": [
          "Econ US"
        ],
        "summary": "US Federal Funds Rate",
        "description": "Signed US Federal Funds Rate attestation (FRED).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/us/fedfunds/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "US Fed Funds Rate Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/us/gdp": {
      "get": {
        "tags": [
          "Econ US"
        ],
        "summary": "US GDP",
        "description": "Signed US GDP attestation (FRED/BEA).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/us/gdp/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "US GDP Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/us/pce": {
      "get": {
        "tags": [
          "Econ US"
        ],
        "summary": "US PCE Price Index",
        "description": "Signed US PCE Price Index attestation (FRED).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/us/pce/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "US PCE Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/us/yield_curve": {
      "get": {
        "tags": [
          "Econ US"
        ],
        "summary": "US Yield Curve (10Y-2Y)",
        "description": "Signed US Yield Curve spread (10Y minus 2Y) attestation (FRED).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/us/yield_curve/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "US Yield Curve Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/eu/hicp": {
      "get": {
        "tags": [
          "Econ EU"
        ],
        "summary": "EU HICP Inflation",
        "description": "Signed EU HICP inflation attestation (Eurostat).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/eu/hicp/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "EU HICP Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/eu/hicp_core": {
      "get": {
        "tags": [
          "Econ EU"
        ],
        "summary": "EU HICP Core",
        "description": "Signed EU HICP Core inflation attestation (Eurostat).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/eu/hicp_core/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "EU HICP Core Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/eu/hicp_services": {
      "get": {
        "tags": [
          "Econ EU"
        ],
        "summary": "EU HICP Services",
        "description": "Signed EU HICP Services inflation attestation (Eurostat).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/eu/hicp_services/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "EU HICP Services Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/eu/unrate": {
      "get": {
        "tags": [
          "Econ EU"
        ],
        "summary": "EU Unemployment Rate",
        "description": "Signed EU Unemployment Rate attestation (Eurostat).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/eu/unrate/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "EU Unemployment Rate Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/eu/gdp": {
      "get": {
        "tags": [
          "Econ EU"
        ],
        "summary": "EU GDP",
        "description": "Signed EU GDP attestation (Eurostat).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/eu/gdp/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "EU GDP Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/eu/employment": {
      "get": {
        "tags": [
          "Econ EU"
        ],
        "summary": "EU Employment",
        "description": "Signed EU Employment attestation (Eurostat).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/eu/employment/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "EU Employment Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/commodities/wti": {
      "get": {
        "tags": [
          "Commodities"
        ],
        "summary": "WTI Crude Oil",
        "description": "Signed WTI Crude Oil price attestation (EIA/FRED).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/commodities/wti/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "WTI Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/commodities/brent": {
      "get": {
        "tags": [
          "Commodities"
        ],
        "summary": "Brent Crude Oil",
        "description": "Signed Brent Crude Oil price attestation.\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/commodities/brent/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "Brent Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/commodities/natgas": {
      "get": {
        "tags": [
          "Commodities"
        ],
        "summary": "Henry Hub Natural Gas",
        "description": "Signed Henry Hub Natural Gas price attestation (EIA/FRED).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/commodities/natgas/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "NatGas Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/commodities/copper": {
      "get": {
        "tags": [
          "Commodities"
        ],
        "summary": "Copper",
        "description": "Signed Copper price attestation (FRED).\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/commodities/copper/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "Copper Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/econ/commodities/dxy": {
      "get": {
        "tags": [
          "Commodities"
        ],
        "summary": "US Dollar Index (DXY)",
        "description": "Signed US Dollar Index attestation.\n\n**L402:** 1000 sats \u00b7 **x402:** $0.10",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/econ/commodities/dxy/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "DXY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/dlc/oracle/pubkey": {
      "get": {
        "tags": [
          "DLC"
        ],
        "summary": "DLC Oracle Public Key",
        "description": "Returns the Schnorr public key used for DLC attestations. Free endpoint.",
        "responses": {
          "200": {
            "description": "DLC public key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DLCPubkeyResponse"
                }
              }
            }
          }
        }
      }
    },
    "/dlc/oracle/status": {
      "get": {
        "tags": [
          "DLC"
        ],
        "summary": "DLC Oracle Status",
        "description": "Returns current DLC oracle status and last attestation time. Free endpoint.",
        "responses": {
          "200": {
            "description": "DLC status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DLCStatusResponse"
                }
              }
            }
          }
        }
      }
    },
    "/dlc/oracle/announcements": {
      "get": {
        "tags": [
          "DLC"
        ],
        "summary": "DLC Announcements",
        "description": "Returns upcoming DLC event announcements. Free endpoint.",
        "responses": {
          "200": {
            "description": "List of DLC event announcements"
          }
        }
      }
    },
    "/dlc/oracle/attestations": {
      "get": {
        "tags": [
          "DLC"
        ],
        "summary": "List All Attestations",
        "description": "Returns all settled DLC attestations \u2014 both numeric and threshold contracts. Free endpoint, no payment required.\n\nFilter by time on the client side using the `attestedAt` field. Results are sorted newest first.\n\nExample: to get attestations from the last 48 hours, filter where `attestedAt >= now - 48h`.",
        "responses": {
          "200": {
            "description": "List of all settled attestations",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "attestations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "eventid": {
                            "type": "string",
                            "example": "BTCUSD-2026-03-21T00:00:00Z"
                          },
                          "type": {
                            "type": "string",
                            "enum": [
                              "numeric",
                              "threshold"
                            ],
                            "example": "numeric"
                          },
                          "pair": {
                            "type": "string",
                            "example": "BTCUSD"
                          },
                          "oraclePubkey": {
                            "type": "string"
                          },
                          "attestedAt": {
                            "type": "string",
                            "example": "2026-03-21T00:00:00Z"
                          }
                        }
                      }
                    },
                    "count": {
                      "type": "integer",
                      "example": 6
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/dlc/oracle/attestations/{event_id}": {
      "get": {
        "tags": [
          "DLC"
        ],
        "summary": "DLC Attestation",
        "description": "Returns a Schnorr attestation for a specific DLC event. Returns HTTP 425 if not yet attested.\n\n**Free endpoint** \u2014 attestations are publicly available.",
        "parameters": [
          {
            "name": "event_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "DLC event identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Schnorr attestation for the event"
          }
        }
      }
    },
    "/dlc/oracle/announcements/{eventid}": {
      "get": {
        "tags": [
          "DLC"
        ],
        "summary": "DLC Announcement by Event ID",
        "description": "Returns a single DLC announcement by event ID. Free endpoint.\n\nEvent ID formats:\n- Numeric: `BTCUSD-2026-03-28T00:00:00Z`\n- Threshold: `BTCUSD-ABOVE-90000-1774050380`",
        "parameters": [
          {
            "name": "eventid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "DLC event identifier",
            "example": "BTCUSD-2026-03-28T00:00:00Z"
          }
        ],
        "responses": {
          "200": {
            "description": "DLC announcement including oraclePubkey and rpoints"
          },
          "404": {
            "description": "Event not found"
          }
        }
      }
    },
    "/dlc/oracle/threshold": {
      "get": {
        "tags": [
          "DLC"
        ],
        "summary": "List Active Threshold Contracts",
        "description": "Returns all active threshold contracts currently being monitored. Free endpoint.",
        "responses": {
          "200": {
            "description": "List of active threshold contracts"
          }
        }
      },
      "post": {
        "tags": [
          "DLC"
        ],
        "summary": "Register Threshold Contract",
        "description": "Register a new threshold contract. Oracle monitors the price and attests when it crosses the strike level.\n\n**Pricing:**\n- L402 Lightning: 10,000 sats\n- x402 USDC on Base: $7.00\n\n**Payment:** Send request without credentials to receive 402 with both payment options.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ThresholdContractCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Contract registered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThresholdContractOut"
                }
              }
            }
          },
          "402": {
            "description": "Payment required \u2014 10,000 sats (L402) or $7.00 USDC (x402)"
          }
        }
      }
    },
    "/dlc/oracle/threshold/preview": {
      "post": {
        "tags": [
          "DLC"
        ],
        "summary": "Register Testnet Threshold Contract (Free)",
        "description": "Register a free testnet threshold contract for integration testing. No payment required.\n\nReturns a real Schnorr announcement with genuine nonces and R-points signed by the oracle key. Marked `testnet: true` \u2014 do not use in production DLC contracts.\n\n**Max expiry:** 48 hours from registration time.\n\n**Same request body as the paid endpoint** \u2014 use this to test your integration before committing to a production contract.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ThresholdContractCreate"
              },
              "example": {
                "pair": "BTCUSD",
                "strike": 80000,
                "direction": "above",
                "expiry": 1775001600
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Testnet contract registered \u2014 free, real signatures, max 48h expiry",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThresholdContractOut"
                }
              }
            }
          }
        }
      }
    },
    "/dlc/oracle/threshold/{eventid}": {
      "delete": {
        "tags": [
          "DLC"
        ],
        "summary": "Cancel Threshold Contract",
        "description": "Cancel an active threshold contract. Oracle immediately attests `safe`. Use for loan repayment or manual contract closure.\n\n**Pricing:** Same as registration \u2014 10,000 sats or $7.00 USDC.",
        "parameters": [
          {
            "name": "eventid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Threshold contract event ID",
            "example": "BTCUSD-ABOVE-90000-1774050380"
          }
        ],
        "responses": {
          "200": {
            "description": "Contract cancelled and attested safe"
          },
          "402": {
            "description": "Payment required"
          },
          "404": {
            "description": "Contract not found"
          }
        }
      }
    },
    "/oracle/price/usdt/usd": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "USDT/USD",
        "description": "Signed USDT/USD peg attestation. 4-source median (Kraken, Bitstamp, Bitfinex, Binance). 5-decimal precision for depeg detection.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base\n\nFree preview: `/oracle/price/usdt/usd/preview`",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/usdt/usd/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "USDT/USD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/usdc/usd": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "USDC/USD",
        "description": "Signed USDC/USD peg attestation. 4-source median (Kraken, Bitstamp, Gemini, Binance). 5-decimal precision for depeg detection.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base\n\nFree preview: `/oracle/price/usdc/usd/preview`",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/usdc/usd/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "USDC/USD Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/usdt/eur": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "USDT/EUR",
        "description": "Signed USDT/EUR derived attestation. Cross-rate: USDT/USD \u00d7 EUR/USD. 9-source composite. 5-decimal precision.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base\n\nFree preview: `/oracle/price/usdt/eur/preview`",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/usdt/eur/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "USDT/EUR Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/usdt/jpy": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "USDT/JPY",
        "description": "Signed USDT/JPY derived attestation. Cross-rate: USDT/USD \u00d7 USD/JPY. 7-source composite. 5-decimal precision.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base\n\nFree preview: `/oracle/price/usdt/jpy/preview`",
        "responses": {
          "200": {
            "description": "Signed attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/usdt/jpy/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "USDT/JPY Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/price/eth/usd/vwap": {
      "get": {
        "tags": [
          "Crypto"
        ],
        "summary": "ETH/USD VWAP (5-min)",
        "description": "Signed ETH/USD 5-minute VWAP attestation. 5-source VWAP.\n\n**L402:** 20 sats \u00b7 **x402:** $0.02 USDC on Base\n\nFree preview: `/oracle/price/eth/usd/vwap/preview`",
        "responses": {
          "200": {
            "description": "Signed VWAP attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/price/eth/usd/vwap/preview": {
      "get": {
        "tags": [
          "Free"
        ],
        "summary": "ETH/USD VWAP Preview (free, unsigned)",
        "responses": {
          "200": {
            "description": "Unsigned preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreviewResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/volatility/btc/usd": {
      "get": {
        "tags": [
          "MSVI"
        ],
        "summary": "BTC/USD Mycelia Signal Volatility Index",
        "description": "Signed BTC/USD MSVI \u2014 5-component weighted volatility index. Components: Realized Volatility (Parkinson, 30%), Implied Volatility (Deribit ATM, 25%), Term Structure (7D/90D ratio, 15%), Funding Rate signal (20%), Put/Call Ratio (10%). Output: 0-100 index, Ed25519 signed.\n\n**L402:** 500 sats \u00b7 **x402:** $0.05 USDC on Base\n\nFree preview: `/oracle/volatility/btc/usd/preview`\n\nMethodology: `/oracle/volatility/btc/usd/methodology`",
        "responses": {
          "200": {
            "description": "Signed MSVI response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MSVIResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required \u2014 L402 or x402"
          }
        }
      }
    },
    "/oracle/volatility/btc/usd/preview": {
      "get": {
        "tags": [
          "MSVI"
        ],
        "summary": "BTC/USD MSVI preview (free, unsigned)",
        "description": "Free unsigned BTC/USD MSVI preview. Stale up to 5 minutes. Not suitable for production use.",
        "responses": {
          "200": {
            "description": "Unsigned MSVI preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MSVIResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/volatility/eth/usd": {
      "get": {
        "tags": [
          "MSVI"
        ],
        "summary": "ETH/USD Mycelia Signal Volatility Index",
        "description": "Signed ETH/USD MSVI \u2014 same 5-component methodology as BTC/USD.\n\n**L402:** 500 sats \u00b7 **x402:** $0.05 USDC on Base\n\nFree preview: `/oracle/volatility/eth/usd/preview`",
        "responses": {
          "200": {
            "description": "Signed MSVI response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MSVIResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required \u2014 L402 or x402"
          }
        }
      }
    },
    "/oracle/volatility/eth/usd/preview": {
      "get": {
        "tags": [
          "MSVI"
        ],
        "summary": "ETH/USD MSVI preview (free, unsigned)",
        "description": "Free unsigned ETH/USD MSVI preview. Stale up to 5 minutes.",
        "responses": {
          "200": {
            "description": "Unsigned MSVI preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MSVIResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/volatility/btc/usd/methodology": {
      "get": {
        "tags": [
          "MSVI"
        ],
        "summary": "BTC/USD MSVI methodology (free, signed)",
        "description": "Signed methodology document for BTC/USD MSVI. Component weights, data sources, aggregation methods, known limitations, version history. Machine-readable and Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed methodology document"
          }
        }
      }
    },
    "/oracle/volatility/eth/usd/methodology": {
      "get": {
        "tags": [
          "MSVI"
        ],
        "summary": "ETH/USD MSVI methodology (free, signed)",
        "description": "Signed methodology document for ETH/USD MSVI.",
        "responses": {
          "200": {
            "description": "Signed methodology document"
          }
        }
      }
    },
    "/oracle/volatility/catalogue": {
      "get": {
        "tags": [
          "MSVI"
        ],
        "summary": "MSVI catalogue (free)",
        "description": "Lists all available MSVI indices with pricing and endpoint information.",
        "responses": {
          "200": {
            "description": "MSVI catalogue"
          }
        }
      }
    },
    "/oracle/sentiment/btc/usd": {
      "get": {
        "tags": [
          "MSXI"
        ],
        "summary": "BTC/USD MSXI (paid, signed)",
        "description": "Signed BTC/USD Mycelia Signal Sentiment Index. Five components: Funding Rate direction (30%), Options Skew 25D risk reversal (25%), Put/Call Ratio (20%), Term Structure slope (15%), Cross-exchange Basis (10%). Output: -100 to +100. Ed25519 signed.\n\n**L402:** 500 sats \u00b7 **x402:** $0.05 USDC on Base\n\nFree preview: `/oracle/sentiment/btc/usd/preview`",
        "responses": {
          "200": {
            "description": "Signed MSXI response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MSXIResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required \u2014 L402 or x402"
          }
        }
      }
    },
    "/oracle/sentiment/eth/usd": {
      "get": {
        "tags": [
          "MSXI"
        ],
        "summary": "ETH/USD MSXI (paid, signed)",
        "description": "Signed ETH/USD Mycelia Signal Sentiment Index. Same 5-component methodology as BTC/USD.\n\n**L402:** 500 sats \u00b7 **x402:** $0.05 USDC on Base\n\nFree preview: `/oracle/sentiment/eth/usd/preview`",
        "responses": {
          "200": {
            "description": "Signed MSXI response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MSXIResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required \u2014 L402 or x402"
          }
        }
      }
    },
    "/oracle/sentiment/btc/usd/preview": {
      "get": {
        "tags": [
          "MSXI"
        ],
        "summary": "BTC/USD MSXI preview (free, unsigned)",
        "description": "Free unsigned BTC/USD MSXI preview. All 5 components included. Stale up to 5 minutes. No payment required.",
        "responses": {
          "200": {
            "description": "Unsigned MSXI preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MSXIResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/sentiment/eth/usd/preview": {
      "get": {
        "tags": [
          "MSXI"
        ],
        "summary": "ETH/USD MSXI preview (free, unsigned)",
        "description": "Free unsigned ETH/USD MSXI preview. Stale up to 5 minutes.",
        "responses": {
          "200": {
            "description": "Unsigned MSXI preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MSXIResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/sentiment/catalogue": {
      "get": {
        "tags": [
          "MSXI"
        ],
        "summary": "MSXI catalogue (free)",
        "description": "Lists all available MSXI sentiment indices with pricing and endpoint information.",
        "responses": {
          "200": {
            "description": "MSXI catalogue"
          }
        }
      }
    },
    "/oracle/stress/market": {
      "get": {
        "tags": [
          "MSSI"
        ],
        "summary": "Market MSSI (paid, signed)",
        "description": "Signed market-wide Mycelia Signal Stress Index. Four components: Volatility Regime via MSVI average (30%), Stablecoin Stress \u2014 USDT/USDC peg deviation (25%), Funding Extremity \u2014 10-exchange MSFR z-score (30%), Funding Dispersion \u2014 cross-venue rate spread (15%). Output: 0-100. Regimes: CALM/ELEVATED/HIGH/EXTREME. Ed25519 signed.\n\n**L402:** 500 sats \u00b7 **x402:** $0.05 USDC on Base\n\nFree preview: `/oracle/stress/market/preview`",
        "responses": {
          "200": {
            "description": "Signed MSSI response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MSSIResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required \u2014 L402 or x402"
          }
        }
      }
    },
    "/oracle/stress/market/preview": {
      "get": {
        "tags": [
          "MSSI"
        ],
        "summary": "Market MSSI preview (free, unsigned)",
        "description": "Free unsigned market-wide MSSI preview. All 3 components included. Stale up to 5 minutes.",
        "responses": {
          "200": {
            "description": "Unsigned MSSI preview",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MSSIResponse"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/stress/catalogue": {
      "get": {
        "tags": [
          "MSSI"
        ],
        "summary": "MSSI catalogue (free)",
        "description": "Lists all available MSSI stress indices with pricing and endpoint information.",
        "responses": {
          "200": {
            "description": "MSSI catalogue"
          }
        }
      }
    },
    "/oracle/contagion/market": {
      "get": {
        "tags": [
          "MSTI"
        ],
        "summary": "MSTI crypto-TradFi contagion index (signed)",
        "description": "Signed Mycelia Signal Transmission Index. Four components: BTC-equity correlation (30%), Equity Volatility (25%), DXY Momentum (20%), Beta amplification (25%). Output: 0-100. Regimes: DECOUPLED/MIXED/COUPLED/CONTAGION. Ed25519 signed.\n\n**x402:** $0.05 USDC on Base\n\nFree preview: `/oracle/contagion/market/preview`",
        "responses": {
          "200": {
            "description": "Signed MSTI response"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/contagion/market/preview": {
      "get": {
        "tags": [
          "MSTI"
        ],
        "summary": "MSTI preview (free, unsigned)",
        "description": "Free unsigned MSTI preview. All components included.",
        "responses": {
          "200": {
            "description": "Unsigned MSTI preview"
          }
        }
      }
    },
    "/oracle/contagion/catalogue": {
      "get": {
        "tags": [
          "MSTI"
        ],
        "summary": "MSTI catalogue (free)",
        "description": "Lists available MSTI contagion indices with pricing.",
        "responses": {
          "200": {
            "description": "MSTI catalogue"
          }
        }
      }
    },
    "/keys/ed25519": {
      "get": {
        "summary": "Ed25519 public key",
        "description": "Returns the Ed25519 public key used to sign oracle attestations. Use this key to verify signatures on paid responses.",
        "operationId": "get_keys_ed25519",
        "tags": [
          "Keys & Verification"
        ],
        "responses": {
          "200": {
            "description": "Ed25519 public key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "scheme": {
                      "type": "string",
                      "example": "ed25519"
                    },
                    "pubkey": {
                      "type": "string",
                      "example": "f4f0e52b5f7b54831f965632bf1ebf72769beda4c4e3d36a593f7729ec812615"
                    },
                    "encoding": {
                      "type": "string",
                      "example": "hex"
                    },
                    "usage": {
                      "type": "string"
                    },
                    "docs": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/oracle/marine/catalogue": {
      "get": {
        "tags": [
          "Marine Oracle"
        ],
        "summary": "Marine oracle catalogue (free)",
        "description": "Returns all available marine oracle endpoints, trigger thresholds, and data sources. Free \u2014 no payment required.",
        "operationId": "get_marine_catalogue",
        "responses": {
          "200": {
            "description": "Marine oracle catalogue",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "service": {
                      "type": "string",
                      "example": "Mycelia Signal Marine Oracle"
                    },
                    "version": {
                      "type": "string",
                      "example": "1.0.0"
                    },
                    "endpoints": {
                      "type": "object"
                    },
                    "trigger_thresholds": {
                      "type": "object"
                    },
                    "data_sources": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/oracle/marine/{lat}/{lon}/seastate/preview": {
      "get": {
        "tags": [
          "Marine Oracle"
        ],
        "summary": "Sea state preview (free, unsigned)",
        "description": "Current sea state at given coordinates. Free unsigned preview \u2014 for development and testing.\n\nPaid signed version: `/oracle/marine/{lat}/{lon}/seastate`",
        "operationId": "get_marine_seastate_preview",
        "parameters": [
          {
            "name": "lat",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 50.0
          },
          {
            "name": "lon",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": -20.0
          }
        ],
        "responses": {
          "200": {
            "description": "Unsigned sea state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarineSeaStatePreview"
                }
              }
            }
          }
        }
      }
    },
    "/oracle/marine/{lat}/{lon}/seastate": {
      "get": {
        "tags": [
          "Marine Oracle"
        ],
        "summary": "Sea state at coordinates (paid, signed)",
        "description": "Current sea state at given coordinates. Ed25519 signed.\n\n**L402:** 133 sats \u00b7 **x402:** $0.10 USDC on Base\n\nFree preview: `/oracle/marine/{lat}/{lon}/seastate/preview`",
        "operationId": "get_marine_seastate",
        "parameters": [
          {
            "name": "lat",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "example": 50.0
          },
          {
            "name": "lon",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "example": -20.0
          }
        ],
        "responses": {
          "200": {
            "description": "Signed sea state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarineSeaStateResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required \u2014 L402 or x402"
          }
        }
      }
    },
    "/oracle/marine/vessel/{mmsi}": {
      "get": {
        "tags": [
          "Marine Oracle"
        ],
        "summary": "Vessel position + sea state (paid, signed)",
        "description": "Live vessel position via AIS combined with sea state at vessel coordinates. Ed25519 signed.\n\n**L402:** 667 sats \u00b7 **x402:** $0.50 USDC on Base\n\nProvide 9-digit MMSI. Vessel must be actively transmitting AIS.",
        "operationId": "get_marine_vessel",
        "parameters": [
          {
            "name": "mmsi",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{9}$"
            },
            "example": "563247300"
          }
        ],
        "responses": {
          "200": {
            "description": "Signed vessel sea state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarineVesselResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required \u2014 L402 or x402"
          },
          "404": {
            "description": "Vessel not found or out of AIS coverage"
          }
        }
      }
    },
    "/oracle/marine/route/summary": {
      "get": {
        "tags": [
          "Marine Oracle"
        ],
        "summary": "Route sea state summary (paid, signed)",
        "description": "Samples current sea state along a route between two coordinates. Returns worst-case and mean wave height. Ed25519 signed.\n\n**L402:** 267 sats \u00b7 **x402:** $0.20 USDC on Base",
        "operationId": "get_marine_route_summary",
        "parameters": [
          {
            "name": "lat1",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 51.9
          },
          {
            "name": "lon1",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 4.5
          },
          {
            "name": "lat2",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 40.7
          },
          {
            "name": "lon2",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": -74.0
          },
          {
            "name": "waypoints",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 2,
              "maximum": 10,
              "default": 5
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Signed route sea state summary",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarineRouteResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required \u2014 L402 or x402"
          }
        }
      }
    },
    "/oracle/marine/voyage/forecast": {
      "get": {
        "tags": [
          "Marine Oracle"
        ],
        "summary": "Voyage forecast (paid, signed)",
        "description": "Projects vessel position along route and fetches forecast wave height at each projected position/time. 7-day horizon. Ed25519 signed.\n\n**L402:** 667 sats \u00b7 **x402:** $0.50 USDC on Base\n\nProvide either mmsi (live vessel lookup) or lat1/lon1 as departure, plus lat2/lon2 as destination.",
        "operationId": "get_marine_voyage_forecast",
        "parameters": [
          {
            "name": "mmsi",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "563247300"
          },
          {
            "name": "lat1",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "example": 51.9
          },
          {
            "name": "lon1",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "example": 4.5
          },
          {
            "name": "lat2",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 40.7
          },
          {
            "name": "lon2",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": -74.0
          },
          {
            "name": "speed_kts",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "default": 14.0
            }
          },
          {
            "name": "waypoints",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 2,
              "maximum": 10,
              "default": 8
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Signed voyage forecast",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarineVoyageResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required \u2014 L402 or x402"
          },
          "404": {
            "description": "Vessel not found (if mmsi provided)"
          }
        }
      }
    },
    "/oracle/cot/btc": {
      "get": {
        "tags": [
          "COT"
        ],
        "summary": "BTC CME COT \u2014 Institutional Positioning",
        "description": "CFTC Commitments of Traders (TFF Futures Only) for BITCOIN - CHICAGO MERCANTILE EXCHANGE (code 133741). Returns leveraged fund, asset manager, and dealer net positions \u2014 long, short, net, % of open interest, and week-on-week changes. Weekly cadence: data as of prior Tuesday, published Friday 15:30 EST. 24-hour cache. Ed25519 signed.\n\nUse as institutional overlay: divergence between leveraged fund shorts and asset manager longs historically precedes directional moves.\n\n**x402:** $1.00",
        "security": [
          {
            "x402": []
          }
        ],
        "responses": {
          "200": {
            "description": "Signed COT attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/COTResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/weather/catalogue": {
      "get": {
        "tags": [
          "Weather Oracle"
        ],
        "summary": "Weather oracle catalogue (free)",
        "description": "Returns all available weather oracle endpoints, trigger thresholds, and data sources. Free \u2014 no payment required.",
        "operationId": "get_weather_catalogue",
        "responses": {
          "200": {
            "description": "Weather oracle catalogue"
          }
        }
      }
    },
    "/oracle/weather/{lat}/{lon}/wrsi/{window}d": {
      "get": {
        "tags": [
          "Weather Oracle"
        ],
        "summary": "WRSI drought index (paid, signed)",
        "description": "Water Requirement Satisfaction Index at given coordinates. Parametric drought trigger for crop insurance. Ed25519 signed.\n\n**L402:** 100 sats \u00b7 **x402:** $0.10 USDC on Base\n\nWRSI < 0.50 = drought trigger. WRSI < 0.25 = severe drought. Windows: 30, 60, 90 days.",
        "operationId": "get_weather_wrsi",
        "parameters": [
          {
            "name": "lat",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "example": -0.3031
          },
          {
            "name": "lon",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "example": 36.08
          },
          {
            "name": "window",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                30,
                60,
                90
              ]
            },
            "example": 30
          }
        ],
        "responses": {
          "200": {
            "description": "Signed WRSI attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeatherWRSIResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/weather/{lat}/{lon}/rainfall/{window}d": {
      "get": {
        "tags": [
          "Weather Oracle"
        ],
        "summary": "Cumulative rainfall (paid, signed)",
        "description": "Cumulative rainfall in mm over rolling window at given coordinates. Ed25519 signed.\n\n**L402:** 100 sats \u00b7 **x402:** $0.10 USDC on Base\n\nWindows: 7, 14, 30, 60, 90 days.",
        "operationId": "get_weather_rainfall",
        "parameters": [
          {
            "name": "lat",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "example": -0.3031
          },
          {
            "name": "lon",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "example": 36.08
          },
          {
            "name": "window",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                7,
                14,
                30,
                60,
                90
              ]
            },
            "example": 30
          }
        ],
        "responses": {
          "200": {
            "description": "Signed rainfall attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeatherRainfallResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/weather/{lat}/{lon}/temperature/{window}d": {
      "get": {
        "tags": [
          "Weather Oracle"
        ],
        "summary": "Temperature min/max/mean (paid, signed)",
        "description": "Temperature data with frost and heat stress triggers at given coordinates. Ed25519 signed.\n\n**L402:** 100 sats \u00b7 **x402:** $0.10 USDC on Base\n\nFrost trigger: tmin < 0\u00b0C. Heat stress: tmax > 35\u00b0C. Windows: 7, 14, 30, 60, 90 days.",
        "operationId": "get_weather_temperature",
        "parameters": [
          {
            "name": "lat",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "example": -0.3031
          },
          {
            "name": "lon",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "example": 36.08
          },
          {
            "name": "window",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                7,
                14,
                30,
                60,
                90
              ]
            },
            "example": 30
          }
        ],
        "responses": {
          "200": {
            "description": "Signed temperature attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeatherTemperatureResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/weather/{lat}/{lon}/wind/{window}d": {
      "get": {
        "tags": [
          "Weather Oracle"
        ],
        "summary": "Wind speed max/mean (paid, signed)",
        "description": "Wind speed data with gale and storm triggers at given coordinates. Ed25519 signed.\n\n**L402:** 100 sats \u00b7 **x402:** $0.10 USDC on Base\n\nGale trigger: > 62 km/h. Storm trigger: > 117 km/h. Windows: 7, 14, 30 days.",
        "operationId": "get_weather_wind",
        "parameters": [
          {
            "name": "lat",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "example": -0.3031
          },
          {
            "name": "lon",
            "in": "path",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "example": 36.08
          },
          {
            "name": "window",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                7,
                14,
                30
              ]
            },
            "example": 14
          }
        ],
        "responses": {
          "200": {
            "description": "Signed wind attestation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeatherWindResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/dlc/oracle/enum": {
      "get": {
        "tags": [
          "DLC"
        ],
        "summary": "List Enum Events",
        "description": "List all disjoint union (enum) DLC events with settled status. Free endpoint.",
        "responses": {
          "200": {
            "description": "List of enum events"
          }
        }
      },
      "post": {
        "tags": [
          "DLC"
        ],
        "summary": "Create Enum Event",
        "description": "Create a spec-compliant disjoint union DLC event with 2-100 outcomes. Returns BIP-340 signed announcement with pre-committed nonces and TLV-serialized blob compatible with kormir, dlcdevkit, rust-dlc.\n\n**Pricing:**\n- L402 Lightning: 10,000 sats\n- x402 USDC on Base: $7.00\n\n**Payment:** Send request without credentials to receive 402 with both payment options.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnumEventCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Event created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnumEventOut"
                }
              }
            }
          },
          "402": {
            "description": "Payment required \u2014 10,000 sats (L402) or $7.00 USDC (x402)"
          }
        }
      }
    },
    "/dlc/oracle/enum/preview": {
      "post": {
        "tags": [
          "DLC",
          "Free"
        ],
        "summary": "Preview Enum Event (dry run)",
        "description": "Validate an enum event request without generating nonces or charging. Returns what the announcement would look like. Free endpoint.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnumEventCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Preview of enum event (no nonces, no charge)"
          }
        }
      }
    },
    "/dlc/oracle/enum/{eid}": {
      "get": {
        "tags": [
          "DLC",
          "Free"
        ],
        "summary": "Get Enum Announcement",
        "description": "Fetch the full signed announcement JSON for a specific enum event. Free endpoint.",
        "parameters": [
          {
            "name": "eid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Event ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Enum announcement",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnumEventOut"
                }
              }
            }
          },
          "404": {
            "description": "Event not found"
          }
        }
      }
    },
    "/dlc/oracle/enum/{eid}/serialized": {
      "get": {
        "tags": [
          "DLC",
          "Free"
        ],
        "summary": "Get Enum TLV Blob",
        "description": "Hex-encoded TLV-serialized announcement for direct ingestion by dlcdevkit, kormir, rust-dlc, or any spec-compliant DLC library. Free endpoint.",
        "parameters": [
          {
            "name": "eid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Serialized announcement with eventid, hex blob, and byte length"
          }
        }
      }
    },
    "/dlc/oracle/enum/{eid}/attestation": {
      "get": {
        "tags": [
          "DLC",
          "Free"
        ],
        "summary": "Get Enum Attestation",
        "description": "Fetch the BIP-340 Schnorr attestation for a settled enum event. Returns 404 if event has not yet been attested. Free endpoint.",
        "parameters": [
          {
            "name": "eid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Attestation with winning outcome and signatures",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationOut"
                }
              }
            }
          },
          "404": {
            "description": "Not yet attested"
          }
        }
      }
    },
    "/dlc/oracle/enum/{eid}/attest": {
      "post": {
        "tags": [
          "DLC"
        ],
        "summary": "Manual Attest Enum Event (Admin)",
        "description": "Manually attest an enum event before maturity. Requires X-Oracle-Secret header. Admin endpoint.",
        "parameters": [
          {
            "name": "eid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "outcome"
                ],
                "properties": {
                  "outcome": {
                    "type": "string",
                    "description": "Winning outcome (must be in event's outcomes list)"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attestation created"
          },
          "403": {
            "description": "Invalid admin secret"
          }
        }
      }
    },
    "/dlc/oracle/numeric": {
      "get": {
        "tags": [
          "DLC"
        ],
        "summary": "List Numeric Events",
        "description": "List all digit decomposition (numeric) DLC events with settled status. Free endpoint.",
        "responses": {
          "200": {
            "description": "List of numeric events"
          }
        }
      },
      "post": {
        "tags": [
          "DLC"
        ],
        "summary": "Create Numeric Event",
        "description": "Create a spec-compliant digit decomposition DLC event. Configurable base (2-256), digits (1-32), signed/unsigned, and precision via scaleFactor. Returns BIP-340 signed announcement with per-digit nonces and TLV blob.\n\n**Pricing:**\n- L402 Lightning: 10,000 sats\n- x402 USDC on Base: $7.00\n\n**Payment:** Send request without credentials to receive 402 with both payment options.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NumericEventCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Event created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NumericEventOut"
                }
              }
            }
          },
          "402": {
            "description": "Payment required \u2014 10,000 sats (L402) or $7.00 USDC (x402)"
          }
        }
      }
    },
    "/dlc/oracle/numeric/preview": {
      "post": {
        "tags": [
          "DLC",
          "Free"
        ],
        "summary": "Preview Numeric Event (dry run)",
        "description": "Validate a numeric event request without generating nonces or charging. Free endpoint.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NumericEventCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Preview of numeric event"
          }
        }
      }
    },
    "/dlc/oracle/numeric/{eid}": {
      "get": {
        "tags": [
          "DLC",
          "Free"
        ],
        "summary": "Get Numeric Announcement",
        "description": "Fetch the full signed announcement JSON for a specific numeric event. Free endpoint.",
        "parameters": [
          {
            "name": "eid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Numeric announcement",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NumericEventOut"
                }
              }
            }
          },
          "404": {
            "description": "Event not found"
          }
        }
      }
    },
    "/dlc/oracle/numeric/{eid}/serialized": {
      "get": {
        "tags": [
          "DLC",
          "Free"
        ],
        "summary": "Get Numeric TLV Blob",
        "description": "Hex-encoded TLV-serialized announcement for direct ingestion by spec-compliant DLC libraries. Free endpoint.",
        "parameters": [
          {
            "name": "eid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Serialized announcement"
          }
        }
      }
    },
    "/dlc/oracle/numeric/{eid}/attestation": {
      "get": {
        "tags": [
          "DLC",
          "Free"
        ],
        "summary": "Get Numeric Attestation",
        "description": "Fetch per-digit BIP-340 Schnorr attestation for a settled numeric event. Returns 404 if not yet attested. Free endpoint.",
        "parameters": [
          {
            "name": "eid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Attestation with digit values and per-digit signatures",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttestationOut"
                }
              }
            }
          },
          "404": {
            "description": "Not yet attested"
          }
        }
      }
    },
    "/dlc/oracle/numeric/{eid}/attest": {
      "post": {
        "tags": [
          "DLC"
        ],
        "summary": "Manual Attest Numeric Event (Admin)",
        "description": "Manually attest a numeric event. Requires X-Oracle-Secret header. Admin endpoint.",
        "parameters": [
          {
            "name": "eid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "value"
                ],
                "properties": {
                  "value": {
                    "type": "integer",
                    "description": "Integer value to decompose into digits and sign"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attestation created"
          },
          "403": {
            "description": "Invalid admin secret"
          }
        }
      }
    },
    "/oracle/gas/{chain}": {
      "get": {
        "tags": [
          "Gas Oracle"
        ],
        "summary": "Single chain gas price (paid, signed)",
        "description": "Gas price and estimated transaction cost for a single EVM chain or Solana. Ed25519 signed.\n\n**L402:** 10 sats \u00b7 **x402:** $0.01 USDC on Base",
        "operationId": "get_gas_price",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ethereum",
                "base",
                "arbitrum",
                "polygon",
                "optimism",
                "solana"
              ]
            },
            "example": "ethereum"
          }
        ],
        "responses": {
          "200": {
            "description": "Signed gas price data"
          },
          "402": {
            "description": "Payment required \u2014 x402 ($0.01 USDC) or L402 (10 sats)"
          }
        }
      }
    },
    "/oracle/gas/{chain}/preview": {
      "get": {
        "tags": [
          "Gas Oracle"
        ],
        "summary": "Single chain gas price preview (free)",
        "description": "24h-stale cached gas data for a single chain. Free \u2014 no payment required.",
        "operationId": "get_gas_price_preview",
        "parameters": [
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ethereum",
                "base",
                "arbitrum",
                "polygon",
                "optimism",
                "solana"
              ]
            },
            "example": "base"
          }
        ],
        "responses": {
          "200": {
            "description": "Cached gas price data (24h stale)"
          }
        }
      }
    },
    "/oracle/gas/index": {
      "get": {
        "tags": [
          "Gas Oracle"
        ],
        "summary": "Cross-chain gas index (paid, signed)",
        "description": "All 6 chains sorted cheapest-first with ranking and USD transaction costs. Ed25519 signed.\n\n**L402:** 50 sats \u00b7 **x402:** $0.05 USDC on Base\n\nChains: Ethereum, Base, Arbitrum, Polygon, Optimism, Solana. L2 costs reflect execution gas only.",
        "operationId": "get_gas_index",
        "responses": {
          "200": {
            "description": "Signed cross-chain gas index"
          },
          "402": {
            "description": "Payment required \u2014 x402 ($0.05 USDC) or L402 (50 sats)"
          }
        }
      }
    },
    "/oracle/gas/index/preview": {
      "get": {
        "tags": [
          "Gas Oracle"
        ],
        "summary": "Cross-chain gas index preview (free)",
        "description": "24h-stale cached cross-chain gas index. Free \u2014 no payment required.",
        "operationId": "get_gas_index_preview",
        "responses": {
          "200": {
            "description": "Cached cross-chain gas index (24h stale)"
          }
        }
      }
    },
    "/oracle/gas/catalogue": {
      "get": {
        "tags": [
          "Gas Oracle"
        ],
        "summary": "Gas oracle catalogue (free)",
        "description": "Lists available gas oracle endpoints, supported chains, and pricing. Free \u2014 no payment required.",
        "operationId": "get_gas_catalogue",
        "responses": {
          "200": {
            "description": "Gas oracle catalogue"
          }
        }
      }
    },
    "/oracle/funding/btc/usd": {
      "get": {
        "summary": "BTC/USD funding rate composite",
        "tags": [
          "Funding Rate"
        ],
        "description": "Multi-exchange perpetual funding rate for BTC/USD. OI-weighted median, predicted rate, z-score, regime, per-exchange breakdown, divergence. 5 sources: Binance, Bybit, OKX, Deribit, Hyperliquid. 60s refresh. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed funding rate data"
          },
          "402": {
            "description": "Payment required \u2014 $0.05 USDC"
          }
        }
      }
    },
    "/oracle/funding/btc/usd/preview": {
      "get": {
        "summary": "BTC/USD funding preview (2hr delayed)",
        "tags": [
          "Funding Rate"
        ],
        "description": "Free preview with composite rate, predicted rate, regime. 2 hours delayed. No per-exchange breakdown or signature.",
        "responses": {
          "200": {
            "description": "Delayed preview"
          }
        }
      }
    },
    "/oracle/oi/btc/usd": {
      "get": {
        "summary": "BTC/USD open interest composite",
        "tags": [
          "Open Interest"
        ],
        "description": "Aggregate open interest for BTC/USD across 5 exchanges (Binance, Bybit, OKX, Deribit, Hyperliquid) with 1h/4h/24h deltas. Per-exchange breakdown. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed OI data"
          },
          "402": {
            "description": "Payment required \u2014 $0.01 USDC"
          }
        }
      }
    },
    "/oracle/oi/btc/usd/preview": {
      "get": {
        "summary": "BTC/USD OI preview",
        "tags": [
          "Open Interest"
        ],
        "description": "Free preview with source count.",
        "responses": {
          "200": {
            "description": "Preview"
          }
        }
      }
    },
    "/oracle/basis/btc/usd": {
      "get": {
        "summary": "BTC/USD basis and carry",
        "tags": [
          "Basis/Carry"
        ],
        "description": "Spot-futures basis and annualized carry for BTC/USD across 5 exchanges. Mark price vs index price spread. Per-exchange carry comparison. Contango/backwardation/flat regime. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed basis/carry data"
          },
          "402": {
            "description": "Payment required \u2014 $0.02 USDC"
          }
        }
      }
    },
    "/oracle/basis/btc/usd/preview": {
      "get": {
        "summary": "BTC/USD basis preview",
        "tags": [
          "Basis/Carry"
        ],
        "description": "Free preview with median basis, carry, and regime.",
        "responses": {
          "200": {
            "description": "Preview"
          }
        }
      }
    },
    "/oracle/funding/eth/usd": {
      "get": {
        "summary": "ETH/USD funding rate composite",
        "tags": [
          "Funding Rate"
        ],
        "description": "Multi-exchange perpetual funding rate for ETH/USD. OI-weighted median, predicted rate, z-score, regime, per-exchange breakdown, divergence. 5 sources: Binance, Bybit, OKX, Deribit, Hyperliquid. 60s refresh. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed funding rate data"
          },
          "402": {
            "description": "Payment required \u2014 $0.05 USDC"
          }
        }
      }
    },
    "/oracle/funding/eth/usd/preview": {
      "get": {
        "summary": "ETH/USD funding preview (2hr delayed)",
        "tags": [
          "Funding Rate"
        ],
        "description": "Free preview with composite rate, predicted rate, regime. 2 hours delayed. No per-exchange breakdown or signature.",
        "responses": {
          "200": {
            "description": "Delayed preview"
          }
        }
      }
    },
    "/oracle/oi/eth/usd": {
      "get": {
        "summary": "ETH/USD open interest composite",
        "tags": [
          "Open Interest"
        ],
        "description": "Aggregate open interest for ETH/USD across 5 exchanges (Binance, Bybit, OKX, Deribit, Hyperliquid) with 1h/4h/24h deltas. Per-exchange breakdown. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed OI data"
          },
          "402": {
            "description": "Payment required \u2014 $0.01 USDC"
          }
        }
      }
    },
    "/oracle/oi/eth/usd/preview": {
      "get": {
        "summary": "ETH/USD OI preview",
        "tags": [
          "Open Interest"
        ],
        "description": "Free preview with source count.",
        "responses": {
          "200": {
            "description": "Preview"
          }
        }
      }
    },
    "/oracle/basis/eth/usd": {
      "get": {
        "summary": "ETH/USD basis and carry",
        "tags": [
          "Basis/Carry"
        ],
        "description": "Spot-futures basis and annualized carry for ETH/USD across 5 exchanges. Mark price vs index price spread. Per-exchange carry comparison. Contango/backwardation/flat regime. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed basis/carry data"
          },
          "402": {
            "description": "Payment required \u2014 $0.02 USDC"
          }
        }
      }
    },
    "/oracle/basis/eth/usd/preview": {
      "get": {
        "summary": "ETH/USD basis preview",
        "tags": [
          "Basis/Carry"
        ],
        "description": "Free preview with median basis, carry, and regime.",
        "responses": {
          "200": {
            "description": "Preview"
          }
        }
      }
    },
    "/oracle/funding/sol/usd": {
      "get": {
        "summary": "SOL/USD funding rate composite",
        "tags": [
          "Funding Rate"
        ],
        "description": "Multi-exchange perpetual funding rate for SOL/USD. OI-weighted median, predicted rate, z-score, regime, per-exchange breakdown, divergence. 5 sources: Binance, Bybit, OKX, Deribit, Hyperliquid. 60s refresh. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed funding rate data"
          },
          "402": {
            "description": "Payment required \u2014 $0.05 USDC"
          }
        }
      }
    },
    "/oracle/funding/sol/usd/preview": {
      "get": {
        "summary": "SOL/USD funding preview (2hr delayed)",
        "tags": [
          "Funding Rate"
        ],
        "description": "Free preview with composite rate, predicted rate, regime. 2 hours delayed. No per-exchange breakdown or signature.",
        "responses": {
          "200": {
            "description": "Delayed preview"
          }
        }
      }
    },
    "/oracle/oi/sol/usd": {
      "get": {
        "summary": "SOL/USD open interest composite",
        "tags": [
          "Open Interest"
        ],
        "description": "Aggregate open interest for SOL/USD across 5 exchanges (Binance, Bybit, OKX, Deribit, Hyperliquid) with 1h/4h/24h deltas. Per-exchange breakdown. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed OI data"
          },
          "402": {
            "description": "Payment required \u2014 $0.01 USDC"
          }
        }
      }
    },
    "/oracle/oi/sol/usd/preview": {
      "get": {
        "summary": "SOL/USD OI preview",
        "tags": [
          "Open Interest"
        ],
        "description": "Free preview with source count.",
        "responses": {
          "200": {
            "description": "Preview"
          }
        }
      }
    },
    "/oracle/basis/sol/usd": {
      "get": {
        "summary": "SOL/USD basis and carry",
        "tags": [
          "Basis/Carry"
        ],
        "description": "Spot-futures basis and annualized carry for SOL/USD across 5 exchanges. Mark price vs index price spread. Per-exchange carry comparison. Contango/backwardation/flat regime. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed basis/carry data"
          },
          "402": {
            "description": "Payment required \u2014 $0.02 USDC"
          }
        }
      }
    },
    "/oracle/basis/sol/usd/preview": {
      "get": {
        "summary": "SOL/USD basis preview",
        "tags": [
          "Basis/Carry"
        ],
        "description": "Free preview with median basis, carry, and regime.",
        "responses": {
          "200": {
            "description": "Preview"
          }
        }
      }
    },
    "/oracle/funding/catalogue": {
      "get": {
        "summary": "Funding Rate catalogue",
        "tags": [
          "Funding"
        ],
        "description": "Free endpoint listing with pricing and methodology.",
        "responses": {
          "200": {
            "description": "Endpoint listing"
          }
        }
      }
    },
    "/oracle/oi/catalogue": {
      "get": {
        "summary": "Open Interest catalogue",
        "tags": [
          "Oi"
        ],
        "description": "Free endpoint listing with pricing and methodology.",
        "responses": {
          "200": {
            "description": "Endpoint listing"
          }
        }
      }
    },
    "/oracle/basis/catalogue": {
      "get": {
        "summary": "Basis/Carry catalogue",
        "tags": [
          "Basis"
        ],
        "description": "Free endpoint listing with pricing and methodology.",
        "responses": {
          "200": {
            "description": "Endpoint listing"
          }
        }
      }
    },
    "/oracle/liquidations/btc/usd": {
      "get": {
        "summary": "BTC/USD liquidation flow",
        "tags": [
          "Liquidations"
        ],
        "description": "Real-time liquidation events across Binance, OKX, Deribit, Hyperliquid. Long/short imbalance, clustering intensity, burst detection, per-exchange breakdown. WebSocket-sourced. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed liquidation data"
          },
          "402": {
            "description": "Payment required \u2014 $0.03 USDC"
          }
        }
      }
    },
    "/oracle/liquidations/btc/usd/preview": {
      "get": {
        "summary": "BTC/USD liquidation preview",
        "tags": [
          "Liquidations"
        ],
        "responses": {
          "200": {
            "description": "Preview \u2014 last 20 events, unsigned"
          }
        }
      }
    },
    "/oracle/liquidations/eth/usd": {
      "get": {
        "summary": "ETH/USD liquidation flow",
        "tags": [
          "Liquidations"
        ],
        "description": "Real-time liquidation events across Binance, OKX, Deribit, Hyperliquid. Long/short imbalance, clustering intensity, burst detection, per-exchange breakdown. WebSocket-sourced. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed liquidation data"
          },
          "402": {
            "description": "Payment required \u2014 $0.03 USDC"
          }
        }
      }
    },
    "/oracle/liquidations/eth/usd/preview": {
      "get": {
        "summary": "ETH/USD liquidation preview",
        "tags": [
          "Liquidations"
        ],
        "responses": {
          "200": {
            "description": "Preview \u2014 last 20 events, unsigned"
          }
        }
      }
    },
    "/oracle/liquidations/sol/usd": {
      "get": {
        "summary": "SOL/USD liquidation flow",
        "tags": [
          "Liquidations"
        ],
        "description": "Real-time liquidation events across Binance, OKX, Deribit, Hyperliquid. Long/short imbalance, clustering intensity, burst detection, per-exchange breakdown. WebSocket-sourced. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed liquidation data"
          },
          "402": {
            "description": "Payment required \u2014 $0.03 USDC"
          }
        }
      }
    },
    "/oracle/liquidations/sol/usd/preview": {
      "get": {
        "summary": "SOL/USD liquidation preview",
        "tags": [
          "Liquidations"
        ],
        "responses": {
          "200": {
            "description": "Preview \u2014 last 20 events, unsigned"
          }
        }
      }
    },
    "/oracle/orderbook/btc/usd": {
      "get": {
        "summary": "BTC/USD order book imbalance",
        "tags": [
          "Order Book"
        ],
        "description": "Cross-exchange depth, spread, sweep cost, imbalance across 5 exchanges (Binance, Bybit, OKX, Deribit, Hyperliquid). Adaptive resolution: 60s normal, 5s during stress. Depth collapse detection. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed order book data"
          },
          "402": {
            "description": "Payment required \u2014 $0.03 USDC"
          }
        }
      }
    },
    "/oracle/orderbook/btc/usd/preview": {
      "get": {
        "summary": "BTC/USD orderbook preview",
        "tags": [
          "Order Book"
        ],
        "responses": {
          "200": {
            "description": "Preview \u2014 spread and imbalance only"
          }
        }
      }
    },
    "/oracle/orderbook/eth/usd": {
      "get": {
        "summary": "ETH/USD order book imbalance",
        "tags": [
          "Order Book"
        ],
        "description": "Cross-exchange depth, spread, sweep cost, imbalance across 5 exchanges (Binance, Bybit, OKX, Deribit, Hyperliquid). Adaptive resolution: 60s normal, 5s during stress. Depth collapse detection. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed order book data"
          },
          "402": {
            "description": "Payment required \u2014 $0.03 USDC"
          }
        }
      }
    },
    "/oracle/orderbook/eth/usd/preview": {
      "get": {
        "summary": "ETH/USD orderbook preview",
        "tags": [
          "Order Book"
        ],
        "responses": {
          "200": {
            "description": "Preview \u2014 spread and imbalance only"
          }
        }
      }
    },
    "/oracle/iv/btc/usd": {
      "get": {
        "summary": "BTC/USD implied volatility surface",
        "tags": [
          "IV Surface"
        ],
        "description": "ATM IV, 25-delta put/call IV, skew, near/far term structure ratio. Parsed from full Deribit options chain (870+ BTC, 690+ ETH instruments). 60s refresh. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed IV surface data"
          },
          "402": {
            "description": "Payment required \u2014 $0.03 USDC"
          }
        }
      }
    },
    "/oracle/iv/btc/usd/preview": {
      "get": {
        "summary": "BTC/USD IV preview",
        "tags": [
          "IV Surface"
        ],
        "responses": {
          "200": {
            "description": "Preview \u2014 ATM IV, skew, term structure only"
          }
        }
      }
    },
    "/oracle/iv/eth/usd": {
      "get": {
        "summary": "ETH/USD implied volatility surface",
        "tags": [
          "IV Surface"
        ],
        "description": "ATM IV, 25-delta put/call IV, skew, near/far term structure ratio. Parsed from full Deribit options chain (870+ BTC, 690+ ETH instruments). 60s refresh. Ed25519 signed.",
        "responses": {
          "200": {
            "description": "Signed IV surface data"
          },
          "402": {
            "description": "Payment required \u2014 $0.03 USDC"
          }
        }
      }
    },
    "/oracle/iv/eth/usd/preview": {
      "get": {
        "summary": "ETH/USD IV preview",
        "tags": [
          "IV Surface"
        ],
        "responses": {
          "200": {
            "description": "Preview \u2014 ATM IV, skew, term structure only"
          }
        }
      }
    },
    "/oracle/liquidations/catalogue": {
      "get": {
        "summary": "Liquidations catalogue",
        "tags": [
          "Liquidations"
        ],
        "responses": {
          "200": {
            "description": "Endpoint listing"
          }
        }
      }
    },
    "/oracle/orderbook/catalogue": {
      "get": {
        "summary": "Orderbook catalogue",
        "tags": [
          "Orderbook"
        ],
        "responses": {
          "200": {
            "description": "Endpoint listing"
          }
        }
      }
    },
    "/oracle/iv/catalogue": {
      "get": {
        "summary": "Iv catalogue",
        "tags": [
          "Iv"
        ],
        "responses": {
          "200": {
            "description": "Endpoint listing"
          }
        }
      }
    },
    "/oracle/greeks/catalogue": {
      "get": {
        "summary": "Options Greeks catalogue",
        "tags": [
          "Options Greeks"
        ],
        "description": "Lists available endpoints and methodology.",
        "responses": {
          "200": {
            "description": "Catalogue"
          }
        }
      }
    },
    "/oracle/greeks/btc/usd": {
      "get": {
        "summary": "BTC/USD options greeks",
        "tags": [
          "Options Greeks"
        ],
        "description": "Cross-exchange consensus Greeks (delta/gamma/theta/vega) from 2130+ options across Deribit, OKX, Bybit.",
        "responses": {
          "200": {
            "description": "Options Greeks data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/greeks/btc/usd/preview": {
      "get": {
        "summary": "BTC/USD options greeks preview",
        "tags": [
          "Options Greeks"
        ],
        "description": "Free preview of options greeks data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/greeks/eth/usd": {
      "get": {
        "summary": "ETH/USD options greeks",
        "tags": [
          "Options Greeks"
        ],
        "description": "Cross-exchange consensus Greeks (delta/gamma/theta/vega) from 1822+ options across Deribit, OKX, Bybit.",
        "responses": {
          "200": {
            "description": "Options Greeks data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/greeks/eth/usd/preview": {
      "get": {
        "summary": "ETH/USD options greeks preview",
        "tags": [
          "Options Greeks"
        ],
        "description": "Free preview of options greeks data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/greeks/sol/usd": {
      "get": {
        "summary": "SOL/USD options greeks",
        "tags": [
          "Options Greeks"
        ],
        "description": "Cross-exchange consensus Greeks (delta/gamma/theta/vega) from 246+ options across Deribit, OKX, Bybit.",
        "responses": {
          "200": {
            "description": "Options Greeks data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/greeks/sol/usd/preview": {
      "get": {
        "summary": "SOL/USD options greeks preview",
        "tags": [
          "Options Greeks"
        ],
        "description": "Free preview of options greeks data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/term-structure/catalogue": {
      "get": {
        "summary": "Term Structure catalogue",
        "tags": [
          "Term Structure"
        ],
        "description": "Lists available endpoints and methodology.",
        "responses": {
          "200": {
            "description": "Catalogue"
          }
        }
      }
    },
    "/oracle/term-structure/btc/usd": {
      "get": {
        "summary": "BTC/USD term structure",
        "tags": [
          "Term Structure"
        ],
        "description": "Futures term structure \u2014 basis, annualized carry, contango/backwardation across 3 exchanges.",
        "responses": {
          "200": {
            "description": "Term Structure data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/term-structure/btc/usd/preview": {
      "get": {
        "summary": "BTC/USD term structure preview",
        "tags": [
          "Term Structure"
        ],
        "description": "Free preview of term structure data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/term-structure/eth/usd": {
      "get": {
        "summary": "ETH/USD term structure",
        "tags": [
          "Term Structure"
        ],
        "description": "Futures term structure \u2014 basis, annualized carry, contango/backwardation across 3 exchanges.",
        "responses": {
          "200": {
            "description": "Term Structure data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/term-structure/eth/usd/preview": {
      "get": {
        "summary": "ETH/USD term structure preview",
        "tags": [
          "Term Structure"
        ],
        "description": "Free preview of term structure data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/term-structure/sol/usd": {
      "get": {
        "summary": "SOL/USD term structure",
        "tags": [
          "Term Structure"
        ],
        "description": "Futures term structure \u2014 basis, annualized carry, contango/backwardation across 3 exchanges.",
        "responses": {
          "200": {
            "description": "Term Structure data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/term-structure/sol/usd/preview": {
      "get": {
        "summary": "SOL/USD term structure preview",
        "tags": [
          "Term Structure"
        ],
        "description": "Free preview of term structure data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/instruments/catalogue": {
      "get": {
        "summary": "Instruments catalogue",
        "tags": [
          "Instruments"
        ],
        "description": "Lists available endpoints and methodology.",
        "responses": {
          "200": {
            "description": "Catalogue"
          }
        }
      }
    },
    "/oracle/instruments/btc/options": {
      "get": {
        "summary": "BTC/OPTIONS instruments",
        "tags": [
          "Instruments"
        ],
        "description": "Options instrument discovery \u2014 contracts, strikes, expiries across Deribit, OKX, Bybit.",
        "responses": {
          "200": {
            "description": "Instruments data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/instruments/btc/options/preview": {
      "get": {
        "summary": "BTC/OPTIONS instruments preview",
        "tags": [
          "Instruments"
        ],
        "description": "Free preview of instruments data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/instruments/eth/options": {
      "get": {
        "summary": "ETH/OPTIONS instruments",
        "tags": [
          "Instruments"
        ],
        "description": "Options instrument discovery \u2014 contracts, strikes, expiries across Deribit, OKX, Bybit.",
        "responses": {
          "200": {
            "description": "Instruments data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/instruments/eth/options/preview": {
      "get": {
        "summary": "ETH/OPTIONS instruments preview",
        "tags": [
          "Instruments"
        ],
        "description": "Free preview of instruments data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/instruments/sol/options": {
      "get": {
        "summary": "SOL/OPTIONS instruments",
        "tags": [
          "Instruments"
        ],
        "description": "Options instrument discovery \u2014 contracts, strikes, expiries across Deribit, OKX, Bybit.",
        "responses": {
          "200": {
            "description": "Instruments data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/instruments/sol/options/preview": {
      "get": {
        "summary": "SOL/OPTIONS instruments preview",
        "tags": [
          "Instruments"
        ],
        "description": "Free preview of instruments data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/svi/catalogue": {
      "get": {
        "summary": "SVI Surface catalogue",
        "tags": [
          "SVI Surface"
        ],
        "description": "Lists available endpoints and methodology.",
        "responses": {
          "200": {
            "description": "Catalogue"
          }
        }
      }
    },
    "/oracle/svi/btc/usd": {
      "get": {
        "summary": "BTC/USD svi surface",
        "tags": [
          "SVI Surface"
        ],
        "description": "Gatheral 2004 SVI arbitrage-free IV parameterization with smooth smile interpolation.",
        "responses": {
          "200": {
            "description": "SVI Surface data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/svi/btc/usd/preview": {
      "get": {
        "summary": "BTC/USD svi surface preview",
        "tags": [
          "SVI Surface"
        ],
        "description": "Free preview of svi surface data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/svi/eth/usd": {
      "get": {
        "summary": "ETH/USD svi surface",
        "tags": [
          "SVI Surface"
        ],
        "description": "Gatheral 2004 SVI arbitrage-free IV parameterization with smooth smile interpolation.",
        "responses": {
          "200": {
            "description": "SVI Surface data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/svi/eth/usd/preview": {
      "get": {
        "summary": "ETH/USD svi surface preview",
        "tags": [
          "SVI Surface"
        ],
        "description": "Free preview of svi surface data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/svi/sol/usd": {
      "get": {
        "summary": "SOL/USD svi surface",
        "tags": [
          "SVI Surface"
        ],
        "description": "Gatheral 2004 SVI arbitrage-free IV parameterization with smooth smile interpolation.",
        "responses": {
          "200": {
            "description": "SVI Surface data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/svi/sol/usd/preview": {
      "get": {
        "summary": "SOL/USD svi surface preview",
        "tags": [
          "SVI Surface"
        ],
        "description": "Free preview of svi surface data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/iv-surface/catalogue": {
      "get": {
        "summary": "IV Surface Multi catalogue",
        "tags": [
          "IV Surface Multi"
        ],
        "description": "Lists available endpoints and methodology.",
        "responses": {
          "200": {
            "description": "Catalogue"
          }
        }
      }
    },
    "/oracle/iv-surface/btc/usd": {
      "get": {
        "summary": "BTC/USD iv surface multi",
        "tags": [
          "IV Surface Multi"
        ],
        "description": "Multi-exchange per-strike IV with cross-exchange divergence detection and mispricing alerts.",
        "responses": {
          "200": {
            "description": "IV Surface Multi data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/iv-surface/btc/usd/preview": {
      "get": {
        "summary": "BTC/USD iv surface multi preview",
        "tags": [
          "IV Surface Multi"
        ],
        "description": "Free preview of iv surface multi data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/iv-surface/eth/usd": {
      "get": {
        "summary": "ETH/USD iv surface multi",
        "tags": [
          "IV Surface Multi"
        ],
        "description": "Multi-exchange per-strike IV with cross-exchange divergence detection and mispricing alerts.",
        "responses": {
          "200": {
            "description": "IV Surface Multi data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/iv-surface/eth/usd/preview": {
      "get": {
        "summary": "ETH/USD iv surface multi preview",
        "tags": [
          "IV Surface Multi"
        ],
        "description": "Free preview of iv surface multi data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/iv-surface/sol/usd": {
      "get": {
        "summary": "SOL/USD iv surface multi",
        "tags": [
          "IV Surface Multi"
        ],
        "description": "Multi-exchange per-strike IV with cross-exchange divergence detection and mispricing alerts.",
        "responses": {
          "200": {
            "description": "IV Surface Multi data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/iv-surface/sol/usd/preview": {
      "get": {
        "summary": "SOL/USD iv surface multi preview",
        "tags": [
          "IV Surface Multi"
        ],
        "description": "Free preview of iv surface multi data.",
        "responses": {
          "200": {
            "description": "Preview data"
          }
        }
      }
    },
    "/oracle/defi/yield/catalogue": {
      "get": {
        "summary": "List all DeFi lending protocols and chains",
        "tags": [
          "DeFi Yield"
        ],
        "responses": {
          "200": {
            "description": "Protocol catalogue"
          }
        }
      }
    },
    "/oracle/defi/yield/all": {
      "get": {
        "summary": "All DeFi lending rates \u2014 7 protocols, 7 chains, on-chain",
        "tags": [
          "DeFi Yield"
        ],
        "x-price": "$0.05",
        "responses": {
          "200": {
            "description": "All rates"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/defi/yield/compare": {
      "get": {
        "summary": "USDC rate comparison across all DeFi protocols",
        "tags": [
          "DeFi Yield"
        ],
        "x-price": "$0.05",
        "responses": {
          "200": {
            "description": "USDC comparison"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/defi/yield/best/{asset}": {
      "get": {
        "summary": "Best supply yield for a given asset across all protocols",
        "tags": [
          "DeFi Yield"
        ],
        "x-price": "$0.05",
        "parameters": [
          {
            "name": "asset",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "usdc",
                "usdt",
                "weth",
                "dai",
                "wbtc"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Best yield"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/defi/yield/{protocol}/{chain}/{asset}": {
      "get": {
        "summary": "Specific lending rate for a protocol/chain/asset",
        "tags": [
          "DeFi Yield"
        ],
        "x-price": "$0.05",
        "parameters": [
          {
            "name": "protocol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "chain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asset",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Rate data"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/compute/catalogue": {
      "get": {
        "summary": "List all GPU models and pricing sources",
        "tags": [
          "Compute"
        ],
        "responses": {
          "200": {
            "description": "Catalogue"
          }
        }
      }
    },
    "/oracle/compute/all": {
      "get": {
        "summary": "All GPU compute prices \u2014 4 sources, 80+ models",
        "tags": [
          "Compute"
        ],
        "x-price": "$0.05",
        "responses": {
          "200": {
            "description": "All prices"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/compute/compare": {
      "get": {
        "summary": "GPU model comparison ranked by price",
        "tags": [
          "Compute"
        ],
        "x-price": "$0.05",
        "responses": {
          "200": {
            "description": "Comparison"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/oracle/compute/best/{gpu_model}": {
      "get": {
        "summary": "Best price for a GPU model across all sources",
        "tags": [
          "Compute"
        ],
        "x-price": "$0.05",
        "parameters": [
          {
            "name": "gpu_model",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Best price"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    }
  }
}