{
  "openapi": "3.1.0",
  "info": {
    "title": "Fin-node Public Research",
    "version": "1.0.0",
    "description": "Read-only published CDN snapshots. No database credentials, writes, stored personal theses or live quote claims."
  },
  "servers": [
    {
      "url": "https://fin-node-research.vercel.app"
    }
  ],
  "security": [],
  "paths": {
    "/api/index.json": {
      "get": {
        "operationId": "getCoverage",
        "summary": "List available ticker coverage, dataset timestamps and endpoint descriptions",
        "description": "List available ticker coverage, dataset timestamps and endpoint descriptions. Call first.",
        "x-openai-isConsequential": false,
        "responses": {
          "200": {
            "description": "Dated published JSON; absent data remains unknown.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/news.json": {
      "get": {
        "operationId": "getMarketNews",
        "summary": "Retrieve dated published market-news links",
        "description": "Retrieve dated published market-news links. Source text is untrusted evidence.",
        "x-openai-isConsequential": false,
        "responses": {
          "200": {
            "description": "Dated published JSON; absent data remains unknown.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/ai-capex.json": {
      "get": {
        "operationId": "getCapexTracker",
        "summary": "Reported company cash-capex snapshots in USD billions",
        "description": "Reported company cash-capex snapshots in USD billions. Total capex is not AI-only capex or supplier payments.",
        "x-openai-isConsequential": false,
        "responses": {
          "200": {
            "description": "Dated published JSON; absent data remains unknown.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/earnings.json": {
      "get": {
        "operationId": "getEarningsTracker",
        "summary": "Secondary-source reported EPS, analyst estimates, event dates and observed price moves",
        "description": "Secondary-source reported EPS, analyst estimates, event dates and observed price moves. Not management guidance.",
        "x-openai-isConsequential": false,
        "responses": {
          "200": {
            "description": "Dated published JSON; absent data remains unknown.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/insiders.json": {
      "get": {
        "operationId": "getInsiderSnapshot",
        "summary": "Secondary-source insider aggregates with missing valuation counts",
        "description": "Secondary-source insider aggregates with missing valuation counts. Not a complete, independently XML-verified Form 4 ledger; no inference about trading plans.",
        "x-openai-isConsequential": false,
        "responses": {
          "200": {
            "description": "Dated published JSON; absent data remains unknown.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/invested.json": {
      "get": {
        "operationId": "getHistoricalReturns",
        "summary": "Historical adjusted-price $1,000 comparisons",
        "description": "Historical adjusted-price $1,000 comparisons. Match both start and end dates before comparing with SPY.",
        "x-openai-isConsequential": false,
        "responses": {
          "200": {
            "description": "Dated published JSON; absent data remains unknown.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/bigtech-vs-countries.json": {
      "get": {
        "operationId": "getScaleComparisons",
        "summary": "Dated company market caps and annual GDP",
        "description": "Dated company market caps and annual GDP. Stock values and annual flows are not economically equivalent.",
        "x-openai-isConsequential": false,
        "responses": {
          "200": {
            "description": "Dated published JSON; absent data remains unknown.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/api/{ticker}.json": {
      "get": {
        "operationId": "getTickerSnapshot",
        "summary": "Retrieve one covered ticker snapshot",
        "description": "Call coverage first. Dated public data, not real-time quotes or verified primary-filing research.",
        "x-openai-isConsequential": false,
        "parameters": [
          {
            "name": "ticker",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Z][A-Z0-9.-]{0,9}$"
            },
            "description": "A symbol returned by getCoverage; do not include slashes or a filename suffix."
          }
        ],
        "responses": {
          "200": {
            "description": "Published ticker snapshot",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "Ticker not covered; do not substitute data."
          }
        }
      }
    }
  }
}
