{
 "openapi": "3.1.0",
 "info": {
  "title": "Orvik open data",
  "version": "1.0.0",
  "summary": "Free identification keys, occurrence data and field reference tables.",
  "description": "Keyless, CORS-open, no rate limit. Every payload carries its own provenance, licence, scope limits and a `not_published` block naming what is deliberately absent and why.\n\nNothing here identifies a specimen. The keys narrow possibilities from traits a reader has observed, and a filtered list is not a determination.\n\nThe compilation is CC BY 4.0. One upstream source inside `field-data` — iNaturalist — is CC BY-NC 4.0, and that restriction travels with those columns.",
  "license": {
   "name": "Creative Commons Attribution 4.0 International",
   "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "contact": {
   "name": "Orvik",
   "url": "https://orvik.app/api/",
   "email": "support@orvik.app"
  }
 },
 "servers": [
  {
   "url": "https://orvik.app"
  }
 ],
 "paths": {
  "/api/v1/index.json": {
   "get": {
    "operationId": "get_index",
    "summary": "Entry point",
    "description": "Every dataset with its row count and purpose.",
    "responses": {
     "200": {
      "description": "The dataset, with its provenance, licence and caveats in the same document.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/tools.json": {
   "get": {
    "operationId": "get_tools",
    "summary": "Identification keys and calculators",
    "description": "The catalogue of free browser tools, with the facets each key filters on.",
    "responses": {
     "200": {
      "description": "The dataset, with its provenance, licence and caveats in the same document.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/key-entries.json": {
   "get": {
    "operationId": "get_key_entries",
    "summary": "Key entries",
    "description": "Every specimen with its trait coding, diagnostic sentence, lookalikes and occurrence figures.",
    "responses": {
     "200": {
      "description": "The dataset, with its provenance, licence and caveats in the same document.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/field-data.json": {
   "get": {
    "operationId": "get_field_data",
    "summary": "Open field data",
    "description": "Occurrence counts joined from GBIF, iNaturalist, Macrostrat and PaleoBioDB, with the observer-bias baseline needed to read them.",
    "responses": {
     "200": {
      "description": "The dataset, with its provenance, licence and caveats in the same document.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/reference-tables.json": {
   "get": {
    "operationId": "get_reference_tables",
    "summary": "Reference tables",
    "description": "ISA tree growth factors, AAHA pet life stages, coin metal content, the Mohs scale and sowing timing.",
    "responses": {
     "200": {
      "description": "The dataset, with its provenance, licence and caveats in the same document.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/orvik.json": {
   "get": {
    "operationId": "get_orvik",
    "summary": "What Orvik does",
    "description": "The product: subjects, capabilities, data handling and an equally long list of what it does not do.",
    "responses": {
     "200": {
      "description": "The dataset, with its provenance, licence and caveats in the same document.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/status.json": {
   "get": {
    "operationId": "get_status",
    "summary": "Build status",
    "description": "When each dataset was last rebuilt, and the field-data snapshot date.",
    "responses": {
     "200": {
      "description": "The dataset, with its provenance, licence and caveats in the same document.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  }
 },
 "externalDocs": {
  "description": "Human documentation",
  "url": "https://orvik.app/api/"
 },
 "x-mcp": {
  "endpoint": "https://orvik.app/mcp",
  "transport": "JSON-RPC 2.0 over HTTP POST"
 },
 "x-a2a": {
  "endpoint": "https://orvik.app/a2a",
  "card": "https://orvik.app/.well-known/agent-card.json"
 },
 "x-engine": {
  "url": "https://orvik.app/js/engine.js",
  "description": "The ES module the browser calculators, these endpoints and the MCP tools all import. One copy of the arithmetic, so there is nothing left to disagree."
 }
}