io7m | single-page | multi-page | epub | Cardant User Manual 1.0.0-beta0002
8. API Access
8. API Access
9. Security
1
The Inventory API service exposes one or more versions of the Inventory protocol. The service uses the ventrad protocol to advertise which versions of the Inventory protocol are available. Executing a GET request to the root endpoint will yield a ventrad message showing which versions of the Inventory protocol are available. The Inventory protocol is assigned the protocol identifier 8ee23158-f8db-317a-a58b-45bd9d702040.
2
As an example, the following shows that the Inventory protocol version 1 is available at /inventory/1/0/:

8.1.1.3. Ventrad Example

$ curl https://cardant.example.com:30000/ | jq
{
  "%Schema": "urn:com.io7m.ventrad:1",
  "Protocols": [
    {
      "Id": "8ee23158-f8db-317a-a58b-45bd9d702040",
      "VersionMajor": 1,
      "VersionMinor": 0,
      "Endpoint": "/inventory/1/0/",
      "Description": "Cardant Inventory v1.0"
    }
  ]
}
1
The Inventory API service exposes a health check endpoint at /health. The endpoint returns a 200 status code and the string OK if the server's most recent internal health checks succeeded. The server returns a 500 status code and string not equal to OK if the server's most recent internal health checks failed. In both cases, the string is returned directly as a text/plain UTF-8 value.
1
The version 1 Inventory protocol uses JSON-encoded messages over HTTP(s).
1
Send a CJ1CommandLogin command to /inventory/1/0/login. If the login succeeds, a cookie named CARDANT_INVENTORY_SESSION will be set. This cookie must be included with all subsequent requests.

8.1.3.2.2. Login Example

$ cat message.json
{
  "@type": "Login",
  "userName": "example",
  "password": "validpassword"
}

$ curl -c cookies.txt -d @message.json http://cardant.example.com:30000/inventory/1/0/login | jq
{
  "@type": "ResponseLogin",
  "requestId": "23d56c39-9582-42af-a3a3-7d94bf944f35",
  "userId": "57733ee9-2c62-4b62-bd7f-b5bbc9cd915a"
}

$ cat cookies.txt
cardant.example.com FALSE /inventory/1/0/ FALSE 1761297157 CARDANT_INVENTORY_SESSION 47E3D6E4133D04FD33125F5A3598B79089F7A7DA3AC507ADB13DAEF12934B88C
1
After logging in successfully, send commands of type CJ1CommandType to /inventory/1/0/command. Failed commands will yield a value of type CJ1ResponseError, whilst successful results will yield values of type CJ1Response*.

8.1.3.3.2. Command Example

$ cat message.json
{
  "@type": "ItemSearchBegin",
  "parameters": {
    "matchName": {
      "@type": "Anything"
    },
    "matchDescription": {
      "@type": "Anything"
    },
    "matchTypes": {
      "@type": "Anything"
    },
    "matchMetadata": {
      "@type": "Specific",
      "packageName": {
        "@type": "Anything"
      },
      "typeName": {
        "@type": "Anything"
      },
      "fieldName": {
        "@type": "Anything"
      },
      "value": {
        "@type": "Anything"
      }
    },
    "includeDeleted": "INCLUDE_ONLY_LIVE",
    "orderBy": {
      "column": "BY_ID",
      "ascending": true
    },
    "pageSize": 5
  }
}

$ curl -b cookies.txt -d @message.json http://cardant.example.com:30000/inventory/1/0/command | jq
{
  "@type": "ResponseItemSearch",
  "requestId": "cf47d6f4-1441-4b79-9cd5-f80e21f1bc11",
  "results": {
    "items": [
      {
        "id": "0214d4fa-1fbb-47b9-bb57-f12d9bf2735e",
        "name": "Siglent SPD1305X DC Power Supply",
        "timeCreated": "2024-07-22T19:34:52.954587Z",
        "timeUpdated": "2024-07-22T19:34:52.954587Z"
      },
      {
        "id": "02f63b7e-4c0a-4f1c-81d6-862da8d2e5ac",
        "name": "Western Digital SN570 1TB",
        "timeCreated": "2024-01-12T21:01:15.973701Z",
        "timeUpdated": "2024-01-12T21:01:15.973701Z"
      },
      {
        "id": "0556121f-9aab-4e89-a413-08214d8ae74d",
        "name": "Seagate Exos X16 16TB",
        "timeCreated": "2024-01-12T21:05:33.547416Z",
        "timeUpdated": "2025-03-09T18:22:22Z"
      },
      {
        "id": "06946960-e508-4eeb-b297-715e1bcec843",
        "name": "Samsung 870 EVO 1TB",
        "timeCreated": "2024-05-18T12:28:43.607659Z",
        "timeUpdated": "2024-05-18T12:28:43.607659Z"
      },
      {
        "id": "0adb8f6a-ed35-479d-baf9-2e2f9a50b622",
        "name": "AMD Ryzen 5 3600",
        "timeCreated": "2024-01-12T21:02:01.738558Z",
        "timeUpdated": "2024-12-07T17:41:22Z"
      }
    ],
    "pageIndex": {
      "value": 1
    },
    "pageCount": {
      "value": 23
    },
    "pageFirstOffset": 0
  }
}
1
It can sometimes be desirable to send sets of commands that must execute atomically; if a single command in the set fails, it must be as if none of the commands were executed.
2
After logging in successfully, a value of type CJ1Transaction can be sent to /inventory/1/0/transaction.
3
The response from the /inventory/1/0/transaction endpoint will be a value of type CJ1TransactionResponse with a response for each command in the original sequence. If any of the values in the sequence are CJ1ResponseError values, the transaction was rolled back by the server and not committed.

8.1.3.4.4. Transaction Example

$ cat transaction.json
{
  "@type": "Transaction",
  "commands": [
    {
      "@type": "ItemSearchBegin",
      "parameters": {
        "matchName": {
          "@type": "Anything"
        },
        "matchDescription": {
          "@type": "Anything"
        },
        "matchTypes": {
          "@type": "Anything"
        },
        "matchMetadata": {
          "@type": "Specific",
          "packageName": {
            "@type": "Anything"
          },
          "typeName": {
            "@type": "Anything"
          },
          "fieldName": {
            "@type": "Anything"
          },
          "value": {
            "@type": "Anything"
          }
        },
        "includeDeleted": "INCLUDE_ONLY_LIVE",
        "orderBy": {
          "column": "BY_ID",
          "ascending": true
        },
        "pageSize": 3
      }
    },
    {
      "@type": "ItemSearchNext"
    },
    {
      "@type": "ItemSearchNext"
    }
  ]
}

$ curl -b cookies.txt -d @message.json http://cardant.example.com:30000/inventory/1/0/transaction | jq
{
  "@type": "TransactionResponse",
  "requestId": "7c411039-7ca0-4e53-a9d1-0f7fd1b33919",
  "responses": [
    {
      "@type": "ResponseItemSearch",
      "requestId": "7c411039-7ca0-4e53-a9d1-0f7fd1b33919",
      "results": {
        "items": [
          {
            "id": "16208353-0cd6-4082-89b9-170b87e31000",
            "name": "AMD Radeon RX 5700",
            "timeCreated": "2024-01-12T21:02:28.13536Z",
            "timeUpdated": "2024-12-07T17:37:16Z"
          },
          {
            "id": "c1ef2558-9b2f-4a84-ba75-8a9fe5276e80",
            "name": "AMD Ryzen 3 3200G",
            "timeCreated": "2024-01-12T21:03:44.878024Z",
            "timeUpdated": "2024-12-07T17:38:49Z"
          },
          {
            "id": "0d5e8aca-0826-4e85-8a71-ffd26f4137c1",
            "name": "AMD Ryzen 5 1400",
            "timeCreated": "2024-01-12T21:06:34.568583Z",
            "timeUpdated": "2024-12-07T17:39:31Z"
          }
        ],
        "pageIndex": {
          "value": 1
        },
        "pageCount": {
          "value": 37
        },
        "pageFirstOffset": 0
      }
    },
    {
      "@type": "ResponseItemSearch",
      "requestId": "7c411039-7ca0-4e53-a9d1-0f7fd1b33919",
      "results": {
        "items": [
          {
            "id": "d9e12864-7411-43a4-9030-ebfaf94cd0bf",
            "name": "AMD Ryzen 5 3400G",
            "timeCreated": "2024-01-12T21:02:43.436395Z",
            "timeUpdated": "2024-12-07T17:40:46Z"
          },
          {
            "id": "0adb8f6a-ed35-479d-baf9-2e2f9a50b622",
            "name": "AMD Ryzen 5 3600",
            "timeCreated": "2024-01-12T21:02:01.738558Z",
            "timeUpdated": "2024-12-07T17:41:22Z"
          },
          {
            "id": "a92f27cf-aacc-48fb-aeb9-5afa92af8f46",
            "name": "AMD Ryzen 5 5600G",
            "timeCreated": "2024-01-12T21:03:57.892137Z",
            "timeUpdated": "2024-12-07T17:41:56Z"
          }
        ],
        "pageIndex": {
          "value": 2
        },
        "pageCount": {
          "value": 37
        },
        "pageFirstOffset": 3
      }
    },
    {
      "@type": "ResponseItemSearch",
      "requestId": "7c411039-7ca0-4e53-a9d1-0f7fd1b33919",
      "results": {
        "items": [
          {
            "id": "58794e07-532d-4143-905c-bcb65bdbd1e4",
            "name": "AMD Ryzen 7 3700X",
            "timeCreated": "2024-04-04T16:27:38.009937Z",
            "timeUpdated": "2024-12-07T17:42:35Z"
          },
          {
            "id": "922af91f-761e-438a-aaa9-055efa5d4360",
            "name": "Antec Neo ECO 520",
            "timeCreated": "2025-03-07T11:18:42Z",
            "timeUpdated": "2025-03-07T11:20:40Z"
          },
          {
            "id": "c75b8537-2725-452e-adb1-eaa3dfd5a286",
            "name": "Antec VP450P 450W",
            "timeCreated": "2025-03-07T11:15:24Z",
            "timeUpdated": "2025-03-07T11:16:58Z"
          }
        ],
        "pageIndex": {
          "value": 3
        },
        "pageCount": {
          "value": 37
        },
        "pageFirstOffset": 6
      }
    }
  ]
}
1
The JSON schema for the protocol is as follows:

8.1.3.5.2. Schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:com.io7m.cardant.inventory:1.0",
  "title": "Cardant Inventory 1.0",
  "oneOf": [
    {
      "$ref": "#/$defs/CJ1MessageType"
    }
  ],
  "$defs": {
    "BigDecimal": {
      "description": "An arbitrary real number.",
      "type": "number"
    },
    "CAErrorCode": {
      "description": "An error code.",
      "type": "string",
      "pattern": "[a-z][a-z\\-]+"
    },
    "CJ1Attachment": {
      "description": "An attachment on an item or location.",
      "type": "object",
      "properties": {
        "file": {
          "description": "The file.",
          "$ref": "#/$defs/CJ1FileType"
        },
        "relation": {
          "description": "The attachment relation.",
          "$ref": "#/$defs/String"
        }
      },
      "required": [
        "file",
        "relation"
      ]
    },
    "CJ1AttachmentItem": {
      "description": "An attachment.",
      "type": "object",
      "properties": {
        "attachment": {
          "description": "The attachment.",
          "$ref": "#/$defs/CJ1Attachment"
        },
        "key": {
          "description": "The attachment key.",
          "$ref": "#/$defs/CJ1AttachmentKey"
        }
      },
      "required": [
        "attachment",
        "key"
      ]
    },
    "CJ1AttachmentKey": {
      "description": "An attachment key.",
      "type": "object",
      "properties": {
        "file": {
          "description": "The attachment file.",
          "$ref": "#/$defs/UUID"
        },
        "relation": {
          "description": "The attachment relation.",
          "$ref": "#/$defs/String"
        }
      },
      "required": [
        "file",
        "relation"
      ]
    },
    "CJ1AuditEvent": {
      "description": "An audit event.",
      "type": "object",
      "properties": {
        "data": {
          "description": "The event data.",
          "$ref": "#/$defs/Map<String,String>"
        },
        "id": {
          "description": "The event ID.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        },
        "owner": {
          "description": "The event owner.",
          "$ref": "#/$defs/UUID"
        },
        "time": {
          "description": "The event time.",
          "$ref": "#/$defs/OffsetDateTime"
        },
        "type": {
          "description": "The event type.",
          "$ref": "#/$defs/String"
        }
      },
      "required": [
        "data",
        "id",
        "owner",
        "time",
        "type"
      ]
    },
    "CJ1AuditSearchParameters": {
      "description": "Parameters to search for audit events.",
      "type": "object",
      "properties": {
        "matchEventType": {
          "description": "Include events with types matching the given expression.",
          "$ref": "#/$defs/CJ1ComparisonExactType<String>"
        },
        "matchOwner": {
          "description": "Include audit results for the given user.",
          "$ref": "#/$defs/Optional<UUID>"
        },
        "matchTimeRange": {
          "description": "Include events within the given time range.",
          "$ref": "#/$defs/CJ1TimeRange"
        },
        "pageSize": {
          "description": "The maximum number of events per page.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        }
      },
      "required": [
        "matchEventType",
        "matchTimeRange",
        "pageSize"
      ]
    },
    "CJ1CommandAuditSearchBegin": {
      "description": "Start searching for audit events.",
      "type": "object",
      "properties": {
        "parameters": {
          "description": "The search parameters.",
          "$ref": "#/$defs/CJ1AuditSearchParameters"
        },
        "@type": {
          "type": "string",
          "pattern": "AuditSearchBegin"
        }
      },
      "required": [
        "@type",
        "parameters"
      ]
    },
    "CJ1CommandAuditSearchNext": {
      "description": "Get the next page of audit events.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "AuditSearchNext"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1CommandAuditSearchPrevious": {
      "description": "Get the previous page of audit events.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "AuditSearchPrevious"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1CommandFileDelete": {
      "description": "Delete a file.",
      "type": "object",
      "properties": {
        "id": {
          "description": "The file ID.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "FileDelete"
        }
      },
      "required": [
        "@type",
        "id"
      ]
    },
    "CJ1CommandFileGet": {
      "description": "Get a file.",
      "type": "object",
      "properties": {
        "id": {
          "description": "The file ID.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "FileGet"
        }
      },
      "required": [
        "@type",
        "id"
      ]
    },
    "CJ1CommandFilePut": {
      "description": "Create or update a file.",
      "type": "object",
      "properties": {
        "file": {
          "description": "The file.",
          "$ref": "#/$defs/CJ1FileType"
        },
        "@type": {
          "type": "string",
          "pattern": "FilePut"
        }
      },
      "required": [
        "@type",
        "file"
      ]
    },
    "CJ1CommandFileSearchBegin": {
      "description": "Start searching for files.",
      "type": "object",
      "properties": {
        "parameters": {
          "description": "The search parameters.",
          "$ref": "#/$defs/CJ1FileSearchParameters"
        },
        "@type": {
          "type": "string",
          "pattern": "FileSearchBegin"
        }
      },
      "required": [
        "@type",
        "parameters"
      ]
    },
    "CJ1CommandFileSearchNext": {
      "description": "Get the next page of files.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "FileSearchNext"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1CommandFileSearchPrevious": {
      "description": "Get the previous page of files.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "FileSearchPrevious"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1CommandItemAttachmentAdd": {
      "description": "Add an attachment to an item.",
      "type": "object",
      "properties": {
        "file": {
          "description": "The file ID.",
          "$ref": "#/$defs/UUID"
        },
        "item": {
          "description": "The item ID.",
          "$ref": "#/$defs/UUID"
        },
        "relation": {
          "description": "The attachment relation.",
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "ItemAttachmentAdd"
        }
      },
      "required": [
        "@type",
        "file",
        "item",
        "relation"
      ]
    },
    "CJ1CommandItemAttachmentRemove": {
      "description": "Remove an attachment from an item.",
      "type": "object",
      "properties": {
        "file": {
          "description": "The file ID.",
          "$ref": "#/$defs/UUID"
        },
        "item": {
          "description": "The item ID.",
          "$ref": "#/$defs/UUID"
        },
        "relation": {
          "description": "The attachment relation.",
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "ItemAttachmentRemove"
        }
      },
      "required": [
        "@type",
        "file",
        "item",
        "relation"
      ]
    },
    "CJ1CommandItemCreate": {
      "description": "Create an item.",
      "type": "object",
      "properties": {
        "id": {
          "description": "The item ID.",
          "$ref": "#/$defs/UUID"
        },
        "name": {
          "description": "The item name.",
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "ItemCreate"
        }
      },
      "required": [
        "@type",
        "id",
        "name"
      ]
    },
    "CJ1CommandItemDelete": {
      "description": "Delete an item.",
      "type": "object",
      "properties": {
        "id": {
          "description": "The item ID.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ItemDelete"
        }
      },
      "required": [
        "@type",
        "id"
      ]
    },
    "CJ1CommandItemGet": {
      "description": "Retrieve an item.",
      "type": "object",
      "properties": {
        "id": {
          "description": "The item ID.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ItemGet"
        }
      },
      "required": [
        "@type",
        "id"
      ]
    },
    "CJ1CommandItemMetadataPut": {
      "description": "Create or update metadata on an item.",
      "type": "object",
      "properties": {
        "item": {
          "description": "The item ID.",
          "$ref": "#/$defs/UUID"
        },
        "metadatas": {
          "description": "The item metadata values.",
          "$ref": "#/$defs/Set<CJ1MetadataType>"
        },
        "@type": {
          "type": "string",
          "pattern": "ItemMetadataPut"
        }
      },
      "required": [
        "@type",
        "item",
        "metadatas"
      ]
    },
    "CJ1CommandItemMetadataRemove": {
      "description": "Remove metadata from an item.",
      "type": "object",
      "properties": {
        "item": {
          "description": "The item ID.",
          "$ref": "#/$defs/UUID"
        },
        "metadataNames": {
          "description": "The item metadata names.",
          "$ref": "#/$defs/Set<CJ1TypeRecordFieldIdentifier>"
        },
        "@type": {
          "type": "string",
          "pattern": "ItemMetadataRemove"
        }
      },
      "required": [
        "@type",
        "item",
        "metadataNames"
      ]
    },
    "CJ1CommandItemSearchBegin": {
      "description": "Start searching for items.",
      "type": "object",
      "properties": {
        "parameters": {
          "description": "The item search parameters.",
          "$ref": "#/$defs/CJ1ItemSearchParameters"
        },
        "@type": {
          "type": "string",
          "pattern": "ItemSearchBegin"
        }
      },
      "required": [
        "@type",
        "parameters"
      ]
    },
    "CJ1CommandItemSearchNext": {
      "description": "Get the next page of items.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "ItemSearchNext"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1CommandItemSearchPrevious": {
      "description": "Get the previous page of items.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "ItemSearchPrevious"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1CommandItemSetName": {
      "description": "Set the name of an item.",
      "type": "object",
      "properties": {
        "id": {
          "description": "The item ID.",
          "$ref": "#/$defs/UUID"
        },
        "name": {
          "description": "The item name.",
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "ItemSetName"
        }
      },
      "required": [
        "@type",
        "id",
        "name"
      ]
    },
    "CJ1CommandItemTypesAssign": {
      "description": "Assign types to an item.",
      "type": "object",
      "properties": {
        "item": {
          "description": "The item ID.",
          "$ref": "#/$defs/UUID"
        },
        "types": {
          "description": "The types.",
          "$ref": "#/$defs/Set<CJ1TypeRecordIdentifier>"
        },
        "@type": {
          "type": "string",
          "pattern": "ItemTypesAssign"
        }
      },
      "required": [
        "@type",
        "item"
      ]
    },
    "CJ1CommandItemTypesRevoke": {
      "description": "Revoke types from an item.",
      "type": "object",
      "properties": {
        "item": {
          "description": "The item ID.",
          "$ref": "#/$defs/UUID"
        },
        "types": {
          "description": "The types.",
          "$ref": "#/$defs/Set<CJ1TypeRecordIdentifier>"
        },
        "@type": {
          "type": "string",
          "pattern": "ItemTypesRevoke"
        }
      },
      "required": [
        "@type",
        "item"
      ]
    },
    "CJ1CommandLocationAttachmentAdd": {
      "description": "Add an attachment to a location.",
      "type": "object",
      "properties": {
        "file": {
          "description": "The file ID.",
          "$ref": "#/$defs/UUID"
        },
        "location": {
          "description": "The location ID.",
          "$ref": "#/$defs/UUID"
        },
        "relation": {
          "description": "The attachment relation.",
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "LocationAttachmentAdd"
        }
      },
      "required": [
        "@type",
        "file",
        "location",
        "relation"
      ]
    },
    "CJ1CommandLocationAttachmentRemove": {
      "description": "Remove an attachment from a location.",
      "type": "object",
      "properties": {
        "file": {
          "description": "The file ID.",
          "$ref": "#/$defs/UUID"
        },
        "location": {
          "description": "The location ID.",
          "$ref": "#/$defs/UUID"
        },
        "relation": {
          "description": "The attachment relation.",
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "LocationAttachmentRemove"
        }
      },
      "required": [
        "@type",
        "file",
        "location",
        "relation"
      ]
    },
    "CJ1CommandLocationDelete": {
      "description": "Delete a location.",
      "type": "object",
      "properties": {
        "id": {
          "description": "The location ID.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "LocationDelete"
        }
      },
      "required": [
        "@type",
        "id"
      ]
    },
    "CJ1CommandLocationGet": {
      "description": "Retrieve a location.",
      "type": "object",
      "properties": {
        "id": {
          "description": "The location ID.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "LocationGet"
        }
      },
      "required": [
        "@type",
        "id"
      ]
    },
    "CJ1CommandLocationList": {
      "description": "List locations.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "LocationList"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1CommandLocationMetadataPut": {
      "description": "Create or update metadata on a location.",
      "type": "object",
      "properties": {
        "location": {
          "description": "The location ID.",
          "$ref": "#/$defs/UUID"
        },
        "metadatas": {
          "description": "The location metadata values.",
          "$ref": "#/$defs/Set<CJ1MetadataType>"
        },
        "@type": {
          "type": "string",
          "pattern": "LocationMetadataPut"
        }
      },
      "required": [
        "@type",
        "location",
        "metadatas"
      ]
    },
    "CJ1CommandLocationMetadataRemove": {
      "description": "Remove metadata from a location.",
      "type": "object",
      "properties": {
        "location": {
          "description": "The location ID.",
          "$ref": "#/$defs/UUID"
        },
        "metadataNames": {
          "description": "The location metadata names.",
          "$ref": "#/$defs/Set<CJ1TypeRecordFieldIdentifier>"
        },
        "@type": {
          "type": "string",
          "pattern": "LocationMetadataRemove"
        }
      },
      "required": [
        "@type",
        "location",
        "metadataNames"
      ]
    },
    "CJ1CommandLocationPut": {
      "description": "Create or update a location.",
      "type": "object",
      "properties": {
        "location": {
          "description": "The location.",
          "$ref": "#/$defs/CJ1Location"
        },
        "@type": {
          "type": "string",
          "pattern": "LocationPut"
        }
      },
      "required": [
        "@type",
        "location"
      ]
    },
    "CJ1CommandLocationTypesAssign": {
      "description": "Assign types to a location.",
      "type": "object",
      "properties": {
        "location": {
          "description": "The location ID.",
          "$ref": "#/$defs/UUID"
        },
        "types": {
          "description": "The location types.",
          "$ref": "#/$defs/Set<CJ1TypeRecordIdentifier>"
        },
        "@type": {
          "type": "string",
          "pattern": "LocationTypesAssign"
        }
      },
      "required": [
        "@type",
        "location"
      ]
    },
    "CJ1CommandLocationTypesRevoke": {
      "description": "Revoke types from a location.",
      "type": "object",
      "properties": {
        "location": {
          "description": "The location ID.",
          "$ref": "#/$defs/UUID"
        },
        "types": {
          "description": "The location type names.",
          "$ref": "#/$defs/Set<CJ1TypeRecordIdentifier>"
        },
        "@type": {
          "type": "string",
          "pattern": "LocationTypesRevoke"
        }
      },
      "required": [
        "@type",
        "location"
      ]
    },
    "CJ1CommandLogin": {
      "description": "Log in.",
      "type": "object",
      "properties": {
        "metadata": {
          "description": "The extra metadata.",
          "$ref": "#/$defs/Map<String,String>"
        },
        "password": {
          "description": "The password.",
          "$ref": "#/$defs/String"
        },
        "userName": {
          "description": "The user name.",
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "Login"
        }
      },
      "required": [
        "@type",
        "password",
        "userName"
      ]
    },
    "CJ1CommandRolesAssign": {
      "description": "Assign roles to a user.",
      "type": "object",
      "properties": {
        "roles": {
          "description": "The roles.",
          "$ref": "#/$defs/Set<String>"
        },
        "user": {
          "description": "The user ID.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "RolesAssign"
        }
      },
      "required": [
        "@type",
        "user"
      ]
    },
    "CJ1CommandRolesGet": {
      "description": "Get roles assigned to a user.",
      "type": "object",
      "properties": {
        "user": {
          "description": "The user ID.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "RolesGet"
        }
      },
      "required": [
        "@type",
        "user"
      ]
    },
    "CJ1CommandRolesRevoke": {
      "description": "Revoke roles from a user.",
      "type": "object",
      "properties": {
        "roles": {
          "description": "The roles.",
          "$ref": "#/$defs/Set<String>"
        },
        "user": {
          "description": "The user ID.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "RolesRevoke"
        }
      },
      "required": [
        "@type",
        "user"
      ]
    },
    "CJ1CommandStockCount": {
      "description": "Count stock matching the given search parameters.",
      "type": "object",
      "properties": {
        "parameters": {
          "description": "The stock search parameters.",
          "$ref": "#/$defs/CJ1StockSearchParameters"
        },
        "@type": {
          "type": "string",
          "pattern": "StockCount"
        }
      },
      "required": [
        "@type",
        "parameters"
      ]
    },
    "CJ1CommandStockReposit": {
      "description": "Execute a stock reposition.",
      "type": "object",
      "properties": {
        "reposit": {
          "description": "The stock reposition.",
          "$ref": "#/$defs/CJ1StockRepositType"
        },
        "@type": {
          "type": "string",
          "pattern": "StockReposit"
        }
      },
      "required": [
        "@type",
        "reposit"
      ]
    },
    "CJ1CommandStockSearchBegin": {
      "description": "Start searching for stock.",
      "type": "object",
      "properties": {
        "parameters": {
          "description": "The stock search parameters.",
          "$ref": "#/$defs/CJ1StockSearchParameters"
        },
        "@type": {
          "type": "string",
          "pattern": "StockSearchBegin"
        }
      },
      "required": [
        "@type",
        "parameters"
      ]
    },
    "CJ1CommandStockSearchNext": {
      "description": "Get the next page of stock.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "StockSearchNext"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1CommandStockSearchPrevious": {
      "description": "Get the previous page of stock.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "StockSearchPrevious"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1CommandType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1CommandAuditSearchBegin"
        },
        {
          "$ref": "#/$defs/CJ1CommandAuditSearchNext"
        },
        {
          "$ref": "#/$defs/CJ1CommandAuditSearchPrevious"
        },
        {
          "$ref": "#/$defs/CJ1CommandFileDelete"
        },
        {
          "$ref": "#/$defs/CJ1CommandFileGet"
        },
        {
          "$ref": "#/$defs/CJ1CommandFilePut"
        },
        {
          "$ref": "#/$defs/CJ1CommandFileSearchBegin"
        },
        {
          "$ref": "#/$defs/CJ1CommandFileSearchNext"
        },
        {
          "$ref": "#/$defs/CJ1CommandFileSearchPrevious"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemAttachmentAdd"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemAttachmentRemove"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemCreate"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemDelete"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemGet"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemMetadataPut"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemMetadataRemove"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemSearchBegin"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemSearchNext"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemSearchPrevious"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemSetName"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemTypesAssign"
        },
        {
          "$ref": "#/$defs/CJ1CommandItemTypesRevoke"
        },
        {
          "$ref": "#/$defs/CJ1CommandLocationAttachmentAdd"
        },
        {
          "$ref": "#/$defs/CJ1CommandLocationAttachmentRemove"
        },
        {
          "$ref": "#/$defs/CJ1CommandLocationDelete"
        },
        {
          "$ref": "#/$defs/CJ1CommandLocationGet"
        },
        {
          "$ref": "#/$defs/CJ1CommandLocationList"
        },
        {
          "$ref": "#/$defs/CJ1CommandLocationMetadataPut"
        },
        {
          "$ref": "#/$defs/CJ1CommandLocationMetadataRemove"
        },
        {
          "$ref": "#/$defs/CJ1CommandLocationPut"
        },
        {
          "$ref": "#/$defs/CJ1CommandLocationTypesAssign"
        },
        {
          "$ref": "#/$defs/CJ1CommandLocationTypesRevoke"
        },
        {
          "$ref": "#/$defs/CJ1CommandLogin"
        },
        {
          "$ref": "#/$defs/CJ1CommandRolesAssign"
        },
        {
          "$ref": "#/$defs/CJ1CommandRolesGet"
        },
        {
          "$ref": "#/$defs/CJ1CommandRolesRevoke"
        },
        {
          "$ref": "#/$defs/CJ1CommandStockCount"
        },
        {
          "$ref": "#/$defs/CJ1CommandStockReposit"
        },
        {
          "$ref": "#/$defs/CJ1CommandStockSearchBegin"
        },
        {
          "$ref": "#/$defs/CJ1CommandStockSearchNext"
        },
        {
          "$ref": "#/$defs/CJ1CommandStockSearchPrevious"
        },
        {
          "$ref": "#/$defs/CJ1CommandTypePackageGetText"
        },
        {
          "$ref": "#/$defs/CJ1CommandTypePackageInstall"
        },
        {
          "$ref": "#/$defs/CJ1CommandTypePackageSearchBegin"
        },
        {
          "$ref": "#/$defs/CJ1CommandTypePackageSearchNext"
        },
        {
          "$ref": "#/$defs/CJ1CommandTypePackageSearchPrevious"
        },
        {
          "$ref": "#/$defs/CJ1CommandTypePackageUninstall"
        },
        {
          "$ref": "#/$defs/CJ1CommandTypePackageUpgrade"
        }
      ]
    },
    "CJ1CommandTypePackageGetText": {
      "description": "Get the text of a type package.",
      "type": "object",
      "properties": {
        "identifier": {
          "description": "The type package identifier.",
          "$ref": "#/$defs/CJ1TypePackageIdentifier"
        },
        "@type": {
          "type": "string",
          "pattern": "TypePackageGetText"
        }
      },
      "required": [
        "@type",
        "identifier"
      ]
    },
    "CJ1CommandTypePackageInstall": {
      "description": "Install a type package.",
      "type": "object",
      "properties": {
        "text": {
          "description": "The type package text.",
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "TypePackageInstall"
        }
      },
      "required": [
        "@type",
        "text"
      ]
    },
    "CJ1CommandTypePackageSearchBegin": {
      "description": "Start searching for type packages.",
      "type": "object",
      "properties": {
        "parameters": {
          "description": "The type package search parameters.",
          "$ref": "#/$defs/CJ1TypePackageSearchParameters"
        },
        "@type": {
          "type": "string",
          "pattern": "TypePackageSearchBegin"
        }
      },
      "required": [
        "@type",
        "parameters"
      ]
    },
    "CJ1CommandTypePackageSearchNext": {
      "description": "Get the next page of type packages.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "TypePackageSearchNext"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1CommandTypePackageSearchPrevious": {
      "description": "Get the previous page of type packages.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "TypePackageSearchPrevious"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1CommandTypePackageUninstall": {
      "description": "Uninstall a type package.",
      "type": "object",
      "properties": {
        "uninstall": {
          "description": "The type package uninstall parameters.",
          "$ref": "#/$defs/CJ1TypePackageUninstall"
        },
        "@type": {
          "type": "string",
          "pattern": "TypePackageUninstall"
        }
      },
      "required": [
        "@type",
        "uninstall"
      ]
    },
    "CJ1CommandTypePackageUpgrade": {
      "description": "Upgrade a type package.",
      "type": "object",
      "properties": {
        "text": {
          "description": "The type package text.",
          "$ref": "#/$defs/String"
        },
        "typeRemovalBehavior": {
          "description": "The type removal behavior.",
          "$ref": "#/$defs/CJ1TypePackageTypeRemovalBehavior"
        },
        "versionBehavior": {
          "description": "The type version behavior.",
          "$ref": "#/$defs/CJ1TypePackageVersionBehavior"
        },
        "@type": {
          "type": "string",
          "pattern": "TypePackageUpgrade"
        }
      },
      "required": [
        "@type",
        "text",
        "typeRemovalBehavior",
        "versionBehavior"
      ]
    },
    "CJ1ComparisonExactAnything<RDottedName>": {
      "description": "Match anything.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "Anything"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1ComparisonExactAnything<String>": {
      "description": "Match anything.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "Anything"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1ComparisonExactAnything<UUID>": {
      "description": "Match anything.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "Anything"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1ComparisonExactIsEqualTo<RDottedName>": {
      "description": "Matches values exactly equal to the given value.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/RDottedName"
        },
        "@type": {
          "type": "string",
          "pattern": "IsEqualTo"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonExactIsEqualTo<String>": {
      "description": "Matches values exactly equal to the given value.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "IsEqualTo"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonExactIsEqualTo<UUID>": {
      "description": "Matches values exactly equal to the given value.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "IsEqualTo"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonExactIsNotEqualTo<RDottedName>": {
      "description": "Matches values not equal to the given value.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/RDottedName"
        },
        "@type": {
          "type": "string",
          "pattern": "IsNotEqualTo"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonExactIsNotEqualTo<String>": {
      "description": "Matches values not equal to the given value.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "IsNotEqualTo"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonExactIsNotEqualTo<UUID>": {
      "description": "Matches values not equal to the given value.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "IsNotEqualTo"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonExactType<RDottedName>": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1ComparisonExactAnything<RDottedName>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonExactIsEqualTo<RDottedName>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonExactIsNotEqualTo<RDottedName>"
        }
      ]
    },
    "CJ1ComparisonExactType<String>": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1ComparisonExactAnything<String>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonExactIsEqualTo<String>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonExactIsNotEqualTo<String>"
        }
      ]
    },
    "CJ1ComparisonExactType<UUID>": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1ComparisonExactAnything<UUID>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonExactIsEqualTo<UUID>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonExactIsNotEqualTo<UUID>"
        }
      ]
    },
    "CJ1ComparisonFuzzyAnything<String>": {
      "description": "Match anything.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "Anything"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1ComparisonFuzzyIsEqualTo<String>": {
      "description": "Matches values exactly equal to the given value.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "IsEqualTo"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonFuzzyIsNotEqualTo<String>": {
      "description": "Matches values not equal to the given value.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "IsNotEqualTo"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonFuzzyIsNotSimilarTo<String>": {
      "description": "Matches values not similar to the given value.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "IsNotSimilarTo"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonFuzzyIsSimilarTo<String>": {
      "description": "Matches values similar to the given value.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "IsSimilarTo"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonFuzzyType<String>": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1ComparisonFuzzyAnything<String>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonFuzzyIsEqualTo<String>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonFuzzyIsNotEqualTo<String>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonFuzzyIsNotSimilarTo<String>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonFuzzyIsSimilarTo<String>"
        }
      ]
    },
    "CJ1ComparisonSetAnything<CJ1TypeRecordIdentifier>": {
      "description": "Match anything.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "Anything"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1ComparisonSetIsEqualTo<CJ1TypeRecordIdentifier>": {
      "description": "Match sets equal to the given set.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/Set<CJ1TypeRecordIdentifier>"
        },
        "@type": {
          "type": "string",
          "pattern": "IsEqualTo"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonSetIsNotEqualTo<CJ1TypeRecordIdentifier>": {
      "description": "Match sets not equal to the given set.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/Set<CJ1TypeRecordIdentifier>"
        },
        "@type": {
          "type": "string",
          "pattern": "IsNotEqualTo"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonSetIsOverlapping<CJ1TypeRecordIdentifier>": {
      "description": "Match sets overlapping the given set.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/Set<CJ1TypeRecordIdentifier>"
        },
        "@type": {
          "type": "string",
          "pattern": "IsOverlapping"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonSetIsSubsetOf<CJ1TypeRecordIdentifier>": {
      "description": "Match sets that are a subset of the given set.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/Set<CJ1TypeRecordIdentifier>"
        },
        "@type": {
          "type": "string",
          "pattern": "IsSubsetOf"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonSetIsSupersetOf<CJ1TypeRecordIdentifier>": {
      "description": "Match sets that are a superset of the given set.",
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/$defs/Set<CJ1TypeRecordIdentifier>"
        },
        "@type": {
          "type": "string",
          "pattern": "IsSupersetOf"
        }
      },
      "required": [
        "@type",
        "value"
      ]
    },
    "CJ1ComparisonSetType<CJ1TypeRecordIdentifier>": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1ComparisonSetAnything<CJ1TypeRecordIdentifier>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonSetIsEqualTo<CJ1TypeRecordIdentifier>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonSetIsNotEqualTo<CJ1TypeRecordIdentifier>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonSetIsOverlapping<CJ1TypeRecordIdentifier>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonSetIsSubsetOf<CJ1TypeRecordIdentifier>"
        },
        {
          "$ref": "#/$defs/CJ1ComparisonSetIsSupersetOf<CJ1TypeRecordIdentifier>"
        }
      ]
    },
    "CJ1FileColumn": {
      "type": "string",
      "enum": [
        "BY_ID",
        "BY_DESCRIPTION"
      ]
    },
    "CJ1FileColumnOrdering": {
      "type": "object",
      "properties": {
        "ascending": {
          "$ref": "#/$defs/boolean"
        },
        "column": {
          "description": "The column used to order results.",
          "$ref": "#/$defs/CJ1FileColumn"
        }
      },
      "required": [
        "ascending",
        "column"
      ]
    },
    "CJ1FileSearchParameters": {
      "description": "Parameters to search for files.",
      "type": "object",
      "properties": {
        "matchDescription": {
          "description": "Include files with descriptions matching the given expression.",
          "$ref": "#/$defs/CJ1ComparisonFuzzyType<String>"
        },
        "matchMediaType": {
          "description": "Include files with media types matching the given expression.",
          "$ref": "#/$defs/CJ1ComparisonFuzzyType<String>"
        },
        "matchSizeRange": {
          "description": "Include files with sizes matching the given expression.",
          "$ref": "#/$defs/CJ1SizeRange"
        },
        "orderBy": {
          "description": "The result ordering.",
          "$ref": "#/$defs/CJ1FileColumnOrdering"
        },
        "pageSize": {
          "description": "The maximum number of results per page.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        }
      },
      "required": [
        "matchDescription",
        "matchMediaType",
        "matchSizeRange",
        "orderBy",
        "pageSize"
      ]
    },
    "CJ1FileType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1FileWithData"
        },
        {
          "$ref": "#/$defs/CJ1FileWithoutData"
        }
      ]
    },
    "CJ1FileWithData": {
      "description": "A file with the data included.",
      "type": "object",
      "properties": {
        "data": {
          "description": "The file data.",
          "$ref": "#/$defs/byte[]"
        },
        "description": {
          "description": "The file description.",
          "$ref": "#/$defs/String"
        },
        "hashAlgorithm": {
          "description": "The file hash algorithm.",
          "$ref": "#/$defs/String"
        },
        "hashValue": {
          "description": "The file hash value.",
          "$ref": "#/$defs/String"
        },
        "id": {
          "description": "The file ID.",
          "$ref": "#/$defs/UUID"
        },
        "mediaType": {
          "description": "The file media type.",
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "FileWithData"
        }
      },
      "required": [
        "@type",
        "data",
        "description",
        "hashAlgorithm",
        "hashValue",
        "id",
        "mediaType"
      ]
    },
    "CJ1FileWithoutData": {
      "description": "A file without the data included.",
      "type": "object",
      "properties": {
        "description": {
          "description": "The file description.",
          "$ref": "#/$defs/String"
        },
        "hashAlgorithm": {
          "description": "The file hash algorithm.",
          "$ref": "#/$defs/String"
        },
        "hashValue": {
          "description": "The file hash value.",
          "$ref": "#/$defs/String"
        },
        "id": {
          "description": "The file ID.",
          "$ref": "#/$defs/UUID"
        },
        "mediaType": {
          "description": "The file media type.",
          "$ref": "#/$defs/String"
        },
        "size": {
          "description": "The file size.",
          "$ref": "#/$defs/long"
        },
        "@type": {
          "type": "string",
          "pattern": "FileWithoutData"
        }
      },
      "required": [
        "@type",
        "description",
        "hashAlgorithm",
        "hashValue",
        "id",
        "mediaType",
        "size"
      ]
    },
    "CJ1IncludeDeleted": {
      "type": "string",
      "enum": [
        "INCLUDE_ONLY_LIVE",
        "INCLUDE_ONLY_DELETED",
        "INCLUDE_BOTH_LIVE_AND_DELETED"
      ]
    },
    "CJ1Item": {
      "description": "An item.",
      "type": "object",
      "properties": {
        "attachments": {
          "description": "The item attachments.",
          "$ref": "#/$defs/List<CJ1AttachmentItem>"
        },
        "id": {
          "description": "The item ID.",
          "$ref": "#/$defs/UUID"
        },
        "metadata": {
          "description": "The item metadata.",
          "$ref": "#/$defs/Map<CJ1TypeRecordFieldIdentifier,CJ1MetadataType>"
        },
        "name": {
          "description": "The item name.",
          "$ref": "#/$defs/String"
        },
        "timeCreated": {
          "description": "The item creation time.",
          "$ref": "#/$defs/OffsetDateTime"
        },
        "timeUpdated": {
          "description": "The item most recent update time.",
          "$ref": "#/$defs/OffsetDateTime"
        },
        "types": {
          "description": "The item types.",
          "$ref": "#/$defs/Set<CJ1TypeRecordIdentifier>"
        }
      },
      "required": [
        "id",
        "name",
        "timeCreated",
        "timeUpdated"
      ]
    },
    "CJ1ItemColumn": {
      "type": "string",
      "enum": [
        "BY_ID",
        "BY_NAME"
      ]
    },
    "CJ1ItemColumnOrdering": {
      "type": "object",
      "properties": {
        "ascending": {
          "$ref": "#/$defs/boolean"
        },
        "column": {
          "description": "The column used to order results.",
          "$ref": "#/$defs/CJ1ItemColumn"
        }
      },
      "required": [
        "ascending",
        "column"
      ]
    },
    "CJ1ItemSearchParameters": {
      "description": "Parameters to search for items.",
      "type": "object",
      "properties": {
        "includeDeleted": {
          "description": "Include deleted items.",
          "$ref": "#/$defs/CJ1IncludeDeleted"
        },
        "matchDescription": {
          "description": "Include items with descriptions matching the given expression.",
          "$ref": "#/$defs/CJ1ComparisonFuzzyType<String>"
        },
        "matchMetadata": {
          "description": "Include items with metadata matching the given expression.",
          "$ref": "#/$defs/CJ1MetadataElementMatchType"
        },
        "matchName": {
          "description": "Include items with names matching the given expression.",
          "$ref": "#/$defs/CJ1ComparisonFuzzyType<String>"
        },
        "matchTypes": {
          "description": "Include items with types matching the given expression.",
          "$ref": "#/$defs/CJ1ComparisonSetType<CJ1TypeRecordIdentifier>"
        },
        "orderBy": {
          "description": "The result ordering.",
          "$ref": "#/$defs/CJ1ItemColumnOrdering"
        },
        "pageSize": {
          "description": "The maximum number of results per page.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        }
      },
      "required": [
        "includeDeleted",
        "matchDescription",
        "matchMetadata",
        "matchName",
        "matchTypes",
        "orderBy",
        "pageSize"
      ]
    },
    "CJ1ItemSerial": {
      "description": "A serial number.",
      "type": "object",
      "properties": {
        "type": {
          "description": "The serial number type.",
          "$ref": "#/$defs/RDottedName"
        },
        "value": {
          "description": "The serial number value.",
          "$ref": "#/$defs/String"
        }
      },
      "required": [
        "type",
        "value"
      ]
    },
    "CJ1ItemSummary": {
      "description": "An item summary.",
      "type": "object",
      "properties": {
        "id": {
          "description": "The item ID.",
          "$ref": "#/$defs/UUID"
        },
        "name": {
          "description": "The item name.",
          "$ref": "#/$defs/String"
        },
        "timeCreated": {
          "description": "The item creation time.",
          "$ref": "#/$defs/OffsetDateTime"
        },
        "timeUpdated": {
          "description": "The item most recent update time.",
          "$ref": "#/$defs/OffsetDateTime"
        }
      },
      "required": [
        "id",
        "name",
        "timeCreated",
        "timeUpdated"
      ]
    },
    "CJ1Location": {
      "description": "A location.",
      "type": "object",
      "properties": {
        "attachments": {
          "description": "The location attachments.",
          "$ref": "#/$defs/List<CJ1AttachmentItem>"
        },
        "id": {
          "description": "The location ID.",
          "$ref": "#/$defs/UUID"
        },
        "metadata": {
          "description": "The location metadata.",
          "$ref": "#/$defs/Map<CJ1TypeRecordFieldIdentifier,CJ1MetadataType>"
        },
        "parent": {
          "description": "The location parent.",
          "$ref": "#/$defs/Optional<UUID>"
        },
        "path": {
          "description": "The location path.",
          "$ref": "#/$defs/List<String>"
        },
        "timeCreated": {
          "description": "The location creation time.",
          "$ref": "#/$defs/OffsetDateTime"
        },
        "timeUpdated": {
          "description": "The location most recent update time.",
          "$ref": "#/$defs/OffsetDateTime"
        },
        "types": {
          "description": "The location types.",
          "$ref": "#/$defs/Set<CJ1TypeRecordIdentifier>"
        }
      },
      "required": [
        "id",
        "path",
        "timeCreated",
        "timeUpdated"
      ]
    },
    "CJ1LocationMatchAll": {
      "description": "Match all locations.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "All"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1LocationMatchExact": {
      "description": "Match an exact location.",
      "type": "object",
      "properties": {
        "location": {
          "description": "The location.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "Exact"
        }
      },
      "required": [
        "@type",
        "location"
      ]
    },
    "CJ1LocationMatchType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1LocationMatchAll"
        },
        {
          "$ref": "#/$defs/CJ1LocationMatchExact"
        },
        {
          "$ref": "#/$defs/CJ1LocationMatchWithDescendants"
        }
      ]
    },
    "CJ1LocationMatchWithDescendants": {
      "description": "Match an exact location and descendants of that location.",
      "type": "object",
      "properties": {
        "location": {
          "description": "The location.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "WithDescendants"
        }
      },
      "required": [
        "@type",
        "location"
      ]
    },
    "CJ1LocationSummary": {
      "description": "A location summary.",
      "type": "object",
      "properties": {
        "id": {
          "description": "The location ID.",
          "$ref": "#/$defs/UUID"
        },
        "parent": {
          "description": "The location parent.",
          "$ref": "#/$defs/Optional<UUID>"
        },
        "path": {
          "description": "The location path.",
          "$ref": "#/$defs/List<String>"
        },
        "timeCreated": {
          "description": "The location creation time.",
          "$ref": "#/$defs/OffsetDateTime"
        },
        "timeUpdated": {
          "description": "The location most recent update time.",
          "$ref": "#/$defs/OffsetDateTime"
        }
      },
      "required": [
        "id",
        "timeCreated",
        "timeUpdated"
      ]
    },
    "CJ1MessageType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1CommandType"
        },
        {
          "$ref": "#/$defs/CJ1ResponseType"
        },
        {
          "$ref": "#/$defs/CJ1Transaction"
        },
        {
          "$ref": "#/$defs/CJ1TransactionResponse"
        }
      ]
    },
    "CJ1MetadataElementMatchAnd": {
      "description": "Match metadata elements that match both expressions.",
      "type": "object",
      "properties": {
        "expression0": {
          "description": "The left expression.",
          "$ref": "#/$defs/CJ1MetadataElementMatchType"
        },
        "expression1": {
          "description": "The right expression.",
          "$ref": "#/$defs/CJ1MetadataElementMatchType"
        },
        "@type": {
          "type": "string",
          "pattern": "And"
        }
      },
      "required": [
        "@type",
        "expression0",
        "expression1"
      ]
    },
    "CJ1MetadataElementMatchOr": {
      "description": "Match metadata elements that match either expression.",
      "type": "object",
      "properties": {
        "expression0": {
          "description": "The left expression.",
          "$ref": "#/$defs/CJ1MetadataElementMatchType"
        },
        "expression1": {
          "description": "The right expression.",
          "$ref": "#/$defs/CJ1MetadataElementMatchType"
        },
        "@type": {
          "type": "string",
          "pattern": "Or"
        }
      },
      "required": [
        "@type",
        "expression0",
        "expression1"
      ]
    },
    "CJ1MetadataElementMatchSpecific": {
      "description": "Match specific metadata elements.",
      "type": "object",
      "properties": {
        "fieldName": {
          "description": "An expression that matches metadata field names.",
          "$ref": "#/$defs/CJ1ComparisonExactType<String>"
        },
        "packageName": {
          "description": "An expression that matches metadata package names.",
          "$ref": "#/$defs/CJ1ComparisonExactType<RDottedName>"
        },
        "typeName": {
          "description": "An expression that matches metadata type names.",
          "$ref": "#/$defs/CJ1ComparisonExactType<String>"
        },
        "value": {
          "description": "An expression that matches metadata values.",
          "$ref": "#/$defs/CJ1MetadataValueMatchType"
        },
        "@type": {
          "type": "string",
          "pattern": "Specific"
        }
      },
      "required": [
        "@type",
        "fieldName",
        "packageName",
        "typeName",
        "value"
      ]
    },
    "CJ1MetadataElementMatchType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1MetadataElementMatchAnd"
        },
        {
          "$ref": "#/$defs/CJ1MetadataElementMatchOr"
        },
        {
          "$ref": "#/$defs/CJ1MetadataElementMatchSpecific"
        }
      ]
    },
    "CJ1MetadataIntegral": {
      "description": "An integral metadata value.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The metadata field name.",
          "$ref": "#/$defs/CJ1TypeRecordFieldIdentifier"
        },
        "value": {
          "description": "The metadata value.",
          "$ref": "#/$defs/long"
        },
        "@type": {
          "type": "string",
          "pattern": "Integral"
        }
      },
      "required": [
        "@type",
        "name",
        "value"
      ]
    },
    "CJ1MetadataMonetary": {
      "description": "A monetary metadata value.",
      "type": "object",
      "properties": {
        "currency": {
          "description": "The metadata currency value.",
          "$ref": "#/$defs/CurrencyUnit"
        },
        "name": {
          "description": "The metadata field name.",
          "$ref": "#/$defs/CJ1TypeRecordFieldIdentifier"
        },
        "value": {
          "description": "The metadata value.",
          "$ref": "#/$defs/BigDecimal"
        },
        "@type": {
          "type": "string",
          "pattern": "Monetary"
        }
      },
      "required": [
        "@type",
        "currency",
        "name",
        "value"
      ]
    },
    "CJ1MetadataReal": {
      "description": "A real metadata value.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The metadata field name.",
          "$ref": "#/$defs/CJ1TypeRecordFieldIdentifier"
        },
        "value": {
          "description": "The metadata value.",
          "$ref": "#/$defs/double"
        },
        "@type": {
          "type": "string",
          "pattern": "Real"
        }
      },
      "required": [
        "@type",
        "name",
        "value"
      ]
    },
    "CJ1MetadataText": {
      "description": "A text metadata value.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The metadata field name.",
          "$ref": "#/$defs/CJ1TypeRecordFieldIdentifier"
        },
        "value": {
          "description": "The metadata value.",
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "Text"
        }
      },
      "required": [
        "@type",
        "name",
        "value"
      ]
    },
    "CJ1MetadataTime": {
      "description": "A time metadata value.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The metadata field name.",
          "$ref": "#/$defs/CJ1TypeRecordFieldIdentifier"
        },
        "value": {
          "description": "The metadata value.",
          "$ref": "#/$defs/OffsetDateTime"
        },
        "@type": {
          "type": "string",
          "pattern": "Time"
        }
      },
      "required": [
        "@type",
        "name",
        "value"
      ]
    },
    "CJ1MetadataType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1MetadataIntegral"
        },
        {
          "$ref": "#/$defs/CJ1MetadataMonetary"
        },
        {
          "$ref": "#/$defs/CJ1MetadataReal"
        },
        {
          "$ref": "#/$defs/CJ1MetadataText"
        },
        {
          "$ref": "#/$defs/CJ1MetadataTime"
        }
      ]
    },
    "CJ1MetadataValueMatchAnyValue": {
      "description": "Match any metadata value.",
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "pattern": "Anything"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1MetadataValueMatchIntegralType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchIntegralWithinRange"
        }
      ]
    },
    "CJ1MetadataValueMatchIntegralWithinRange": {
      "description": "Match an integral metadata value within the given range.",
      "type": "object",
      "properties": {
        "lower": {
          "description": "The lower bound.",
          "$ref": "#/$defs/long"
        },
        "upper": {
          "description": "The upper bound.",
          "$ref": "#/$defs/long"
        },
        "@type": {
          "type": "string",
          "pattern": "IntegralWithinRange"
        }
      },
      "required": [
        "@type",
        "lower",
        "upper"
      ]
    },
    "CJ1MetadataValueMatchMonetaryType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchMonetaryWithCurrency"
        },
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchMonetaryWithinRange"
        }
      ]
    },
    "CJ1MetadataValueMatchMonetaryWithCurrency": {
      "description": "Match monetary metadata values with the given currency.",
      "type": "object",
      "properties": {
        "currency": {
          "description": "The currency unit.",
          "$ref": "#/$defs/CurrencyUnit"
        },
        "@type": {
          "type": "string",
          "pattern": "MonetaryWithCurrency"
        }
      },
      "required": [
        "@type",
        "currency"
      ]
    },
    "CJ1MetadataValueMatchMonetaryWithinRange": {
      "description": "Match a monetary metadata value within the given range.",
      "type": "object",
      "properties": {
        "lower": {
          "description": "The lower bound.",
          "$ref": "#/$defs/BigDecimal"
        },
        "upper": {
          "description": "The upper bound.",
          "$ref": "#/$defs/BigDecimal"
        },
        "@type": {
          "type": "string",
          "pattern": "MonetaryWithinRange"
        }
      },
      "required": [
        "@type",
        "lower",
        "upper"
      ]
    },
    "CJ1MetadataValueMatchRealType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchRealWithinRange"
        }
      ]
    },
    "CJ1MetadataValueMatchRealWithinRange": {
      "description": "Match a real metadata value within the given range.",
      "type": "object",
      "properties": {
        "lower": {
          "description": "The lower bound.",
          "$ref": "#/$defs/double"
        },
        "upper": {
          "description": "The upper bound.",
          "$ref": "#/$defs/double"
        },
        "@type": {
          "type": "string",
          "pattern": "RealWithinRange"
        }
      },
      "required": [
        "@type",
        "lower",
        "upper"
      ]
    },
    "CJ1MetadataValueMatchTextExact": {
      "description": "Match a text metadata value with the given text.",
      "type": "object",
      "properties": {
        "text": {
          "description": "The text value.",
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "TextExact"
        }
      },
      "required": [
        "@type",
        "text"
      ]
    },
    "CJ1MetadataValueMatchTextSearch": {
      "description": "Match a text metadata value with the given search query.",
      "type": "object",
      "properties": {
        "query": {
          "description": "The search query.",
          "$ref": "#/$defs/String"
        },
        "@type": {
          "type": "string",
          "pattern": "TextSearch"
        }
      },
      "required": [
        "@type",
        "query"
      ]
    },
    "CJ1MetadataValueMatchTextType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchTextExact"
        },
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchTextSearch"
        }
      ]
    },
    "CJ1MetadataValueMatchTimeType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchTimeWithinRange"
        }
      ]
    },
    "CJ1MetadataValueMatchTimeWithinRange": {
      "description": "Match a time metadata value within the given range.",
      "type": "object",
      "properties": {
        "lower": {
          "description": "The lower bound.",
          "$ref": "#/$defs/OffsetDateTime"
        },
        "upper": {
          "description": "The upper bound.",
          "$ref": "#/$defs/OffsetDateTime"
        },
        "@type": {
          "type": "string",
          "pattern": "TimeWithinRange"
        }
      },
      "required": [
        "@type",
        "lower",
        "upper"
      ]
    },
    "CJ1MetadataValueMatchType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchAnyValue"
        },
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchIntegralType"
        },
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchMonetaryType"
        },
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchRealType"
        },
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchTextType"
        },
        {
          "$ref": "#/$defs/CJ1MetadataValueMatchTimeType"
        }
      ]
    },
    "CJ1Page<CJ1AuditEvent>": {
      "description": "A page of results.",
      "type": "object",
      "properties": {
        "items": {
          "description": "The results.",
          "$ref": "#/$defs/List<CJ1AuditEvent>"
        },
        "pageCount": {
          "description": "The total number of pages.",
          "$ref": "#/$defs/CJ1UnsignedInt"
        },
        "pageFirstOffset": {
          "description": "The offset of the first result in the page.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        },
        "pageIndex": {
          "description": "The page number.",
          "$ref": "#/$defs/CJ1UnsignedInt"
        }
      },
      "required": [
        "items",
        "pageCount",
        "pageFirstOffset",
        "pageIndex"
      ]
    },
    "CJ1Page<CJ1FileWithoutData>": {
      "description": "A page of results.",
      "type": "object",
      "properties": {
        "items": {
          "description": "The results.",
          "$ref": "#/$defs/List<CJ1FileWithoutData>"
        },
        "pageCount": {
          "description": "The total number of pages.",
          "$ref": "#/$defs/CJ1UnsignedInt"
        },
        "pageFirstOffset": {
          "description": "The offset of the first result in the page.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        },
        "pageIndex": {
          "description": "The page number.",
          "$ref": "#/$defs/CJ1UnsignedInt"
        }
      },
      "required": [
        "items",
        "pageCount",
        "pageFirstOffset",
        "pageIndex"
      ]
    },
    "CJ1Page<CJ1ItemSummary>": {
      "description": "A page of results.",
      "type": "object",
      "properties": {
        "items": {
          "description": "The results.",
          "$ref": "#/$defs/List<CJ1ItemSummary>"
        },
        "pageCount": {
          "description": "The total number of pages.",
          "$ref": "#/$defs/CJ1UnsignedInt"
        },
        "pageFirstOffset": {
          "description": "The offset of the first result in the page.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        },
        "pageIndex": {
          "description": "The page number.",
          "$ref": "#/$defs/CJ1UnsignedInt"
        }
      },
      "required": [
        "items",
        "pageCount",
        "pageFirstOffset",
        "pageIndex"
      ]
    },
    "CJ1Page<CJ1StockOccurrenceType>": {
      "description": "A page of results.",
      "type": "object",
      "properties": {
        "items": {
          "description": "The results.",
          "$ref": "#/$defs/List<CJ1StockOccurrenceType>"
        },
        "pageCount": {
          "description": "The total number of pages.",
          "$ref": "#/$defs/CJ1UnsignedInt"
        },
        "pageFirstOffset": {
          "description": "The offset of the first result in the page.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        },
        "pageIndex": {
          "description": "The page number.",
          "$ref": "#/$defs/CJ1UnsignedInt"
        }
      },
      "required": [
        "items",
        "pageCount",
        "pageFirstOffset",
        "pageIndex"
      ]
    },
    "CJ1ResponseAuditSearch": {
      "description": "A response to AuditSearch.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "results": {
          "$ref": "#/$defs/CJ1Page<CJ1AuditEvent>"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseAuditSearch"
        }
      },
      "required": [
        "@type",
        "requestId",
        "results"
      ]
    },
    "CJ1ResponseBlame": {
      "type": "string",
      "enum": [
        "BLAME_CLIENT",
        "BLAME_SERVER"
      ]
    },
    "CJ1ResponseError": {
      "type": "object",
      "properties": {
        "attributes": {
          "$ref": "#/$defs/Map<String,String>"
        },
        "blame": {
          "$ref": "#/$defs/CJ1ResponseBlame"
        },
        "errorCode": {
          "$ref": "#/$defs/CAErrorCode"
        },
        "extras": {
          "$ref": "#/$defs/List<CJ1StructuredError>"
        },
        "message": {
          "$ref": "#/$defs/String"
        },
        "remediatingAction": {
          "$ref": "#/$defs/Optional<String>"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseError"
        }
      },
      "required": [
        "@type",
        "errorCode",
        "message",
        "requestId"
      ]
    },
    "CJ1ResponseFileDelete": {
      "description": "A response to FileDelete.",
      "type": "object",
      "properties": {
        "file": {
          "$ref": "#/$defs/UUID"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseFileDelete"
        }
      },
      "required": [
        "@type",
        "file",
        "requestId"
      ]
    },
    "CJ1ResponseFileGet": {
      "description": "A response to FileGet.",
      "type": "object",
      "properties": {
        "file": {
          "$ref": "#/$defs/CJ1FileWithoutData"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseFileGet"
        }
      },
      "required": [
        "@type",
        "file",
        "requestId"
      ]
    },
    "CJ1ResponseFilePut": {
      "description": "A response to FilePut.",
      "type": "object",
      "properties": {
        "file": {
          "$ref": "#/$defs/CJ1FileType"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseFilePut"
        }
      },
      "required": [
        "@type",
        "file",
        "requestId"
      ]
    },
    "CJ1ResponseFileSearch": {
      "description": "A response to FileSearch.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "results": {
          "$ref": "#/$defs/CJ1Page<CJ1FileWithoutData>"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseFileSearch"
        }
      },
      "required": [
        "@type",
        "requestId",
        "results"
      ]
    },
    "CJ1ResponseItemAttachmentAdd": {
      "description": "A response to ItemAttachmentAdd.",
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/$defs/CJ1Item"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseItemAttachmentAdd"
        }
      },
      "required": [
        "@type",
        "item",
        "requestId"
      ]
    },
    "CJ1ResponseItemAttachmentRemove": {
      "description": "A response to ItemAttachmentRemove.",
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/$defs/CJ1Item"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseItemAttachmentRemove"
        }
      },
      "required": [
        "@type",
        "item",
        "requestId"
      ]
    },
    "CJ1ResponseItemCreate": {
      "description": "A response to ItemCreate.",
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/$defs/CJ1Item"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseItemCreate"
        }
      },
      "required": [
        "@type",
        "item",
        "requestId"
      ]
    },
    "CJ1ResponseItemDelete": {
      "description": "A response to ItemDelete.",
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/$defs/UUID"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseItemDelete"
        }
      },
      "required": [
        "@type",
        "item",
        "requestId"
      ]
    },
    "CJ1ResponseItemGet": {
      "description": "A response to ItemGet.",
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/$defs/CJ1Item"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseItemGet"
        }
      },
      "required": [
        "@type",
        "item",
        "requestId"
      ]
    },
    "CJ1ResponseItemMetadataPut": {
      "description": "A response to ItemMetadataPut.",
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/$defs/CJ1Item"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseItemMetadataPut"
        }
      },
      "required": [
        "@type",
        "item",
        "requestId"
      ]
    },
    "CJ1ResponseItemMetadataRemove": {
      "description": "A response to ItemMetadataRemove.",
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/$defs/CJ1Item"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseItemMetadataRemove"
        }
      },
      "required": [
        "@type",
        "item",
        "requestId"
      ]
    },
    "CJ1ResponseItemSearch": {
      "description": "A response to ItemSearch.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "results": {
          "$ref": "#/$defs/CJ1Page<CJ1ItemSummary>"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseItemSearch"
        }
      },
      "required": [
        "@type",
        "requestId",
        "results"
      ]
    },
    "CJ1ResponseItemSetName": {
      "description": "A response to ItemSetName.",
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/$defs/CJ1Item"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseItemSetName"
        }
      },
      "required": [
        "@type",
        "item",
        "requestId"
      ]
    },
    "CJ1ResponseItemTypesAssign": {
      "description": "A response to ItemTypesAssign.",
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/$defs/CJ1Item"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseItemTypesAssign"
        }
      },
      "required": [
        "@type",
        "item",
        "requestId"
      ]
    },
    "CJ1ResponseItemTypesRevoke": {
      "description": "A response to ItemTypesRevoke.",
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/$defs/CJ1Item"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseItemTypesRevoke"
        }
      },
      "required": [
        "@type",
        "item",
        "requestId"
      ]
    },
    "CJ1ResponseLocationAttachmentAdd": {
      "description": "A response to LocationAttachmentAdd.",
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/$defs/CJ1Location"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseLocationAttachmentAdd"
        }
      },
      "required": [
        "@type",
        "location",
        "requestId"
      ]
    },
    "CJ1ResponseLocationAttachmentRemove": {
      "description": "A response to LocationAttachmentRemove.",
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/$defs/CJ1Location"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseLocationAttachmentRemove"
        }
      },
      "required": [
        "@type",
        "location",
        "requestId"
      ]
    },
    "CJ1ResponseLocationDelete": {
      "description": "A response to LocationDelete.",
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/$defs/UUID"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseLocationDelete"
        }
      },
      "required": [
        "@type",
        "location",
        "requestId"
      ]
    },
    "CJ1ResponseLocationGet": {
      "description": "A response to LocationGet.",
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/$defs/CJ1Location"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseLocationGet"
        }
      },
      "required": [
        "@type",
        "location",
        "requestId"
      ]
    },
    "CJ1ResponseLocationList": {
      "description": "A response to LocationList.",
      "type": "object",
      "properties": {
        "locations": {
          "$ref": "#/$defs/Map<UUID,CJ1LocationSummary>"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseLocationList"
        }
      },
      "required": [
        "@type",
        "requestId"
      ]
    },
    "CJ1ResponseLocationMetadataPut": {
      "description": "A response to LocationMetadataPut.",
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/$defs/CJ1Location"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseLocationMetadataPut"
        }
      },
      "required": [
        "@type",
        "location",
        "requestId"
      ]
    },
    "CJ1ResponseLocationMetadataRemove": {
      "description": "A response to LocationMetadataRemove.",
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/$defs/CJ1Location"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseLocationMetadataRemove"
        }
      },
      "required": [
        "@type",
        "location",
        "requestId"
      ]
    },
    "CJ1ResponseLocationPut": {
      "description": "A response to LocationPut.",
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/$defs/CJ1Location"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseLocationPut"
        }
      },
      "required": [
        "@type",
        "location",
        "requestId"
      ]
    },
    "CJ1ResponseLocationTypesAssign": {
      "description": "A response to LocationTypesAssign.",
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/$defs/CJ1Location"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseLocationTypesAssign"
        }
      },
      "required": [
        "@type",
        "location",
        "requestId"
      ]
    },
    "CJ1ResponseLocationTypesRevoke": {
      "description": "A response to LocationTypesRevoke.",
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/$defs/CJ1Location"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseLocationTypesRevoke"
        }
      },
      "required": [
        "@type",
        "location",
        "requestId"
      ]
    },
    "CJ1ResponseLogin": {
      "description": "A response to Login.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "userId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseLogin"
        }
      },
      "required": [
        "@type",
        "requestId",
        "userId"
      ]
    },
    "CJ1ResponseRolesAssign": {
      "description": "A response to RolesAssign.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseRolesAssign"
        }
      },
      "required": [
        "@type",
        "requestId"
      ]
    },
    "CJ1ResponseRolesGet": {
      "description": "A response to RolesGet.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "roles": {
          "$ref": "#/$defs/Set<String>"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseRolesGet"
        }
      },
      "required": [
        "@type",
        "requestId"
      ]
    },
    "CJ1ResponseRolesRevoke": {
      "description": "A response to RolesRevoke.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseRolesRevoke"
        }
      },
      "required": [
        "@type",
        "requestId"
      ]
    },
    "CJ1ResponseStockCount": {
      "description": "A response to StockCount.",
      "type": "object",
      "properties": {
        "count": {
          "$ref": "#/$defs/CJ1UnsignedLong"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseStockCount"
        }
      },
      "required": [
        "@type",
        "count",
        "requestId"
      ]
    },
    "CJ1ResponseStockReposit": {
      "description": "A response to StockReposit.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "stockOccurrence": {
          "$ref": "#/$defs/Optional<CJ1StockOccurrenceType>"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseStockReposit"
        }
      },
      "required": [
        "@type",
        "requestId"
      ]
    },
    "CJ1ResponseStockSearch": {
      "description": "A response to StockSearch.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "results": {
          "$ref": "#/$defs/CJ1Page<CJ1StockOccurrenceType>"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseStockSearch"
        }
      },
      "required": [
        "@type",
        "requestId",
        "results"
      ]
    },
    "CJ1ResponseType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1ResponseAuditSearch"
        },
        {
          "$ref": "#/$defs/CJ1ResponseError"
        },
        {
          "$ref": "#/$defs/CJ1ResponseFileDelete"
        },
        {
          "$ref": "#/$defs/CJ1ResponseFileGet"
        },
        {
          "$ref": "#/$defs/CJ1ResponseFilePut"
        },
        {
          "$ref": "#/$defs/CJ1ResponseFileSearch"
        },
        {
          "$ref": "#/$defs/CJ1ResponseItemAttachmentAdd"
        },
        {
          "$ref": "#/$defs/CJ1ResponseItemAttachmentRemove"
        },
        {
          "$ref": "#/$defs/CJ1ResponseItemCreate"
        },
        {
          "$ref": "#/$defs/CJ1ResponseItemDelete"
        },
        {
          "$ref": "#/$defs/CJ1ResponseItemGet"
        },
        {
          "$ref": "#/$defs/CJ1ResponseItemMetadataPut"
        },
        {
          "$ref": "#/$defs/CJ1ResponseItemMetadataRemove"
        },
        {
          "$ref": "#/$defs/CJ1ResponseItemSearch"
        },
        {
          "$ref": "#/$defs/CJ1ResponseItemSetName"
        },
        {
          "$ref": "#/$defs/CJ1ResponseItemTypesAssign"
        },
        {
          "$ref": "#/$defs/CJ1ResponseItemTypesRevoke"
        },
        {
          "$ref": "#/$defs/CJ1ResponseLocationAttachmentAdd"
        },
        {
          "$ref": "#/$defs/CJ1ResponseLocationAttachmentRemove"
        },
        {
          "$ref": "#/$defs/CJ1ResponseLocationDelete"
        },
        {
          "$ref": "#/$defs/CJ1ResponseLocationGet"
        },
        {
          "$ref": "#/$defs/CJ1ResponseLocationList"
        },
        {
          "$ref": "#/$defs/CJ1ResponseLocationMetadataPut"
        },
        {
          "$ref": "#/$defs/CJ1ResponseLocationMetadataRemove"
        },
        {
          "$ref": "#/$defs/CJ1ResponseLocationPut"
        },
        {
          "$ref": "#/$defs/CJ1ResponseLocationTypesAssign"
        },
        {
          "$ref": "#/$defs/CJ1ResponseLocationTypesRevoke"
        },
        {
          "$ref": "#/$defs/CJ1ResponseLogin"
        },
        {
          "$ref": "#/$defs/CJ1ResponseRolesAssign"
        },
        {
          "$ref": "#/$defs/CJ1ResponseRolesGet"
        },
        {
          "$ref": "#/$defs/CJ1ResponseRolesRevoke"
        },
        {
          "$ref": "#/$defs/CJ1ResponseStockCount"
        },
        {
          "$ref": "#/$defs/CJ1ResponseStockReposit"
        },
        {
          "$ref": "#/$defs/CJ1ResponseStockSearch"
        },
        {
          "$ref": "#/$defs/CJ1ResponseTypePackageGetText"
        },
        {
          "$ref": "#/$defs/CJ1ResponseTypePackageInstall"
        },
        {
          "$ref": "#/$defs/CJ1ResponseTypePackageSearch"
        },
        {
          "$ref": "#/$defs/CJ1ResponseTypePackageUninstall"
        },
        {
          "$ref": "#/$defs/CJ1ResponseTypePackageUpgrade"
        }
      ]
    },
    "CJ1ResponseTypePackageGetText": {
      "description": "A response to TypePackageGetText.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseTypePackageGetText"
        }
      },
      "required": [
        "@type",
        "requestId"
      ]
    },
    "CJ1ResponseTypePackageInstall": {
      "description": "A response to TypePackageInstall.",
      "type": "object",
      "properties": {
        "identifier": {
          "$ref": "#/$defs/CJ1TypePackageIdentifier"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseTypePackageInstall"
        }
      },
      "required": [
        "@type",
        "identifier",
        "requestId"
      ]
    },
    "CJ1ResponseTypePackageSearch": {
      "description": "A response to TypePackageSearch.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseTypePackageSearch"
        }
      },
      "required": [
        "@type",
        "requestId"
      ]
    },
    "CJ1ResponseTypePackageUninstall": {
      "description": "A response to TypePackageUninstall.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseTypePackageUninstall"
        }
      },
      "required": [
        "@type",
        "requestId"
      ]
    },
    "CJ1ResponseTypePackageUpgrade": {
      "description": "A response to TypePackageUpgrade.",
      "type": "object",
      "properties": {
        "identifier": {
          "$ref": "#/$defs/CJ1TypePackageIdentifier"
        },
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "ResponseTypePackageUpgrade"
        }
      },
      "required": [
        "@type",
        "identifier",
        "requestId"
      ]
    },
    "CJ1SizeRange": {
      "type": "object",
      "properties": {
        "sizeMaximum": {
          "description": "The inclusive upper bound.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        },
        "sizeMinimum": {
          "description": "The inclusive lower bound.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        }
      },
      "required": [
        "sizeMaximum",
        "sizeMinimum"
      ]
    },
    "CJ1StockOccurrenceKind": {
      "type": "string",
      "enum": [
        "SERIAL",
        "SET"
      ]
    },
    "CJ1StockOccurrenceSerial": {
      "type": "object",
      "properties": {
        "instance": {
          "$ref": "#/$defs/UUID"
        },
        "item": {
          "$ref": "#/$defs/CJ1ItemSummary"
        },
        "location": {
          "$ref": "#/$defs/CJ1LocationSummary"
        },
        "serials": {
          "$ref": "#/$defs/List<CJ1ItemSerial>"
        },
        "@type": {
          "type": "string",
          "pattern": "Serial"
        }
      },
      "required": [
        "@type",
        "instance",
        "item",
        "location"
      ]
    },
    "CJ1StockOccurrenceSet": {
      "type": "object",
      "properties": {
        "count": {
          "$ref": "#/$defs/long"
        },
        "instance": {
          "$ref": "#/$defs/UUID"
        },
        "item": {
          "$ref": "#/$defs/CJ1ItemSummary"
        },
        "location": {
          "$ref": "#/$defs/CJ1LocationSummary"
        },
        "@type": {
          "type": "string",
          "pattern": "Set"
        }
      },
      "required": [
        "@type",
        "count",
        "instance",
        "item",
        "location"
      ]
    },
    "CJ1StockOccurrenceType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1StockOccurrenceSerial"
        },
        {
          "$ref": "#/$defs/CJ1StockOccurrenceSet"
        }
      ]
    },
    "CJ1StockRepositRemove": {
      "description": "Remove the given stock occurrence.",
      "type": "object",
      "properties": {
        "instance": {
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "Remove"
        }
      },
      "required": [
        "@type",
        "instance"
      ]
    },
    "CJ1StockRepositSerialIntroduce": {
      "description": "Introduce a new serial stock occurrence.",
      "type": "object",
      "properties": {
        "instance": {
          "description": "The stock occurrence.",
          "$ref": "#/$defs/UUID"
        },
        "item": {
          "description": "The item.",
          "$ref": "#/$defs/UUID"
        },
        "location": {
          "description": "The location.",
          "$ref": "#/$defs/UUID"
        },
        "serial": {
          "description": "The serial number.",
          "$ref": "#/$defs/CJ1ItemSerial"
        },
        "@type": {
          "type": "string",
          "pattern": "SerialIntroduce"
        }
      },
      "required": [
        "@type",
        "instance",
        "item",
        "location",
        "serial"
      ]
    },
    "CJ1StockRepositSerialMove": {
      "description": "Move a serial stock occurrence to a new location.",
      "type": "object",
      "properties": {
        "instance": {
          "description": "The stock occurrence.",
          "$ref": "#/$defs/UUID"
        },
        "toLocation": {
          "description": "The new location.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "SerialMove"
        }
      },
      "required": [
        "@type",
        "instance",
        "toLocation"
      ]
    },
    "CJ1StockRepositSerialNumberAdd": {
      "description": "Add a new serial number to a stock occurrence.",
      "type": "object",
      "properties": {
        "instance": {
          "description": "The stock occurrence.",
          "$ref": "#/$defs/UUID"
        },
        "serial": {
          "description": "The serial number.",
          "$ref": "#/$defs/CJ1ItemSerial"
        },
        "@type": {
          "type": "string",
          "pattern": "SerialNumberAdd"
        }
      },
      "required": [
        "@type",
        "instance",
        "serial"
      ]
    },
    "CJ1StockRepositSerialNumberRemove": {
      "description": "Remove a serial number from a stock occurrence.",
      "type": "object",
      "properties": {
        "instance": {
          "description": "The stock occurrence.",
          "$ref": "#/$defs/UUID"
        },
        "serial": {
          "description": "The serial number.",
          "$ref": "#/$defs/CJ1ItemSerial"
        },
        "@type": {
          "type": "string",
          "pattern": "SerialNumberRemove"
        }
      },
      "required": [
        "@type",
        "instance",
        "serial"
      ]
    },
    "CJ1StockRepositSetAdd": {
      "description": "Add to an existing set stock occurrence.",
      "type": "object",
      "properties": {
        "count": {
          "description": "The number of items to add.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        },
        "instance": {
          "description": "The stock occurrence.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "SetAdd"
        }
      },
      "required": [
        "@type",
        "count",
        "instance"
      ]
    },
    "CJ1StockRepositSetIntroduce": {
      "description": "Introduce a new set stock occurrence.",
      "type": "object",
      "properties": {
        "count": {
          "description": "The number of items to introduce.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        },
        "instance": {
          "description": "The stock occurrence.",
          "$ref": "#/$defs/UUID"
        },
        "item": {
          "description": "The item.",
          "$ref": "#/$defs/UUID"
        },
        "location": {
          "description": "The location.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "SetIntroduce"
        }
      },
      "required": [
        "@type",
        "count",
        "instance",
        "item",
        "location"
      ]
    },
    "CJ1StockRepositSetMove": {
      "description": "Move between stock occurrences.",
      "type": "object",
      "properties": {
        "count": {
          "description": "The number of items to move.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        },
        "instanceSource": {
          "description": "The source stock occurrence.",
          "$ref": "#/$defs/UUID"
        },
        "instanceTarget": {
          "description": "The target stock occurrence.",
          "$ref": "#/$defs/UUID"
        },
        "toLocation": {
          "description": "The new location.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "SetMove"
        }
      },
      "required": [
        "@type",
        "count",
        "instanceSource",
        "instanceTarget",
        "toLocation"
      ]
    },
    "CJ1StockRepositSetRemove": {
      "description": "Remove from a set stock occurrence.",
      "type": "object",
      "properties": {
        "count": {
          "description": "The number of items to remove.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        },
        "instance": {
          "description": "The stock occurrence.",
          "$ref": "#/$defs/UUID"
        },
        "@type": {
          "type": "string",
          "pattern": "SetRemove"
        }
      },
      "required": [
        "@type",
        "count",
        "instance"
      ]
    },
    "CJ1StockRepositType": {
      "oneOf": [
        {
          "$ref": "#/$defs/CJ1StockRepositRemove"
        },
        {
          "$ref": "#/$defs/CJ1StockRepositSerialIntroduce"
        },
        {
          "$ref": "#/$defs/CJ1StockRepositSerialMove"
        },
        {
          "$ref": "#/$defs/CJ1StockRepositSerialNumberAdd"
        },
        {
          "$ref": "#/$defs/CJ1StockRepositSerialNumberRemove"
        },
        {
          "$ref": "#/$defs/CJ1StockRepositSetAdd"
        },
        {
          "$ref": "#/$defs/CJ1StockRepositSetIntroduce"
        },
        {
          "$ref": "#/$defs/CJ1StockRepositSetMove"
        },
        {
          "$ref": "#/$defs/CJ1StockRepositSetRemove"
        }
      ]
    },
    "CJ1StockSearchParameters": {
      "description": "Parameters to search for stock.",
      "type": "object",
      "properties": {
        "includeDeleted": {
          "description": "Include deleted stock.",
          "$ref": "#/$defs/CJ1IncludeDeleted"
        },
        "includeOccurrences": {
          "description": "Include stock of the given occurrence kinds.",
          "$ref": "#/$defs/Set<CJ1StockOccurrenceKind>"
        },
        "matchItem": {
          "description": "Include stock with items matching the given expression.",
          "$ref": "#/$defs/CJ1ComparisonExactType<UUID>"
        },
        "matchLocation": {
          "description": "Include stock with locations matching the given expression.",
          "$ref": "#/$defs/CJ1LocationMatchType"
        },
        "pageSize": {
          "description": "The maximum number of results per page.",
          "$ref": "#/$defs/CJ1UnsignedLong"
        }
      },
      "required": [
        "includeDeleted",
        "includeOccurrences",
        "matchItem",
        "matchLocation",
        "pageSize"
      ]
    },
    "CJ1StructuredError": {
      "description": "A structured error value.",
      "type": "object",
      "properties": {
        "attributes": {
          "description": "The error attributes.",
          "$ref": "#/$defs/Map<String,String>"
        },
        "errorCode": {
          "description": "The error code.",
          "$ref": "#/$defs/String"
        },
        "message": {
          "description": "The error message.",
          "$ref": "#/$defs/String"
        },
        "remediatingAction": {
          "description": "The remediating action.",
          "$ref": "#/$defs/Optional<String>"
        }
      },
      "required": [
        "errorCode",
        "message"
      ]
    },
    "CJ1TimeRange": {
      "description": "A range of time.",
      "type": "object",
      "properties": {
        "lower": {
          "description": "The inclusive lower bound.",
          "$ref": "#/$defs/OffsetDateTime"
        },
        "upper": {
          "description": "The inclusive upper bound.",
          "$ref": "#/$defs/OffsetDateTime"
        }
      },
      "required": [
        "lower",
        "upper"
      ]
    },
    "CJ1Transaction": {
      "description": "A set of commands to execute in a single transaction.",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The commands that will be executed in the given order.",
          "$ref": "#/$defs/List<CJ1CommandType>"
        },
        "@type": {
          "type": "string",
          "pattern": "Transaction"
        }
      },
      "required": [
        "@type"
      ]
    },
    "CJ1TransactionResponse": {
      "description": "A transaction response.",
      "type": "object",
      "properties": {
        "requestId": {
          "$ref": "#/$defs/UUID"
        },
        "responses": {
          "description": "The command responses.",
          "$ref": "#/$defs/List<CJ1ResponseType>"
        },
        "@type": {
          "type": "string",
          "pattern": "TransactionResponse"
        }
      },
      "required": [
        "@type",
        "requestId",
        "responses"
      ]
    },
    "CJ1TypePackageIdentifier": {
      "description": "A type package identifier.",
      "type": "string"
    },
    "CJ1TypePackageSearchParameters": {
      "description": "Parameters to search for type packages.",
      "type": "object",
      "properties": {
        "matchDescription": {
          "description": "Include packages with descriptions matching the given expression.",
          "$ref": "#/$defs/CJ1ComparisonFuzzyType<String>"
        },
        "pageSize": {
          "description": "The maximum number of results per page.",
          "$ref": "#/$defs/long"
        }
      },
      "required": [
        "matchDescription",
        "pageSize"
      ]
    },
    "CJ1TypePackageTypeRemovalBehavior": {
      "description": "Type package removal behavior.",
      "type": "string",
      "enum": [
        "TYPE_REMOVAL_FAIL_IF_TYPES_REFERENCED",
        "TYPE_REMOVAL_REVOKE_TYPES"
      ]
    },
    "CJ1TypePackageUninstall": {
      "description": "Parameters for uninstalling type packages.",
      "type": "object",
      "properties": {
        "packageIdentifier": {
          "description": "The type package identifier.",
          "$ref": "#/$defs/CJ1TypePackageIdentifier"
        },
        "typeRemovalBehavior": {
          "description": "The type removal behavior.",
          "$ref": "#/$defs/CJ1TypePackageTypeRemovalBehavior"
        }
      },
      "required": [
        "packageIdentifier",
        "typeRemovalBehavior"
      ]
    },
    "CJ1TypePackageVersionBehavior": {
      "description": "Type package version behavior.",
      "type": "string",
      "enum": [
        "VERSION_ALLOW_DOWNGRADES",
        "VERSION_DISALLOW_DOWNGRADES"
      ]
    },
    "CJ1TypeRecordFieldIdentifier": {
      "description": "A type record field identifier.",
      "type": "string"
    },
    "CJ1TypeRecordIdentifier": {
      "description": "A type record identifier.",
      "type": "string"
    },
    "CJ1UnsignedInt": {
      "description": "A 32-bit unsigned integer value.",
      "type": "number",
      "minimum": 0,
      "exclusiveMaximum": 4294967296
    },
    "CJ1UnsignedLong": {
      "description": "A 64-bit unsigned integer value.",
      "type": "number",
      "minimum": 0,
      "exclusiveMaximum": 18446744073709551616
    },
    "CurrencyUnit": {
      "description": "An ISO 4217 currency code.",
      "type": "string",
      "pattern": "[A-Z][A-Z][A-Z]"
    },
    "List<CJ1AttachmentItem>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1AttachmentItem"
      }
    },
    "List<CJ1AuditEvent>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1AuditEvent"
      }
    },
    "List<CJ1CommandType>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1CommandType"
      }
    },
    "List<CJ1FileWithoutData>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1FileWithoutData"
      }
    },
    "List<CJ1ItemSerial>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1ItemSerial"
      }
    },
    "List<CJ1ItemSummary>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1ItemSummary"
      }
    },
    "List<CJ1ResponseType>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1ResponseType"
      }
    },
    "List<CJ1StockOccurrenceType>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1StockOccurrenceType"
      }
    },
    "List<CJ1StructuredError>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1StructuredError"
      }
    },
    "List<String>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/String"
      }
    },
    "Map<CJ1TypeRecordFieldIdentifier,CJ1MetadataType>": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/CJ1MetadataType"
      }
    },
    "Map<String,String>": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/String"
      }
    },
    "Map<UUID,CJ1LocationSummary>": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/CJ1LocationSummary"
      }
    },
    "OffsetDateTime": {
      "description": "An ISO 8601 timestamp.",
      "type": "string",
      "format": "date-time"
    },
    "Optional<CJ1StockOccurrenceType>": {
      "$ref": "#/$defs/CJ1StockOccurrenceType"
    },
    "Optional<String>": {
      "$ref": "#/$defs/String"
    },
    "Optional<UUID>": {
      "$ref": "#/$defs/UUID"
    },
    "RDottedName": {
      "description": "A Lanark dotted name.",
      "type": "string",
      "pattern": "([a-z][a-z0-9_-]{0,63})(\\.[a-z][a-z0-9_-]{0,62}){0,15}"
    },
    "Set<CJ1MetadataType>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1MetadataType"
      }
    },
    "Set<CJ1StockOccurrenceKind>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1StockOccurrenceKind"
      }
    },
    "Set<CJ1TypeRecordFieldIdentifier>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1TypeRecordFieldIdentifier"
      }
    },
    "Set<CJ1TypeRecordIdentifier>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/CJ1TypeRecordIdentifier"
      }
    },
    "Set<String>": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/String"
      }
    },
    "String": {
      "description": "An arbitrary string.",
      "type": "string"
    },
    "UUID": {
      "description": "An RFC 9562 UUID string.",
      "type": "string",
      "format": "uuid"
    },
    "boolean": {
      "type": "boolean"
    },
    "byte[]": {
      "description": "An RFC 4648 'standard' base64 encoded byte array.",
      "type": "string",
      "format": "base64"
    },
    "double": {
      "description": "An arbitrary real number.",
      "type": "number"
    },
    "long": {
      "description": "A 64-bit signed integer.",
      "type": "number",
      "minimum": -9223372036854775808,
      "maximum": 9223372036854775807
    }
  }
}
8. API Access
8. API Access
9. Security
io7m | single-page | multi-page | epub | Cardant User Manual 1.0.0-beta0002