{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://vetdatastandards.com/schemas/v0.1/payload.schema.json",
  "title": "Vet Data Standard v0.1 snapshot payload",
  "description": "One complete export or import snapshot. This is not a delta, event, or sync message.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "standard",
    "version",
    "exportedAt",
    "organisations",
    "practices",
    "locations",
    "staff",
    "clients",
    "patients",
    "appointments",
    "consultations",
    "products",
    "services",
    "prescriptions",
    "vaccinations",
    "invoices",
    "invoiceLines",
    "documents"
  ],
  "properties": {
    "standard": {
      "const": "https://vetdatastandards.com/v0.1"
    },
    "version": {
      "const": "0.1.0"
    },
    "exportedAt": {
      "$ref": "https://vetdatastandards.com/schemas/v0.1/common.schema.json#/$defs/dateTime"
    },
    "generator": {
      "type": "object",
      "additionalProperties": false,
      "required": ["name"],
      "properties": {
        "name": { "type": "string", "minLength": 1, "maxLength": 128 },
        "version": { "type": "string", "minLength": 1, "maxLength": 64 }
      }
    },
    "organisations": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/organisation.schema.json" }
    },
    "practices": {
      "type": "array",
      "minItems": 1,
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/practice.schema.json" }
    },
    "locations": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/location.schema.json" }
    },
    "staff": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/staff.schema.json" }
    },
    "clients": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/client.schema.json" }
    },
    "patients": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/patient.schema.json" }
    },
    "appointments": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/appointment.schema.json" }
    },
    "consultations": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/consultation.schema.json" }
    },
    "products": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/product.schema.json" }
    },
    "services": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/service.schema.json" }
    },
    "prescriptions": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/prescription.schema.json" }
    },
    "vaccinations": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/vaccination.schema.json" }
    },
    "invoices": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/invoice.schema.json" }
    },
    "invoiceLines": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/invoice-line.schema.json" }
    },
    "documents": {
      "type": "array",
      "items": { "$ref": "https://vetdatastandards.com/schemas/v0.1/document.schema.json" }
    }
  }
}
