{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/taylors/main/json-schema/taylors-hold-schema.json",
  "title": "Koha Hold",
  "description": "A hold (reservation) record from the Taylor's Library Koha REST API.",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "hold_id": { "type": "integer", "description": "Internal hold identifier" },
    "patron_id": { "type": "integer", "description": "Internal patron identifier" },
    "biblio_id": { "type": ["integer", "null"], "description": "Internal biblio identifier" },
    "item_id": { "type": ["integer", "null"], "description": "Internal item identifier" },
    "item_type_id": { "type": ["string", "null"], "description": "Optional itemtype for a record level hold" },
    "pickup_library_id": { "type": ["string", "null"], "description": "Internal library identifier for the pickup library" },
    "hold_date": { "type": ["string", "null"], "format": "date", "description": "The date the hold was placed" },
    "expiration_date": { "type": ["string", "null"], "format": "date", "description": "The date the hold expires" },
    "cancellation_date": { "type": ["string", "null"], "format": "date", "description": "The date the hold was cancelled" },
    "cancellation_reason": { "type": ["string", "null"], "description": "The reason the hold was cancelled" },
    "waiting_date": { "type": ["string", "null"], "format": "date", "description": "The date the item was marked as waiting" },
    "priority": { "type": ["integer", "null"], "description": "Where in the queue the patron sits" },
    "status": { "type": ["string", "null"], "description": "One letter code defining the hold status after confirmation" },
    "item_level": { "type": "boolean", "description": "If the hold is placed at item level" },
    "suspended": { "type": "boolean", "description": "Controls if the hold is suspended" },
    "suspended_until": { "type": ["string", "null"], "format": "date-time", "description": "Date until which the hold is suspended" },
    "non_priority": { "type": "boolean", "description": "Set this hold as non priority" },
    "lowest_priority": { "type": "boolean", "description": "Controls if the hold is given lowest priority" },
    "notes": { "type": ["string", "null"], "description": "Notes related to this hold" },
    "timestamp": { "type": "string", "format": "date-time", "description": "Timestamp for the latest hold update" }
  }
}
