{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/folio/main/json-schema/folio-local-hold-dto-schema.json",
  "title": "localHoldDTO",
  "description": "D2IR Patron hold",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/folio-mod-inn-reach-circulation-openapi.yml#/components/schemas/localHoldDTO",
  "allOf": [
    {
      "$ref": "#/$defs/baseCircRequestDTO"
    }
  ],
  "type": "object",
  "properties": {
    "pickupLocation": {
      "description": "Pickup location",
      "type": "string"
    },
    "centralItemType": {
      "description": "Central item type",
      "type": "integer",
      "minimum": 0,
      "maximum": 255
    },
    "centralPatronType": {
      "description": "Central patron type",
      "type": "integer",
      "minimum": 0,
      "maximum": 255
    },
    "patronName": {
      "description": "Patron name",
      "type": "string"
    },
    "patronHomeLibrary": {
      "description": "Patron home library",
      "type": "string"
    },
    "patronPhone": {
      "description": "Patron phone",
      "type": "string"
    },
    "title": {
      "description": "Bibliographic title of the requested item. Stored for informational purposes; not used for instance creation in local hold flow.",
      "type": "string",
      "maxLength": 256
    },
    "author": {
      "description": "Author",
      "type": "string",
      "maxLength": 256
    },
    "callNumber": {
      "description": "Call number",
      "type": "string",
      "maxLength": 256
    },
    "needBefore": {
      "description": "Need before time",
      "type": "integer"
    }
  },
  "additionalProperties": false,
  "required": [
    "pickupLocation",
    "centralItemType",
    "centralPatronType",
    "patronName"
  ],
  "$defs": {
    "baseCircRequestDTO": {
      "description": "INN-Reach Circulation Common Put Request Data",
      "type": "object",
      "properties": {
        "transactionTime": {
          "description": "Transaction time",
          "type": "integer"
        },
        "patronId": {
          "description": "Base32-encoded FOLIO user UUID (lowercase, no padding). The caller obtains this value from the patron verification response. Decoded server-side to resolve the FOLIO patron.",
          "type": "string",
          "pattern": "[a-z,0-9]{1,32}"
        },
        "patronAgencyCode": {
          "description": "Patron agency code",
          "type": "string",
          "pattern": "[a-z,0-9]{5}"
        },
        "itemAgencyCode": {
          "description": "Item agency code",
          "type": "string",
          "pattern": "[a-z,0-9]{5}"
        },
        "itemId": {
          "description": "FOLIO inventory item HRID (Human-Readable ID). Used to look up the item in FOLIO inventory.",
          "type": "string",
          "pattern": "[a-z,0-9]{1,32}"
        }
      },
      "additionalProperties": false,
      "required": [
        "transactionTime",
        "patronId",
        "patronAgencyCode",
        "itemAgencyCode",
        "itemId"
      ]
    }
  }
}