{
 "openapi": "3.1.0",
 "info": {
  "title": "OQRO API",
  "version": "1",
  "description": "Public disclosures (SEC Form 4 and 13F, Congress periodic reports, federal contracts, lobbying) as JSON, each row linked to its official source. Included with OQRO Pro; create a key in your account. Disclosures, not advice.",
  "termsOfService": "https://oqro.io/terms",
  "contact": {
   "name": "OQRO",
   "url": "https://oqro.io/contact"
  }
 },
 "servers": [
  {
   "url": "https://oqro.io"
  }
 ],
 "externalDocs": {
  "description": "Documentation",
  "url": "https://oqro.io/docs/api"
 },
 "components": {
  "securitySchemes": {
   "bearer": {
    "type": "http",
    "scheme": "bearer"
   },
   "apiKey": {
    "type": "apiKey",
    "in": "header",
    "name": "X-API-Key"
   }
  }
 },
 "paths": {
  "/api/v1/companies/search": {
   "get": {
    "operationId": "companies_search",
    "summary": "Find covered companies by ticker or part of a name",
    "description": "Find covered companies by ticker or part of a name. Up to 20 matches, ticker matches first. Use it to resolve a name to a ticker.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "q",
      "in": "query",
      "required": true,
      "description": "Ticker or part of a company name, up to 60 characters.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/companies/{ticker}": {
   "get": {
    "operationId": "companies_ticker",
    "summary": "One company: profile, latest close and 12-month change next to the S&P 500, annual revenue and net income from SEC filings, latest FINRA short interest, and counts of recent disclosures",
    "description": "One company: profile, latest close and 12-month change next to the S&P 500, annual revenue and net income from SEC filings, latest FINRA short interest, and counts of recent disclosures.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "ticker",
      "in": "path",
      "required": true,
      "description": "A covered US ticker, for example AAPL.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/companies/{ticker}/context": {
   "get": {
    "operationId": "companies_ticker_context",
    "summary": "What has been happening at one company, in one answer: its latest weekly note written from OQRO's own facts, its recent Form 8-K reports (executive changes, results, auditor and listing notices, deals) with the company's own opening sentence, mergers and acquisitions it is part of, and its 30 and 90 day price moves",
    "description": "What has been happening at one company, in one answer: its latest weekly note written from OQRO's own facts, its recent Form 8-K reports (executive changes, results, auditor and listing notices, deals) with the company's own opening sentence, mergers and acquisitions it is part of, and its 30 and 90 day price moves. Descriptive only: it never says why anyone traded.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "ticker",
      "in": "path",
      "required": true,
      "description": "A covered US ticker, for example AAPL.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "days",
      "in": "query",
      "required": false,
      "description": "How far back the Form 8-K reports and deals go, 7 to 365 (default 120).",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/insider-trades": {
   "get": {
    "operationId": "insider_trades",
    "summary": "SEC Form 4 insider trades (open-market purchases and sales by default) or Form 144 notices of planned sales, newest filing first",
    "description": "SEC Form 4 insider trades (open-market purchases and sales by default) or Form 144 notices of planned sales, newest filing first.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "ticker",
      "in": "query",
      "required": false,
      "description": "A covered ticker, for example AAPL. Omit for the whole market.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "side",
      "in": "query",
      "required": false,
      "description": "buy or sell. Omit for both.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "kind",
      "in": "query",
      "required": false,
      "description": "open_market (default), form144 (a notice of a planned sale, not a completed one) or all (adds grants, option exercises, tax withholding, gifts).",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "days",
      "in": "query",
      "required": false,
      "description": "Look back this many days by filing date. 1 to 730, default 90.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "min_value",
      "in": "query",
      "required": false,
      "description": "Minimum transaction value in US dollars.",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "Rows per page, 1 to 100. Default 25.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "cursor",
      "in": "query",
      "required": false,
      "description": "The pagination.next_cursor of the previous page, unchanged. Keep the same filters.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/congress-trades": {
   "get": {
    "operationId": "congress_trades",
    "summary": "Stock transactions disclosed by members of Congress in periodic transaction reports (House Clerk and Senate eFD), newest disclosure first",
    "description": "Stock transactions disclosed by members of Congress in periodic transaction reports (House Clerk and Senate eFD), newest disclosure first. Amounts are the official ranges.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "ticker",
      "in": "query",
      "required": false,
      "description": "A covered ticker, for example AAPL. Omit for all companies.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "member",
      "in": "query",
      "required": false,
      "description": "Part of the member's name, for example Pelosi.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "side",
      "in": "query",
      "required": false,
      "description": "buy or sell (sell includes partial sales). Omit for all, exchanges included.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "days",
      "in": "query",
      "required": false,
      "description": "Look back this many days by disclosure date. 1 to 730, default 180.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "Rows per page, 1 to 100. Default 25.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "cursor",
      "in": "query",
      "required": false,
      "description": "The pagination.next_cursor of the previous page, unchanged. Keep the same filters.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/fund-moves": {
   "get": {
    "operationId": "fund_moves",
    "summary": "Position changes disclosed in SEC Form 13F by the managers OQRO follows (well-known funds first when no ticker or fund is given), newest filing first",
    "description": "Position changes disclosed in SEC Form 13F by the managers OQRO follows (well-known funds first when no ticker or fund is given), newest filing first.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "ticker",
      "in": "query",
      "required": false,
      "description": "A covered ticker, for example AAPL. Omit for all companies.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "fund",
      "in": "query",
      "required": false,
      "description": "Part of the manager's name, for example Berkshire.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "change",
      "in": "query",
      "required": false,
      "description": "new, increased, reduced or exited. Omit for all.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "Rows per page, 1 to 100. Default 25.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "cursor",
      "in": "query",
      "required": false,
      "description": "The pagination.next_cursor of the previous page, unchanged. Keep the same filters.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/contracts": {
   "get": {
    "operationId": "contracts",
    "summary": "Prime federal contract awards mapped to covered public companies (USAspending.gov), newest first",
    "description": "Prime federal contract awards mapped to covered public companies (USAspending.gov), newest first. Grants and loans are excluded.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "ticker",
      "in": "query",
      "required": false,
      "description": "A covered ticker, for example AAPL. Omit for all companies.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "days",
      "in": "query",
      "required": false,
      "description": "Look back this many days by action date. 1 to 730, default 365.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "min_amount",
      "in": "query",
      "required": false,
      "description": "Minimum obligated amount in US dollars.",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "Rows per page, 1 to 100. Default 25.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "cursor",
      "in": "query",
      "required": false,
      "description": "The pagination.next_cursor of the previous page, unchanged. Keep the same filters.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/lobbying": {
   "get": {
    "operationId": "lobbying",
    "summary": "Federal lobbying spending for one company from Lobbying Disclosure Act reports (lda.gov)",
    "description": "Federal lobbying spending for one company from Lobbying Disclosure Act reports (lda.gov). The rows are the individual reports, newest first; the quarter totals are in meta.quarter_totals.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "ticker",
      "in": "query",
      "required": true,
      "description": "A covered ticker, for example AAPL.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "Rows per page, 1 to 100. Default 25.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "cursor",
      "in": "query",
      "required": false,
      "description": "The pagination.next_cursor of the previous page, unchanged. Keep the same filters.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/prices/{ticker}": {
   "get": {
    "operationId": "prices_ticker",
    "summary": "Daily, weekly or monthly closing prices for one company next to the S&P 500 (SPY)",
    "description": "Daily, weekly or monthly closing prices for one company next to the S&P 500 (SPY). The rows are the points; meta holds the period's change, high, low and drawdown. About two years of history are stored. Not paginated.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "ticker",
      "in": "path",
      "required": true,
      "description": "A covered US ticker, for example AAPL.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "days",
      "in": "query",
      "required": false,
      "description": "Look back this many calendar days. 5 to 750, default 365.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "interval",
      "in": "query",
      "required": false,
      "description": "daily, weekly or monthly. Default: daily up to 120 days, weekly up to 400, monthly beyond.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "include_sp500",
      "in": "query",
      "required": false,
      "description": "Add the S&P 500 close to each point and its change over the period. Default true.",
      "schema": {
       "type": "boolean"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/leaderboard": {
   "get": {
    "operationId": "leaderboard",
    "summary": "Members of Congress or insiders ranked by how their disclosed purchases did against the S&P 500 (SPY) after they were reported: median relative return at 30, 90 and 180 days, share ahead of the index at 90 days, and the equal-weight $1,000 Mirror",
    "description": "Members of Congress or insiders ranked by how their disclosed purchases did against the S&P 500 (SPY) after they were reported: median relative return at 30, 90 and 180 days, share ahead of the index at 90 days, and the equal-weight $1,000 Mirror. At least 5 purchases measured at 90 days. meta.caveats holds the method and limits; past results describe the past.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "kind",
      "in": "query",
      "required": false,
      "description": "politician (default) or insider.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "sort",
      "in": "query",
      "required": false,
      "description": "best (default), worst (both by median 90-day relative return) or active (by number of purchases).",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "chamber",
      "in": "query",
      "required": false,
      "description": "house or senate (politicians only).",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "Rows per page, 1 to 100. Default 25.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "cursor",
      "in": "query",
      "required": false,
      "description": "The pagination.next_cursor of the previous page, unchanged. Keep the same filters.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/screen": {
   "get": {
    "operationId": "screen",
    "summary": "Filter and sort every covered company (about 850) on published numbers",
    "description": "Filter and sort every covered company (about 850) on published numbers. All filters combine with AND; a company with no figure for a filtered number is left out, never counted as zero.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "sector",
      "in": "query",
      "required": false,
      "description": "GICS sector, for example Health Care or Energy.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "min_market_value",
      "in": "query",
      "required": false,
      "description": "Market value in US dollars (latest close times shares outstanding).",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "max_market_value",
      "in": "query",
      "required": false,
      "description": "Market value in US dollars (latest close times shares outstanding).",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "min_change_12m",
      "in": "query",
      "required": false,
      "description": "Price change over 12 months, in percent (negative allowed).",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "max_change_12m",
      "in": "query",
      "required": false,
      "description": "Price change over 12 months, in percent (negative allowed).",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "min_vs_sp500_12m",
      "in": "query",
      "required": false,
      "description": "Percentage points ahead of (+) or behind (-) the S&P 500 over 12 months.",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "max_vs_sp500_12m",
      "in": "query",
      "required": false,
      "description": "Percentage points ahead of (+) or behind (-) the S&P 500 over 12 months.",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "within_pct_of_12m_high",
      "in": "query",
      "required": false,
      "description": "At most this many percent below the 12-month high.",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "at_least_pct_below_12m_high",
      "in": "query",
      "required": false,
      "description": "At least this many percent below the 12-month high.",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "min_insider_purchases_90d",
      "in": "query",
      "required": false,
      "description": "At least this many open-market insider purchases of $10K or more in the last 90 days.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "min_congress_purchases_90d",
      "in": "query",
      "required": false,
      "description": "At least this many Congress purchases disclosed in the last 90 days.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "min_fund_adds_180d",
      "in": "query",
      "required": false,
      "description": "At least this many 13F new or increased positions disclosed in the last 180 days.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "has_federal_contracts_90d",
      "in": "query",
      "required": false,
      "description": "true: at least one federal contract award in the last 90 days.",
      "schema": {
       "type": "boolean"
      }
     },
     {
      "name": "profitable",
      "in": "query",
      "required": false,
      "description": "true: positive net income in the last fiscal year.",
      "schema": {
       "type": "boolean"
      }
     },
     {
      "name": "positive_free_cash_flow",
      "in": "query",
      "required": false,
      "description": "true: operating cash flow minus capital expenditure above zero in the last fiscal year (not returned for banks and insurers).",
      "schema": {
       "type": "boolean"
      }
     },
     {
      "name": "net_cash",
      "in": "query",
      "required": false,
      "description": "true: more cash than debt at the latest report (not for banks and insurers).",
      "schema": {
       "type": "boolean"
      }
     },
     {
      "name": "min_days_to_cover",
      "in": "query",
      "required": false,
      "description": "Minimum FINRA short-interest days to cover.",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "sort_by",
      "in": "query",
      "required": false,
      "description": "One of market_value, change_12m, vs_sp500_12m, change_90d, vs_12m_high, insider_purchase_value_90d, insider_purchases_90d, congress_purchases_90d, fund_adds_180d, revenue, net_margin, free_cash_flow, days_to_cover, ticker. Default market_value.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "direction",
      "in": "query",
      "required": false,
      "description": "desc (default) or asc.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "Rows per page, 1 to 100. Default 25.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "cursor",
      "in": "query",
      "required": false,
      "description": "The pagination.next_cursor of the previous page, unchanged. Keep the same filters.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/baskets": {
   "get": {
    "operationId": "baskets",
    "summary": "Disclosure baskets: companies that insiders, members of Congress and funds reported buying, held under a written rule, equal-weighted and measured against the S&P 500",
    "description": "Disclosure baskets: companies that insiders, members of Congress and funds reported buying, held under a written rule, equal-weighted and measured against the S&P 500. Without slug, every basket with its return since start. With slug, the rule, risk figures, monthly returns and the member companies.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "slug",
      "in": "query",
      "required": false,
      "description": "A basket slug, for example insider-buys or congress-buys. Omit to list all baskets.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "members",
      "in": "query",
      "required": false,
      "description": "Member companies to return with a slug, 1 to 60. Default 25.",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/stats/insider": {
   "get": {
    "operationId": "stats_insider",
    "summary": "Insider buying statistics from SEC Form 4 since 2006: purchases, sales, values, buyers and median purchase per year",
    "description": "Insider buying statistics from SEC Form 4 since 2006: purchases, sales, values, buyers and median purchase per year. With year, also who bought, the ten largest purchases and the ten most-bought companies. With sector, that sector's purchases per year.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "year",
      "in": "query",
      "required": false,
      "description": "One year from 2006, for example 2024. Omit for every year.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "sector",
      "in": "query",
      "required": false,
      "description": "A sector, for example Energy. Not combined with year.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/stats/congress": {
   "get": {
    "operationId": "stats_congress",
    "summary": "Stock trades reported by members of Congress per year from 2021: trades, purchases, sales, members trading, the typical reporting delay and the share filed after 45 days",
    "description": "Stock trades reported by members of Congress per year from 2021: trades, purchases, sales, members trading, the typical reporting delay and the share filed after 45 days. With year, also the most-traded stocks and most active members. Counts of trades, never dollars.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "year",
      "in": "query",
      "required": false,
      "description": "One year from 2021, for example 2025. Omit for every year.",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/calendar": {
   "get": {
    "operationId": "calendar",
    "summary": "What is coming: S&P 500 earnings dates (announced, never estimated), the main US economic releases and the 13F and 10-Q filing deadlines",
    "description": "What is coming: S&P 500 earnings dates (announced, never estimated), the main US economic releases and the 13F and 10-Q filing deadlines.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "days",
      "in": "query",
      "required": false,
      "description": "Days ahead, 1 to 30. Default 14.",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "kind",
      "in": "query",
      "required": false,
      "description": "all (default), earnings, economic or deadlines.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "ticker",
      "in": "query",
      "required": false,
      "description": "Only this company's earnings date.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  },
  "/api/v1/compare": {
   "get": {
    "operationId": "compare",
    "summary": "Two covered companies side by side: the same facts as the company endpoint for each, with the OQRO comparison page when one exists",
    "description": "Two covered companies side by side: the same facts as the company endpoint for each, with the OQRO comparison page when one exists.",
    "security": [
     {
      "bearer": []
     },
     {
      "apiKey": []
     }
    ],
    "parameters": [
     {
      "name": "a",
      "in": "query",
      "required": true,
      "description": "First ticker, for example NVDA.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "b",
      "in": "query",
      "required": true,
      "description": "Second ticker, for example AMD.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "JSON: { data, pagination?, meta? }. Every row links its official source.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "data": {},
          "pagination": {
           "type": "object"
          },
          "meta": {
           "type": "object"
          }
         },
         "required": [
          "data"
         ]
        }
       }
      }
     },
     "400": {
      "description": "invalid_parameter"
     },
     "401": {
      "description": "missing_api_key or invalid_api_key"
     },
     "402": {
      "description": "The key's owner has no OQRO Pro"
     },
     "404": {
      "description": "ticker_not_covered"
     },
     "429": {
      "description": "rate_limited: 60 requests a minute and 5,000 a day per key"
     }
    }
   }
  }
 }
}