{
 "openapi": "3.1.0",
 "info": {
  "title": "Galen open data",
  "version": "1.0.0",
  "summary": "A veterinary-medicines reference corpus, its sources and its 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\nREAD `scope_limits` BEFORE USING ANY OF THIS. Galen publishes no doses, does not diagnose, names no products and recommends none. It explains how veterinary products are labelled, measured, stored and classified, and stops where clinical judgement starts. An absent row is never a statement of safety.\n\nThe compilation is CC BY 4.0. The standards, guidelines and reference works it cites belong to the bodies that publish them and are keyed row by row in sources.json.",
  "license": {
   "name": "Creative Commons Attribution 4.0 International",
   "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "contact": {
   "name": "Galen",
   "url": "https://galen.vet/api/",
   "email": "hello@galen.vet"
  }
 },
 "servers": [
  {
   "url": "https://galen.vet"
  }
 ],
 "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, carrying its own provenance, licence, scope limits and caveats in the same document — a retrieved payload travels alone.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/articles.json": {
   "get": {
    "operationId": "get_articles",
    "summary": "The Galen journal",
    "description": "Every published article with its takeaways, FAQ, entities and source keys. Respects the publication queue.",
    "responses": {
     "200": {
      "description": "The dataset, carrying its own provenance, licence, scope limits and caveats in the same document — a retrieved payload travels alone.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/sources.json": {
   "get": {
    "operationId": "get_sources",
    "summary": "Primary sources",
    "description": "The citation registry, with the articles that cite each entry.",
    "responses": {
     "200": {
      "description": "The dataset, carrying its own provenance, licence, scope limits and caveats in the same document — a retrieved payload travels alone.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/vital-signs.json": {
   "get": {
    "operationId": "get_vital_signs",
    "summary": "Resting reference ranges by species",
    "description": "Rectal temperature, heart rate and respiratory rate for eight species of healthy adult animal, with the caveats that make a range usable.",
    "responses": {
     "200": {
      "description": "The dataset, carrying its own provenance, licence, scope limits and caveats in the same document — a retrieved payload travels alone.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/labelling.json": {
   "get": {
    "operationId": "get_labelling",
    "summary": "Reading a veterinary label",
    "description": "Strength units, storage vocabulary, in-use shelf life, what governs a withdrawal period and how residue failures happen. Patterns, not figures.",
    "responses": {
     "200": {
      "description": "The dataset, carrying its own provenance, licence, scope limits and caveats in the same document — a retrieved payload travels alone.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/hazards.json": {
   "get": {
    "operationId": "get_hazards",
    "summary": "Household hazard groups for cats and dogs",
    "description": "Medicine groups and plant identities. Orientation, never triage: no amounts, no thresholds, no products.",
    "responses": {
     "200": {
      "description": "The dataset, carrying its own provenance, licence, scope limits and caveats in the same document — a retrieved payload travels alone.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/heat-stress.json": {
   "get": {
    "operationId": "get_heat_stress",
    "summary": "Temperature-humidity index",
    "description": "The THI variant published here, its computed grid, and what fails first in each production system.",
    "responses": {
     "200": {
      "description": "The dataset, carrying its own provenance, licence, scope limits and caveats in the same document — a retrieved payload travels alone.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/galen.json": {
   "get": {
    "operationId": "get_galen",
    "summary": "What Galen publishes, and what it does not",
    "description": "The editorial policy as data, with an equally long list of what is out of scope.",
    "responses": {
     "200": {
      "description": "The dataset, carrying its own provenance, licence, scope limits and caveats in the same document — a retrieved payload travels alone.",
      "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 state of the publication queue.",
    "responses": {
     "200": {
      "description": "The dataset, carrying its own provenance, licence, scope limits and caveats in the same document — a retrieved payload travels alone.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  }
 },
 "externalDocs": {
  "description": "Human documentation",
  "url": "https://galen.vet/api/"
 },
 "x-mcp": {
  "endpoint": "https://galen.vet/mcp",
  "transport": "JSON-RPC 2.0 over HTTP POST"
 },
 "x-a2a": {
  "endpoint": "https://galen.vet/a2a",
  "card": "https://galen.vet/.well-known/agent-card.json"
 },
 "x-markdown": {
  "how": "Append index.md to any page URL, or send Accept: text/markdown.",
  "index": "https://galen.vet/llms.txt",
  "full_text": "https://galen.vet/llms-full.txt"
 },
 "x-scope-limits": {
  "summary": "No dosing, no diagnosis, no product recommendations, no numeric withdrawal periods or MRLs. Full text in the `scope_limits` block of every payload."
 }
}