{
  "openapi": "3.1.0",
  "info": {
    "title": "x402-free-hub",
    "description": "12 paid endpoints — Yield, Governance, Sentiment. All free APIs, no keys needed.",
    "version": "1.0.0"
  },
  "servers": [{ "url": "https://x402-free-hub.vercel.app" }],
  "paths": {
    "/api/yield/best-pools": {
      "post": {
        "summary": "Best APY pools ranked",
        "requestBody": {
          "required": false,
          "content": { "application/json": { "schema": { "type": "object", "properties": { "chain": { "type": "string" }, "minApy": { "type": "number" }, "limit": { "type": "number" } } } } }
        },
        "responses": { "200": { "description": "Success" }, "402": { "description": "Payment required" } }
      }
    },
    "/api/yield/stablecoin": {
      "post": {
        "summary": "Stablecoin yield compare",
        "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object" } } } },
        "responses": { "200": { "description": "Success" }, "402": { "description": "Payment required" } }
      }
    },
    "/api/yield/lending": {
      "post": {
        "summary": "Lending rate aggregator",
        "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object" } } } },
        "responses": { "200": { "description": "Success" }, "402": { "description": "Payment required" } }
      }
    },
    "/api/yield/strategy": {
      "post": {
        "summary": "Auto-suggest yield strategy",
        "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "risk": { "type": "string", "enum": ["low", "medium", "high"] }, "amount": { "type": "number" } } } } } },
        "responses": { "200": { "description": "Success" }, "402": { "description": "Payment required" } }
      }
    },
    "/api/gov/proposals": {
      "post": {
        "summary": "Active DAO proposals",
        "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "first": { "type": "number" }, "skip": { "type": "number" } } } } } },
        "responses": { "200": { "description": "Success" }, "402": { "description": "Payment required" } }
      }
    },
    "/api/gov/vote-results": {
      "post": {
        "summary": "Proposal vote results",
        "requestBody": {
          "required": true,
          "content": { "application/json": { "schema": { "type": "object", "required": ["proposalId"], "properties": { "proposalId": { "type": "string", "description": "Snapshot proposal ID" }, "first": { "type": "number" } } } } }
        },
        "responses": { "200": { "description": "Success" }, "402": { "description": "Payment required" } }
      }
    },
    "/api/gov/whale-votes": {
      "post": {
        "summary": "Whale voting analysis",
        "requestBody": {
          "required": true,
          "content": { "application/json": { "schema": { "type": "object", "required": ["proposalId"], "properties": { "proposalId": { "type": "string", "description": "Snapshot proposal ID" }, "first": { "type": "number" }, "minVotingPower": { "type": "number" } } } } }
        },
        "responses": { "200": { "description": "Success" }, "402": { "description": "Payment required" } }
      }
    },
    "/api/gov/treasury": {
      "post": {
        "summary": "DAO treasury overview",
        "requestBody": {
          "required": true,
          "content": { "application/json": { "schema": { "type": "object", "required": ["spaceId"], "properties": { "spaceId": { "type": "string", "description": "Snapshot space ID (e.g. 'ens.eth')" }, "first": { "type": "number" } } } } }
        },
        "responses": { "200": { "description": "Success" }, "402": { "description": "Payment required" } }
      }
    },
    "/api/sentiment/token": {
      "post": {
        "summary": "Token sentiment score",
        "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "coin": { "type": "string", "description": "CoinGecko coin ID (default: bitcoin)" } } } } } },
        "responses": { "200": { "description": "Success" }, "402": { "description": "Payment required" } }
      }
    },
    "/api/sentiment/trending": {
      "post": {
        "summary": "Crypto trending topics",
        "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object" } } } },
        "responses": { "200": { "description": "Success" }, "402": { "description": "Payment required" } }
      }
    },
    "/api/sentiment/fear-greed": {
      "post": {
        "summary": "Fear & Greed index",
        "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object" } } } },
        "responses": { "200": { "description": "Success" }, "402": { "description": "Payment required" } }
      }
    },
    "/api/sentiment/news": {
      "post": {
        "summary": "Crypto news aggregation",
        "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object" } } } },
        "responses": { "200": { "description": "Success" }, "402": { "description": "Payment required" } }
      }
    }
  }
}
