{
  "openapi": "3.1.0",
  "info": {
    "title": "DataVendor Bot API",
    "description": "M2M Crypto Data Marketplace. Pay per call in Bitcoin satoshis.",
    "version": "3.1.0",
    "contact": {
      "name": "API Bot",
      "url": "https://web-production-a2ec.up.railway.app/"
    }
  },
  "servers": [
    {
      "url": "https://web-production-a2ec.up.railway.app",
      "description": "Production"
    }
  ],
  "paths": {
    "/api/v1/register": {
      "post": {
        "operationId": "register",
        "summary": "Get free API key (100k sats)"
      }
    },
    "/api/v1/prices": {
      "get": {
        "operationId": "getAllPrices",
        "summary": "All prices (10 sats)"
      }
    },
    "/api/v1/price": {
      "get": {
        "operationId": "getPrice",
        "summary": "Single price (5 sats)"
      }
    },
    "/api/v1/signals": {
      "get": {
        "operationId": "getAllSignals",
        "summary": "All signals (50 sats)"
      }
    },
    "/api/v1/signal": {
      "get": {
        "operationId": "getSignal",
        "summary": "Single signal (25 sats)"
      }
    },
    "/api/v1/prediction": {
      "get": {
        "operationId": "getPrediction",
        "summary": "Prediction 1h/4h/24h (100 sats)"
      }
    },
    "/api/v1/sentiment": {
      "get": {
        "operationId": "getSentiment",
        "summary": "Market sentiment (30 sats)"
      }
    },
    "/api/v1/bundle": {
      "get": {
        "operationId": "getBundle",
        "summary": "Full bundle (150 sats)"
      }
    },
    "/api/v1/snapshot": {
      "get": {
        "operationId": "getSnapshot",
        "summary": "IPFS snapshot (200 sats)"
      }
    },
    "/api/v1/topup": {
      "post": {
        "operationId": "topup",
        "summary": "Declare BTC topup \u2192 auto-verified on-chain"
      }
    },
    "/api/v1/topup/confirm": {
      "post": {
        "operationId": "confirmTopup",
        "summary": "Manual confirm (admin fallback)"
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "in": "query",
        "name": "key"
      },
      "bearer": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  }
}