Circulation (v0.7)

http://localhost:9130

Table of contents

Circulation Business Logic API

API for moving request from one Item to another

/circulation

POST /circulation/requests/{requestId}/move

Move Request to specified Item

POST /circulation/requests/{requestId}/move
URI Parameters
  • requestId: required (string)
Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "description": "Request to move a request from one item to another",
  "properties": {
    "destinationItemId": {
      "description": "UUID of the item the request should be moved to",
      "type": "string",
      "$ref": "uuid.json"
    },
    "requestType": {
      "description": "Whether the item should be held upon return, recalled or paged for",
      "type": "string",
      "enum": ["Hold", "Recall", "Page"]
    }
  },
  "additionalProperties": false,
  "required": [
    "destinationItemId"
  ]
}

Example:

{
  "destinationItemId": "51763f82-c8e6-4486-9fdc-1c1664352550"
}

Response 200

Request has been moved

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "A request for an item",
  "description": "Request for an item that might be at a different location or already checked out to another patron",
  "type": "object",
  "properties": {
    "id": {
      "description": "UUID of the request",
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
    },
    "requestType": {
      "description": "Whether the item should be held upon return, recalled or paged for",
      "type": "string",
      "enum": [
        "Hold",
        "Recall",
        "Page"
      ]
    },
    "requestLevel": {
      "description": "Level of the request - Item or Title",
      "type": "string",
      "enum": [
        "Item",
        "Title"
      ]
    },
    "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 user who made the request",
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
    },
    "proxyUserId": {
      "description": "ID of the user representing a proxy for the patron",
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
    },
    "instanceId": {
      "description": "ID of the instance being requested",
      "type": "string",
      "$schema": "http://json-schema.org/draft-04/schema#",
      "id": "uuid.schema",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[1-5][a-fA-F0-9]{3}-[89abAB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$"
    },
    "holdingsRecordId": {
      "description": "ID of the holdings record being requested",
      "type": "string",
      "$schema": "http://json-schema.org/draft-04/schema#",
      "id": "uuid.schema",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[1-5][a-fA-F0-9]{3}-[89abAB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$"
    },
    "itemId": {
      "description": "ID of the item being requested",
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{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 request reason",
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
    },
    "cancelledByUserId": {
      "description": "The id of the user that cancelled the request",
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
    },
    "cancellationAdditionalInformation": {
      "description": "Additional information about a cancellation",
      "type": "string"
    },
    "cancelledDate": {
      "description": "Date the request was cancelled",
      "type": "string",
      "format": "date-time"
    },
    "position": {
      "description": "position of the request in a per-item request queue",
      "type": "integer",
      "minimum": 1
    },
    "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)",
                "$schema": "http://json-schema.org/draft-04/schema#",
                "id": "uuid.schema",
                "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[1-5][a-fA-F0-9]{3}-[89abAB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$"
              }
            },
            "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), will be taken from the user referred to by the requesterId",
      "readonly": true,
      "type": "object",
      "properties": {
        "firstName": {
          "description": "first name of the patron (read only, defined by the server)",
          "type": "string",
          "readonly": true
        },
        "lastName": {
          "description": "last name of the patron (read only, defined by the server)",
          "type": "string",
          "readonly": true
        },
        "middleName": {
          "description": "middle name of the patron (read only, defined by the server)",
          "type": "string",
          "readonly": true
        },
        "barcode": {
          "description": "barcode of the patron (read only, defined by the server)",
          "type": "string",
          "readonly": true
        },
        "patronGroupId": {
          "description": "UUID for the patron group that this user belongs to",
          "type": "string",
          "readonly": true,
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
        },
        "patronGroup": {
          "description": "record for the user's patron group",
          "type": "object",
          "additionalProperties": false,
          "readonly": true,
          "properties": {
            "id": {
              "description": "ID of the patron group",
              "type": "string",
              "readonly": true,
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
            },
            "group": {
              "description": "The unique name of the patron group",
              "type": "string",
              "readonly": true
            },
            "desc": {
              "description": "A description of the patron group",
              "type": "string",
              "readonly": true
            }
          }
        }
      },
      "additionalProperties": false
    },
    "proxy": {
      "description": "Copy of some proxy patron metadata (used for searching and sorting), will be taken from the user referred to by the proxyUserId",
      "readonly": true,
      "type": "object",
      "properties": {
        "firstName": {
          "description": "first name of the proxy patron (read only, defined by the server)",
          "type": "string",
          "readonly": true
        },
        "lastName": {
          "description": "last name of the proxy patron (read only, defined by the server)",
          "type": "string",
          "readonly": true
        },
        "middleName": {
          "description": "middle name of the proxy patron (read only, defined by the server)",
          "type": "string",
          "readonly": true
        },
        "barcode": {
          "description": "barcode of the proxy patron (read only, defined by the server)",
          "type": "string",
          "readonly": true
        },
        "patronGroupId": {
          "description": "UUID for the patrongroup that this user belongs to",
          "type": "string",
          "readonly": true,
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
        },
        "patronGroup": {
          "description": "record for the user's patrongroup",
          "type": "object",
          "readonly": true,
          "additionalProperties": false,
          "properties": {
            "id": {
              "description": "ID of the patrongroup",
              "type": "string",
              "readonly": true,
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
            },
            "group": {
              "description": "The unique name of the patrongroup",
              "type": "string",
              "readonly": true
            },
            "desc": {
              "description": "A description of the patrongroup",
              "type": "string",
              "readonly": true
            }
          }
        }
      },
      "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": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
    },
    "deliveryAddress": {
      "description": "Address the item is to be delivered to (derived from requester information)",
      "type": "object",
      "readonly": true,
      "properties": {
        "addressLine1": {
          "description": "Address line 1",
          "type": "string",
          "readonly": true
        },
        "addressLine2": {
          "description": "Address line 2",
          "type": "string",
          "readonly": true
        },
        "city": {
          "description": "City name",
          "type": "string",
          "readonly": true
        },
        "region": {
          "description": "Region",
          "type": "string",
          "readonly": true
        },
        "postalCode": {
          "description": "Postal code",
          "type": "string",
          "readonly": true
        },
        "countryId": {
          "description": "Country code",
          "type": "string",
          "readonly": true
        },
        "addressTypeId": {
          "description": "Type of address (refers to address types)",
          "type": "string",
          "readonly": true,
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
        }
      },
      "additionalProperties": false
    },
    "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": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
    },
    "pickupServicePoint": {
      "description": "The full object of the Service Point record from pickupServicePointId",
      "additionalProperties": false,
      "readonly": true,
      "properties": {
        "name": {
          "description": "Unique name for the service point",
          "type": "string",
          "readonly": true
        },
        "code": {
          "description": "Unique code for the service point",
          "type": "string",
          "readonly": true
        },
        "discoveryDisplayName": {
          "description": "Human-readable name for the service point",
          "type": "string",
          "readonly": true
        },
        "description": {
          "description": "Description of the service point",
          "type": "string",
          "readonly": true
        },
        "shelvingLagTime": {
          "description": "Shelving lag time",
          "type": "integer",
          "readonly": true
        },
        "pickupLocation": {
          "description": "Is this service point a pickup location?",
          "type": "boolean",
          "readonly": true
        }
      }
    },
    "printDetails": {
      "description": "The print details of the request",
      "type": "object",
      "readonly": true,
      "properties": {
        "printCount": {
          "description": "Total no of times the request is printed",
          "type": "integer",
          "readOnly": true
        },
        "requesterId": {
          "description": "User uuid of last print requester",
          "type": "string",
          "readOnly": true
        },
        "isPrinted": {
          "description": "Whether the request is ever printed",
          "type": "boolean",
          "readOnly": true
        },
        "printEventDate": {
          "description": "Recent printed time of the request",
          "type": "string",
          "format": "date-time",
          "readOnly": true
        },
        "lastPrintRequester": {
          "description": "Details of the User who printed the request recently",
          "readonly": true,
          "type": "object",
          "properties": {
            "firstName": {
              "description": "first name of the user",
              "type": "string",
              "readonly": true
            },
            "lastName": {
              "description": "last name of the user",
              "type": "string",
              "readonly": true
            },
            "middleName": {
              "description": "middle name of the user",
              "type": "string",
              "readonly": true
            }
          }
        }
      }
    },
    "tags": {
      "type": "object",
      "description": "Tags",
      "$schema": "http://json-schema.org/draft-04/schema#",
      "id": "tags.schema",
      "title": "tags",
      "properties": {
        "tagList": {
          "description": "List of tags",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "metadata": {
      "description": "Metadata about creation and changes to requests, provided by the server (client should not provide)",
      "type": "object",
      "$schema": "http://json-schema.org/draft-04/schema#",
      "id": "metadata.schema",
      "title": "Metadata Schema",
      "properties": {
        "createdDate": {
          "description": "Date and time when the record was created",
          "type": "string",
          "format": "date-time"
        },
        "createdByUserId": {
          "description": "ID of the user who created the record (when available)",
          "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}$"
        },
        "createdByUsername": {
          "description": "Username of the user who created the record (when available)",
          "type": "string"
        },
        "updatedDate": {
          "description": "Date and time when the record was last updated",
          "type": "string",
          "format": "date-time"
        },
        "updatedByUserId": {
          "description": "ID of the user who last updated the record (when available)",
          "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}$"
        },
        "updatedByUsername": {
          "description": "Username of the user who last updated the record (when available)",
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "createdDate"
      ]
    },
    "requestProcessingParameters": {
      "type": "object",
      "description": "Additional parameters used for request processing and discarded afterwards. Not part of request record.",
      "properties": {
        "overrideBlocks": {
          "type": "object",
          "description": "Blocks to override if user has corresponding permissions",
          "$schema": "http://json-schema.org/draft-04/schema#",
          "properties": {
            "itemNotLoanableBlock": {
              "description": "'Item not loanable' block",
              "type": "object",
              "properties": {
                "dueDate": {
                  "description": "Due date for a new loan",
                  "type": "string",
                  "format": "date-time"
                }
              },
              "additionalProperties": false,
              "required": [
                "dueDate"
              ]
            },
            "patronBlock": {
              "description": "Automated patron block",
              "type": "object",
              "additionalProperties": false
            },
            "itemLimitBlock": {
              "description": "Item limit block",
              "type": "object",
              "additionalProperties": false
            },
            "renewalBlock": {
              "description": "Renewal block",
              "type": "object",
              "additionalProperties": false
            },
            "renewalDueDateRequiredBlock": {
              "description": "Override renewal block which requires due date field",
              "type": "object",
              "properties": {
                "dueDate": {
                  "description": "Due date for a new loan",
                  "type": "string",
                  "format": "date-time"
                }
              },
              "additionalProperties": false,
              "required": [
                "dueDate"
              ]
            },
            "comment": {
              "description": "Reason for override",
              "type": "string"
            }
          },
          "additionalProperties": false
        }
      }
    },
    "searchIndex": {
      "description": "Request fields used for search",
      "type": "object",
      "$schema": "http://json-schema.org/draft-04/schema#",
      "properties": {
        "callNumberComponents": {
          "type": "object",
          "description": "Effective call number components",
          "properties": {
            "callNumber": {
              "type": "string",
              "description": "Effective Call Number is an identifier assigned to an item or its holding and associated with the item."
            },
            "prefix": {
              "type": "string",
              "description": "Effective Call Number Prefix is the prefix of the identifier assigned to an item or its holding and associated with the item."
            },
            "suffix": {
              "type": "string",
              "description": "Effective Call Number Suffix is the suffix of the identifier assigned to an item or its holding and associated with the item."
            }
          },
          "additionalProperties": false
        },
        "shelvingOrder": {
          "type": "string",
          "description": "A system generated normalization of the call number that allows for call number sorting in reports and search results"
        },
        "pickupServicePointName": {
          "description": "The name of the request pickup service point",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "itemLocationCode": {
      "description": "Allow specifying item location when creating title-level requests",
      "type": "string"
    },
    "isDcbReRequestCancellation": {
      "description": "Indicates whether the request was cancelled during a DCB transaction update",
      "type": "boolean"
    }
  },
  "additionalProperties": false,
  "required": [
    "requesterId",
    "requestType",
    "requestDate",
    "fulfillmentPreference"
  ]
}

Example:

{
  "id": "89105c06-dbdb-4aa0-9695-d4d19c733270",
  "requestLevel": "Item",
  "requestType": "Hold",
  "status": "Open - Not yet filled",
  "requestDate": "2023-03-23T11:04:25.000+00:00",
  "requestExpirationDate": "2023-06-23T11:04:25.000+00:00",
  "requesterId": "21932a85-bd00-446b-9565-46e0c1a5490b",
  "requester": {
    "barcode": "1234",
    "lastName": "Lastname",
    "firstName": "Firstname"
  },
  "instanceId": "86c722c3-2f5e-42e1-bd0e-7ffbbd3b4972",
  "instance": {
    "title": "Children of Time",
    "identifiers": [
      {
        "value": "0123456789",
        "identifierTypeId": "8261054f-9876-422d-bd51-4ed9f33c7654"
      },
      {
        "value": "98765432123456",
        "identifierTypeId": "8261054f-9876-422d-bd51-4ed9f33c7654"
      }
    ]
  },
  "holdingsRecordId": "e63273e7-48f5-4c43-ab4e-1751ecacaa21",
  "itemId": "195efae1-588f-47bd-a181-13a2eb437701",
  "item": {
    "barcode": "760932543816"
  },
  "position": 1,
  "fulfillmentPreference": "Hold Shelf",
  "pickupServicePointId": "3a40852d-49fd-4df2-a1f9-6e2641a6e91f",
  "tags": {
    "tagList": [
      "new",
      "important"
    ]
  },
  "searchIndex": {
    "shelvingOrder": "F 416 H37 A2 59001",
    "callNumberComponents": {
      "callNumber": "F16.H37 A2 9001"
    },
    "pickupServicePointName": "Circ Desk 1"
  },
  "printDetails": {
    "printCount": 32,
    "requesterId": "21457ab5-4635-4e56-906a-908f05e9233b",
    "isPrinted": true,
    "printEventDate": "2024-09-13T06:34:16.035+00:00",
    "lastPrintRequester": {
      "firstName": "firstName",
      "lastName": "lastName",
      "middleName": "middleName"
    }
  }
}

Response 404

Request record not found

Body

Media type: text/plain

Type: any

Example:

request record with ID "f3eb6d07-861a-4b76-9937-2ae12768e5f5" cannot be found

Response 422

Unable to process request

Body

Media type: application/json

Type: json

Content:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "errors.schema",
  "description": "A set of errors",
  "type": "object",
  "properties": {
    "errors": {
      "description": "List of errors",
      "id": "errors",
      "type": "array",
      "items": {
        "type": "object",
        "$schema": "http://json-schema.org/draft-04/schema#",
        "id": "error.schema",
        "description": "An error",
        "properties": {
          "message": {
            "type": "string",
            "description": "Error message text"
          },
          "type": {
            "type": "string",
            "description": "Error message type"
          },
          "code": {
            "type": "string",
            "description": "Error message code"
          },
          "parameters": {
            "description": "Error message parameters",
            "$schema": "http://json-schema.org/draft-04/schema#",
            "id": "parameters.schema",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string"
                },
                "value": {
                  "type": "string"
                }
              }
            }
          }
        },
        "required": [
          "message"
        ]
      }
    },
    "total_records": {
      "description": "Total number of errors",
      "type": "integer"
    }
  }
}

Example:

{
  "errors": [
    {
      "message": "Item does not exist",
      "parameters": [
        {
          "key": "itemId",
          "value": "91719676-e7b5-4f83-bdab-cb70dd10c1e3"
        }
      ]
    }
  ]
}

Response 500

Internal server error

Body

Media type: text/plain

Type: any

Example:

Internal server error