foliolib.folio.api.circulationStorage.RequestStorage

class foliolib.folio.api.circulationStorage.RequestStorage(tenant: str, okapi: Optional[foliolib.okapi.okapiClient.OkapiClient] = None)

Bases: foliolib.folio.FolioApi

Request Storage API

Storage for requests

Parameters
  • tenant (str) – Tenant id

  • okapi (OkapiClient, optional) – Instance of OkapiClient. Defaults to None.

Methods

delete_request(requestId)

Delete request item with given {requestId}

delete_requests()

DELETE /request-storage/requests

get_request(requestId)

Retrieve request item with given {requestId}

get_requests(**kwargs)

Retrieve a list of request items.

modify_request(requestId, request)

Update request item with given {requestId}

set_request(request)

Create a new request item.

delete_request(requestId: str)

Delete request item with given {requestId}

DELETE /request-storage/requests/{requestId}

Parameters

requestId (str) –

Raises
  • OkapiRequestNotFound – Not Found

  • OkapiRequestError – Bad Request

  • OkapiFatalError – Server Error

  • OkapiFatalError – Server Error

delete_requests()

DELETE /request-storage/requests

get_request(requestId: str)

Retrieve request item with given {requestId}

GET /request-storage/requests/{requestId}

Parameters

requestId (str) –

Returns

See Schema below

Return type

dict

Raises
  • OkapiRequestNotFound – Not Found

  • OkapiFatalError – Server Error

  • OkapiFatalError – Server Error

Schema

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "A request by a patron for a specific item",
  "type": "object",
  "properties": {
    "id": {
      "description": "UUID of the request",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "requestLevel": {
      "description": "Level of the request - Item or Title",
      "type": "string",
      "enum": [
        "Item",
        "Title"
      ]
    },
    "requestType": {
      "description": "Whether the item should be held upon return, recalled or paged for",
      "type": "string",
      "enum": [
        "Hold",
        "Recall",
        "Page"
      ]
    },
    "requestDate": {
      "description": "Date the request was made",
      "type": "string",
      "format": "date-time"
    },
    "patronComments": {
      "description": "Comments made by the patron",
      "type": "string"
    },
    "requesterId": {
      "description": "ID of the requesting patron (user)",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "proxyUserId": {
      "description": "ID of the user representing a proxy for the patron",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "instanceId": {
      "description": "ID of the instance being requested",
      "type": "string",
      "$ref": "raml-util/schemas/uuid.schema"
    },
    "holdingsRecordId": {
      "description": "ID of the holdings record being requested",
      "type": "string",
      "$ref": "raml-util/schemas/uuid.schema"
    },
    "itemId": {
      "description": "ID of the item being requested",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "status": {
      "description": "Status of the request",
      "type": "string",
      "enum": [
        "Open - Not yet filled",
        "Open - Awaiting pickup",
        "Open - In transit",
        "Open - Awaiting delivery",
        "Closed - Filled",
        "Closed - Cancelled",
        "Closed - Unfilled",
        "Closed - Pickup expired"
      ]
    },
    "cancellationReasonId": {
      "description": "The id of the relevant request reason",
      "type": "string"
    },
    "cancelledByUserId": {
      "description": "The id of the user that cancelled the request",
      "type": "string"
    },
    "cancellationAdditionalInformation": {
      "description": "Potential relevant information regarding a cancellation",
      "type": "string"
    },
    "cancelledDate": {
      "description": "Date the request was cancelled",
      "type": "string",
      "format": "date-time"
    },
    "position": {
      "description": "Position of the request in the unified request queue",
      "type": "integer"
    },
    "instance": {
      "description": "Copy of some instance metadata (used for searching and sorting)",
      "type": "object",
      "properties": {
        "title": {
          "description": "title of the item",
          "type": "string"
        },
        "identifiers": {
          "type": "array",
          "description": "An extensible set of name-value pairs of identifiers associated with the resource",
          "minItems": 0,
          "items": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "description": "Resource identifier value"
              },
              "identifierTypeId": {
                "type": "string",
                "description": "UUID of resource identifier type (e.g. ISBN, ISSN, LCCN, CODEN, Locally defined identifiers)",
                "$ref": "raml-util/schemas/uuid.schema"
              }
            },
            "additionalProperties": false,
            "required": [
              "value",
              "identifierTypeId"
            ]
          }
        }
      }
    },
    "item": {
      "description": "Copy of some item metadata (used for searching and sorting)",
      "type": "object",
      "properties": {
        "barcode": {
          "description": "barcode of the item",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "requester": {
      "description": "Copy of some requesting patron metadata (used for searching and sorting)",
      "type": "object",
      "properties": {
        "firstName": {
          "description": "first name of the requesting patron",
          "type": "string"
        },
        "lastName": {
          "description": "last name of the requesting patron",
          "type": "string"
        },
        "middleName": {
          "description": "middle name of the requesting patron",
          "type": "string"
        },
        "barcode": {
          "description": "barcode of the requesting patron",
          "type": "string"
        },
        "patronGroup": {
          "description": "DEPRECATED, to be removed in subsequent major version",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "proxy": {
      "description": "Copy of some proxy patron metadata (used for searching and sorting)",
      "type": "object",
      "properties": {
        "firstName": {
          "description": "first name of the proxy patron",
          "type": "string"
        },
        "lastName": {
          "description": "last name of the proxy patron",
          "type": "string"
        },
        "middleName": {
          "description": "middle name of the proxy patron",
          "type": "string"
        },
        "barcode": {
          "description": "barcode of the proxy patron",
          "type": "string"
        },
        "patronGroup": {
          "description": "DEPRECATED, to be removed in subsequent major version",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "fulfillmentPreference": {
      "description": "How should the request be fulfilled (whether the item should be kept on the hold shelf for collection or delivered to the requester)",
      "type": "string",
      "enum": [
        "Hold Shelf",
        "Delivery"
      ]
    },
    "deliveryAddressTypeId": {
      "description": "Deliver to the address of this type, for the requesting patron",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "requestExpirationDate": {
      "description": "Date when the request expires",
      "type": "string",
      "format": "date-time"
    },
    "holdShelfExpirationDate": {
      "description": "Date when an item returned to the hold shelf expires",
      "type": "string",
      "format": "date-time"
    },
    "pickupServicePointId": {
      "description": "The ID of the Service Point where this request can be picked up",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "metadata": {
      "description": "Metadata about creation and changes to requests, provided by the server (client should not provide)",
      "type": "object",
      "$ref": "raml-util/schemas/metadata.schema"
    },
    "tags": {
      "type": "object",
      "description": "Tags",
      "$ref": "raml-util/schemas/tags.schema"
    },
    "awaitingPickupRequestClosedDate": {
      "description": "A date when the request with awaiting pickup status was closed",
      "type": "string",
      "format": "date-time",
      "readonly": true
    },
    "searchIndex": {
      "description": "Request fields used for search",
      "type": "object",
      "$ref": "request-search-index.json"
    }
  },
  "additionalProperties": false,
  "required": [
    "instanceId",
    "requesterId",
    "requestType",
    "requestLevel",
    "requestDate",
    "fulfillmentPreference",
    "status"
  ]
}
get_requests(**kwargs)

Retrieve a list of request items.

GET /request-storage/requests

Parameters

**kwargs (properties) – Keyword Arguments

Keyword Arguments
  • offset (int) –

    (default=0) Skip over a number of elements by specifying an offset value for the query

    Example

    • 0

  • limit (int) –

    (default=10) Limit the number of elements returned in the response

    Example

    • 10

  • query (str) –

    A query expressed as a CQL string (see [dev.folio.org/reference/glossary#cql](https://dev.folio.org/reference/glossary#cql)) using valid searchable fields. The first example below shows the general form of a full CQL query, but those fields might not be relevant in this context.

    by using CQL

    Example

    • (username==”ab*” or personal.firstName==”ab*” or personal.lastName==”ab*”) and active==”true” sortby personal.lastName personal.firstName barcode

    • requesterId=”cf23adf0-61ba-4887-bf82-956c4aae2260”

Returns

See Schema below

Return type

dict

Raises
  • OkapiRequestError – Bad Request

  • OkapiRequestUnauthorized – Authentication is required

  • OkapiFatalError – Server Error

  • OkapiFatalError – Server Error

Schema

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Collection of requests",
  "type": "object",
  "properties": {
    "requests": {
      "description": "List of request items",
      "id": "requests",
      "type": "array",
      "items": {
        "type": "object",
        "$ref": "request.json"
      }
    },
    "totalRecords": {
      "type": "integer"
    }
  },
  "required": [
    "requests",
    "totalRecords"
  ]
}
modify_request(requestId: str, request: dict)

Update request item with given {requestId}

PUT /request-storage/requests/{requestId}

Parameters
  • requestId (str) –

  • request (dict) – See Schema below

Raises
  • OkapiRequestNotFound – Not Found

  • OkapiRequestError – Bad Request

  • OkapiRequestConflict – Conflict

  • OkapiFatalError – Server Error

  • OkapiFatalError – Server Error

  • OkapiRequestUnprocessableEntity – Unprocessable Entity

Schema

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "A request by a patron for a specific item",
  "type": "object",
  "properties": {
    "id": {
      "description": "UUID of the request",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "requestLevel": {
      "description": "Level of the request - Item or Title",
      "type": "string",
      "enum": [
        "Item",
        "Title"
      ]
    },
    "requestType": {
      "description": "Whether the item should be held upon return, recalled or paged for",
      "type": "string",
      "enum": [
        "Hold",
        "Recall",
        "Page"
      ]
    },
    "requestDate": {
      "description": "Date the request was made",
      "type": "string",
      "format": "date-time"
    },
    "patronComments": {
      "description": "Comments made by the patron",
      "type": "string"
    },
    "requesterId": {
      "description": "ID of the requesting patron (user)",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "proxyUserId": {
      "description": "ID of the user representing a proxy for the patron",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "instanceId": {
      "description": "ID of the instance being requested",
      "type": "string",
      "$ref": "raml-util/schemas/uuid.schema"
    },
    "holdingsRecordId": {
      "description": "ID of the holdings record being requested",
      "type": "string",
      "$ref": "raml-util/schemas/uuid.schema"
    },
    "itemId": {
      "description": "ID of the item being requested",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "status": {
      "description": "Status of the request",
      "type": "string",
      "enum": [
        "Open - Not yet filled",
        "Open - Awaiting pickup",
        "Open - In transit",
        "Open - Awaiting delivery",
        "Closed - Filled",
        "Closed - Cancelled",
        "Closed - Unfilled",
        "Closed - Pickup expired"
      ]
    },
    "cancellationReasonId": {
      "description": "The id of the relevant request reason",
      "type": "string"
    },
    "cancelledByUserId": {
      "description": "The id of the user that cancelled the request",
      "type": "string"
    },
    "cancellationAdditionalInformation": {
      "description": "Potential relevant information regarding a cancellation",
      "type": "string"
    },
    "cancelledDate": {
      "description": "Date the request was cancelled",
      "type": "string",
      "format": "date-time"
    },
    "position": {
      "description": "Position of the request in the unified request queue",
      "type": "integer"
    },
    "instance": {
      "description": "Copy of some instance metadata (used for searching and sorting)",
      "type": "object",
      "properties": {
        "title": {
          "description": "title of the item",
          "type": "string"
        },
        "identifiers": {
          "type": "array",
          "description": "An extensible set of name-value pairs of identifiers associated with the resource",
          "minItems": 0,
          "items": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "description": "Resource identifier value"
              },
              "identifierTypeId": {
                "type": "string",
                "description": "UUID of resource identifier type (e.g. ISBN, ISSN, LCCN, CODEN, Locally defined identifiers)",
                "$ref": "raml-util/schemas/uuid.schema"
              }
            },
            "additionalProperties": false,
            "required": [
              "value",
              "identifierTypeId"
            ]
          }
        }
      }
    },
    "item": {
      "description": "Copy of some item metadata (used for searching and sorting)",
      "type": "object",
      "properties": {
        "barcode": {
          "description": "barcode of the item",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "requester": {
      "description": "Copy of some requesting patron metadata (used for searching and sorting)",
      "type": "object",
      "properties": {
        "firstName": {
          "description": "first name of the requesting patron",
          "type": "string"
        },
        "lastName": {
          "description": "last name of the requesting patron",
          "type": "string"
        },
        "middleName": {
          "description": "middle name of the requesting patron",
          "type": "string"
        },
        "barcode": {
          "description": "barcode of the requesting patron",
          "type": "string"
        },
        "patronGroup": {
          "description": "DEPRECATED, to be removed in subsequent major version",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "proxy": {
      "description": "Copy of some proxy patron metadata (used for searching and sorting)",
      "type": "object",
      "properties": {
        "firstName": {
          "description": "first name of the proxy patron",
          "type": "string"
        },
        "lastName": {
          "description": "last name of the proxy patron",
          "type": "string"
        },
        "middleName": {
          "description": "middle name of the proxy patron",
          "type": "string"
        },
        "barcode": {
          "description": "barcode of the proxy patron",
          "type": "string"
        },
        "patronGroup": {
          "description": "DEPRECATED, to be removed in subsequent major version",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "fulfillmentPreference": {
      "description": "How should the request be fulfilled (whether the item should be kept on the hold shelf for collection or delivered to the requester)",
      "type": "string",
      "enum": [
        "Hold Shelf",
        "Delivery"
      ]
    },
    "deliveryAddressTypeId": {
      "description": "Deliver to the address of this type, for the requesting patron",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "requestExpirationDate": {
      "description": "Date when the request expires",
      "type": "string",
      "format": "date-time"
    },
    "holdShelfExpirationDate": {
      "description": "Date when an item returned to the hold shelf expires",
      "type": "string",
      "format": "date-time"
    },
    "pickupServicePointId": {
      "description": "The ID of the Service Point where this request can be picked up",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "metadata": {
      "description": "Metadata about creation and changes to requests, provided by the server (client should not provide)",
      "type": "object",
      "$ref": "raml-util/schemas/metadata.schema"
    },
    "tags": {
      "type": "object",
      "description": "Tags",
      "$ref": "raml-util/schemas/tags.schema"
    },
    "awaitingPickupRequestClosedDate": {
      "description": "A date when the request with awaiting pickup status was closed",
      "type": "string",
      "format": "date-time",
      "readonly": true
    },
    "searchIndex": {
      "description": "Request fields used for search",
      "type": "object",
      "$ref": "request-search-index.json"
    }
  },
  "additionalProperties": false,
  "required": [
    "instanceId",
    "requesterId",
    "requestType",
    "requestLevel",
    "requestDate",
    "fulfillmentPreference",
    "status"
  ]
}
set_request(request: dict)

Create a new request item.

POST /request-storage/requests

Parameters

request (dict) – See Schema below

Raises
  • OkapiRequestError – Bad Request

  • OkapiRequestUnauthorized – Authentication is required

  • OkapiFatalError – Server Error

  • OkapiFatalError – Server Error

  • OkapiRequestUnprocessableEntity – Unprocessable Entity

Headers

  • Location - URI to the created request item

Schema

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "A request by a patron for a specific item",
  "type": "object",
  "properties": {
    "id": {
      "description": "UUID of the request",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "requestLevel": {
      "description": "Level of the request - Item or Title",
      "type": "string",
      "enum": [
        "Item",
        "Title"
      ]
    },
    "requestType": {
      "description": "Whether the item should be held upon return, recalled or paged for",
      "type": "string",
      "enum": [
        "Hold",
        "Recall",
        "Page"
      ]
    },
    "requestDate": {
      "description": "Date the request was made",
      "type": "string",
      "format": "date-time"
    },
    "patronComments": {
      "description": "Comments made by the patron",
      "type": "string"
    },
    "requesterId": {
      "description": "ID of the requesting patron (user)",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "proxyUserId": {
      "description": "ID of the user representing a proxy for the patron",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "instanceId": {
      "description": "ID of the instance being requested",
      "type": "string",
      "$ref": "raml-util/schemas/uuid.schema"
    },
    "holdingsRecordId": {
      "description": "ID of the holdings record being requested",
      "type": "string",
      "$ref": "raml-util/schemas/uuid.schema"
    },
    "itemId": {
      "description": "ID of the item being requested",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "status": {
      "description": "Status of the request",
      "type": "string",
      "enum": [
        "Open - Not yet filled",
        "Open - Awaiting pickup",
        "Open - In transit",
        "Open - Awaiting delivery",
        "Closed - Filled",
        "Closed - Cancelled",
        "Closed - Unfilled",
        "Closed - Pickup expired"
      ]
    },
    "cancellationReasonId": {
      "description": "The id of the relevant request reason",
      "type": "string"
    },
    "cancelledByUserId": {
      "description": "The id of the user that cancelled the request",
      "type": "string"
    },
    "cancellationAdditionalInformation": {
      "description": "Potential relevant information regarding a cancellation",
      "type": "string"
    },
    "cancelledDate": {
      "description": "Date the request was cancelled",
      "type": "string",
      "format": "date-time"
    },
    "position": {
      "description": "Position of the request in the unified request queue",
      "type": "integer"
    },
    "instance": {
      "description": "Copy of some instance metadata (used for searching and sorting)",
      "type": "object",
      "properties": {
        "title": {
          "description": "title of the item",
          "type": "string"
        },
        "identifiers": {
          "type": "array",
          "description": "An extensible set of name-value pairs of identifiers associated with the resource",
          "minItems": 0,
          "items": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "description": "Resource identifier value"
              },
              "identifierTypeId": {
                "type": "string",
                "description": "UUID of resource identifier type (e.g. ISBN, ISSN, LCCN, CODEN, Locally defined identifiers)",
                "$ref": "raml-util/schemas/uuid.schema"
              }
            },
            "additionalProperties": false,
            "required": [
              "value",
              "identifierTypeId"
            ]
          }
        }
      }
    },
    "item": {
      "description": "Copy of some item metadata (used for searching and sorting)",
      "type": "object",
      "properties": {
        "barcode": {
          "description": "barcode of the item",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "requester": {
      "description": "Copy of some requesting patron metadata (used for searching and sorting)",
      "type": "object",
      "properties": {
        "firstName": {
          "description": "first name of the requesting patron",
          "type": "string"
        },
        "lastName": {
          "description": "last name of the requesting patron",
          "type": "string"
        },
        "middleName": {
          "description": "middle name of the requesting patron",
          "type": "string"
        },
        "barcode": {
          "description": "barcode of the requesting patron",
          "type": "string"
        },
        "patronGroup": {
          "description": "DEPRECATED, to be removed in subsequent major version",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "proxy": {
      "description": "Copy of some proxy patron metadata (used for searching and sorting)",
      "type": "object",
      "properties": {
        "firstName": {
          "description": "first name of the proxy patron",
          "type": "string"
        },
        "lastName": {
          "description": "last name of the proxy patron",
          "type": "string"
        },
        "middleName": {
          "description": "middle name of the proxy patron",
          "type": "string"
        },
        "barcode": {
          "description": "barcode of the proxy patron",
          "type": "string"
        },
        "patronGroup": {
          "description": "DEPRECATED, to be removed in subsequent major version",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "fulfillmentPreference": {
      "description": "How should the request be fulfilled (whether the item should be kept on the hold shelf for collection or delivered to the requester)",
      "type": "string",
      "enum": [
        "Hold Shelf",
        "Delivery"
      ]
    },
    "deliveryAddressTypeId": {
      "description": "Deliver to the address of this type, for the requesting patron",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "requestExpirationDate": {
      "description": "Date when the request expires",
      "type": "string",
      "format": "date-time"
    },
    "holdShelfExpirationDate": {
      "description": "Date when an item returned to the hold shelf expires",
      "type": "string",
      "format": "date-time"
    },
    "pickupServicePointId": {
      "description": "The ID of the Service Point where this request can be picked up",
      "type": "string",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "metadata": {
      "description": "Metadata about creation and changes to requests, provided by the server (client should not provide)",
      "type": "object",
      "$ref": "raml-util/schemas/metadata.schema"
    },
    "tags": {
      "type": "object",
      "description": "Tags",
      "$ref": "raml-util/schemas/tags.schema"
    },
    "awaitingPickupRequestClosedDate": {
      "description": "A date when the request with awaiting pickup status was closed",
      "type": "string",
      "format": "date-time",
      "readonly": true
    },
    "searchIndex": {
      "description": "Request fields used for search",
      "type": "object",
      "$ref": "request-search-index.json"
    }
  },
  "additionalProperties": false,
  "required": [
    "instanceId",
    "requesterId",
    "requestType",
    "requestLevel",
    "requestDate",
    "fulfillmentPreference",
    "status"
  ]
}