{
  "openapi": "3.0.4",
  "info": {
    "title": "AssetTigerAPI",
    "version": "1.0"
  },
  "paths": {
    "/v1/aisles/{refId}": {
      "get": {
        "tags": [
          "Aisle"
        ],
        "summary": "Get Aisle by RefId",
        "description": "Retrieves the details of a aisle by its unique identifier (refId). including optional shelf and bin data if requested.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the aisle (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchShelves",
            "in": "query",
            "description": "Indicates whether to include shelves associated with this ailse (default: false).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "fetchBins",
            "in": "query",
            "description": "Include bins associated with this aisle/shelves (default: false). Works only if fetchShelves is true.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Aisle>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"USA","shelves":null},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/aisles": {
      "get": {
        "tags": [
          "Aisle"
        ],
        "summary": "Get Aisles",
        "description": "Retrieves a list of aisles filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter aisles by name (Search keyword cannot exceed 100 characters.).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter aisles by name (Search keyword cannot exceed 100 characters.)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by aisle name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Aisle[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"USA","shelves":[]},{"refId":2,"name":"UK","shelves":[]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/aisles/add": {
      "post": {
        "tags": [
          "Aisle"
        ],
        "summary": "Add Aisle",
        "description": "Creates a aisle using the provided `name` in the request.",
        "requestBody": {
          "description": "Contains the aisle details to be added (e.g., `name`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddAisleRequest"
                  }
                ],
                "description": "Request model for adding aisle. Applicable only when multi-quantiy feature is enabled"
              },
              "example": {"name":"USA"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Aisle>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/aisles/{refId}/update": {
      "put": {
        "tags": [
          "Aisle"
        ],
        "summary": "Update Aisle",
        "description": "Modifies the aisle identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the aisle (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the aisle details to update (e.g., `name`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateAisleRequest"
                  }
                ],
                "description": "Request model for updating aisle. Applicable only when multi-quantiy feature is enabled"
              },
              "example": {"name":"USA"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/aisles/{refId}/delete": {
      "delete": {
        "tags": [
          "Aisle"
        ],
        "summary": "Delete Aisle",
        "description": "Deletes a aisle by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the aisle (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/aisles": {
      "get": {
        "tags": [
          "AisleSandbox"
        ],
        "summary": "Get Aisles",
        "description": "Retrieves a list of aisles filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter aisles by name (Search keyword cannot exceed 100 characters.).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter aisles by name (Search keyword cannot exceed 100 characters.)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by aisle name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Aisle[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"USA","shelves":[]},{"refId":2,"name":"UK","shelves":[]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/aisles/{refId}": {
      "get": {
        "tags": [
          "AisleSandbox"
        ],
        "summary": "Get Aisle by RefId",
        "description": "Retrieves the details of an aisle by its unique identifier (refId), including optional shelf and bin data if requested. For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the aisle (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchShelves",
            "in": "query",
            "description": "Indicates whether to include shelves associated with this aisle (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchBins",
            "in": "query",
            "description": "Include bins associated with this aisle's shelves (default: false). Works only if fetchShelves is true.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Aisle>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"USA","shelves":null},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/aisles/add": {
      "post": {
        "tags": [
          "AisleSandbox"
        ],
        "summary": "Add Aisle",
        "description": "Creates an aisle using the provided `name` in the request.",
        "requestBody": {
          "description": "Contains the aisle details to be added (e.g., `name`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddAisleRequest"
                  }
                ],
                "description": "Request model for adding aisle. Applicable only when multi-quantiy feature is enabled"
              },
              "example": {"name":"USA"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Object>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/aisles/{refId}/update": {
      "put": {
        "tags": [
          "AisleSandbox"
        ],
        "summary": "Update Aisle",
        "description": "Modifies the aisle identified by refId using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the aisle (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the aisle details to update (e.g., `name`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateAisleRequest"
                  }
                ],
                "description": "Request model for updating aisle. Applicable only when multi-quantiy feature is enabled"
              },
              "example": {"name":"USA"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/aisles/{refId}/delete": {
      "delete": {
        "tags": [
          "AisleSandbox"
        ],
        "summary": "Delete Aisle",
        "description": "Deletes an aisle by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the aisle (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset by RefId",
        "description": "Retrieves the details of a asset by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the asset (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Indicates whether to include custom fields associated with this asset (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchEvent",
            "in": "query",
            "description": "Indicates whether to include current event associated with this asset (default: false).\r\nAlso controls whether Status, EventRefId, and Event are populated in the response —\r\nall three are null when this is false, regardless of the asset's actual state.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchReservation",
            "in": "query",
            "description": "Indicates whether to include reservation associated with this asset (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Asset>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":101,"assetTagId":"AT-00101","description":"Dell Laptop 15\" i7","defaultImageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","brand":"Dell","model":"Latitude 5540","serialNo":"SN-DELL-000101","purchaseDate":"2023-06-15","purchaseFrom":"Dell Technologies","cost":1249.99,"dateAdded":"2023-06-16T10:30:00Z","siteRefId":3,"siteName":"Head Office","locationRefId":7,"locationName":"IT Storage Room","categoryRefId":2,"categoryName":"IT Equipment","subCategoryRefId":5,"subCategoryName":"Laptops","departmentRefId":4,"departmentName":"Engineering","depreciationMethod":"StraightLine","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","eventRefId":55,"event":{"refId":55,"eventType":"Checkout","assetRefId":101,"customEventRefId":null,"personRefId":12,"customerRefId":null,"siteRefId":null,"locationRefId":null,"addedByRefGuid":null,"date1":"2024-01-10T09:00:00Z","date2":"2024-01-24T09:00:00Z","dateAdded":"2024-01-10T09:00:00Z","personName":"John Smith","notes":"Checked out for project work.","amount":null,"signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","deductible":false,"booleanField":null,"textField":null,"currencyField":null,"utc":true},"dateAcquired":"2023-06-15","isDepreciable":true,"initialCost":1249.99,"salvageValue":100.00,"assetLife":36,"status":"Checkout","currentCost":50.00,"linked":false,"linkType":null,"customEventRefId":null,"reservation":{"refId":8,"assetRefId":101,"startTime":"2024-02-01T08:00:00Z","endTime":"2024-02-05T18:00:00Z","reserveTo":"Jane Doe","personEmail":null,"assignTo":"Person","personRefId":15,"customerRefId":null,"siteRefId":null,"locationRefId":null,"notes":"Reserved for training session.","addedByRefGuId":null,"dateAdded":"0001-01-01T00:00:00","emailSent":false,"firstReminderEnabled":false,"firstReminderLeadTimeDays":null,"secondReminderEnabled":false,"secondReminderLeadTimeDays":null,"utc":true},"customFieldValues":[{"refId":1,"customFieldRefId":201,"value":"Windows 11 Pro","customField":{"refId":201,"label":"Operating System","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0}},{"refId":2,"customFieldRefId":202,"value":"2024-01-31","customField":{"refId":202,"label":"Warranty Expiry","fieldType":{"refId":5,"name":"Date","hasList":false,"fieldName":"DATE"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0}},{"refId":3,"customFieldRefId":203,"value":"Good","customField":{"refId":203,"label":"Condition","fieldType":{"refId":7,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":true,"options":["Excellent","Good","Fair","Poor"],"customFieldCategories":null,"counter":0}},{"refId":4,"customFieldRefId":203,"value":"10","customField":{"refId":203,"label":"NextNumber","fieldType":{"refId":7,"name":"Numeric Auto Increment","hasList":true,"fieldName":"NUMERICAUTOINCREMENT"},"isRequired":true,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":11}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Assets",
        "description": "Retrieves list of assets filtered and sorted based on the provided query parameters.\r\nSupports searching by category, subcategory, site, location, department, person , customer, status, keywords, and various fields, with flexible sorting and pagination options.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter assets by defined asset search fields. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter assets by defined asset search fields. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Asset fields that searchKeyword is matched against. Always provide at least one field (or searchCustomFields) when using searchKeyword; if neither is provided, searchKeyword is not applied. Allowed values: AssetTagId, Description, Brand, Model, SerialNo, PurchaseFrom.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Asset fields that searchKeyword is matched against. Always provide at least one field (or searchCustomFields) when using searchKeyword; if neither is provided, searchKeyword is not applied. Allowed values: AssetTagId, Description, Brand, Model, SerialNo, PurchaseFrom.",
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which asset custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which asset custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "categoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
              "format": "int32"
            }
          },
          {
            "name": "subCategoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
              "format": "int32"
            }
          },
          {
            "name": "siteRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the site to filter by. Pass 0 to filter unassigned sites.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the site to filter by. Pass 0 to filter unassigned sites.",
              "format": "int32"
            }
          },
          {
            "name": "locationRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the location to filter by. If provided, siteRefId must also be specified. Pass 0 to filter unassigned locations.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the location to filter by. If provided, siteRefId must also be specified. Pass 0 to filter unassigned locations.",
              "format": "int32"
            }
          },
          {
            "name": "departmentRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the department to filter by. Pass 0 to filter unassigned departments.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the department to filter by. Pass 0 to filter unassigned departments.",
              "format": "int32"
            }
          },
          {
            "name": "personRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the assigned person to filter by.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the assigned person to filter by.",
              "format": "int32"
            }
          },
          {
            "name": "customerRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the assigned customer to filter by.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the assigned customer to filter by.",
              "format": "int32"
            }
          },
          {
            "name": "EventTypes",
            "in": "query",
            "description": "Filters assets by the specified event types. Selecting \"Custom\" includes all user-defined custom events.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/EventType"
              },
              "description": "Filters assets by the specified event types. Selecting \"Custom\" includes all user-defined custom events.",
              "nullable": true
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Allowed values: AssetTagId, Description, Brand, Model, SerialNo, PurchaseDate, PurchaseFrom, InitialCost, DateCreated, CreatedBy, CategoryName, SubCategoryName, SiteName, LocationName, DepartmentName, isDepreciable, SalvageValue, AssetLife, DepreciationMethodName, DateAcquired, Status, IsLinked, Relation, CurrentCost, PersonName, Notes, Cost, Reservation, EventDate1, EventDate2, LeaseTo.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering asset records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering asset records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering asset records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering asset records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filtering should apply to. Ignored if dateRangeByCustomField is provided. Default: \"DateCreated\" Allowed values: DateCreated, PurchaseDate, DateAcquired.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "dateRangeByCustomField",
            "in": "query",
            "description": "Defines which custom date field the filter should apply to. Provide the Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which custom date field the filter should apply to. Provide the Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "fetchCategoryName",
            "in": "query",
            "description": "Whether to include category name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include category name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchSubCategoryName",
            "in": "query",
            "description": "Whether to include subcategory name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include subcategory name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchSiteName",
            "in": "query",
            "description": "Whether to include site name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include site name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchLocationName",
            "in": "query",
            "description": "Whether to include location name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include location name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchDepartmentName",
            "in": "query",
            "description": "Whether to include department name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include department name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchEvent",
            "in": "query",
            "description": "Whether to include the current event associated with each asset in the response. Default: false. Also controls whether Status, EventRefId, and Event are populated on each returned asset — all three are null when this is false, regardless of the asset's actual state.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include the current event associated with each asset in the response. Default: false. Also controls whether Status, EventRefId, and Event are populated on each returned asset — all three are null when this is false, regardless of the asset's actual state.",
              "default": false
            }
          },
          {
            "name": "fetchReservation",
            "in": "query",
            "description": "Whether to include the current reservation associated with each asset in the response. Default: false.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include the current reservation associated with each asset in the response. Default: false.",
              "default": false
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Asset[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":101,"assetTagId":"AT-00101","description":"Dell Laptop 15\" i7","defaultImageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","brand":"Dell","model":"Latitude 5540","serialNo":"SN-DELL-000101","purchaseDate":"2023-06-15","purchaseFrom":"Dell Technologies","cost":1249.99,"dateAdded":"2023-06-16T10:30:00Z","siteRefId":3,"siteName":"Head Office","locationRefId":7,"locationName":"IT Storage Room","categoryRefId":2,"categoryName":"IT Equipment","subCategoryRefId":5,"subCategoryName":"Laptops","departmentRefId":4,"departmentName":"Engineering","depreciationMethod":"StraightLine","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","eventRefId":55,"event":{"refId":55,"eventType":"Checkout","assetRefId":101,"customEventRefId":null,"personRefId":12,"customerRefId":null,"siteRefId":null,"locationRefId":null,"addedByRefGuid":null,"date1":"2024-01-10T09:00:00Z","date2":"2024-01-24T09:00:00Z","dateAdded":"2024-01-10T09:00:00Z","personName":"John Smith","notes":"Checked out for project work.","amount":null,"signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","deductible":false,"booleanField":null,"textField":null,"currencyField":null,"utc":true},"dateAcquired":"2023-06-15","isDepreciable":true,"initialCost":1249.99,"salvageValue":100.00,"assetLife":36,"status":"Checkout","currentCost":50.00,"linked":false,"linkType":null,"customEventRefId":null,"reservation":{"refId":8,"assetRefId":101,"startTime":"2024-02-01T08:00:00Z","endTime":"2024-02-05T18:00:00Z","reserveTo":"Jane Doe","personEmail":null,"assignTo":"Person","personRefId":15,"customerRefId":null,"siteRefId":null,"locationRefId":null,"notes":"Reserved for training session.","addedByRefGuId":null,"dateAdded":"0001-01-01T00:00:00","emailSent":false,"firstReminderEnabled":false,"firstReminderLeadTimeDays":null,"secondReminderEnabled":false,"secondReminderLeadTimeDays":null,"utc":true},"customFieldValues":[{"refId":1,"customFieldRefId":201,"value":"Windows 11 Pro","customField":{"refId":201,"label":"Operating System","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":2,"customFieldRefId":202,"value":"2024-01-31","customField":{"refId":202,"label":"Warranty Expiry","fieldType":{"refId":5,"name":"Date","hasList":false,"fieldName":"DATE"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":3,"customFieldRefId":203,"value":"Good","customField":{"refId":203,"label":"Condition","fieldType":{"refId":7,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":null,"options":["Excellent","Good","Fair","Poor"],"customFieldCategories":null,"counter":null}}]},{"refId":102,"assetTagId":"AT-00102","description":"Apple MacBook Pro 16-inch","defaultImageRefGuid":"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy","brand":"Apple","model":"MacBook Pro M3 Max","serialNo":"APL-MBP-00102","purchaseDate":"2024-02-20","purchaseFrom":"Apple Store","cost":3299.99,"dateAdded":"2024-02-21T14:15:00Z","siteRefId":5,"siteName":"New York Office","locationRefId":18,"locationName":"Executive Office","categoryRefId":2,"categoryName":"IT Equipment","subCategoryRefId":5,"subCategoryName":"Laptops","departmentRefId":7,"departmentName":"Management","depreciationMethod":"DoubleDecliningBalance","addedByRefGuid":"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy","eventRefId":82,"event":{"refId":82,"eventType":"CheckIn","assetRefId":102,"customEventRefId":null,"personRefId":35,"customerRefId":null,"siteRefId":null,"locationRefId":null,"addedByRefGuid":null,"date1":"2024-07-15T16:45:00Z","date2":"2024-07-15T17:15:00Z","dateAdded":"2024-07-15T17:20:00Z","personName":"Emily Johnson","notes":"Returned after executive presentation.","amount":null,"signature":"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy","deductible":false,"booleanField":null,"textField":null,"currencyField":null,"utc":true},"dateAcquired":"2024-02-20","isDepreciable":true,"initialCost":3299.99,"salvageValue":500.00,"assetLife":48,"status":"Available","currentCost":3025.50,"linked":false,"linkType":null,"customEventRefId":null,"reservation":{"refId":12,"assetRefId":101,"startTime":"2024-08-05T09:00:00Z","endTime":"2024-08-07T18:00:00Z","reserveTo":"Emily Johnson","personEmail":null,"assignTo":"Person","personRefId":35,"customerRefId":null,"siteRefId":5,"locationRefId":18,"notes":"Reserved for annual board meeting.","addedByRefGuId":null,"dateAdded":"0001-01-01T00:00:00","emailSent":false,"firstReminderEnabled":false,"firstReminderLeadTimeDays":null,"secondReminderEnabled":false,"secondReminderLeadTimeDays":null,"utc":true},"customFieldValues":[{"refId":4,"customFieldRefId":201,"value":"macOS Sequoia","customField":{"refId":201,"label":"Operating System","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":5,"customFieldRefId":202,"value":"2027-02-20","customField":{"refId":202,"label":"Warranty Expiry","fieldType":{"refId":5,"name":"Date","hasList":false,"fieldName":"DATE"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":6,"customFieldRefId":203,"value":"Excellent","customField":{"refId":203,"label":"Condition","fieldType":{"refId":7,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":null,"options":["Excellent","Good","Fair","Poor"],"customFieldCategories":null,"counter":null}}]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/images": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Images by RefId",
        "description": "Retrieves the list of images linked to a given asset metadata such as file name, upload date, and URL paths.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Image[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"imageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","url":"https://example.com/images/sample1.jpg","thumbnail_64":"https://example.com/images/sample1_64.jpg","thumbnail_128":"https://example.com/images/sample1_128.jpg","thumbnail_256":"https://example.com/images/sample1_256.jpg","fileName":"sample-front.jpg","type":"image/jpeg","uploadDate":"2026-10-25T18:12:17.4009603Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","description":"Sample front view image","keywords":"sample,demo,image","isStockImage":true},{"imageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","url":"https://example.com/images/sample2.jpg","thumbnail_64":"https://example.com/images/sample2_64.jpg","thumbnail_128":"https://example.com/images/sample2_128.jpg","thumbnail_256":"https://example.com/images/sample2_256.jpg","fileName":"sample-side.jpg","type":"image/jpeg","uploadDate":"2026-10-30T18:12:17.4009619Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","description":"Sample side view image","keywords":"sample,demo,image","isStockImage":true}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/documents": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Documents by RefId",
        "description": "Retrieves the list of documents linked to a given asset, including metadata such as file name, description, upload date, type.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"front.jpg","description":"Front view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.4014712Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"back.jpg","description":"Back view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.4014713Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Events by RefId",
        "description": "Retrieves the list of events associated with given asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Default: \"DateCreated\". Allowed values: DateCreated, StartDate, EndDate.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":101,"eventType":"Checkout","assetRefId":1,"customEventRefId":null,"personRefId":1,"customerRefId":null,"siteRefId":1,"locationRefId":1,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","date1":"2024-05-01T09:00:00","date2":"2024-05-31T18:00:00","dateAdded":"2024-05-01T00:00:00","personName":"Robert Bennett","notes":"Checked out for field project.","amount":null,"signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","deductible":false,"booleanField":null,"textField":null,"currencyField":null,"utc":true},{"refId":103,"eventType":"Lease","assetRefId":6,"customEventRefId":null,"personRefId":null,"customerRefId":1,"siteRefId":null,"locationRefId":null,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","date1":"2024-03-01T00:00:00","date2":"2024-12-31T00:00:00","dateAdded":"2024-03-01T00:00:00","personName":"TechNova Inc","notes":"Leased to TechNova Inc for 12-month contract.","amount":250.00,"signature":null,"deductible":false,"booleanField":null,"textField":null,"currencyField":null,"utc":true}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/events/{refId}": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Event by RefId",
        "description": "Retrieves a single asset event by the event's unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the event (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":101,"eventType":"Checkout","assetRefId":1,"customEventRefId":null,"personRefId":1,"customerRefId":null,"siteRefId":1,"locationRefId":1,"addedByRefGuid":null,"date1":"2024-05-01T09:00:00","date2":"2024-05-31T18:00:00","dateAdded":"2024-05-01T00:00:00","personName":"Robert Bennett","notes":"Checked out for field project.","amount":null,"signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","deductible":false,"booleanField":null,"textField":null,"currencyField":null,"utc":true},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/histories": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Histories by RefId",
        "description": "Retrieves the list of asset history by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The start date for filtering asset history records. Returns records on or after this date. Format: \"yyyy-MM-dd\". Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering asset history records. Returns records on or after this date. Format: \"yyyy-MM-dd\". Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The end date for filtering asset history records. Returns records on or before this date. Format: \"yyyy-MM-dd\". Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering asset history records. Returns records on or before this date. Format: \"yyyy-MM-dd\". Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Desc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetHistory[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"historyRefId":1,"historyOn":"2026-11-04T18:12:17.4031707Z","event":"Check out","historyDetails":[{"historyDetailsRefId":11,"field":"Status","changeFrom":"Available","changeTo":"Checked out"}],"eventTrackingRefId":1,"reserveAssetRefId":1,"warrantyRefId":1,"maintenanceRefId":1,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"historyRefId":2,"historyOn":"2026-11-04T18:12:17.4031717Z","event":"Check in","historyDetails":[{"historyDetailsRefId":1,"field":"Status","changeFrom":"Checked out","changeTo":"Available"},{"historyDetailsRefId":2,"field":"Department","changeFrom":"Marketing","changeTo":"Admin"}],"eventTrackingRefId":null,"reserveAssetRefId":null,"warrantyRefId":null,"maintenanceRefId":null,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/histories/{refId}": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset History by RefId",
        "description": "Retrieves a single asset history record by the history's unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the history record (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetHistory>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"historyRefId":1,"historyOn":"2026-11-04T18:12:17.4035628Z","event":"Check out","historyDetails":[{"historyDetailsRefId":11,"field":"Status","changeFrom":"Available","changeTo":"Checked out"}],"eventTrackingRefId":1,"reserveAssetRefId":null,"warrantyRefId":null,"maintenanceRefId":null,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/linkedassets": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Linked Assets by RefId",
        "description": "Retrieves the details of a linked assets by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetLink>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"transactAsWhole":true,"links":[{"assetRefId":101,"linkType":"Parent"},{"assetRefId":102,"linkType":"Child"},{"assetRefId":103,"linkType":"Child"}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/addparent/{parentRefId}": {
      "post": {
        "tags": [
          "Asset"
        ],
        "summary": "Link Parent",
        "description": "Sets a parent for the specified asset, linking the two as a parent/child pair. The parent\r\ncandidate must not itself already have a parent (hierarchy is limited to one level), and\r\nthe asset becoming a child must not already have a parent.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset to become a child. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "parentRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset to set as the parent. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/addchild/{childRefId}": {
      "post": {
        "tags": [
          "Asset"
        ],
        "summary": "Link Child",
        "description": "Sets a child for the specified asset, linking the two as a parent/child pair. The asset\r\nbecoming the parent must not itself already have a parent (hierarchy is limited to one\r\nlevel), and the child candidate must not already be a parent of other assets.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset to become the parent. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "childRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset to set as the child. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/deletelink": {
      "delete": {
        "tags": [
          "Asset"
        ],
        "summary": "Unlink Asset",
        "description": "Removes the parent link for the specified asset, unlinking it from its parent. If the\r\nparent has no remaining children after this, its parent flag is cleared as well.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the child asset whose parent link should be removed. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/transactaswhole": {
      "put": {
        "tags": [
          "Asset"
        ],
        "summary": "Update Transact As A Whole",
        "description": "Updates the \"transact as a whole\" flag for the specified asset and propagates the change\r\nto its parent and all siblings (or to all its children when the asset is itself a parent).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset to update. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "transactAsWhole",
            "in": "query",
            "description": "New value for the \"transact as a whole\" flag. True indicates that this asset and its linking assets should be audited/check-out/checked-in, etc., as a group.",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/contracts": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Contracts by RefId",
        "description": "Returns the list of unique identifiers of all contracts associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<ContractAssetLinked[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"contractRefId":5},{"refId":2,"assetRefId":3,"contractRefId":6}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/insurances": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Insurances by RefId",
        "description": "Returns the list of unique identifiers of all insurances associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InsuranceAssetLinked[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":101,"insuranceRefId":5},{"refId":2,"assetRefId":102,"insuranceRefId":9}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/funds": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Funds by RefId",
        "description": "Returns the list of unique identifiers of all funds associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<FundAssetLinked[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":101,"fundRefId":5,"debitedFromFund":100.00},{"refId":2,"assetRefId":102,"fundRefId":9,"debitedFromFund":50.00}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/warranties": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Warranties by RefId",
        "description": "Returns the list of all warranties associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Indicates whether to include custom fields associated with this warranty (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetWarranty[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"length":5,"expiryDate":"2026-01-01","notes":"Extended manufacturer warranty covering parts and labor.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":1,"customFieldRefId":301,"value":"Gold","customField":{"refId":301,"label":"Warranty Plan","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":false,"hasSelectedCategories":null,"options":["Gold","Silver","Bronze"],"customFieldCategories":null,"counter":null}},{"refId":0,"customFieldRefId":302,"value":"","customField":{"refId":302,"label":"Claim Reference Number","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}}]},{"refId":2,"assetRefId":3,"length":6,"expiryDate":"2026-06-15","notes":"Third-party extended warranty, includes on-site service.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":null}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/maintenances": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Maintenances by RefId",
        "description": "Returns the list of all maintenances associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Indicates whether to include custom fields associated with this maintenance (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetMaintenance[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"title":"Quarterly servicing","details":"Routine inspection and cleaning of internal components.","dueDate":"2026-03-01","maintenanceBy":"John Smith","status":"Scheduled","cost":150.00,"dateCompleted":null,"repeating":true,"frequency":"Monthly","recurEvery":3,"recurOn":1,"recurredFromRefId":null,"isNextRecurrenceCreated":false,"customFieldValues":[{"refId":1,"customFieldRefId":401,"value":"Vendor Service Co.","customField":{"refId":401,"label":"Service Vendor","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":0,"customFieldRefId":402,"value":"","customField":{"refId":402,"label":"Warranty Claim Number","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}}]},{"refId":2,"assetRefId":3,"title":"Hardware repair","details":"Replaced faulty power supply unit.","dueDate":"2026-01-15","maintenanceBy":"Jane Doe","status":"Completed","cost":320.50,"dateCompleted":"2026-01-16","repeating":false,"frequency":null,"recurEvery":null,"recurOn":null,"recurredFromRefId":null,"isNextRecurrenceCreated":false,"customFieldValues":null}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/audits": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Audits by RefId",
        "description": "Returns the list of all audit associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchSiteName",
            "in": "query",
            "description": "Indicates whether to include site name (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchLocationName",
            "in": "query",
            "description": "Indicates whether to include location name (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetAudit[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"auditName":{"refId":1,"name":"Q1 Inventory Audit","locked":false},"auditedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","auditDate":"2026-03-01T00:00:00","siteRefId":1,"siteName":"Main Office","locationRefId":3,"locationName":"Warehouse A","notes":"Asset verified in expected location.","latitude":40.712776,"longitude":-74.005974},{"refId":2,"assetRefId":3,"auditName":{"refId":2,"name":"Annual Compliance Audit","locked":false},"auditedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","auditDate":"2026-01-15T00:00:00","siteRefId":2,"siteName":"Branch Office","locationRefId":5,"locationName":"Storage Room 2","notes":"Minor discrepancy noted, resolved on-site.","latitude":34.052235,"longitude":-118.243683}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/audits/{refId}": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Audit by RefId",
        "description": "Retrieves a single asset audit by the audit's unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchSiteName",
            "in": "query",
            "description": "Indicates whether to include site name (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchLocationName",
            "in": "query",
            "description": "Indicates whether to include location name (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetAudit>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"assetRefId":2,"auditName":{"refId":1,"name":"Q1 Inventory Audit","locked":false},"auditedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","auditDate":"2026-03-01T00:00:00","siteRefId":1,"siteName":"Main Office","locationRefId":3,"locationName":"Warehouse A","notes":"Asset verified in expected location.","latitude":40.712776,"longitude":-74.005974},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/audits/add": {
      "post": {
        "tags": [
          "Asset"
        ],
        "summary": "Add Asset Audit",
        "description": "Adds an audit record to the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddAuditRequest"
                  }
                ],
                "description": "Request model for adding an asset audit."
              },
              "example": {"auditNameRefId":1,"siteRefId":1,"locationRefId":3,"notes":"Asset verified in expected location.","auditDate":"2026-03-01T09:30:00","updateAssetLocation":true,"recordGps":true,"latitude":40.712776,"longitude":-74.005974}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetAudit>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/audits/{auditRefId}/update": {
      "put": {
        "tags": [
          "Asset"
        ],
        "summary": "Update Asset Audit",
        "description": "Updates an audit record on the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "auditRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateAuditRequest"
                  }
                ],
                "description": "Request model for updating an asset audit."
              },
              "example": {"auditNameRefId":1,"siteRefId":1,"locationRefId":3,"notes":"Asset verified in expected location.","updateAssetLocation":true,"recordGps":true,"latitude":40.712776,"longitude":-74.005974}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/audits/{auditRefId}/delete": {
      "delete": {
        "tags": [
          "Asset"
        ],
        "summary": "Delete Asset Audit",
        "description": "Deletes an audit record from the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "auditRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/reservations": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Reservations by RefId",
        "description": "Returns the list of all reservation associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetReservation[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"startTime":"2026-02-01T09:00:00","endTime":"2026-02-05T17:00:00","reserveTo":"John Smith","personEmail":"john.smith@example.com","assignTo":"Person","personRefId":1,"customerRefId":null,"siteRefId":1,"locationRefId":1,"notes":"Reserved for offsite training.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-01-28T10:00:00","emailSent":true,"firstReminderEnabled":true,"firstReminderLeadTimeDays":60,"secondReminderEnabled":false,"secondReminderLeadTimeDays":null,"utc":false},{"refId":2,"assetRefId":3,"startTime":"2026-03-10T09:00:00","endTime":"2026-03-12T17:00:00","reserveTo":"Acme Corp","personEmail":null,"assignTo":"Customer","personRefId":null,"customerRefId":1,"siteRefId":1,"locationRefId":2,"notes":"Reserved for customer demo.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-03-01T14:00:00","emailSent":false,"firstReminderEnabled":true,"firstReminderLeadTimeDays":2,"secondReminderEnabled":false,"secondReminderLeadTimeDays":null,"utc":false}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/reservations/{refId}": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Reservation by RefId",
        "description": "Retrieves a single asset reservation by the reservation's unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the reservation (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetReservation>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"assetRefId":2,"startTime":"2026-02-01T09:00:00","endTime":"2026-02-05T17:00:00","reserveTo":"John Smith","personEmail":"john.smith@example.com","assignTo":"Person","personRefId":1,"customerRefId":null,"siteRefId":1,"locationRefId":1,"notes":"Reserved for offsite training.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-01-28T10:00:00","emailSent":true,"firstReminderEnabled":true,"firstReminderLeadTimeDays":60,"secondReminderEnabled":false,"secondReminderLeadTimeDays":null,"utc":false},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/customfields": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Custom Fields",
        "description": "Get Asset custom fields.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomField>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0},{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":true,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":0}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/settings": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Settings",
        "description": "Get Asset Settings.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetSetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"field_AssetTagID_Enabled":true,"field_AssetTagID_Required":true,"field_AssetDescription_Enabled":true,"field_AssetDescription_Required":true,"field_PurchaseDate_Enabled":true,"field_PurchaseDate_Required":false,"field_Cost_Enabled":true,"field_Cost_Required":false,"field_PurchasedFrom_Enabled":true,"field_PurchasedFrom_Required":false,"field_Brand_Enabled":true,"field_Brand_Required":false,"field_Model_Enabled":true,"field_Model_Required":false,"field_SerialNo_Enabled":true,"field_SerialNo_Required":false},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/customeventsettings/{refId}": {
      "get": {
        "tags": [
          "Asset"
        ],
        "summary": "Get Asset Custom Event Setting by RefId",
        "description": "Retrieves the field configuration (enabled/disabled, required) for a single custom event\r\nby its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the custom event (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomEventSetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"eventName":"Retired","eventDescription":"Asset has been retired from active use.","eventIcon":"address-book","eventIconClass":"las la-address-book","eventColor":"Danube","eventColorCode":"#578ebe","field_Event_Enabled":true,"field_Date1_Enabled":true,"field_Date1_Required":true,"field_Date1_Time_Enable":false,"field_Date1_Label":"Retirement Date","field_Date2_Enabled":false,"field_Date2_Required":false,"field_Date2_Time_Enable":false,"field_Date2_Label":"Date 2","field_Text_Enabled":true,"field_Text_Required":false,"field_Text_Label":"Reason","field_Currency_Enabled":false,"field_Currency_Required":false,"field_Currency_Label":"Amount","field_Boolean_Enabled":false,"field_Boolean_Label":"Question","field_Notes_Enabled":true,"field_Notes_Required":false,"field_Notes_Label":"Notes","field_Person_Enabled":true,"field_Person_Required":false,"field_Customer_Enabled":false,"field_Customer_Required":false,"field_SiteLocation_Enabled":false,"field_SiteLocation_Required":false,"field_Signature_Enable":false,"field_Signature_Required":false,"field_SignatureDisclaimer_Text":null,"field_IsReturnEvent":false,"primary_CustomRefId":null},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/add": {
      "post": {
        "tags": [
          "Asset"
        ],
        "summary": "Add Asset",
        "description": "Creates a Asset using the provided request.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddAssetRequest"
                  }
                ],
                "description": "Request model for adding an asset.\r\nContains core item details, category/location assignment, purchase and depreciation\r\ninformation, and optional custom fields."
              },
              "example": {"assetTagId":"AST-000001","description":"Sample Dell Laptop","brand":"Dell","model":"Latitude 5420","serialNo":"SN-123456789","purchaseDate":"2025-01-01","purchaseFrom":"Example Vendor Inc.","cost":1200.00,"siteRefId":1,"locationRefId":1,"categoryRefId":1,"subCategoryRefId":1,"departmentRefId":1,"depreciationMethod":"StraightLine","dateAcquired":"2025-01-01","isDepreciable":true,"initialCost":1200.00,"salvageValue":100.00,"assetLife":36,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Asset>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/update": {
      "put": {
        "tags": [
          "Asset"
        ],
        "summary": "Update Asset",
        "description": "Update a Asset using the provided request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateAssetRequest"
                  }
                ],
                "description": "Request model for update an asset.\r\nContains core item details, category/location assignment, purchase and depreciation\r\ninformation, and optional custom fields."
              },
              "example": {"assetTagId":"AST-000001","description":"Sample Dell Laptop","brand":"Dell","model":"Latitude 5420","serialNo":"SN-123456789","purchaseDate":"2025-01-01","purchaseFrom":"Example Vendor Inc.","cost":1200.00,"siteRefId":1,"locationRefId":1,"categoryRefId":1,"subCategoryRefId":1,"departmentRefId":1,"depreciationMethod":"StraightLine","dateAcquired":"2025-01-01","isDepreciable":true,"initialCost":1200.00,"salvageValue":100.00,"assetLife":36,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/delete": {
      "delete": {
        "tags": [
          "Asset"
        ],
        "summary": "Delete Asset",
        "description": "Deletes a asset by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/deletebulk": {
      "delete": {
        "tags": [
          "Asset"
        ],
        "summary": "Delete Assets",
        "description": "Deletes multiple assets by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of asset unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of asset unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset by RefId",
        "description": "Retrieves the details of a asset by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the asset (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Indicates whether to include custom fields associated with this asset (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchEvent",
            "in": "query",
            "description": "Indicates whether to include current event associated with this asset (default: false).\r\nAlso controls whether Status, EventRefId, and Event are populated in the response �\r\nall three are null when this is false, regardless of the asset's actual state.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchReservation",
            "in": "query",
            "description": "Indicates whether to include reservation associated with this asset (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Asset>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":101,"assetTagId":"AT-00101","description":"Dell Laptop 15\" i7","defaultImageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","brand":"Dell","model":"Latitude 5540","serialNo":"SN-DELL-000101","purchaseDate":"2023-06-15","purchaseFrom":"Dell Technologies","cost":1249.99,"dateAdded":"2023-06-16T10:30:00Z","siteRefId":3,"siteName":"Head Office","locationRefId":7,"locationName":"IT Storage Room","categoryRefId":2,"categoryName":"IT Equipment","subCategoryRefId":5,"subCategoryName":"Laptops","departmentRefId":4,"departmentName":"Engineering","depreciationMethod":"StraightLine","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","eventRefId":55,"event":{"refId":55,"eventType":"Checkout","assetRefId":101,"customEventRefId":null,"personRefId":12,"customerRefId":null,"siteRefId":null,"locationRefId":null,"addedByRefGuid":null,"date1":"2024-01-10T09:00:00Z","date2":"2024-01-24T09:00:00Z","dateAdded":"2024-01-10T09:00:00Z","personName":"John Smith","notes":"Checked out for project work.","amount":null,"signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","deductible":false,"booleanField":null,"textField":null,"currencyField":null,"utc":true},"dateAcquired":"2023-06-15","isDepreciable":true,"initialCost":1249.99,"salvageValue":100.00,"assetLife":36,"status":"Checkout","currentCost":50.00,"linked":false,"linkType":null,"customEventRefId":null,"reservation":{"refId":8,"assetRefId":101,"startTime":"2024-02-01T08:00:00Z","endTime":"2024-02-05T18:00:00Z","reserveTo":"Jane Doe","personEmail":null,"assignTo":"Person","personRefId":15,"customerRefId":null,"siteRefId":null,"locationRefId":null,"notes":"Reserved for training session.","addedByRefGuId":null,"dateAdded":"0001-01-01T00:00:00","emailSent":false,"firstReminderEnabled":false,"firstReminderLeadTimeDays":null,"secondReminderEnabled":false,"secondReminderLeadTimeDays":null,"utc":true},"customFieldValues":[{"refId":1,"customFieldRefId":201,"value":"Windows 11 Pro","customField":{"refId":201,"label":"Operating System","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0}},{"refId":2,"customFieldRefId":202,"value":"2024-01-31","customField":{"refId":202,"label":"Warranty Expiry","fieldType":{"refId":5,"name":"Date","hasList":false,"fieldName":"DATE"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0}},{"refId":3,"customFieldRefId":203,"value":"Good","customField":{"refId":203,"label":"Condition","fieldType":{"refId":7,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":true,"options":["Excellent","Good","Fair","Poor"],"customFieldCategories":null,"counter":0}},{"refId":4,"customFieldRefId":203,"value":"10","customField":{"refId":203,"label":"NextNumber","fieldType":{"refId":7,"name":"Numeric Auto Increment","hasList":true,"fieldName":"NUMERICAUTOINCREMENT"},"isRequired":true,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":11}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Assets",
        "description": "Retrieves list of assets filtered and sorted based on the provided query parameters.\r\nSupports searching by category, subcategory, site, location, department, person , customer, status, keywords, and various fields, with flexible sorting and pagination options.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter assets by defined asset search fields. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter assets by defined asset search fields. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Asset fields that searchKeyword is matched against. Always provide at least one field (or searchCustomFields) when using searchKeyword; if neither is provided, searchKeyword is not applied. Allowed values: AssetTagId, Description, Brand, Model, SerialNo, PurchaseFrom.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Asset fields that searchKeyword is matched against. Always provide at least one field (or searchCustomFields) when using searchKeyword; if neither is provided, searchKeyword is not applied. Allowed values: AssetTagId, Description, Brand, Model, SerialNo, PurchaseFrom.",
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which asset custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which asset custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "categoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
              "format": "int32"
            }
          },
          {
            "name": "subCategoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
              "format": "int32"
            }
          },
          {
            "name": "siteRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the site to filter by. Pass 0 to filter unassigned sites.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the site to filter by. Pass 0 to filter unassigned sites.",
              "format": "int32"
            }
          },
          {
            "name": "locationRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the location to filter by. If provided, siteRefId must also be specified. Pass 0 to filter unassigned locations.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the location to filter by. If provided, siteRefId must also be specified. Pass 0 to filter unassigned locations.",
              "format": "int32"
            }
          },
          {
            "name": "departmentRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the department to filter by. Pass 0 to filter unassigned departments.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the department to filter by. Pass 0 to filter unassigned departments.",
              "format": "int32"
            }
          },
          {
            "name": "personRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the assigned person to filter by.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the assigned person to filter by.",
              "format": "int32"
            }
          },
          {
            "name": "customerRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the assigned customer to filter by.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the assigned customer to filter by.",
              "format": "int32"
            }
          },
          {
            "name": "EventTypes",
            "in": "query",
            "description": "Filters assets by the specified event types. Selecting \"Custom\" includes all user-defined custom events.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/EventType"
              },
              "description": "Filters assets by the specified event types. Selecting \"Custom\" includes all user-defined custom events.",
              "nullable": true
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Allowed values: AssetTagId, Description, Brand, Model, SerialNo, PurchaseDate, PurchaseFrom, InitialCost, DateCreated, CreatedBy, CategoryName, SubCategoryName, SiteName, LocationName, DepartmentName, isDepreciable, SalvageValue, AssetLife, DepreciationMethodName, DateAcquired, Status, IsLinked, Relation, CurrentCost, PersonName, Notes, Cost, Reservation, EventDate1, EventDate2, LeaseTo.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering asset records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering asset records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering asset records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering asset records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filtering should apply to. Ignored if dateRangeByCustomField is provided. Default: \"DateCreated\" Allowed values: DateCreated, PurchaseDate, DateAcquired.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "dateRangeByCustomField",
            "in": "query",
            "description": "Defines which custom date field the filter should apply to. Provide the Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which custom date field the filter should apply to. Provide the Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "fetchCategoryName",
            "in": "query",
            "description": "Whether to include category name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include category name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchSubCategoryName",
            "in": "query",
            "description": "Whether to include subcategory name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include subcategory name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchSiteName",
            "in": "query",
            "description": "Whether to include site name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include site name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchLocationName",
            "in": "query",
            "description": "Whether to include location name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include location name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchDepartmentName",
            "in": "query",
            "description": "Whether to include department name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include department name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchEvent",
            "in": "query",
            "description": "Whether to include the current event associated with each asset in the response. Default: false. Also controls whether Status, EventRefId, and Event are populated on each returned asset — all three are null when this is false, regardless of the asset's actual state.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include the current event associated with each asset in the response. Default: false. Also controls whether Status, EventRefId, and Event are populated on each returned asset — all three are null when this is false, regardless of the asset's actual state.",
              "default": false
            }
          },
          {
            "name": "fetchReservation",
            "in": "query",
            "description": "Whether to include the current reservation associated with each asset in the response. Default: false.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include the current reservation associated with each asset in the response. Default: false.",
              "default": false
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Asset[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":101,"assetTagId":"AT-00101","description":"Dell Laptop 15\" i7","defaultImageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","brand":"Dell","model":"Latitude 5540","serialNo":"SN-DELL-000101","purchaseDate":"2023-06-15","purchaseFrom":"Dell Technologies","cost":1249.99,"dateAdded":"2023-06-16T10:30:00Z","siteRefId":3,"siteName":"Head Office","locationRefId":7,"locationName":"IT Storage Room","categoryRefId":2,"categoryName":"IT Equipment","subCategoryRefId":5,"subCategoryName":"Laptops","departmentRefId":4,"departmentName":"Engineering","depreciationMethod":"StraightLine","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","eventRefId":55,"event":{"refId":55,"eventType":"Checkout","assetRefId":101,"customEventRefId":null,"personRefId":12,"customerRefId":null,"siteRefId":null,"locationRefId":null,"addedByRefGuid":null,"date1":"2024-01-10T09:00:00Z","date2":"2024-01-24T09:00:00Z","dateAdded":"2024-01-10T09:00:00Z","personName":"John Smith","notes":"Checked out for project work.","amount":null,"signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","deductible":false,"booleanField":null,"textField":null,"currencyField":null,"utc":true},"dateAcquired":"2023-06-15","isDepreciable":true,"initialCost":1249.99,"salvageValue":100.00,"assetLife":36,"status":"Checkout","currentCost":50.00,"linked":false,"linkType":null,"customEventRefId":null,"reservation":{"refId":8,"assetRefId":101,"startTime":"2024-02-01T08:00:00Z","endTime":"2024-02-05T18:00:00Z","reserveTo":"Jane Doe","personEmail":null,"assignTo":"Person","personRefId":15,"customerRefId":null,"siteRefId":null,"locationRefId":null,"notes":"Reserved for training session.","addedByRefGuId":null,"dateAdded":"0001-01-01T00:00:00","emailSent":false,"firstReminderEnabled":false,"firstReminderLeadTimeDays":null,"secondReminderEnabled":false,"secondReminderLeadTimeDays":null,"utc":true},"customFieldValues":[{"refId":1,"customFieldRefId":201,"value":"Windows 11 Pro","customField":{"refId":201,"label":"Operating System","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":2,"customFieldRefId":202,"value":"2024-01-31","customField":{"refId":202,"label":"Warranty Expiry","fieldType":{"refId":5,"name":"Date","hasList":false,"fieldName":"DATE"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":3,"customFieldRefId":203,"value":"Good","customField":{"refId":203,"label":"Condition","fieldType":{"refId":7,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":null,"options":["Excellent","Good","Fair","Poor"],"customFieldCategories":null,"counter":null}}]},{"refId":102,"assetTagId":"AT-00102","description":"Apple MacBook Pro 16-inch","defaultImageRefGuid":"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy","brand":"Apple","model":"MacBook Pro M3 Max","serialNo":"APL-MBP-00102","purchaseDate":"2024-02-20","purchaseFrom":"Apple Store","cost":3299.99,"dateAdded":"2024-02-21T14:15:00Z","siteRefId":5,"siteName":"New York Office","locationRefId":18,"locationName":"Executive Office","categoryRefId":2,"categoryName":"IT Equipment","subCategoryRefId":5,"subCategoryName":"Laptops","departmentRefId":7,"departmentName":"Management","depreciationMethod":"DoubleDecliningBalance","addedByRefGuid":"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy","eventRefId":82,"event":{"refId":82,"eventType":"CheckIn","assetRefId":102,"customEventRefId":null,"personRefId":35,"customerRefId":null,"siteRefId":null,"locationRefId":null,"addedByRefGuid":null,"date1":"2024-07-15T16:45:00Z","date2":"2024-07-15T17:15:00Z","dateAdded":"2024-07-15T17:20:00Z","personName":"Emily Johnson","notes":"Returned after executive presentation.","amount":null,"signature":"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy","deductible":false,"booleanField":null,"textField":null,"currencyField":null,"utc":true},"dateAcquired":"2024-02-20","isDepreciable":true,"initialCost":3299.99,"salvageValue":500.00,"assetLife":48,"status":"Available","currentCost":3025.50,"linked":false,"linkType":null,"customEventRefId":null,"reservation":{"refId":12,"assetRefId":101,"startTime":"2024-08-05T09:00:00Z","endTime":"2024-08-07T18:00:00Z","reserveTo":"Emily Johnson","personEmail":null,"assignTo":"Person","personRefId":35,"customerRefId":null,"siteRefId":5,"locationRefId":18,"notes":"Reserved for annual board meeting.","addedByRefGuId":null,"dateAdded":"0001-01-01T00:00:00","emailSent":false,"firstReminderEnabled":false,"firstReminderLeadTimeDays":null,"secondReminderEnabled":false,"secondReminderLeadTimeDays":null,"utc":true},"customFieldValues":[{"refId":4,"customFieldRefId":201,"value":"macOS Sequoia","customField":{"refId":201,"label":"Operating System","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":5,"customFieldRefId":202,"value":"2027-02-20","customField":{"refId":202,"label":"Warranty Expiry","fieldType":{"refId":5,"name":"Date","hasList":false,"fieldName":"DATE"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":6,"customFieldRefId":203,"value":"Excellent","customField":{"refId":203,"label":"Condition","fieldType":{"refId":7,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":null,"options":["Excellent","Good","Fair","Poor"],"customFieldCategories":null,"counter":null}}]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/images": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Images by RefId",
        "description": "Retrieves the list of images linked to a given asset along with metadata such as file name, upload date, and URL paths.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Image[]>"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/documents": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Documents by RefId",
        "description": "Retrieves the list of documents linked to a given asset, including metadata such as file name, description, upload date, type.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"front.jpg","description":"Front view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.4168343Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"back.jpg","description":"Back view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.4168345Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Events by RefId",
        "description": "Retrieves the list of events associated with given asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Default: \"DateCreated\". Allowed values: DateCreated, StartDate, EndDate.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":101,"eventType":"Checkout","assetRefId":1,"customEventRefId":null,"personRefId":1,"customerRefId":null,"siteRefId":1,"locationRefId":1,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","date1":"2024-05-01T09:00:00","date2":"2024-05-31T18:00:00","dateAdded":"2024-05-01T00:00:00","personName":"Robert Bennett","notes":"Checked out for field project.","amount":null,"signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","deductible":false,"booleanField":null,"textField":null,"currencyField":null,"utc":true},{"refId":103,"eventType":"Lease","assetRefId":6,"customEventRefId":null,"personRefId":null,"customerRefId":1,"siteRefId":null,"locationRefId":null,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","date1":"2024-03-01T00:00:00","date2":"2024-12-31T00:00:00","dateAdded":"2024-03-01T00:00:00","personName":"TechNova Inc","notes":"Leased to TechNova Inc for 12-month contract.","amount":250.00,"signature":null,"deductible":false,"booleanField":null,"textField":null,"currencyField":null,"utc":true}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/events/{refId}": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Event by RefId",
        "description": "Retrieves a single asset event by the event's unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the event (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":101,"eventType":"Checkout","assetRefId":1,"customEventRefId":null,"personRefId":1,"customerRefId":null,"siteRefId":1,"locationRefId":1,"addedByRefGuid":null,"date1":"2024-05-01T09:00:00","date2":"2024-05-31T18:00:00","dateAdded":"2024-05-01T00:00:00","personName":"Robert Bennett","notes":"Checked out for field project.","amount":null,"signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","deductible":false,"booleanField":null,"textField":null,"currencyField":null,"utc":true},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/histories": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Histories by RefId",
        "description": "Retrieves the list of a asset history by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The start date for filtering asset history records. Returns records on or after this date. Format: \"yyyy-MM-dd\". Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering asset history records. Returns records on or after this date. Format: \"yyyy-MM-dd\". Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The end date for filtering asset history records. Returns records on or before this date. Format: \"yyyy-MM-dd\". Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering asset history records. Returns records on or before this date. Format: \"yyyy-MM-dd\". Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Desc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetHistory[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"historyRefId":1,"historyOn":"2026-11-04T18:12:17.4177594Z","event":"Check out","historyDetails":[{"historyDetailsRefId":11,"field":"Status","changeFrom":"Available","changeTo":"Checked out"}],"eventTrackingRefId":1,"reserveAssetRefId":1,"warrantyRefId":1,"maintenanceRefId":1,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"historyRefId":2,"historyOn":"2026-11-04T18:12:17.4177604Z","event":"Check in","historyDetails":[{"historyDetailsRefId":1,"field":"Status","changeFrom":"Checked out","changeTo":"Available"},{"historyDetailsRefId":2,"field":"Department","changeFrom":"Marketing","changeTo":"Admin"}],"eventTrackingRefId":null,"reserveAssetRefId":null,"warrantyRefId":null,"maintenanceRefId":null,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/histories/{refId}": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset History by RefId",
        "description": "Retrieves a single asset history record by the history's unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the history record (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetHistory>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"historyRefId":1,"historyOn":"2026-11-04T18:12:17.4179368Z","event":"Check out","historyDetails":[{"historyDetailsRefId":11,"field":"Status","changeFrom":"Available","changeTo":"Checked out"}],"eventTrackingRefId":1,"reserveAssetRefId":null,"warrantyRefId":null,"maintenanceRefId":null,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/linkedassets": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Linked Assets by RefId",
        "description": "Retrieves the details of a linked assets by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetLink>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"transactAsWhole":true,"links":[{"assetRefId":101,"linkType":"Parent"},{"assetRefId":102,"linkType":"Child"},{"assetRefId":103,"linkType":"Child"}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/addparent/{parentRefId}": {
      "post": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Link Parent",
        "description": "Sets a parent for the specified asset, linking the two as a parent/child pair. The parent\r\ncandidate must not itself already have a parent (hierarchy is limited to one level), and\r\nthe asset becoming a child must not already have a parent.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset to become a child. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "parentRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset to set as the parent. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/addchild/{childRefId}": {
      "post": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Link Child",
        "description": "Sets a child for the specified asset, linking the two as a parent/child pair. The asset\r\nbecoming the parent must not itself already have a parent (hierarchy is limited to one\r\nlevel), and the child candidate must not already be a parent of other assets.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset to become the parent. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "childRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset to set as the child. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/deletelink": {
      "delete": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Unlink Asset",
        "description": "Removes the parent link for the specified asset, unlinking it from its parent. If the\r\nparent has no remaining children after this, its parent flag is cleared as well.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the child asset whose parent link should be removed. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/transactaswhole": {
      "put": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Update Transact As A Whole",
        "description": "Updates the \"transact as a whole\" flag for the specified asset and propagates the change\r\nto its parent and all siblings (or to all its children when the asset is itself a parent).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset to update. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "transactAsWhole",
            "in": "query",
            "description": "New value for the \"transact as a whole\" flag. True indicates that this asset and its linking assets should be audited/check-out/checked-in, etc., as a group.",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/contracts": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Contracts by RefId",
        "description": "Returns the list of unique identifiers of all contracts associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<ContractAssetLinked[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"contractRefId":5},{"refId":2,"assetRefId":3,"contractRefId":6}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/insurances": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Insurances by RefId",
        "description": "Returns the list of unique identifiers of all insurances associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InsuranceAssetLinked[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":101,"insuranceRefId":5},{"refId":2,"assetRefId":102,"insuranceRefId":9}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/funds": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Funds by RefId",
        "description": "Returns the list of unique identifiers of all funds associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<FundAssetLinked[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":101,"fundRefId":5,"debitedFromFund":100.00},{"refId":2,"assetRefId":102,"fundRefId":9,"debitedFromFund":50.00}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/warranties": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Warranties by RefId",
        "description": "Returns the list of all warranties associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Indicates whether to include custom fields associated with this warranty (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetWarranty[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"length":5,"expiryDate":"2026-01-01","notes":"Extended manufacturer warranty covering parts and labor.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":1,"customFieldRefId":301,"value":"Gold","customField":{"refId":301,"label":"Warranty Plan","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":false,"hasSelectedCategories":null,"options":["Gold","Silver","Bronze"],"customFieldCategories":null,"counter":null}},{"refId":0,"customFieldRefId":302,"value":"","customField":{"refId":302,"label":"Claim Reference Number","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}}]},{"refId":2,"assetRefId":3,"length":6,"expiryDate":"2026-06-15","notes":"Third-party extended warranty, includes on-site service.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":null}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/maintenances": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Maintenances by RefId",
        "description": "Returns the list of all maintenances associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Indicates whether to include custom fields associated with this maintenance (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetMaintenance[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"title":"Quarterly servicing","details":"Routine inspection and cleaning of internal components.","dueDate":"2026-03-01","maintenanceBy":"John Smith","status":"Scheduled","cost":150.00,"dateCompleted":null,"repeating":true,"frequency":"Monthly","recurEvery":3,"recurOn":1,"recurredFromRefId":null,"isNextRecurrenceCreated":false,"customFieldValues":[{"refId":1,"customFieldRefId":401,"value":"Vendor Service Co.","customField":{"refId":401,"label":"Service Vendor","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":0,"customFieldRefId":402,"value":"","customField":{"refId":402,"label":"Warranty Claim Number","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}}]},{"refId":2,"assetRefId":3,"title":"Hardware repair","details":"Replaced faulty power supply unit.","dueDate":"2026-01-15","maintenanceBy":"Jane Doe","status":"Completed","cost":320.50,"dateCompleted":"2026-01-16","repeating":false,"frequency":null,"recurEvery":null,"recurOn":null,"recurredFromRefId":null,"isNextRecurrenceCreated":false,"customFieldValues":null}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/audits": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Audits by RefId",
        "description": "Returns the list of all audit associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchSiteName",
            "in": "query",
            "description": "Indicates whether to include site name (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchLocationName",
            "in": "query",
            "description": "Indicates whether to include location name (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetAudit[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"auditName":{"refId":1,"name":"Q1 Inventory Audit","locked":false},"auditedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","auditDate":"2026-03-01T00:00:00","siteRefId":1,"siteName":"Main Office","locationRefId":3,"locationName":"Warehouse A","notes":"Asset verified in expected location.","latitude":40.712776,"longitude":-74.005974},{"refId":2,"assetRefId":3,"auditName":{"refId":2,"name":"Annual Compliance Audit","locked":false},"auditedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","auditDate":"2026-01-15T00:00:00","siteRefId":2,"siteName":"Branch Office","locationRefId":5,"locationName":"Storage Room 2","notes":"Minor discrepancy noted, resolved on-site.","latitude":34.052235,"longitude":-118.243683}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/audits/{refId}": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Audit by RefId",
        "description": "Retrieves a single asset audit by the audit's unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchSiteName",
            "in": "query",
            "description": "Indicates whether to include site name (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchLocationName",
            "in": "query",
            "description": "Indicates whether to include location name (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetAudit>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"assetRefId":2,"auditName":{"refId":1,"name":"Q1 Inventory Audit","locked":false},"auditedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","auditDate":"2026-03-01T00:00:00","siteRefId":1,"siteName":"Main Office","locationRefId":3,"locationName":"Warehouse A","notes":"Asset verified in expected location.","latitude":40.712776,"longitude":-74.005974},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/audits/add": {
      "post": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Add Asset Audit",
        "description": "Adds an audit record to the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddAuditRequest"
                  }
                ],
                "description": "Request model for adding an asset audit."
              },
              "example": {"auditNameRefId":1,"siteRefId":1,"locationRefId":3,"notes":"Asset verified in expected location.","auditDate":"2026-03-01T09:30:00","updateAssetLocation":true,"recordGps":true,"latitude":40.712776,"longitude":-74.005974}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetAudit>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/audits/{auditRefId}/update": {
      "put": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Update Asset Audit",
        "description": "Updates an audit record on the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "auditRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateAuditRequest"
                  }
                ],
                "description": "Request model for updating an asset audit."
              },
              "example": {"auditNameRefId":1,"siteRefId":1,"locationRefId":3,"notes":"Asset verified in expected location.","updateAssetLocation":true,"recordGps":true,"latitude":40.712776,"longitude":-74.005974}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/audits/{auditRefId}/delete": {
      "delete": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Delete Asset Audit",
        "description": "Deletes an audit record from the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "auditRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/reservations": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Reservations by RefId",
        "description": "Returns the list of all reservation associated with the specified asset.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetReservation[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"startTime":"2026-02-01T09:00:00","endTime":"2026-02-05T17:00:00","reserveTo":"John Smith","personEmail":"john.smith@example.com","assignTo":"Person","personRefId":1,"customerRefId":null,"siteRefId":1,"locationRefId":1,"notes":"Reserved for offsite training.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-01-28T10:00:00","emailSent":true,"firstReminderEnabled":true,"firstReminderLeadTimeDays":60,"secondReminderEnabled":false,"secondReminderLeadTimeDays":null,"utc":false},{"refId":2,"assetRefId":3,"startTime":"2026-03-10T09:00:00","endTime":"2026-03-12T17:00:00","reserveTo":"Acme Corp","personEmail":null,"assignTo":"Customer","personRefId":null,"customerRefId":1,"siteRefId":1,"locationRefId":2,"notes":"Reserved for customer demo.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-03-01T14:00:00","emailSent":false,"firstReminderEnabled":true,"firstReminderLeadTimeDays":2,"secondReminderEnabled":false,"secondReminderLeadTimeDays":null,"utc":false}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/reservations/{refId}": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Reservation by RefId",
        "description": "Retrieves a single asset reservation by the reservation's unique identifier (refId).\r\nThe asset the reservation belongs to is returned in AssetRefId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the reservation (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetReservation>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"assetRefId":2,"startTime":"2026-02-01T09:00:00","endTime":"2026-02-05T17:00:00","reserveTo":"John Smith","personEmail":"john.smith@example.com","assignTo":"Person","personRefId":1,"customerRefId":null,"siteRefId":1,"locationRefId":1,"notes":"Reserved for offsite training.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-01-28T10:00:00","emailSent":true,"firstReminderEnabled":true,"firstReminderLeadTimeDays":60,"secondReminderEnabled":false,"secondReminderLeadTimeDays":null,"utc":false},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/customfields": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Custom Fields",
        "description": "Get Asset custom fields.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomField>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0},{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":true,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":0}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/settings": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Settings",
        "description": "Get Asset Settings.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetSetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"field_AssetTagID_Enabled":true,"field_AssetTagID_Required":true,"field_AssetDescription_Enabled":true,"field_AssetDescription_Required":true,"field_PurchaseDate_Enabled":true,"field_PurchaseDate_Required":false,"field_Cost_Enabled":true,"field_Cost_Required":false,"field_PurchasedFrom_Enabled":true,"field_PurchasedFrom_Required":false,"field_Brand_Enabled":true,"field_Brand_Required":false,"field_Model_Enabled":true,"field_Model_Required":false,"field_SerialNo_Enabled":true,"field_SerialNo_Required":false},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/customeventsettings/{refId}": {
      "get": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Get Asset Custom Event Setting by RefId",
        "description": "Retrieves the field configuration (enabled/disabled, required) for a single custom event\r\nby its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the custom event (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomEventSetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"eventName":"Retired","eventDescription":"Asset has been retired from active use.","eventIcon":"address-book","eventIconClass":"las la-address-book","eventColor":"Danube","eventColorCode":"#578ebe","field_Event_Enabled":true,"field_Date1_Enabled":true,"field_Date1_Required":true,"field_Date1_Time_Enable":false,"field_Date1_Label":"Retirement Date","field_Date2_Enabled":false,"field_Date2_Required":false,"field_Date2_Time_Enable":false,"field_Date2_Label":"Date 2","field_Text_Enabled":true,"field_Text_Required":false,"field_Text_Label":"Reason","field_Currency_Enabled":false,"field_Currency_Required":false,"field_Currency_Label":"Amount","field_Boolean_Enabled":false,"field_Boolean_Label":"Question","field_Notes_Enabled":true,"field_Notes_Required":false,"field_Notes_Label":"Notes","field_Person_Enabled":true,"field_Person_Required":false,"field_Customer_Enabled":false,"field_Customer_Required":false,"field_SiteLocation_Enabled":false,"field_SiteLocation_Required":false,"field_Signature_Enable":false,"field_Signature_Required":false,"field_SignatureDisclaimer_Text":null,"field_IsReturnEvent":false,"primary_CustomRefId":null},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/add": {
      "post": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Add Asset",
        "description": "Creates a Asset using the provided request.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddAssetRequest"
                  }
                ],
                "description": "Request model for adding an asset.\r\nContains core item details, category/location assignment, purchase and depreciation\r\ninformation, and optional custom fields."
              },
              "example": {"assetTagId":"AST-000001","description":"Sample Dell Laptop","brand":"Dell","model":"Latitude 5420","serialNo":"SN-123456789","purchaseDate":"2025-01-01","purchaseFrom":"Example Vendor Inc.","cost":1200.00,"siteRefId":1,"locationRefId":1,"categoryRefId":1,"subCategoryRefId":1,"departmentRefId":1,"depreciationMethod":"StraightLine","dateAcquired":"2025-01-01","isDepreciable":true,"initialCost":1200.00,"salvageValue":100.00,"assetLife":36,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Asset>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/update": {
      "put": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Update Asset",
        "description": "Update a Asset using the provided request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateAssetRequest"
                  }
                ],
                "description": "Request model for update an asset.\r\nContains core item details, category/location assignment, purchase and depreciation\r\ninformation, and optional custom fields."
              },
              "example": {"assetTagId":"AST-000001","description":"Sample Dell Laptop","brand":"Dell","model":"Latitude 5420","serialNo":"SN-123456789","purchaseDate":"2025-01-01","purchaseFrom":"Example Vendor Inc.","cost":1200.00,"siteRefId":1,"locationRefId":1,"categoryRefId":1,"subCategoryRefId":1,"departmentRefId":1,"depreciationMethod":"StraightLine","dateAcquired":"2025-01-01","isDepreciable":true,"initialCost":1200.00,"salvageValue":100.00,"assetLife":36,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Asset>"
                },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/delete": {
      "delete": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Delete Asset",
        "description": "Deletes a Asset by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/deletebulk": {
      "delete": {
        "tags": [
          "AssetSandbox"
        ],
        "summary": "Delete Assets",
        "description": "Deletes multiple Assets by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of asset unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of asset unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/audits/auditnames": {
      "get": {
        "tags": [
          "Audit"
        ],
        "summary": "Get Audit Names",
        "description": "Retrieves the list of audit names, including whether each one is locked and how many active assets have been audited under it.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AuditName[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"Q1 Inventory Audit","locked":false,"assetCount":42},{"refId":2,"name":"Annual Compliance Audit","locked":true,"assetCount":118}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/audits/auditnames/{refId}": {
      "get": {
        "tags": [
          "Audit"
        ],
        "summary": "Get Audit Name by RefId",
        "description": "Retrieves a single audit name by its unique identifier (refId), including whether it is locked and how many active assets have been audited under it.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit name (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AuditName>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"Q1 Inventory Audit","locked":false,"assetCount":42},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/audits/auditnames/add": {
      "post": {
        "tags": [
          "Audit"
        ],
        "summary": "Add Audit Name",
        "description": "Creates a new audit name. The name must be unique.",
        "requestBody": {
          "description": "Contains the name to create.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuditNameRequest"
                  }
                ],
                "description": "Request model for adding/updating an audit name."
              },
              "example": {"name":"Q3 Inventory Audit"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AuditName>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":3},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/audits/auditnames/{refId}/update": {
      "put": {
        "tags": [
          "Audit"
        ],
        "summary": "Update Audit Name",
        "description": "Updates the name of an existing audit name. The new name must be unique.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit name. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the updated name.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuditNameRequest"
                  }
                ],
                "description": "Request model for adding/updating an audit name."
              },
              "example": {"name":"Q3 Inventory Audit"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/audits/auditnames/{refId}/delete": {
      "delete": {
        "tags": [
          "Audit"
        ],
        "summary": "Delete Audit Name",
        "description": "Deletes an audit name and all its associated audit records.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit name. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/audits/auditnames/{refId}/lockunlock": {
      "put": {
        "tags": [
          "Audit"
        ],
        "summary": "Lock/Unlock Audit Name",
        "description": "Locks or unlocks an audit name. While locked, assets cannot be audited against it.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit name. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "locked",
            "in": "query",
            "description": "True to lock the audit name; false to unlock it.",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/audits/bulkaudit": {
      "post": {
        "tags": [
          "Audit"
        ],
        "summary": "Bulk Audit",
        "description": "Audits multiple assets against one audit name in a single request (maximum 100 assets).\r\nAssets that are inactive, not found, outside your access, or already audited under the\r\naudit name are skipped. The response returns ```auditedCount``` and\r\n```skippedCount```, plus each skipped asset's RefId and reason in\r\n```skippedAssets```. Returns 422 when none of the assets could be audited.",
        "requestBody": {
          "description": "Audit details plus the asset RefIds to audit.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BulkAuditRequest"
                  }
                ],
                "description": "Request model for auditing multiple assets against one audit name in a single request."
              },
              "example": {"assetRefIds":[1,2,3,4],"auditNameRefId":1,"siteRefId":1,"locationRefId":3,"notes":"Quarterly floor audit.","auditDate":"2025-01-01T10:30:00","updateAssetLocation":true,"recordGps":true,"latitude":40.712776,"longitude":-74.005974}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<BulkAudit>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"auditedCount":3,"skippedCount":1,"skippedAssets":[{"assetRefId":3,"message":"Asset is already audited under this audit name."}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/audits/auditnames": {
      "get": {
        "tags": [
          "AuditSandbox"
        ],
        "summary": "Get Audit Names",
        "description": "Retrieves the list of audit names, including whether each one is locked and how many active assets have been audited under it.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AuditName[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"Q1 Inventory Audit","locked":false,"assetCount":42},{"refId":2,"name":"Annual Compliance Audit","locked":true,"assetCount":118}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/audits/auditnames/{refId}": {
      "get": {
        "tags": [
          "AuditSandbox"
        ],
        "summary": "Get Audit Name by RefId",
        "description": "Retrieves a single audit name by its unique identifier (refId), including whether it is locked and how many active assets have been audited under it.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit name (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AuditName>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"Q1 Inventory Audit","locked":false,"assetCount":42},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/audits/auditnames/add": {
      "post": {
        "tags": [
          "AuditSandbox"
        ],
        "summary": "Add Audit Name",
        "description": "Creates a new audit name. The name must be unique.",
        "requestBody": {
          "description": "Contains the name to create.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuditNameRequest"
                  }
                ],
                "description": "Request model for adding/updating an audit name."
              },
              "example": {"name":"Q3 Inventory Audit"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AuditName>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":3},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/audits/auditnames/{refId}/update": {
      "put": {
        "tags": [
          "AuditSandbox"
        ],
        "summary": "Update Audit Name",
        "description": "Updates the name of an existing audit name. The new name must be unique.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit name. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the updated name.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuditNameRequest"
                  }
                ],
                "description": "Request model for adding/updating an audit name."
              },
              "example": {"name":"Q3 Inventory Audit"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/audits/auditnames/{refId}/delete": {
      "delete": {
        "tags": [
          "AuditSandbox"
        ],
        "summary": "Delete Audit Name",
        "description": "Deletes an audit name and all its associated audit records.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit name. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/audits/auditnames/{refId}/lockunlock": {
      "put": {
        "tags": [
          "AuditSandbox"
        ],
        "summary": "Lock/Unlock Audit Name",
        "description": "Locks or unlocks an audit name. While locked, assets cannot be audited against it.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the audit name. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "locked",
            "in": "query",
            "description": "True to lock the audit name; false to unlock it.",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/audits/bulkaudit": {
      "post": {
        "tags": [
          "AuditSandbox"
        ],
        "summary": "Bulk Audit",
        "description": "Audits multiple assets against one audit name in a single request (maximum 100 assets).\r\nAssets that are inactive, not found, outside your access, or already audited under the\r\naudit name are skipped. The response returns ```auditedCount``` and\r\n```skippedCount```, plus each skipped asset's RefId and reason in\r\n```skippedAssets```. Returns 422 when none of the assets could be audited.",
        "requestBody": {
          "description": "Audit details plus the asset RefIds to audit.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BulkAuditRequest"
                  }
                ],
                "description": "Request model for auditing multiple assets against one audit name in a single request."
              },
              "example": {"assetRefIds":[1,2,3,4],"auditNameRefId":1,"siteRefId":1,"locationRefId":3,"notes":"Quarterly floor audit.","auditDate":"2025-01-01T10:30:00","updateAssetLocation":true,"recordGps":true,"latitude":40.712776,"longitude":-74.005974}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<BulkAudit>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"auditedCount":3,"skippedCount":1,"skippedAssets":[{"assetRefId":3,"message":"Asset is already audited under this audit name."}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/authorize": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Authorize user and issue token",
        "description": "Authenticates an API client using the provided API Token and Auth Token.\r\nIf the credentials are valid, the API returns a temporary Access Token that must be used\r\nto authenticate all subsequent API requests.\r\n\r\nThe returned Access Token should be included in the Authorization header when calling\r\nother AssetTiger API endpoints.",
        "requestBody": {
          "description": "The login credentials provided by the user.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuthorizeRequest"
                  }
                ],
                "description": "Contains the tokens required to authorize a user in the system."
              },
              "example": {"apiToken":"your-api-key-here","authToken":"your-auth-key-here"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AuthorizeResponse>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"accessToken":"temporary token"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/logout": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Logout user and invalidates token",
        "description": "Logs out the current user and invalidates their access token.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/authorize": {
      "post": {
        "tags": [
          "AuthSandbox"
        ],
        "summary": "Authorize user and issue token",
        "description": "Authenticates an API client using the provided API Token and Auth Token.\r\nIf the credentials are valid, the API returns a temporary Access Token that must be used\r\nto authenticate all subsequent API requests.\r\n\r\nThe returned Access Token should be included in the Authorization header when calling\r\nother AssetTiger API endpoints.",
        "requestBody": {
          "description": "The login credentials provided by the user.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuthorizeRequest"
                  }
                ],
                "description": "Contains the tokens required to authorize a user in the system."
              },
              "example": {"apiToken":"your-api-key-here","authToken":"your-auth-key-here"}
            }
          }
        },
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AuthorizeResponse>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"accessToken":"temporary token"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/logout": {
      "post": {
        "tags": [
          "AuthSandbox"
        ],
        "summary": "Logout user and invalidates token",
        "description": "Logs out the current user and invalidates their access token.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AuthorizeResponse>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/bins/{refId}": {
      "get": {
        "tags": [
          "Bin"
        ],
        "summary": "Get Bin by RefId",
        "description": "Retrieves the details of a bin by its unique identifier (refId). including optional shelf and aisle data if requested.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the bin (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Bin>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":11,"name":"Smart Sign"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/bins": {
      "get": {
        "tags": [
          "Bin"
        ],
        "summary": "Get Bins",
        "description": "Retrieves a list of bins filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "aisleRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the Aisle (positive integer only). Leave this field empty to retrieve unallocated locations. Required only when the inventory location hierarchy is configured as Aisle > Shelf > Bin.",
            "schema": {
              "type": "integer",
              "description": "Unique identifier (primary key) for the Aisle (positive integer only). Leave this field empty to retrieve unallocated locations. Required only when the inventory location hierarchy is configured as Aisle > Shelf > Bin.",
              "format": "int32"
            }
          },
          {
            "name": "shelfRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the Shelf (positive integer only). Leave this field empty to retrieve unallocated locations. Required only when the inventory location hierarchy is configured as Shelf > Bins.",
            "schema": {
              "type": "integer",
              "description": "Unique identifier (primary key) for the Shelf (positive integer only). Leave this field empty to retrieve unallocated locations. Required only when the inventory location hierarchy is configured as Shelf > Bins.",
              "format": "int32"
            }
          },
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter bin by name (Search keyword cannot exceed 100 characters.).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter bin by name (Search keyword cannot exceed 100 characters.)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by bin name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Bin[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"Smart Sign"},{"refId":2,"name":"Xpress Self"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/bins/add": {
      "post": {
        "tags": [
          "Bin"
        ],
        "summary": "Add Bin",
        "description": "Creates a bin using the provided `name` in the request. `aisleRefId` and `shelfRefId` are optional:\r\nprovide both to create the bin under an aisle/shelf, or omit/null both to create an unallocated bin.",
        "requestBody": {
          "description": "Contains the bin details to be added (e.g., `name`, `aisleRefId`, `shelfRefId`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddBinRequest"
                  }
                ],
                "description": "Request model for adding bin. Applicable only when multi-quantiy feature is enabled"
              },
              "example": {"aisleRefId":1,"shelfRefId":1,"name":"Smart Sign"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Bin>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/bins/{refId}/update": {
      "put": {
        "tags": [
          "Bin"
        ],
        "summary": "Update Bin",
        "description": "Modifies the bin identified by `refId` using the details provided in the request.\r\n`aisleRefId` and `shelfRefId` are optional: provide both to (re)assign the bin to an aisle/shelf,\r\nor omit/null both to make the bin unallocated.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the bin (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the bin details to update (e.g. `name`, `aisleRefId`, `shelfRefId`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateBinRequest"
                  }
                ],
                "description": "Request model for updating bin. Applicable only when multi-quantiy feature is enabled"
              },
              "example": {"aisleRefId":1,"shelfRefId":1,"name":"Smart Sign"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/bins/{refId}/delete": {
      "delete": {
        "tags": [
          "Bin"
        ],
        "summary": "Delete Bin",
        "description": "Deletes a bin by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the bin (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/bins": {
      "get": {
        "tags": [
          "BinSandbox"
        ],
        "summary": "Get Bins",
        "description": "Retrieves a list of bins filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "aisleRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the Aisle (positive integer only). Leave this field empty to retrieve unallocated locations. Required only when the inventory location hierarchy is configured as Aisle > Shelf > Bin.",
            "schema": {
              "type": "integer",
              "description": "Unique identifier (primary key) for the Aisle (positive integer only). Leave this field empty to retrieve unallocated locations. Required only when the inventory location hierarchy is configured as Aisle > Shelf > Bin.",
              "format": "int32"
            }
          },
          {
            "name": "shelfRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the Shelf (positive integer only). Leave this field empty to retrieve unallocated locations. Required only when the inventory location hierarchy is configured as Shelf > Bins.",
            "schema": {
              "type": "integer",
              "description": "Unique identifier (primary key) for the Shelf (positive integer only). Leave this field empty to retrieve unallocated locations. Required only when the inventory location hierarchy is configured as Shelf > Bins.",
              "format": "int32"
            }
          },
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter bin by name (Search keyword cannot exceed 100 characters.).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter bin by name (Search keyword cannot exceed 100 characters.)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by bin name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Bin[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"Smart Sign"},{"refId":2,"name":"Xpress Self"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/bins/{refId}": {
      "get": {
        "tags": [
          "BinSandbox"
        ],
        "summary": "Get Bin by RefId",
        "description": "Retrieves the details of a bin by its unique identifier (refId). For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the bin (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Bin>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":11,"name":"Smart Sign"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/bins/add": {
      "post": {
        "tags": [
          "BinSandbox"
        ],
        "summary": "Add Bin",
        "description": "Creates a bin using the provided `name` in the request. `aisleRefId` and `shelfRefId` are optional:\r\nprovide both to create the bin under an aisle/shelf, or omit/null both to create an unallocated bin.",
        "requestBody": {
          "description": "Contains the bin details to be added (e.g., `name`, `aisleRefId`, `shelfRefId`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddBinRequest"
                  }
                ],
                "description": "Request model for adding bin. Applicable only when multi-quantiy feature is enabled"
              },
              "example": {"aisleRefId":1,"shelfRefId":1,"name":"Smart Sign"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Object>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/bins/{refId}/update": {
      "put": {
        "tags": [
          "BinSandbox"
        ],
        "summary": "Update Bin",
        "description": "Modifies the bin identified by refId using the details provided in the request.\r\n`aisleRefId` and `shelfRefId` are optional: provide both to (re)assign the bin to an aisle/shelf,\r\nor omit/null both to make the bin unallocated.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the bin (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the bin details to update (e.g., `name`, `aisleRefId`, `shelfRefId`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateBinRequest"
                  }
                ],
                "description": "Request model for updating bin. Applicable only when multi-quantiy feature is enabled"
              },
              "example": {"aisleRefId":1,"shelfRefId":1,"name":"Smart Sign"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/bins/{refId}/delete": {
      "delete": {
        "tags": [
          "BinSandbox"
        ],
        "summary": "Delete Bin",
        "description": "Deletes a bin by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the bin (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/categories/{refId}": {
      "get": {
        "tags": [
          "Category"
        ],
        "summary": "Get Category by RefId",
        "description": "Retrieves the details of a category by its unique identifier (refId). including optional subcategory data if requested.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the category (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchSubcategories",
            "in": "query",
            "description": "Indicates whether to include subcategories associated with this category (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Category>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"Computer Equipment","subCategories":[{"refId":11,"name":"Laptops","categoryRefId":1,"dateAdded":"2026-11-04T18:12:17.4312446Z","category":null},{"refId":12,"name":"Monitors","categoryRefId":1,"dateAdded":"2026-11-04T18:12:17.4312447Z","category":null}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/categories": {
      "get": {
        "tags": [
          "Category"
        ],
        "summary": "Get Categories",
        "description": "Retrieves a list of categories filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter categories by name (Search keyword cannot exceed 100 characters.).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter categories by name (Search keyword cannot exceed 100 characters.)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by category name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Category[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"Computer Equipment","subCategories":[]},{"refId":2,"name":"Server","subCategories":[]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/categories/add": {
      "post": {
        "tags": [
          "Category"
        ],
        "summary": "Add Category",
        "description": "Creates a category using the provided `name` in the request.",
        "requestBody": {
          "description": "Contains the category details to be added (e.g., `name`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddCategoryRequest"
                  }
                ],
                "description": "Request model for adding a new category."
              },
              "example": {"name":"Computer Equipment"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Category>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/categories/{refId}/update": {
      "put": {
        "tags": [
          "Category"
        ],
        "summary": "Update Category",
        "description": "Modifies the category identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the category (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the category details to update (e.g.,`name`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateCategoryRequest"
                  }
                ],
                "description": "Request model for updating category."
              },
              "example": {"name":"Computer Equipment"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/categories/{refId}/delete": {
      "delete": {
        "tags": [
          "Category"
        ],
        "summary": "Delete Category",
        "description": "Deletes a category by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the category (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/categories/deletebulk": {
      "delete": {
        "tags": [
          "Category"
        ],
        "summary": "Delete Categories",
        "description": "Deletes multiple categories by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of category unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of category unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/categories/{refId}": {
      "get": {
        "tags": [
          "CategorySandbox"
        ],
        "summary": "Get Category by RefId",
        "description": "Retrieves the details of a category by its unique identifier (refId). including optional subcategory data if requested.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the category (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchSubcategories",
            "in": "query",
            "description": "Indicates whether to include subcategories associated with this category (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Category>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"Computer Equipment","subCategories":[{"refId":11,"name":"Laptops","categoryRefId":1,"dateAdded":"2026-11-04T18:12:17.4328442Z","category":null},{"refId":12,"name":"Monitors","categoryRefId":1,"dateAdded":"2026-11-04T18:12:17.4328444Z","category":null}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/categories": {
      "get": {
        "tags": [
          "CategorySandbox"
        ],
        "summary": "Get Categories",
        "description": "Retrieves a list of categories filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter categories by name (Search keyword cannot exceed 100 characters.).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter categories by name (Search keyword cannot exceed 100 characters.)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by category name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Category[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"Computer Equipment","subCategories":[]},{"refId":2,"name":"Server","subCategories":[]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/categories/add": {
      "post": {
        "tags": [
          "CategorySandbox"
        ],
        "summary": "Add Category",
        "description": "Creates a category using the provided `name` in the request.",
        "requestBody": {
          "description": "Contains the category details to be added (e.g., `name`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddCategoryRequest"
                  }
                ],
                "description": "Request model for adding a new category."
              },
              "example": {"name":"Computer Equipment"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Category>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/categories/{refId}/update": {
      "put": {
        "tags": [
          "CategorySandbox"
        ],
        "summary": "Update Category",
        "description": "Modifies the category identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the category (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the category details to update (e.g. `name`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateCategoryRequest"
                  }
                ],
                "description": "Request model for updating category."
              },
              "example": {"name":"Computer Equipment"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/categories/{refId}/delete": {
      "delete": {
        "tags": [
          "CategorySandbox"
        ],
        "summary": "Delete Category",
        "description": "Deletes a category by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the category (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/categories/deletebulk": {
      "delete": {
        "tags": [
          "CategorySandbox"
        ],
        "summary": "Delete Categories",
        "description": "Deletes multiple categories by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of category unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of category unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts": {
      "get": {
        "tags": [
          "Contract"
        ],
        "summary": "Get Contracts",
        "description": "Retrieves all contract records.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter contracts. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter contracts. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text is matched. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which contract fields are searched. Default: \"ContractNo\" Allowed values: ContractNo, Description, PersonName, Title, Phone, Vendor.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which contract fields are searched. Default: \"ContractNo\" Allowed values: ContractNo, Description, PersonName, Title, Phone, Vendor.",
              "default": [
                "ContractNo"
              ],
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which contract custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which contract custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to sort results by. Default: \"ContractNo\" Allowed values: Title, Description, PersonName, Phone, Hyperlink, ContractNo, ContractCost, Vendor, License, IsSoftware, StartDate, EndDate, CreatedBy.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering contract records.  Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering contract records.  Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering contract records.  Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering contract records.  Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filtering should apply to. Ignored if dateRangeByCustomField is provided. Default: \"EndDate\" Allowed values: StartDate, EndDate.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "dateRangeByCustomField",
            "in": "query",
            "description": "Defines which custom date field the filter should apply to. Provide the Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which custom date field the filter should apply to. Provide the Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Contract[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"contractTitle":"Microsoft 365 Enterprise License","description":"Annual enterprise subscription for Microsoft 365.","hyperlink":"https://www.microsoft.com/microsoft-365","contractNo":"MS-2025-001","vendor":"Microsoft Corporation","contactPerson":"John Smith","phone":"+1-555-123-4567","cost":12000.00,"startDate":"2025-01-01","endDate":"2025-12-31","licenseCount":250,"noEndDate":false,"softwareContract":true,"active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},{"refId":2,"contractTitle":"Office Equipment Maintenance Agreement","description":"Maintenance and support contract for office equipment.","hyperlink":"https://www.vendor-example.com/contracts","contractNo":"MAINT-2025-101","vendor":"Tech Services Ltd.","contactPerson":"Sarah Johnson","phone":"+1-555-987-6543","cost":3500.00,"startDate":"2025-04-01","endDate":null,"licenseCount":null,"noEndDate":true,"softwareContract":false,"active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":2,"customFieldRefId":201,"value":"White","customField":{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts/{refId}": {
      "get": {
        "tags": [
          "Contract"
        ],
        "summary": "Get Contract by RefId",
        "description": "Retrieves the details of a single contract by its unique identifier (refId). For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Indicates whether to include CustomFields associated with this contract (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Contract>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"contractTitle":"Microsoft 365 Enterprise License","description":"Annual enterprise subscription for Microsoft 365 applications and services.","hyperlink":"https://www.microsoft.com/microsoft-365","contractNo":"MS-2025-001","vendor":"Microsoft Corporation","contactPerson":"John Smith","phone":"+1-555-123-4567","cost":12000.00,"startDate":"2025-01-01","endDate":"2025-12-31","licenseCount":250,"noEndDate":false,"softwareContract":true,"active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts/add": {
      "post": {
        "tags": [
          "Contract"
        ],
        "summary": "Add Contract",
        "description": "Creates a new contract using the details provided in the request body.",
        "requestBody": {
          "description": "Contains the contract details to be added.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddContractRequest"
                  }
                ],
                "description": "Request model for creating a new contract or license."
              },
              "example": {"contractTitle":"Microsoft 365 Enterprise License","description":"Annual enterprise subscription for Microsoft 365 applications and services.","hyperlink":"https://www.microsoft.com/microsoft-365","contractNo":"MS-2025-001","vendor":"Microsoft Corporation","contactPerson":"John Smith","phone":"+1-555-123-4567","cost":12000.00,"startDate":"2025-01-01","endDate":"2025-12-31","licenseCount":250,"noEndDate":false,"softwareContract":true,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Contract>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts/{refId}/update": {
      "put": {
        "tags": [
          "Contract"
        ],
        "summary": "Update Contract",
        "description": "Modifies the contract identified by refId using the details provided in the request body.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the contract details to update.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateContractRequest"
                  }
                ],
                "description": "Request model for update contract."
              },
              "example": {"contractTitle":"Office Equipment Maintenance Agreement","description":"Maintenance and support contract for office equipment.","hyperlink":"https://www.vendor-example.com/contracts","contractNo":"MAINT-2025-101","vendor":"Tech Services Ltd.","contactPerson":"Sarah Johnson","phone":"+1-555-987-6543","cost":3500.00,"startDate":"2025-04-01","endDate":null,"licenseCount":null,"noEndDate":true,"softwareContract":false,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts/{refId}/assets": {
      "get": {
        "tags": [
          "Contract"
        ],
        "summary": "Get Contract Assets",
        "description": "Retrieves all active assets linked to the contract identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<ContractAssetLinked[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":3,"data":[{"refId":101,"assetRefId":101,"contractRefId":1},{"refId":102,"assetRefId":102,"contractRefId":2},{"refId":103,"assetRefId":103,"contractRefId":3}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts/{refId}/documents": {
      "get": {
        "tags": [
          "Contract"
        ],
        "summary": "Get Contract Documents",
        "description": "Retrieves all documents for the contract identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"documentRefGuid":"d1a2b3c4-e5f6-7890-abcd-ef1234567890","fileType":"PDF","fileName":"IT_Infrastructure_Budget_2024.pdf","description":"Annual budget allocation document","keywords":"budget, IT, 2024","uploadDate":"2024-01-05T00:00:00","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"documentRefGuid":"f2c3d4e5-f6a7-8901-bcde-f12345678901","fileType":"XLSX","fileName":"IT_Asset_Tracker.xlsx","description":"Spreadsheet tracking IT assets","keywords":"assets, tracker","uploadDate":"2024-02-10T00:00:00","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts/{refId}/assets/associate": {
      "post": {
        "tags": [
          "Contract"
        ],
        "summary": "Link Contract Assets",
        "description": "Links an asset to the contract identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the asset reference ID.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AssociateContractAssetRequest"
                  }
                ],
                "description": "Request model for associating an asset with a contract."
              },
              "example": {"assetRefId":[101,102,103]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Contract>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":101},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts/{refId}/assets/unlink": {
      "put": {
        "tags": [
          "Contract"
        ],
        "summary": "Unlink Contract Assets",
        "description": "Removes the link between the contract identified by refId and one or more assets.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the asset reference IDs to unlink.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UnlinkContractAssetsRequest"
                  }
                ],
                "description": "Request model for unlinking one or more assets from a contract."
              },
              "example": {"assetRefIds":[101,102]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts/documents/{refGuid}/download": {
      "get": {
        "tags": [
          "Contract"
        ],
        "summary": "Download Contract Document",
        "description": "Downloads the contract document identified by refGuid.\r\nReturns a binary file stream.\r\n            \r\n**Response:**\r\n- Type: File\r\n- Format: Binary\r\n- Example: budget.pdf",
        "parameters": [
          {
            "name": "refGuid",
            "in": "path",
            "description": "Unique GUID of the contract document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","data":{"fileName":"sample.pdf","contentType":"application/pdf","contentDisposition":"attachment; filename=\"sample.pdf\"","body":"(binary document stream)"},"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts/documents/{refGuid}/delete": {
      "delete": {
        "tags": [
          "Contract"
        ],
        "summary": "Delete Contract Document",
        "description": "Deletes the contract document identified by refGuid.",
        "parameters": [
          {
            "name": "refGuid",
            "in": "path",
            "description": "Unique GUID of the contract document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts/{refId}/delete": {
      "delete": {
        "tags": [
          "Contract"
        ],
        "summary": "Delete Contract",
        "description": "Deletes the contract identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts/customfields": {
      "get": {
        "tags": [
          "Contract"
        ],
        "summary": "Get Contract Custom Fields",
        "description": "Get Contract custom fields.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomField>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0},{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":true,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":0}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/contracts/settings": {
      "get": {
        "tags": [
          "Contract"
        ],
        "summary": "Get Contract Settings",
        "description": "Get Contract Settings.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<ContractSetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"field_ContractTitle_Enabled":true,"field_ContractTitle_Required":true,"field_Description_Enabled":true,"field_Description_Required":false,"field_Hyperlink_Enabled":true,"field_Hyperlink_Required":false,"field_ContractNo_Enabled":true,"field_ContractNo_Required":false,"field_Cost_Enabled":true,"field_Cost_Required":false,"field_StartDate_Enabled":true,"field_StartDate_Required":true,"field_EndDate_Enabled":true,"field_EndDate_Required":true,"field_NoEndDate_Enabled":true,"field_Vendor_Enabled":true,"field_ContractPerson_Enabled":true,"field_ContractPerson_Required":false,"field_Phone_Enabled":true,"field_Phone_Required":false,"field_NoOfLicenses_Enabled":true,"field_NoOfLicenses_Required":false,"field_IsSoftware_Enabled":true},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts": {
      "get": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Get Contracts",
        "description": "Retrieves all contract records.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter contracts. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter contracts. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text is matched. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which contract fields are searched. Default: \"ContractNo\" Allowed values: ContractNo, Description, PersonName, Title, Phone, Vendor.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which contract fields are searched. Default: \"ContractNo\" Allowed values: ContractNo, Description, PersonName, Title, Phone, Vendor.",
              "default": [
                "ContractNo"
              ],
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which contract custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which contract custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to sort results by. Default: \"ContractNo\" Allowed values: Title, Description, PersonName, Phone, Hyperlink, ContractNo, ContractCost, Vendor, License, IsSoftware, StartDate, EndDate, CreatedBy.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering contract records.  Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering contract records.  Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering contract records.  Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering contract records.  Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filtering should apply to. Ignored if dateRangeByCustomField is provided. Default: \"EndDate\" Allowed values: StartDate, EndDate.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "dateRangeByCustomField",
            "in": "query",
            "description": "Defines which custom date field the filter should apply to. Provide the Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which custom date field the filter should apply to. Provide the Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Contract[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"contractTitle":"Microsoft 365 Enterprise License","description":"Annual enterprise subscription for Microsoft 365.","hyperlink":"https://www.microsoft.com/microsoft-365","contractNo":"MS-2025-001","vendor":"Microsoft Corporation","contactPerson":"John Smith","phone":"+1-555-123-4567","cost":12000.00,"startDate":"2025-01-01","endDate":"2025-12-31","licenseCount":250,"noEndDate":false,"softwareContract":true,"active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},{"refId":2,"contractTitle":"Office Equipment Maintenance Agreement","description":"Maintenance and support contract for office equipment.","hyperlink":"https://www.vendor-example.com/contracts","contractNo":"MAINT-2025-101","vendor":"Tech Services Ltd.","contactPerson":"Sarah Johnson","phone":"+1-555-987-6543","cost":3500.00,"startDate":"2025-04-01","endDate":null,"licenseCount":null,"noEndDate":true,"softwareContract":false,"active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":2,"customFieldRefId":201,"value":"White","customField":{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts/{refId}": {
      "get": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Get Contract by RefId",
        "description": "Retrieves the details of a single contract by its unique identifier (refId). For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Indicates whether to include CustomFields associated with this contract (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Contract>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"contractTitle":"Microsoft 365 Enterprise License","description":"Annual enterprise subscription for Microsoft 365 applications and services.","hyperlink":"https://www.microsoft.com/microsoft-365","contractNo":"MS-2025-001","vendor":"Microsoft Corporation","contactPerson":"John Smith","phone":"+1-555-123-4567","cost":12000.00,"startDate":"2025-01-01","endDate":"2025-12-31","licenseCount":250,"noEndDate":false,"softwareContract":true,"active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts/add": {
      "post": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Add Contract",
        "description": "Creates a new contract using the details provided in the request body.",
        "requestBody": {
          "description": "Contains the contract details to be added.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddContractRequest"
                  }
                ],
                "description": "Request model for creating a new contract or license."
              },
              "example": {"contractTitle":"Microsoft 365 Enterprise License","description":"Annual enterprise subscription for Microsoft 365 applications and services.","hyperlink":"https://www.microsoft.com/microsoft-365","contractNo":"MS-2025-001","vendor":"Microsoft Corporation","contactPerson":"John Smith","phone":"+1-555-123-4567","cost":12000.00,"startDate":"2025-01-01","endDate":"2025-12-31","licenseCount":250,"noEndDate":false,"softwareContract":true,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Contract>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts/{refId}/update": {
      "put": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Update Contract",
        "description": "Modifies the contract identified by refId using the details provided in the request body.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the contract details to update.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateContractRequest"
                  }
                ],
                "description": "Request model for update contract."
              },
              "example": {"contractTitle":"Office Equipment Maintenance Agreement","description":"Maintenance and support contract for office equipment.","hyperlink":"https://www.vendor-example.com/contracts","contractNo":"MAINT-2025-101","vendor":"Tech Services Ltd.","contactPerson":"Sarah Johnson","phone":"+1-555-987-6543","cost":3500.00,"startDate":"2025-04-01","endDate":null,"licenseCount":null,"noEndDate":true,"softwareContract":false,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts/{refId}/assets": {
      "get": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Get Contract Assets",
        "description": "Retrieves all assets linked to the contract identified by refId. For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<ContractAssetLinked[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":3,"data":[{"refId":101,"assetRefId":101,"contractRefId":1},{"refId":102,"assetRefId":102,"contractRefId":2},{"refId":103,"assetRefId":103,"contractRefId":3}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts/{refId}/documents": {
      "get": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Get Contract Documents",
        "description": "Retrieves all documents associated with the contract identified by refId. For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"documentRefGuid":"d1a2b3c4-e5f6-7890-abcd-ef1234567890","fileType":"PDF","fileName":"IT_Infrastructure_Budget_2024.pdf","description":"Annual budget allocation document","keywords":"budget, IT, 2024","uploadDate":"2024-01-05T00:00:00","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"documentRefGuid":"f2c3d4e5-f6a7-8901-bcde-f12345678901","fileType":"XLSX","fileName":"IT_Asset_Tracker.xlsx","description":"Spreadsheet tracking IT assets","keywords":"assets, tracker","uploadDate":"2024-02-10T00:00:00","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts/{refId}/assets/associate": {
      "post": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Link Contract Assets",
        "description": "Links an asset to the contract identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the asset reference ID.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AssociateContractAssetRequest"
                  }
                ],
                "description": "Request model for associating an asset with a contract."
              },
              "example": {"assetRefId":[101,102,103]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Contract>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":101},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts/{refId}/assets/unlink": {
      "put": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Unlink Contract Assets",
        "description": "Removes the link between the contract identified by refId and one or more assets.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the asset reference IDs to unlink.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UnlinkContractAssetsRequest"
                  }
                ],
                "description": "Request model for unlinking one or more assets from a contract."
              },
              "example": {"assetRefIds":[101,102]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts/documents/{refGuid}/download": {
      "get": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Download Contract Document",
        "description": "Downloads the contract document identified by refGuid. For a successful response, pass refGuid = \"d1a2b3c4-e5f6-7890-abcd-ef1234567890\".\r\nReturns a simulated file stream description in sandbox mode.",
        "parameters": [
          {
            "name": "refGuid",
            "in": "path",
            "description": "Unique GUID of the contract document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","data":{"fileName":"sample.pdf","contentType":"application/pdf","contentDisposition":"attachment; filename=\"sample.pdf\"","body":"(binary document stream)"},"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts/documents/{refGuid}/delete": {
      "delete": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Delete Contract Document",
        "description": "Deletes the contract document identified by refGuid. For a successful response, pass refGuid = \"d1a2b3c4-e5f6-7890-abcd-ef1234567890\".",
        "parameters": [
          {
            "name": "refGuid",
            "in": "path",
            "description": "Unique GUID of the contract document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts/{refId}/delete": {
      "delete": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Delete Contract",
        "description": "Deletes the contract identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the contract (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts/customfields": {
      "get": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Get Contract Custom Fields",
        "description": "Get Contract custom fields.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomField>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0},{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":true,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":0}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/contracts/settings": {
      "get": {
        "tags": [
          "ContractSandbox"
        ],
        "summary": "Get Contract Settings",
        "description": "Get Contract Settings.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<ContractSetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"field_ContractTitle_Enabled":true,"field_ContractTitle_Required":true,"field_Description_Enabled":true,"field_Description_Required":false,"field_Hyperlink_Enabled":true,"field_Hyperlink_Required":false,"field_ContractNo_Enabled":true,"field_ContractNo_Required":false,"field_Cost_Enabled":true,"field_Cost_Required":false,"field_StartDate_Enabled":true,"field_StartDate_Required":true,"field_EndDate_Enabled":true,"field_EndDate_Required":true,"field_NoEndDate_Enabled":true,"field_Vendor_Enabled":true,"field_ContractPerson_Enabled":true,"field_ContractPerson_Required":false,"field_Phone_Enabled":true,"field_Phone_Required":false,"field_NoOfLicenses_Enabled":true,"field_NoOfLicenses_Required":false,"field_IsSoftware_Enabled":true},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/countries": {
      "get": {
        "tags": [
          "Country"
        ],
        "summary": "Get Countries",
        "description": "Retrieves countries.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":1,"countryName":"United State"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/countries": {
      "get": {
        "tags": [
          "CountrySandbox"
        ],
        "summary": "Get Countries",
        "description": "Retrieves countries.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Country>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":1,"countryName":"United State"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/currencies": {
      "get": {
        "tags": [
          "Currency"
        ],
        "summary": "Get Currencies",
        "description": "Retrieves currencies.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Currency>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":1,"name":"United States Dollar","code":"USD","uniCode":"$"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/currencies": {
      "get": {
        "tags": [
          "CurrencySandbox"
        ],
        "summary": "Get Currencies",
        "description": "Retrieves currencies.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Currency>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":1,"name":"United States Dollar","code":"USD","uniCode":"$"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/customers/{refId}": {
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Get Customer by RefId",
        "description": "Retrieves the details of a customer by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the customer (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Customer>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"John Doe","company":"Example Company","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"countryName":"Example Country","phone":"0000000000","cell":"0000000000","email":"example@example.com","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","notes":"Sample customer record","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/customers": {
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Get Customers",
        "description": "Retrieves a list of customers filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter customer by name (cannot exceed 100 characters).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter customer by name (cannot exceed 100 characters)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\". Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which customers fields can be searched. Default: \"Name\", \"Email\", \"Phone\", \"Company\" Allowed values: Name, Email, Phone, Company.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which customers fields can be searched. Default: \"Name\", \"Email\", \"Phone\", \"Company\" Allowed values: Name, Email, Phone, Company.",
              "default": [
                "Name",
                "Email",
                "Phone",
                "Company"
              ],
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which customer custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which customer custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Default: \"Name\". Allowed values: Name, Company, Address1, Address2, City, State, Zip, Country, Phone, Cell, Notes, Email, CreatedBy.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: false.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: false.",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: 0.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: 0.",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: 20. Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: 20. Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Customer[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"John Doe","company":"Example Company","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"countryName":"Example Country","phone":"0000000000","cell":"0000000000","email":"example@example.com","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","notes":"Sample customer record","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},{"refId":1,"name":"Robert Doe","company":"Example Company","address1":"123 Example Street","address2":"Suite 200","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"countryName":"Example Country","phone":"0000000000","cell":"0000000000","email":"example@example.com","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","notes":"Sample customer record","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/customers/customfields": {
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Get Customer Custom Fields",
        "description": "Get Customer custom fields.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomField>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0},{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":true,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":0}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/customers/settings": {
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Get Customer Settings",
        "description": "Get Customer Settings.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomerSetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"field_FullName_Enabled":true,"field_FullName_Required":true,"field_Email_Enabled":true,"field_Email_Required":true,"field_Company_Enabled":false,"field_Company_Required":false,"field_Address_Enabled":false,"field_Address_Required":false,"field_Phone_Enabled":false,"field_Phone_Required":false,"field_MobilePhone_Enabled":false,"field_MobilePhone_Required":false,"field_Notes_Enabled":true,"field_Notes_Required":true,"field_FullName_Unique":true},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/customers/add": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Add Customer",
        "description": "Creates a customer using the provided request.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddCustomerRequest"
                  }
                ],
                "description": "Request model for adding a new customer."
              },
              "example": {"name":"John Doe","company":"Example Company","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"phone":"0000000000","cell":"0000000000","email":"example@example.com","notes":"Sample note","customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Value"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Customer>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/customers/{refId}/update": {
      "put": {
        "tags": [
          "Customer"
        ],
        "summary": "Update Customer",
        "description": "Modifies the Customer identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the customer (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateCustomerRequest"
                  }
                ],
                "description": "Request model for update customer."
              },
              "example": {"name":"John Doe","company":"Example Company","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"phone":"0000000000","cell":"0000000000","email":"example@example.com","notes":"Sample note","customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Value"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/customers/{refId}/delete": {
      "delete": {
        "tags": [
          "Customer"
        ],
        "summary": "Delete Customer",
        "description": "Deletes a customer by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the customer (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/customers/deletebulk": {
      "delete": {
        "tags": [
          "Customer"
        ],
        "summary": "Delete Customers",
        "description": "Deletes multiple customers by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of customer unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of customer unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/customers/{refId}": {
      "get": {
        "tags": [
          "CustomerSandbox"
        ],
        "summary": "Get Customer by RefId",
        "description": "Retrieves the details of a customer by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the customer (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Customer>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"John Doe","company":"Example Company","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"countryName":"Example Country","phone":"0000000000","cell":"0000000000","email":"example@example.com","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","notes":"Sample customer record","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/customers": {
      "get": {
        "tags": [
          "CustomerSandbox"
        ],
        "summary": "Get Customers",
        "description": "Retrieves a list of customers filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter customer by name (cannot exceed 100 characters).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter customer by name (cannot exceed 100 characters)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\". Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which customers fields can be searched. Default: \"Name\", \"Email\", \"Phone\", \"Company\" Allowed values: Name, Email, Phone, Company.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which customers fields can be searched. Default: \"Name\", \"Email\", \"Phone\", \"Company\" Allowed values: Name, Email, Phone, Company.",
              "default": [
                "Name",
                "Email",
                "Phone",
                "Company"
              ],
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which customer custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which customer custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Default: \"Name\". Allowed values: Name, Company, Address1, Address2, City, State, Zip, Country, Phone, Cell, Notes, Email, CreatedBy.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: false.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: false.",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: 0.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: 0.",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: 20. Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: 20. Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Customer[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"John Doe","company":"Example Company","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"countryName":"Example Country","phone":"0000000000","cell":"0000000000","email":"example@example.com","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","notes":"Sample customer record","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},{"refId":1,"name":"Robert Doe","company":"Example Company","address1":"123 Example Street","address2":"Suite 200","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"countryName":"Example Country","phone":"0000000000","cell":"0000000000","email":"example@example.com","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","notes":"Sample customer record","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/customers/customfields": {
      "get": {
        "tags": [
          "CustomerSandbox"
        ],
        "summary": "Get Customer Custom Fields",
        "description": "Get Customer custom fields.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomField>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0},{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":true,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":0}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/customers/settings": {
      "get": {
        "tags": [
          "CustomerSandbox"
        ],
        "summary": "Get Customer Settings",
        "description": "Get Customer Settings.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomerSetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"field_FullName_Enabled":true,"field_FullName_Required":true,"field_Email_Enabled":true,"field_Email_Required":true,"field_Company_Enabled":false,"field_Company_Required":false,"field_Address_Enabled":false,"field_Address_Required":false,"field_Phone_Enabled":false,"field_Phone_Required":false,"field_MobilePhone_Enabled":false,"field_MobilePhone_Required":false,"field_Notes_Enabled":true,"field_Notes_Required":true,"field_FullName_Unique":true},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/customers/add": {
      "post": {
        "tags": [
          "CustomerSandbox"
        ],
        "summary": "Add Customer",
        "description": "Creates a customer using the provided request.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddCustomerRequest"
                  }
                ],
                "description": "Request model for adding a new customer."
              },
              "example": {"name":"John Doe","company":"Example Company","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"phone":"0000000000","cell":"0000000000","email":"example@example.com","notes":"Sample note","customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Value"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Customer>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/customers/{refId}/update": {
      "put": {
        "tags": [
          "CustomerSandbox"
        ],
        "summary": "Update Customer",
        "description": "Modifies the Customer identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the customer (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateCustomerRequest"
                  }
                ],
                "description": "Request model for update customer."
              },
              "example": {"name":"John Doe","company":"Example Company","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"phone":"0000000000","cell":"0000000000","email":"example@example.com","notes":"Sample note","customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Value"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/customers/{refId}/delete": {
      "delete": {
        "tags": [
          "CustomerSandbox"
        ],
        "summary": "Delete Customer",
        "description": "Deletes a customer by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the customer (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/customers/deletebulk": {
      "delete": {
        "tags": [
          "CustomerSandbox"
        ],
        "summary": "Delete Customers",
        "description": "Deletes multiple customers by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of customer unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of customer unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/dateformats": {
      "get": {
        "tags": [
          "DateFormat"
        ],
        "summary": "Get Date Formats",
        "description": "Retrieves date format.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<DateFormat>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":1,"name":"dd/MM/yyyy","format":"dd/MM/yyyy","example":"08/31/2014"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/dateformats": {
      "get": {
        "tags": [
          "DateFormatSandbox"
        ],
        "summary": "Get Date Formats",
        "description": "Retrieves date format.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<DateFormat>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":1,"name":"dd/MM/yyyy","format":"dd/MM/yyyy","example":"08/31/2014"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/departments/{refId}": {
      "get": {
        "tags": [
          "Department"
        ],
        "summary": "Get Department by RefId",
        "description": "Retrieves the details of a department by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the department (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Department>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"Marketing"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/departments": {
      "get": {
        "tags": [
          "Department"
        ],
        "summary": "Get Departments",
        "description": "Retrieves a list of departments filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter departments by name (Search keyword cannot exceed 100 characters.).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter departments by name (Search keyword cannot exceed 100 characters.)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by department name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Department[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"It"},{"refId":2,"name":"Marketing"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/departments/add": {
      "post": {
        "tags": [
          "Department"
        ],
        "summary": "Add Department",
        "description": "Creates a department using the provided `name` in the request.",
        "requestBody": {
          "description": "Contains the department details to be added (e.g., `name`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddDepartmentRequest"
                  }
                ],
                "description": "Request model for adding a new department."
              },
              "example": {"name":"It"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Department>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/departments/{refId}/update": {
      "put": {
        "tags": [
          "Department"
        ],
        "summary": "Update Department",
        "description": "Modifies the department identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the department (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the department details to update (e.g. `name`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDepartmentRequest"
                  }
                ],
                "description": "Request model for updating department."
              },
              "example": {"name":"It"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/departments/{refId}/delete": {
      "delete": {
        "tags": [
          "Department"
        ],
        "summary": "Delete Department",
        "description": "Deletes a department by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the department (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/departments/deletebulk": {
      "delete": {
        "tags": [
          "Department"
        ],
        "summary": "Delete Departments",
        "description": "Deletes multiple departments by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of department unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of department unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/departments/{refId}": {
      "get": {
        "tags": [
          "DepartmentSandbox"
        ],
        "summary": "Get Department by RefId",
        "description": "Retrieves the details of a department by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the department (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Department>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"Marketing"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/departments": {
      "get": {
        "tags": [
          "DepartmentSandbox"
        ],
        "summary": "Get Departments",
        "description": "Retrieves a list of departments filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter departments by name (Search keyword cannot exceed 100 characters.).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter departments by name (Search keyword cannot exceed 100 characters.)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by department name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Department[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"It"},{"refId":2,"name":"Marketing"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/departments/add": {
      "post": {
        "tags": [
          "DepartmentSandbox"
        ],
        "summary": "Add Department",
        "description": "Creates a department using the provided `name` in the request.",
        "requestBody": {
          "description": "Contains the department details to be added (e.g., `name`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddDepartmentRequest"
                  }
                ],
                "description": "Request model for adding a new department."
              },
              "example": {"name":"It"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Department>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/departments/{refId}/update": {
      "put": {
        "tags": [
          "DepartmentSandbox"
        ],
        "summary": "Update Department",
        "description": "Modifies the department identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the department (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the department details to update (e.g., `refId` and `name`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDepartmentRequest"
                  }
                ],
                "description": "Request model for updating department."
              },
              "example": {"name":"It"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/departments/{refId}/delete": {
      "delete": {
        "tags": [
          "DepartmentSandbox"
        ],
        "summary": "Delete Department",
        "description": "Deletes a department by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the department (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/departments/deletebulk": {
      "delete": {
        "tags": [
          "DepartmentSandbox"
        ],
        "summary": "Delete Departments",
        "description": "Deletes multiple departments by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of department unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of department unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/checkout/add": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add Check-out Event",
        "description": "Checks out the specified asset to a person or to a site/location.\r\nCheck out must be enabled in Setup Events.\r\npersonRefId is required when checkoutTo is Person;\r\nsiteRefId is required when it is SiteLocation.\r\nWhen asset linking and check-out linking are enabled, linked assets are checked out too.\r\nSet sendEmail to send the check-out notification to the person's email address.\r\nIf the asset (or a linked asset, with check-out linking) is reserved by someone else for these dates, nothing is saved and 409 lists the reservations; set overrideReservation to true to check out anyway.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Check-out details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddCheckoutEventRequest"
                  }
                ],
                "description": "Request model for adding a check-out event to an asset."
              },
              "example": {"checkoutTo":"Person","date1":"2026-03-01T09:30:00","date2":"2026-03-15T17:00:00","personRefId":1,"siteRefId":null,"locationRefId":null,"newSiteRefId":null,"newLocationRefId":null,"newDepartmentRefId":null,"notes":"Checked out for field use.","sendEmail":true,"overrideReservation":false}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/checkout/{eventRefId}/update": {
      "put": {
        "tags": [
          "Event"
        ],
        "summary": "Update Check-out Event",
        "description": "Updates a check-out event on the specified asset.\r\nThe event must belong to the asset and be a check-out event.        \r\npersonRefId is required when checkoutTo is Person;\r\nsiteRefId is required when it is SiteLocation.\r\nNo email is sent.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the check-out event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement check-out details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateCheckoutEventRequest"
                  }
                ],
                "description": "Request model for updating a check-out event to an asset."
              },
              "example": {"checkoutTo":"SiteLocation","date1":"2026-03-01T09:30:00","date2":"2026-03-20T17:00:00","personRefId":null,"siteRefId":1,"locationRefId":3,"notes":"Moved to the warehouse for the rest of the project."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/checkin/add": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add Check-in Event",
        "description": "Checks in the specified asset. The asset must be checked out, and check out must be enabled in Setup Events.\r\nWhether it is checked in from a person or a site/location follows its current check-out.\r\nsiteRefId is required when it is checked out to a site/location;\r\nnewSiteRefId and newLocationRefId apply when it is checked out to a person.\r\nWhen asset linking and check-out linking are enabled, linked assets are checked in too.\r\nSet sendEmail to send the check-in notification to the email address of the person the asset is checked out to.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Check-in details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddCheckinEventRequest"
                  }
                ],
                "description": "Request model for adding a check-in event to an asset."
              },
              "example": {"date1":"2026-03-15T16:45:00","siteRefId":null,"locationRefId":null,"newSiteRefId":1,"newLocationRefId":3,"newDepartmentRefId":2,"notes":"Returned in good condition.","sendEmail":true}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":2},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/checkin/{eventRefId}/update": {
      "put": {
        "tags": [
          "Event"
        ],
        "summary": "Update Check-in Event",
        "description": "Updates a check-in event on the specified asset.\r\nThe event must belong to the asset and be a check-in event.        \r\nsiteRefId is required when checkinFrom is SiteLocation.\r\nNo email is sent.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the check-in event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement check-in details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateCheckinEventRequest"
                  }
                ],
                "description": "Request model for updating a check-in event."
              },
              "example": {"checkinFrom":"SiteLocation","date1":"2026-03-15T16:45:00","siteRefId":1,"locationRefId":3,"notes":"Returned to the main warehouse."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/lease/add": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add Lease Event",
        "description": "Leases the specified asset to a customer. Lease must be enabled in Setup Events, and the\r\nasset must not already be leased.\r\nWhen asset linking and lease linking are enabled, linked assets are leased too.\r\nSet sendEmail to send the lease notification to the customer's email address.\r\nIf the asset (or a linked asset, with lease linking) is reserved by someone else for these dates, nothing is saved and 409 lists the reservations; set overrideReservation to true to lease anyway.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Lease details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddLeaseEventRequest"
                  }
                ],
                "description": "Request model for adding a lease event to an asset."
              },
              "example": {"customerRefId":3,"date1":"2026-04-01T09:00:00","date2":"2026-09-30T17:00:00","notes":"Six-month lease for the trade show season.","sendEmail":true,"overrideReservation":false}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":3},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/lease/{eventRefId}/update": {
      "put": {
        "tags": [
          "Event"
        ],
        "summary": "Update Lease Event",
        "description": "Updates a lease event on the specified asset.\r\nThe event must belong to the asset and be a lease event.        \r\nNo email is sent.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the lease event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement lease details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateLeaseEventRequest"
                  }
                ],
                "description": "Request model for updating a lease event."
              },
              "example": {"customerRefId":3,"date1":"2026-04-01T09:00:00","date2":"2026-12-31T17:00:00","notes":"Lease extended to the end of the year."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/leasereturn/add": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add Lease Return Event",
        "description": "Returns the specified leased asset. The asset must be leased, and lease must be enabled in Setup Events.\r\nWhen asset linking and lease linking are enabled, linked assets are returned too.\r\nSet sendEmail to send the lease return notification to the email address of the customer the asset is leased to.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Lease return details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddLeaseReturnEventRequest"
                  }
                ],
                "description": "Request model for adding a lease return event to a leased asset."
              },
              "example": {"date1":"2026-09-30T16:00:00","notes":"Returned at the end of the lease, no damage.","sendEmail":true}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":4},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/leasereturn/{eventRefId}/update": {
      "put": {
        "tags": [
          "Event"
        ],
        "summary": "Update Lease Return Event",
        "description": "Updates a lease return event on the specified asset.\r\nThe event must belong to the asset and be a lease return event.        \r\nNo email is sent.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the lease return event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement lease return details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateLeaseReturnEventRequest"
                  }
                ],
                "description": "Request model for updating a lease return event."
              },
              "example": {"date1":"2026-10-01T10:00:00","notes":"Returned one day late; minor scratches noted."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/lost/add": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add Lost Event",
        "description": "Marks the specified asset as lost. Lost must be enabled in Setup Events, and the asset must\r\nnot already be lost.\r\nWhen asset linking and lost linking are enabled, linked assets are marked lost too.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Lost details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddLostEventRequest"
                  }
                ],
                "description": "Request model for adding a lost event to an asset. Same fields as an update; lost has no\r\nnotification email."
              },
              "example": {"date1":"2026-05-12T14:30:00","notes":"Last seen in conference room B."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/lost/{eventRefId}/update": {
      "put": {
        "tags": [
          "Event"
        ],
        "summary": "Update Lost Event",
        "description": "Updates a lost event on the specified asset.\r\nThe event must belong to the asset and be a lost event.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the lost event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement lost details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateLostEventRequest"
                  }
                ],
                "description": "Request model for updating a lost event."
              },
              "example": {"date1":"2026-05-11T17:00:00","notes":"Last seen in conference room B; reported to security."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/found/add": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add Found Event",
        "description": "Marks the specified lost asset as found. The asset must be lost, and lost must be enabled in Setup Events.\r\nWhen asset linking and lost linking are enabled, linked assets are marked found too.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Found details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddFoundEventRequest"
                  }
                ],
                "description": "Request model for adding a found event to a lost asset. Same fields as an update; found has no\r\nnotification email."
              },
              "example": {"date1":"2026-05-20T11:15:00","notes":"Found in the storage closet on floor 2."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":6},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/found/{eventRefId}/update": {
      "put": {
        "tags": [
          "Event"
        ],
        "summary": "Update Found Event",
        "description": "Updates a found event on the specified asset.\r\nThe event must belong to the asset and be a found event.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the found event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement found details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateFoundEventRequest"
                  }
                ],
                "description": "Request model for updating a found event. Replaces the event's found date and notes; omitted\r\nnotes are cleared."
              },
              "example": {"date1":"2026-05-19T16:00:00","notes":"Found in the storage closet on floor 2; returned to IT."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/repair/add": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add Repair Event",
        "description": "Sends the specified asset for repair. Repair must be enabled in Setup Events.\r\nIf the asset is already in repair, its open repair is updated with these details instead, set date2 (completed date) to finish it.\r\nSetting date2 (completed date) ends the repair: the asset goes back to its previous check-out or lease, or to Available.\r\nWhen asset linking and repair linking are enabled, linked assets are sent for repair too.\r\nReturns the repair event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Repair details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddRepairEventRequest"
                  }
                ],
                "description": "Request model for adding a repair event to an asset."
              },
              "example": {"date1":"2026-06-02T09:00:00","textField":"Nancy Griffin","date2":null,"currency":120.00,"notes":"Screen flickers; sent to the service center."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":7},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/repair/{eventRefId}/update": {
      "put": {
        "tags": [
          "Event"
        ],
        "summary": "Update Repair Event",
        "description": "Updates a repair event on the specified asset.\r\nThe event must belong to the asset and be a repair event.        \r\nSetting date2 (completed date) on the open repair ends it: the asset goes back to its previous check-out or lease, or to Available.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the repair event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement repair details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateRepairEventRequest"
                  }
                ],
                "description": "Request model for updating a repair event."
              },
              "example": {"date1":"2026-06-02T09:00:00","textField":"Nancy Griffin","date2":"2026-06-06T15:30:00","currency":145.50,"notes":"Screen replaced; repair complete."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/sell/add": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add Sell Event",
        "description": "Marks the specified asset as sold. Sell must be enabled in Setup Events, and the asset must\r\nnot already be sold.\r\nWhen asset linking and sell linking are enabled, linked assets are marked sold too.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Sale details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddSellEventRequest"
                  }
                ],
                "description": "Request model for adding a sell event to an asset."
              },
              "example": {"date1":"2026-07-15T10:00:00","textField":"Robert Bennett","currency":450.00,"notes":"Sold after the hardware refresh."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":11},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/sell/{eventRefId}/update": {
      "put": {
        "tags": [
          "Event"
        ],
        "summary": "Update Sell Event",
        "description": "Updates a sell event on the specified asset.\r\nThe event must belong to the asset and be a sell event.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the sell event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement sale details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateSellEventRequest"
                  }
                ],
                "description": "Request model for updating a sell event."
              },
              "example": {"date1":"2026-07-15T10:00:00","textField":"Robert Bennett","currency":425.00,"notes":"Sold after the hardware refresh; price adjusted."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/donate/add": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add Donate Event",
        "description": "Marks the specified asset as donated. Donate must be enabled in Setup Events, and the asset must\r\nnot already be donated.\r\nWhen asset linking and donate linking are enabled, linked assets are marked donated too.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Donation details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddDonateEventRequest"
                  }
                ],
                "description": "Request model for adding a donate event to an asset."
              },
              "example": {"date1":"2026-08-03T13:00:00","textField":"City Library","currency":300.00,"boolean":true,"notes":"Donated with power adapter and carry case."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":10},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/donate/{eventRefId}/update": {
      "put": {
        "tags": [
          "Event"
        ],
        "summary": "Update Donate Event",
        "description": "Updates a donate event on the specified asset.\r\nThe event must belong to the asset and be a donate event.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the donate event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement donation details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDonateEventRequest"
                  }
                ],
                "description": "Request model for updating a donate event."
              },
              "example": {"date1":"2026-08-03T13:00:00","textField":"City Library","currency":275.00,"boolean":true,"notes":"Value corrected per receipt."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/dispose/add": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add Dispose Event",
        "description": "Marks the specified asset as disposed. Dispose must be enabled in Setup Events, and the asset must\r\nnot already be disposed.\r\nWhen asset linking and dispose linking are enabled, linked assets are marked disposed too.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Disposal details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddDisposeEventRequest"
                  }
                ],
                "description": "Request model for adding a dispose event to an asset."
              },
              "example": {"date1":"2026-09-01T11:00:00","textField":"GreenCycle Electronics","notes":"End of life; data drive wiped before disposal."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":9},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/dispose/{eventRefId}/update": {
      "put": {
        "tags": [
          "Event"
        ],
        "summary": "Update Dispose Event",
        "description": "Updates a dispose event on the specified asset.\r\nThe event must belong to the asset and be a dispose event.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the dispose event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement disposal details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDisposeEventRequest"
                  }
                ],
                "description": "Request model for updating a dispose event."
              },
              "example": {"date1":"2026-09-01T11:00:00","textField":"GreenCycle Electronics","notes":"End of life; data drive wiped and certificate received."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/broken/add": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add Broken Event",
        "description": "Marks the specified asset as broken. Broken must be enabled in Setup Events, and the asset must\r\nnot already be broken.\r\nWhen asset linking and broken linking are enabled, linked assets are marked broken too.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Broken details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddBrokenEventRequest"
                  }
                ],
                "description": "Request model for adding a broken event to an asset."
              },
              "example": {"date1":"2026-09-18T15:20:00","notes":"Screen cracked after a fall in the warehouse."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":8},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/broken/{eventRefId}/update": {
      "put": {
        "tags": [
          "Event"
        ],
        "summary": "Update Broken Event",
        "description": "Updates a broken event on the specified asset.\r\nThe event must belong to the asset and be a broken event.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the broken event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement broken details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateBrokenEventRequest"
                  }
                ],
                "description": "Request model for updating a broken event."
              },
              "example": {"date1":"2026-09-18T15:20:00","notes":"Screen cracked after a fall in the warehouse; insurance claim filed."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/reservations/add": {
      "post": {
        "tags": [
          "Event"
        ],
        "summary": "Add Reservation",
        "description": "Reserves the specified asset for a person, a customer or a site/location.\r\nPerson reservations need check-out and person reservations enabled in Setup Events; customer reservations need lease and customer reservations enabled.\r\nReturns 409 if the asset is already reserved for an overlapping period.\r\nWhen asset linking and reserve linking are enabled, linked assets are reserved too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reservation details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddReserveRequest"
                  }
                ],
                "description": "Request model for reserving an asset."
              },
              "example": {"reserveTo":"Person","personRefId":12,"customerRefId":null,"siteRefId":null,"locationRefId":null,"date1":"2026-11-02T09:00:00","date2":"2026-11-06T17:00:00","notes":"Reserved for the regional sales conference.","sendEmail":true,"firstReminderEnabled":true,"firstReminderLeadTimeDays":2,"secondReminderEnabled":false,"secondReminderLeadTimeDays":1}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":42},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/reservations/{reservationRefId}/update": {
      "put": {
        "tags": [
          "Event"
        ],
        "summary": "Update Reservation",
        "description": "Updates a reservation on the specified asset. The reservation must belong to the asset.\r\nChanging another user's reservation needs the Override Reservation permission.\r\nReturns 409 if the new dates overlap another reservation on the asset.\r\nWhen asset linking and reserve linking are enabled, the linked assets' matching reservations are updated too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "reservationRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the reservation. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement reservation details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateReserveRequest"
                  }
                ],
                "description": "Request model for updating an asset reservation."
              },
              "example": {"reserveTo":"Person","personRefId":12,"customerRefId":null,"siteRefId":null,"locationRefId":null,"date1":"2026-11-03T09:00:00","date2":"2026-11-07T17:00:00","notes":"Conference moved by one day.","sendEmail":true,"firstReminderEnabled":true,"firstReminderLeadTimeDays":2,"secondReminderEnabled":true,"secondReminderLeadTimeDays":1}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/reservations/{reservationRefId}/delete": {
      "delete": {
        "tags": [
          "Event"
        ],
        "summary": "Delete Reservation",
        "description": "Deletes a reservation from the specified asset. The reservation must belong to the asset.\r\nDeleting another user's reservation needs the Override Reservation permission.\r\nWhen asset linking and reserve linking are enabled, the linked assets' matching reservations are deleted too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "reservationRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the reservation. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/broken/undo": {
      "delete": {
        "tags": [
          "Event"
        ],
        "summary": "Undo Broken Event",
        "description": "Undoes broken on the specified asset. The asset's current broken event is deleted and the asset goes back to Available.\r\nThe asset must currently be broken, and broken must be enabled in Setup Events.\r\nWhen asset linking and broken linking are enabled, linked assets that are currently broken are restored too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/dispose/undo": {
      "delete": {
        "tags": [
          "Event"
        ],
        "summary": "Undo Dispose Event",
        "description": "Undoes dispose on the specified asset. The asset's current dispose event is deleted and the asset goes back to Available.\r\nThe asset must currently be disposed, and dispose must be enabled in Setup Events.\r\nWhen asset linking and dispose linking are enabled, linked assets that are currently disposed are restored too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/donate/undo": {
      "delete": {
        "tags": [
          "Event"
        ],
        "summary": "Undo Donate Event",
        "description": "Undoes donate on the specified asset. The asset's current donate event is deleted and the asset goes back to Available.\r\nThe asset must currently be donated, and donate must be enabled in Setup Events.\r\nWhen asset linking and donate linking are enabled, linked assets that are currently donated are restored too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/sell/undo": {
      "delete": {
        "tags": [
          "Event"
        ],
        "summary": "Undo Sell Event",
        "description": "Undoes sell on the specified asset. The asset's current sell event is deleted and the asset goes back to Available.\r\nThe asset must currently be sold, and sell must be enabled in Setup Events.\r\nWhen asset linking and sell linking are enabled, linked assets that are currently sold are restored too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/assets/{refId}/events/{eventRefId}/delete": {
      "delete": {
        "tags": [
          "Event"
        ],
        "summary": "Delete Event",
        "description": "Deletes an event from the specified asset.\r\nThe event must belong to the asset.\r\nThe user needs permission to edit assets (or to add assets, for an asset they created) and that event's permission. A custom event needs custom event access in the user's group.\r\nEvents can be deleted even if their type is now turned off in Setup Events.\r\nIf the event is the asset's current event, the asset goes back to Available.\r\nLinked assets are not changed.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/checkout/add": {
      "post": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Add Check-out Event",
        "description": "Checks out the specified asset to a person or to a site/location.\r\nCheck out must be enabled in Setup Events.\r\npersonRefId is required when checkoutTo is Person;\r\nsiteRefId is required when it is SiteLocation.\r\nWhen asset linking and check-out linking are enabled, linked assets are checked out too.\r\nSet sendEmail to send the check-out notification to the person's email address.\r\nIf the asset (or a linked asset, with check-out linking) is reserved by someone else for these dates, nothing is saved and 409 lists the reservations; set overrideReservation to true to check out anyway.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Check-out details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddCheckoutEventRequest"
                  }
                ],
                "description": "Request model for adding a check-out event to an asset."
              },
              "example": {"checkoutTo":"Person","date1":"2026-03-01T09:30:00","date2":"2026-03-15T17:00:00","personRefId":1,"siteRefId":null,"locationRefId":null,"newSiteRefId":null,"newLocationRefId":null,"newDepartmentRefId":null,"notes":"Checked out for field use.","sendEmail":true,"overrideReservation":false}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Object>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/checkout/{eventRefId}/update": {
      "put": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Update Check-out Event",
        "description": "Updates a check-out event on the specified asset.\r\nThe event must belong to the asset and be a check-out event.        \r\npersonRefId is required when checkoutTo is Person;\r\nsiteRefId is required when it is SiteLocation.\r\nNo email is sent.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the check-out event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement check-out details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateCheckoutEventRequest"
                  }
                ],
                "description": "Request model for updating a check-out event to an asset."
              },
              "example": {"checkoutTo":"SiteLocation","date1":"2026-03-01T09:30:00","date2":"2026-03-20T17:00:00","personRefId":null,"siteRefId":1,"locationRefId":3,"notes":"Moved to the warehouse for the rest of the project."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/checkin/add": {
      "post": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Add Check-in Event",
        "description": "Checks in the specified asset. The asset must be checked out, and check out must be enabled in Setup Events.\r\nWhether it is checked in from a person or a site/location follows its current check-out.\r\nsiteRefId is required when it is checked out to a site/location;\r\nnewSiteRefId and newLocationRefId apply when it is checked out to a person.\r\nWhen asset linking and check-out linking are enabled, linked assets are checked in too.\r\nSet sendEmail to send the check-in notification to the email address of the person the asset is checked out to.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Check-in details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddCheckinEventRequest"
                  }
                ],
                "description": "Request model for adding a check-in event to an asset."
              },
              "example": {"date1":"2026-03-15T16:45:00","siteRefId":null,"locationRefId":null,"newSiteRefId":1,"newLocationRefId":3,"newDepartmentRefId":2,"notes":"Returned in good condition.","sendEmail":true}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":2},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/checkin/{eventRefId}/update": {
      "put": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Update Check-in Event",
        "description": "Updates a check-in event on the specified asset: check-in from, check-in date, site/location, and notes.\r\nThe event must belong to the asset and be a check-in event.        \r\nsiteRefId is required when checkinFrom is SiteLocation.\r\nNo email is sent.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the check-in event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement check-in details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateCheckinEventRequest"
                  }
                ],
                "description": "Request model for updating a check-in event."
              },
              "example": {"checkinFrom":"SiteLocation","date1":"2026-03-15T16:45:00","siteRefId":1,"locationRefId":3,"notes":"Returned to the main warehouse."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/lease/add": {
      "post": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Add Lease Event",
        "description": "Leases the specified asset to a customer. Lease must be enabled in Setup Events, and the\r\nasset must not already be leased.\r\nWhen asset linking and lease linking are enabled, linked assets are leased too.\r\nSet sendEmail to send the lease notification to the customer's email address.\r\nIf the asset (or a linked asset, with lease linking) is reserved by someone else for these dates, nothing is saved and 409 lists the reservations; set overrideReservation to true to lease anyway.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Lease details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddLeaseEventRequest"
                  }
                ],
                "description": "Request model for adding a lease event to an asset."
              },
              "example": {"customerRefId":3,"date1":"2026-04-01T09:00:00","date2":"2026-09-30T17:00:00","notes":"Six-month lease for the trade show season.","sendEmail":true,"overrideReservation":false}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":3},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/lease/{eventRefId}/update": {
      "put": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Update Lease Event",
        "description": "Updates a lease event on the specified asset.\r\nThe event must belong to the asset and be a lease event.        \r\nNo email is sent.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the lease event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement lease details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateLeaseEventRequest"
                  }
                ],
                "description": "Request model for updating a lease event."
              },
              "example": {"customerRefId":3,"date1":"2026-04-01T09:00:00","date2":"2026-12-31T17:00:00","notes":"Lease extended to the end of the year."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/leasereturn/add": {
      "post": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Add Lease Return Event",
        "description": "Returns the specified leased asset. The asset must be leased, and lease must be enabled in Setup Events.\r\nWhen asset linking and lease linking are enabled, linked assets are returned too.\r\nSet sendEmail to send the lease return notification to the email address of the customer the asset is leased to.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Lease return details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddLeaseReturnEventRequest"
                  }
                ],
                "description": "Request model for adding a lease return event to a leased asset."
              },
              "example": {"date1":"2026-09-30T16:00:00","notes":"Returned at the end of the lease, no damage.","sendEmail":true}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":4},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/leasereturn/{eventRefId}/update": {
      "put": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Update Lease Return Event",
        "description": "Updates a lease return event on the specified asset: date1 (return date) and notes.\r\nThe event must belong to the asset and be a lease return event.        \r\nNo email is sent.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the lease return event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement lease return details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateLeaseReturnEventRequest"
                  }
                ],
                "description": "Request model for updating a lease return event."
              },
              "example": {"date1":"2026-10-01T10:00:00","notes":"Returned one day late; minor scratches noted."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/lost/add": {
      "post": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Add Lost Event",
        "description": "Marks the specified asset as lost. Lost must be enabled in Setup Events, and the asset must\r\nnot already be lost.\r\nWhen asset linking and lost linking are enabled, linked assets are marked lost too.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Lost details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddLostEventRequest"
                  }
                ],
                "description": "Request model for adding a lost event to an asset. Same fields as an update; lost has no\r\nnotification email."
              },
              "example": {"date1":"2026-05-12T14:30:00","notes":"Last seen in conference room B."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/lost/{eventRefId}/update": {
      "put": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Update Lost Event",
        "description": "Updates a lost event on the specified asset.\r\nThe event must belong to the asset and be a lost event.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the lost event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement lost details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateLostEventRequest"
                  }
                ],
                "description": "Request model for updating a lost event."
              },
              "example": {"date1":"2026-05-11T17:00:00","notes":"Last seen in conference room B; reported to security."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/found/add": {
      "post": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Add Found Event",
        "description": "Marks the specified lost asset as found. The asset must be lost, and lost must be enabled in Setup Events.\r\nWhen asset linking and lost linking are enabled, linked assets are marked found too.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Found details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddFoundEventRequest"
                  }
                ],
                "description": "Request model for adding a found event to a lost asset. Same fields as an update; found has no\r\nnotification email."
              },
              "example": {"date1":"2026-05-20T11:15:00","notes":"Found in the storage closet on floor 2."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":6},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/found/{eventRefId}/update": {
      "put": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Update Found Event",
        "description": "Updates a found event on the specified asset.\r\nThe event must belong to the asset and be a found event.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the found event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement found details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateFoundEventRequest"
                  }
                ],
                "description": "Request model for updating a found event. Replaces the event's found date and notes; omitted\r\nnotes are cleared."
              },
              "example": {"date1":"2026-05-19T16:00:00","notes":"Found in the storage closet on floor 2; returned to IT."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/repair/add": {
      "post": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Add Repair Event",
        "description": "Sends the specified asset for repair. Repair must be enabled in Setup Events.\r\nIf the asset is already in repair, its open repair is updated with these details instead, set date2 (completed date) to finish it.\r\nSetting date2 (completed date) ends the repair: the asset goes back to its previous check-out or lease, or to Available.\r\nWhen asset linking and repair linking are enabled, linked assets are sent for repair too.\r\nReturns the repair event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Repair details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddRepairEventRequest"
                  }
                ],
                "description": "Request model for adding a repair event to an asset."
              },
              "example": {"date1":"2026-06-02T09:00:00","textField":"Nancy Griffin","date2":null,"currency":120.00,"notes":"Screen flickers; sent to the service center."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":7},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/repair/{eventRefId}/update": {
      "put": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Update Repair Event",
        "description": "Updates a repair event on the specified asset.\r\nThe event must belong to the asset and be a repair event.        \r\nSetting date2 (completed date) on the open repair ends it: the asset goes back to its previous check-out or lease, or to Available.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the repair event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement repair details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateRepairEventRequest"
                  }
                ],
                "description": "Request model for updating a repair event."
              },
              "example": {"date1":"2026-06-02T09:00:00","textField":"Nancy Griffin","date2":"2026-06-06T15:30:00","currency":145.50,"notes":"Screen replaced; repair complete."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/sell/add": {
      "post": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Add Sell Event",
        "description": "Marks the specified asset as sold. Sell must be enabled in Setup Events, and the asset must\r\nnot already be sold.\r\nWhen asset linking and sell linking are enabled, linked assets are marked sold too.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Sale details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddSellEventRequest"
                  }
                ],
                "description": "Request model for adding a sell event to an asset."
              },
              "example": {"date1":"2026-07-15T10:00:00","textField":"Robert Bennett","currency":450.00,"notes":"Sold after the hardware refresh."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":11},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/sell/{eventRefId}/update": {
      "put": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Update Sell Event",
        "description": "Updates a sell event on the specified asset.\r\nThe event must belong to the asset and be a sell event.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the sell event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement sale details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateSellEventRequest"
                  }
                ],
                "description": "Request model for updating a sell event."
              },
              "example": {"date1":"2026-07-15T10:00:00","textField":"Robert Bennett","currency":425.00,"notes":"Sold after the hardware refresh; price adjusted."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/donate/add": {
      "post": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Add Donate Event",
        "description": "Marks the specified asset as donated. Donate must be enabled in Setup Events, and the asset must\r\nnot already be donated.\r\nWhen asset linking and donate linking are enabled, linked assets are marked donated too.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Donation details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddDonateEventRequest"
                  }
                ],
                "description": "Request model for adding a donate event to an asset."
              },
              "example": {"date1":"2026-08-03T13:00:00","textField":"City Library","currency":300.00,"boolean":true,"notes":"Donated with power adapter and carry case."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":10},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/donate/{eventRefId}/update": {
      "put": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Update Donate Event",
        "description": "Updates a donate event on the specified asset.\r\nThe event must belong to the asset and be a donate event.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the donate event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement donation details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDonateEventRequest"
                  }
                ],
                "description": "Request model for updating a donate event."
              },
              "example": {"date1":"2026-08-03T13:00:00","textField":"City Library","currency":275.00,"boolean":true,"notes":"Value corrected per receipt."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/dispose/add": {
      "post": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Add Dispose Event",
        "description": "Marks the specified asset as disposed. Dispose must be enabled in Setup Events, and the asset must\r\nnot already be disposed.\r\nWhen asset linking and dispose linking are enabled, linked assets are marked disposed too.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Disposal details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddDisposeEventRequest"
                  }
                ],
                "description": "Request model for adding a dispose event to an asset."
              },
              "example": {"date1":"2026-09-01T11:00:00","textField":"GreenCycle Electronics","notes":"End of life; data drive wiped before disposal."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":9},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/dispose/{eventRefId}/update": {
      "put": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Update Dispose Event",
        "description": "Updates a dispose event on the specified asset.\r\nThe event must belong to the asset and be a dispose event.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the dispose event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement disposal details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDisposeEventRequest"
                  }
                ],
                "description": "Request model for updating a dispose event."
              },
              "example": {"date1":"2026-09-01T11:00:00","textField":"GreenCycle Electronics","notes":"End of life; data drive wiped and certificate received."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/broken/add": {
      "post": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Add Broken Event",
        "description": "Marks the specified asset as broken. Broken must be enabled in Setup Events, and the asset must\r\nnot already be broken.\r\nWhen asset linking and broken linking are enabled, linked assets are marked broken too.\r\nReturns the new event's refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Broken details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddBrokenEventRequest"
                  }
                ],
                "description": "Request model for adding a broken event to an asset."
              },
              "example": {"date1":"2026-09-18T15:20:00","notes":"Screen cracked after a fall in the warehouse."}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Event>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":8},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/broken/{eventRefId}/update": {
      "put": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Update Broken Event",
        "description": "Updates a broken event on the specified asset.\r\nThe event must belong to the asset and be a broken event.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the broken event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement broken details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateBrokenEventRequest"
                  }
                ],
                "description": "Request model for updating a broken event."
              },
              "example": {"date1":"2026-09-18T15:20:00","notes":"Screen cracked after a fall in the warehouse; insurance claim filed."}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/reservations/add": {
      "post": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Add Reservation",
        "description": "Reserves the specified asset for a person, a customer or a site/location.\r\nPerson reservations need check-out and person reservations enabled in Setup Events; customer reservations need lease and customer reservations enabled.\r\nReturns 409 if the asset is already reserved for an overlapping period.\r\nWhen asset linking and reserve linking are enabled, linked assets are reserved too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Reservation details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddReserveRequest"
                  }
                ],
                "description": "Request model for reserving an asset."
              },
              "example": {"reserveTo":"Person","personRefId":12,"customerRefId":null,"siteRefId":null,"locationRefId":null,"date1":"2026-11-02T09:00:00","date2":"2026-11-06T17:00:00","notes":"Reserved for the regional sales conference.","sendEmail":true,"firstReminderEnabled":true,"firstReminderLeadTimeDays":2,"secondReminderEnabled":false,"secondReminderLeadTimeDays":1}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":42},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/reservations/{reservationRefId}/update": {
      "put": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Update Reservation",
        "description": "Updates a reservation on the specified asset. The reservation must belong to the asset.\r\nChanging another user's reservation needs the Override Reservation permission.\r\nReturns 409 if the new dates overlap another reservation on the asset.\r\nWhen asset linking and reserve linking are enabled, the linked assets' matching reservations are updated too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "reservationRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the reservation. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Replacement reservation details.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateReserveRequest"
                  }
                ],
                "description": "Request model for updating an asset reservation."
              },
              "example": {"reserveTo":"Person","personRefId":12,"customerRefId":null,"siteRefId":null,"locationRefId":null,"date1":"2026-11-03T09:00:00","date2":"2026-11-07T17:00:00","notes":"Conference moved by one day.","sendEmail":true,"firstReminderEnabled":true,"firstReminderLeadTimeDays":2,"secondReminderEnabled":true,"secondReminderLeadTimeDays":1}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/reservations/{reservationRefId}/delete": {
      "delete": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Delete Reservation",
        "description": "Deletes a reservation from the specified asset. The reservation must belong to the asset.\r\nDeleting another user's reservation needs the Override Reservation permission.\r\nWhen asset linking and reserve linking are enabled, the linked assets' matching reservations are deleted too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "reservationRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the reservation. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/broken/undo": {
      "delete": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Undo Broken Event",
        "description": "Undoes broken on the specified asset. The asset's current broken event is deleted and the asset goes back to Available.\r\nThe asset must currently be broken, and broken must be enabled in Setup Events.\r\nWhen asset linking and broken linking are enabled, linked assets that are currently broken are restored too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/dispose/undo": {
      "delete": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Undo Dispose Event",
        "description": "Undoes dispose on the specified asset. The asset's current dispose event is deleted and the asset goes back to Available.\r\nThe asset must currently be disposed, and dispose must be enabled in Setup Events.\r\nWhen asset linking and dispose linking are enabled, linked assets that are currently disposed are restored too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/donate/undo": {
      "delete": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Undo Donate Event",
        "description": "Undoes donate on the specified asset. The asset's current donate event is deleted and the asset goes back to Available.\r\nThe asset must currently be donated, and donate must be enabled in Setup Events.\r\nWhen asset linking and donate linking are enabled, linked assets that are currently donated are restored too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/sell/undo": {
      "delete": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Undo Sell Event",
        "description": "Undoes sell on the specified asset. The asset's current sell event is deleted and the asset goes back to Available.\r\nThe asset must currently be sold, and sell must be enabled in Setup Events.\r\nWhen asset linking and sell linking are enabled, linked assets that are currently sold are restored too.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/assets/{refId}/events/{eventRefId}/delete": {
      "delete": {
        "tags": [
          "EventSandbox"
        ],
        "summary": "Delete Event",
        "description": "Deletes an event from the specified asset.\r\nThe event must belong to the asset.\r\nThe user needs permission to edit assets (or to add assets, for an asset they created) and that event's permission. A custom event needs custom event access in the user's group.\r\nEvents can be deleted even if their type is now turned off in Setup Events.\r\nIf the event is the asset's current event, the asset goes back to Available.\r\nLinked assets are not changed.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the asset. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "eventRefId",
            "in": "path",
            "description": "Unique identifier (primary key) of the event. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/funds": {
      "get": {
        "tags": [
          "Fund"
        ],
        "summary": "Get Funds",
        "description": "Retrieves all fund records.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter funds. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter funds. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text is matched. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which fund fields are searched. Default: \"Name\" Allowed values: Name, Description, Notes.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which fund fields are searched. Default: \"Name\" Allowed values: Name, Description, Notes.",
              "default": [
                "Name"
              ],
              "nullable": true
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to sort results by. Default: \"EndDate\" Allowed values: Name, Description, FundAmount, StartDate, EndDate.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering fund records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering fund records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering fund records.  Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering fund records.  Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filter applies to. Default: \"EndDate\" Allowed values: StartDate, EndDate.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Fund[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"Capital Equipment Fund","description":"Used for capital equipment purchases","amount":50000.00,"availableAmount":35000.00,"totalDebits":15000.00,"totalAssets":5,"startDate":"2024-01-01","endDate":"2024-12-31","notes":"Annual budget cycle","active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"refId":2,"name":"IT Infrastructure Fund","description":"For IT hardware and software","amount":20000.00,"availableAmount":20000.00,"totalDebits":0.00,"totalAssets":0,"startDate":"2024-01-01","endDate":null,"notes":null,"active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/funds/{refId}": {
      "get": {
        "tags": [
          "Fund"
        ],
        "summary": "Get Fund by RefId",
        "description": "Retrieves the details of a single fund by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Fund>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"Capital Equipment Fund","description":"Used for capital equipment purchases","amount":50000.00,"availableAmount":35000.00,"totalDebits":15000.00,"totalAssets":5,"startDate":"2024-01-01","endDate":"2024-12-31","notes":"Annual budget cycle","active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/funds/add": {
      "post": {
        "tags": [
          "Fund"
        ],
        "summary": "Add Fund",
        "description": "Creates a new fund using the details provided in the request body.",
        "requestBody": {
          "description": "Contains the fund details to be added.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddFundRequest"
                  }
                ],
                "description": "Request model for creating a new fund."
              },
              "example": {"name":"Capital Equipment Fund","description":"Used for capital equipment purchases","amount":50000.00,"startDate":"2024-01-01","endDate":"2024-12-31","notes":"Annual budget cycle","active":true}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Fund>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/funds/{refId}/update": {
      "put": {
        "tags": [
          "Fund"
        ],
        "summary": "Update Fund",
        "description": "Modifies the fund identified by refId using the details provided in the request body.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the fund details to update.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateFundRequest"
                  }
                ],
                "description": "Request model for updating an existing fund."
              },
              "example": {"name":"Capital Equipment Fund","description":"Used for capital equipment purchases","amount":50000.00,"startDate":"2024-01-01","endDate":"2024-12-31","notes":"Annual budget cycle","active":true}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/funds/{refId}/assets": {
      "get": {
        "tags": [
          "Fund"
        ],
        "summary": "Get Fund Assets",
        "description": "Retrieves all active assets linked to the fund identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<FundAssetLinked[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":3,"data":[{"refId":101,"assetRefId":201,"fundRefId":301,"debitedFromFund":1800.00},{"refId":102,"assetRefId":202,"fundRefId":302,"debitedFromFund":3200.00},{"refId":103,"assetRefId":203,"fundRefId":303,"debitedFromFund":12000.00}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/funds/{refId}/documents": {
      "get": {
        "tags": [
          "Fund"
        ],
        "summary": "Get Fund Documents",
        "description": "Retrieves all documents for the fund identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"documentRefGuid":"d1a2b3c4-e5f6-7890-abcd-ef1234567890","fileType":"PDF","fileName":"IT_Infrastructure_Budget_2024.pdf","description":"Annual budget allocation document","keywords":"budget, IT, 2024","uploadDate":"2024-01-05T00:00:00","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"documentRefGuid":"f2c3d4e5-f6a7-8901-bcde-f12345678901","fileType":"XLSX","fileName":"IT_Asset_Tracker.xlsx","description":"Spreadsheet tracking IT assets","keywords":"assets, tracker","uploadDate":"2024-02-10T00:00:00","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/funds/{refId}/assets/associate": {
      "post": {
        "tags": [
          "Fund"
        ],
        "summary": "Link Asset",
        "description": "Links an asset to the fund identified by refId and records the debited amount.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the asset reference ID and the amount to debit from the fund.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AssociateFundAssetRequest"
                  }
                ],
                "description": "Request model for associating an asset with a fund."
              },
              "example": {"assetRefId":101,"amount":1800.00}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Fund>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":101},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/funds/{refId}/assets/unlink": {
      "put": {
        "tags": [
          "Fund"
        ],
        "summary": "Unlink Assets",
        "description": "Removes the link between the fund identified by refId and one or more assets provided in the request body.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the asset reference IDs to unlink.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UnlinkFundAssetsRequest"
                  }
                ],
                "description": "Request model for unlinking one or more assets from a fund."
              },
              "example": {"assetRefIds":[101,102]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/funds/documents/{refGuid}/download": {
      "get": {
        "tags": [
          "Fund"
        ],
        "summary": "Download Fund Document",
        "description": "Downloads the fund document identified by refGuid.\r\nReturns a binary file stream.\r\n            \r\n**Response:**\r\n- Type: File\r\n- Format: Binary\r\n- Example: budget.pdf",
        "parameters": [
          {
            "name": "refGuid",
            "in": "path",
            "description": "Unique GUID of the fund document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","data":{"fileName":"sample.pdf","contentType":"application/pdf","contentDisposition":"attachment; filename=\"sample.pdf\"","body":"(binary document stream)"},"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/funds/documents/{refGuid}/delete": {
      "delete": {
        "tags": [
          "Fund"
        ],
        "summary": "Delete Fund Document",
        "description": "Deletes the fund document identified by refGuid.",
        "parameters": [
          {
            "name": "refGuid",
            "in": "path",
            "description": "Unique GUID of the fund document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/funds/{refId}/delete": {
      "delete": {
        "tags": [
          "Fund"
        ],
        "summary": "Delete Fund",
        "description": "Deletes the fund identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/funds": {
      "get": {
        "tags": [
          "FundSandbox"
        ],
        "summary": "Get Funds",
        "description": "Retrieves all fund records belonging to the authenticated organization.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter funds. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter funds. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text is matched. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which fund fields are searched. Default: \"Name\" Allowed values: Name, Description, Notes.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which fund fields are searched. Default: \"Name\" Allowed values: Name, Description, Notes.",
              "default": [
                "Name"
              ],
              "nullable": true
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to sort results by. Default: \"EndDate\" Allowed values: Name, Description, FundAmount, StartDate, EndDate.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering fund records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering fund records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering fund records.  Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering fund records.  Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filter applies to. Default: \"EndDate\" Allowed values: StartDate, EndDate.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Fund[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"Capital Equipment Fund","description":"Used for capital equipment purchases","amount":50000.00,"availableAmount":35000.00,"totalDebits":15000.00,"totalAssets":5,"startDate":"2024-01-01","endDate":"2024-12-31","notes":"Annual budget cycle","active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"refId":2,"name":"IT Infrastructure Fund","description":"For IT hardware and software","amount":20000.00,"availableAmount":20000.00,"totalDebits":0.00,"totalAssets":0,"startDate":"2024-01-01","endDate":null,"notes":null,"active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/funds/{refId}": {
      "get": {
        "tags": [
          "FundSandbox"
        ],
        "summary": "Get Fund by RefId",
        "description": "Retrieves the details of a single fund by its unique identifier (refId). For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Fund>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"Capital Equipment Fund","description":"Used for capital equipment purchases","amount":50000.00,"availableAmount":35000.00,"totalDebits":15000.00,"totalAssets":5,"startDate":"2024-01-01","endDate":"2024-12-31","notes":"Annual budget cycle","active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/funds/add": {
      "post": {
        "tags": [
          "FundSandbox"
        ],
        "summary": "Add Fund",
        "description": "Creates a new fund using the details provided in the request body.",
        "requestBody": {
          "description": "Contains the fund details to be added.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddFundRequest"
                  }
                ],
                "description": "Request model for creating a new fund."
              },
              "example": {"name":"Capital Equipment Fund","description":"Used for capital equipment purchases","amount":50000.00,"startDate":"2024-01-01","endDate":"2024-12-31","notes":"Annual budget cycle","active":true}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Fund>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/funds/{refId}/update": {
      "put": {
        "tags": [
          "FundSandbox"
        ],
        "summary": "Update Fund",
        "description": "Modifies the fund identified by refId using the details provided in the request body.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the fund details to update.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateFundRequest"
                  }
                ],
                "description": "Request model for updating an existing fund."
              },
              "example": {"name":"Capital Equipment Fund","description":"Used for capital equipment purchases","amount":50000.00,"startDate":"2024-01-01","endDate":"2024-12-31","notes":"Annual budget cycle","active":true}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/funds/{refId}/assets": {
      "get": {
        "tags": [
          "FundSandbox"
        ],
        "summary": "Get Fund Assets",
        "description": "Retrieves all assets linked to the fund identified by refId. For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<FundAssetLinked[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":3,"data":[{"refId":101,"assetRefId":201,"fundRefId":301,"debitedFromFund":1800.00},{"refId":102,"assetRefId":202,"fundRefId":302,"debitedFromFund":3200.00},{"refId":103,"assetRefId":203,"fundRefId":303,"debitedFromFund":12000.00}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/funds/{refId}/documents": {
      "get": {
        "tags": [
          "FundSandbox"
        ],
        "summary": "Get Fund Documents",
        "description": "Retrieves all documents associated with the fund identified by refId. For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"documentRefGuid":"d1a2b3c4-e5f6-7890-abcd-ef1234567890","fileType":"PDF","fileName":"IT_Infrastructure_Budget_2024.pdf","description":"Annual budget allocation document","keywords":"budget, IT, 2024","uploadDate":"2024-01-05T00:00:00","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"documentRefGuid":"f2c3d4e5-f6a7-8901-bcde-f12345678901","fileType":"XLSX","fileName":"IT_Asset_Tracker.xlsx","description":"Spreadsheet tracking IT assets","keywords":"assets, tracker","uploadDate":"2024-02-10T00:00:00","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/funds/{refId}/assets/associate": {
      "post": {
        "tags": [
          "FundSandbox"
        ],
        "summary": "Link Asset",
        "description": "Links an asset to the fund identified by refId. For a successful response, pass refId = 1 and assetRefId = 105.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the asset reference ID and the amount to debit from the fund.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AssociateFundAssetRequest"
                  }
                ],
                "description": "Request model for associating an asset with a fund."
              },
              "example": {"assetRefId":101,"amount":1800.00}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Fund>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":101},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/funds/{refId}/assets/unlink": {
      "put": {
        "tags": [
          "FundSandbox"
        ],
        "summary": "Unlink Assets",
        "description": "Removes the link between the fund identified by refId and one or more assets. For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the asset reference IDs to unlink.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UnlinkFundAssetsRequest"
                  }
                ],
                "description": "Request model for unlinking one or more assets from a fund."
              },
              "example": {"assetRefIds":[101,102]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/funds/documents/{refGuid}/download": {
      "get": {
        "tags": [
          "FundSandbox"
        ],
        "summary": "Download Fund Document",
        "description": "Downloads the fund document identified by refGuid. For a successful response, pass refGuid = \"d1a2b3c4-e5f6-7890-abcd-ef1234567890\".\r\nReturns a simulated file stream description in sandbox mode.",
        "parameters": [
          {
            "name": "refGuid",
            "in": "path",
            "description": "Unique GUID of the fund document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","data":{"fileName":"sample.pdf","contentType":"application/pdf","contentDisposition":"attachment; filename=\"sample.pdf\"","body":"(binary document stream)"},"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/funds/documents/{refGuid}/delete": {
      "delete": {
        "tags": [
          "FundSandbox"
        ],
        "summary": "Delete Fund Document",
        "description": "Deletes the fund document identified by refGuid. For a successful response, pass refGuid = \"d1a2b3c4-e5f6-7890-abcd-ef1234567890\".",
        "parameters": [
          {
            "name": "refGuid",
            "in": "path",
            "description": "Unique GUID of the fund document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/funds/{refId}/delete": {
      "delete": {
        "tags": [
          "FundSandbox"
        ],
        "summary": "Delete Fund",
        "description": "Deletes the fund identified by refId. The fund must not be linked to any active assets.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the fund (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/documents": {
      "get": {
        "tags": [
          "Gallery"
        ],
        "summary": "Get Documents",
        "description": "Retrieves collection of documents filtered and sorted based on the provided query parameters.\r\nSupports searching keywords, and various fields, with flexible sorting and pagination options.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter documents by defined document search fields. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter documents by defined document search fields. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which document fields can be searched. Default: \"Name\", \"Description\" Allowed values include: Name, Description.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which document fields can be searched. Default: \"Name\", \"Description\" Allowed values include: Name, Description.",
              "default": [
                "Name",
                "Description"
              ],
              "nullable": true
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Allowed values: Name, Description.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"front.jpg","description":"Front view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.4918457Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"back.jpg","description":"Back view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.4918459Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/documents/{refGuId}": {
      "get": {
        "tags": [
          "Gallery"
        ],
        "summary": "Get Document by refGuId",
        "description": "Retrieves the details of a Document by its unique identifier `refGuId `.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"front.jpg","description":"Front view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.4922826Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/documents/{refGuId}/download": {
      "get": {
        "tags": [
          "Gallery"
        ],
        "summary": "Download Document by RefGuId",
        "description": "Download Document by its unique identifier (refGuId).\r\nReturns a binary file stream.\r\n            \r\n**Response:**\r\n- Type: File\r\n- Format: Binary\r\n- Example: sample.pdf",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","data":{"fileName":"sample.pdf","contentType":"application/pdf","contentDisposition":"attachment; filename=\"sample.pdf\"","body":"(binary document stream)"},"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/documents/{refGuId}/delete": {
      "delete": {
        "tags": [
          "Gallery"
        ],
        "summary": "Delete Document",
        "description": "Deletes a Document by refGuId.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/images": {
      "get": {
        "tags": [
          "Gallery"
        ],
        "summary": "Get Images",
        "description": "Retrieves collection of images filtered and sorted based on the provided query parameters.\r\nSupports searching keywords, and various fields, with flexible sorting and pagination options.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter images by defined image search fields. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter images by defined image search fields. Maximum length: 100 characters."
            }
          },
          {
            "name": "imageType",
            "in": "query",
            "description": "Specifies the image assignment filter to apply. Default: \"ShowAll\" Allowed values: ShowAll, Assigned, UnAssigned.",
            "schema": {
              "$ref": "#/components/schemas/ImageType"
            }
          },
          {
            "name": "isStock",
            "in": "query",
            "description": "fetch stock images. Default: \"False\"",
            "schema": {
              "type": "boolean",
              "description": "fetch stock images. Default: \"False\"",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Image[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"imageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","url":"https://example.com/images/sample1.jpg","thumbnail_64":"https://example.com/images/sample1_64.jpg","thumbnail_128":"https://example.com/images/sample1_128.jpg","thumbnail_256":"https://example.com/images/sample1_256.jpg","fileName":"sample-front.jpg","type":"image/jpeg","uploadDate":"2026-10-25T18:12:17.4929306Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","description":"Sample front view image","keywords":"sample,demo,image","isStockImage":true},{"imageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","url":"https://example.com/images/sample2.jpg","thumbnail_64":"https://example.com/images/sample2_64.jpg","thumbnail_128":"https://example.com/images/sample2_128.jpg","thumbnail_256":"https://example.com/images/sample2_256.jpg","fileName":"sample-side.jpg","type":"image/jpeg","uploadDate":"2026-10-30T18:12:17.4929312Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","description":"Sample side view image","keywords":"sample,demo,image","isStockImage":true}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/images/{refGuId}": {
      "get": {
        "tags": [
          "Gallery"
        ],
        "summary": "Get Image by RefGuId",
        "description": "Retrieves the details of a Image by its unique identifier `refGuId `.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Image>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"imageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","url":"https://example.com/images/sample1.jpg","thumbnail_64":"https://example.com/images/sample1_64.jpg","thumbnail_128":"https://example.com/images/sample1_128.jpg","thumbnail_256":"https://example.com/images/sample1_256.jpg","fileName":"sample-front.jpg","type":"image/jpeg","uploadDate":"2026-10-25T18:12:17.4933489Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","description":"Sample front view image","keywords":"sample,demo,image","isStockImage":true},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/images/{refGuId}/download": {
      "get": {
        "tags": [
          "Gallery"
        ],
        "summary": "Download Image by refGuId",
        "description": "Download Image by its unique identifier (refGuId).\r\nReturns a binary file stream.\r\n            \r\n**Response:**\r\n- Type: File\r\n- Format: Binary\r\n- Example: sample.jpg",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Image Downloaded successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","data":{"fileName":"sample.jpg","contentType":"image/jpeg","contentDisposition":"attachment; filename=\"sample-image.jpg\"","body":"(binary image stream)"},"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/images/{refGuId}/delete": {
      "delete": {
        "tags": [
          "Gallery"
        ],
        "summary": "Delete Image",
        "description": "Deletes a Image by refGuId.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/documents/{refGuId}/attach/inventoryitem/{refId}": {
      "post": {
        "tags": [
          "Gallery"
        ],
        "summary": "Attach Document With Inventory Item",
        "description": "Links the specified document to the specified inventory item.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the inventory item.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/documents/{refGuId}/detach/inventoryitem/{refId}": {
      "post": {
        "tags": [
          "Gallery"
        ],
        "summary": "Detach Document From Inventory Item",
        "description": "Removes the link between the specified document and the specified inventory item.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the inventory item.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/images/{refGuId}/attach/inventoryitem/{refId}": {
      "post": {
        "tags": [
          "Gallery"
        ],
        "summary": "Attach Image With Inventory Item",
        "description": "Links the specified image to the specified inventory item.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the inventory item.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/images/{refGuId}/detach/inventoryitem/{refId}": {
      "post": {
        "tags": [
          "Gallery"
        ],
        "summary": "Detach Image From Inventory Item",
        "description": "Removes the link between the specified image and the specified inventory item.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the inventory item.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/documents/{refGuId}/attach/asset/{refId}": {
      "post": {
        "tags": [
          "Gallery"
        ],
        "summary": "Attach Document With Asset",
        "description": "Links the specified document to the specified asset.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the asset.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/documents/{refGuId}/detach/asset/{refId}": {
      "post": {
        "tags": [
          "Gallery"
        ],
        "summary": "Detach Document From Asset",
        "description": "Removes the link between the specified document and the specified asset.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the asset.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/images/{refGuId}/attach/asset/{refId}": {
      "post": {
        "tags": [
          "Gallery"
        ],
        "summary": "Attach Image With Asset",
        "description": "Links the specified image to the specified asset.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the asset.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/images/{refGuId}/detach/asset/{refId}": {
      "post": {
        "tags": [
          "Gallery"
        ],
        "summary": "Detach Image From Asset",
        "description": "Removes the link between the specified image and the specified asset.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the asset.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/documents": {
      "get": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Get Documents",
        "description": "Retrieves collection of documents filtered and sorted based on the provided query parameters.\r\nSupports searching keywords, and various fields, with flexible sorting and pagination options.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter documents by defined document search fields. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter documents by defined document search fields. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which document fields can be searched. Default: \"Name\", \"Description\" Allowed values include: Name, Description.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which document fields can be searched. Default: \"Name\", \"Description\" Allowed values include: Name, Description.",
              "default": [
                "Name",
                "Description"
              ],
              "nullable": true
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Allowed values: Name, Description.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"front.jpg","description":"Front view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.4954196Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"back.jpg","description":"Back view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.4954197Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/documents/{refGuId}": {
      "get": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Get Document by RefGuId",
        "description": "Retrieves the details of a Document by its unique identifier `RefGuId `.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"front.jpg","description":"Front view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.4956084Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/documents/{refGuId}/download": {
      "get": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Download Document by RefGuId",
        "description": "Download Document by its unique identifier (RefGuId).\r\nReturns a binary file stream.\r\n            \r\n**Response:**\r\n- Type: File\r\n- Format: Binary\r\n- Example: sample.pdf",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Document Downloaded successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","data":{"fileName":"sample.pdf","contentType":"application/pdf","contentDisposition":"attachment; filename=\"sample.pdf\"","body":"(binary document stream)"},"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/documents/{refGuId}/delete": {
      "delete": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Delete Document",
        "description": "Deletes a Document by RefGUID.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted Successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/images": {
      "get": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Get Images",
        "description": "Retrieves collection of images filtered and sorted based on the provided query parameters.\r\nSupports searching keywords, and various fields, with flexible sorting and pagination options.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter images by defined image search fields. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter images by defined image search fields. Maximum length: 100 characters."
            }
          },
          {
            "name": "imageType",
            "in": "query",
            "description": "Specifies the image assignment filter to apply. Default: \"ShowAll\" Allowed values: ShowAll, Assigned, UnAssigned.",
            "schema": {
              "$ref": "#/components/schemas/ImageType"
            }
          },
          {
            "name": "isStock",
            "in": "query",
            "description": "fetch stock images. Default: \"False\"",
            "schema": {
              "type": "boolean",
              "description": "fetch stock images. Default: \"False\"",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Image[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"imageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","url":"https://example.com/images/sample1.jpg","thumbnail_64":"https://example.com/images/sample1_64.jpg","thumbnail_128":"https://example.com/images/sample1_128.jpg","thumbnail_256":"https://example.com/images/sample1_256.jpg","fileName":"sample-front.jpg","type":"image/jpeg","uploadDate":"2026-10-25T18:12:17.4961711Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","description":"Sample front view image","keywords":"sample,demo,image","isStockImage":true},{"imageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","url":"https://example.com/images/sample2.jpg","thumbnail_64":"https://example.com/images/sample2_64.jpg","thumbnail_128":"https://example.com/images/sample2_128.jpg","thumbnail_256":"https://example.com/images/sample2_256.jpg","fileName":"sample-side.jpg","type":"image/jpeg","uploadDate":"2026-10-30T18:12:17.4961714Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","description":"Sample side view image","keywords":"sample,demo,image","isStockImage":true}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/images/{refGuId}": {
      "get": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Get Image by RefGuId",
        "description": "Retrieves the details of a Image by its unique identifier `RefGuId `.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Image>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"imageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","url":"https://example.com/images/sample1.jpg","thumbnail_64":"https://example.com/images/sample1_64.jpg","thumbnail_128":"https://example.com/images/sample1_128.jpg","thumbnail_256":"https://example.com/images/sample1_256.jpg","fileName":"sample-front.jpg","type":"image/jpeg","uploadDate":"2026-10-25T18:12:17.4963535Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","description":"Sample front view image","keywords":"sample,demo,image","isStockImage":true},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/images/{refGuId}/download": {
      "get": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Download Image by RefGuId",
        "description": "Download Image by its unique identifier (RefGuId).\r\nReturns a binary file stream.\r\n            \r\n**Response:**\r\n- Type: File\r\n- Format: Binary\r\n- Example: sample.jpg",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","data":{"fileName":"sample.jpg","contentType":"image/jpeg","contentDisposition":"attachment; filename=\"sample-image.jpg\"","body":"(binary image stream)"},"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/images/{refGuId}/delete": {
      "delete": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Delete Image",
        "description": "Deletes a Image by RefGUID.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/documents/{refGuId}/attach/inventoryitem/{refId}": {
      "post": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Attach Document With Inventory Item",
        "description": "Links the specified document to the specified inventory item. Sandbox data only — no mutation.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the inventory item.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/documents/{refGuId}/detach/inventoryitem/{refId}": {
      "post": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Detach Document From Inventory Item",
        "description": "Removes the link between the specified document and the specified inventory item. Sandbox data only — no mutation.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the inventory item.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/images/{refGuId}/attach/inventoryitem/{refId}": {
      "post": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Attach Image With Inventory Item",
        "description": "Links the specified image to the specified inventory item. Sandbox data only — no mutation.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the inventory item.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/images/{refGuId}/detach/inventoryitem/{refId}": {
      "post": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Detach Image From Inventory Item",
        "description": "Removes the link between the specified image and the specified inventory item. Sandbox data only — no mutation.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the inventory item.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/documents/{refGuId}/attach/asset/{refId}": {
      "post": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Attach Document With Asset",
        "description": "Links the specified document to the specified asset. Sandbox data only — no mutation.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the asset.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/documents/{refGuId}/detach/asset/{refId}": {
      "post": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Detach Document From Asset",
        "description": "Removes the link between the specified document and the specified asset. Sandbox data only — no mutation.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the asset.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/images/{refGuId}/attach/asset/{refId}": {
      "post": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Attach Image With Asset",
        "description": "Links the specified image to the specified asset. Sandbox data only — no mutation.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the asset.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/images/{refGuId}/detach/asset/{refId}": {
      "post": {
        "tags": [
          "GallerySandbox"
        ],
        "summary": "Detach Image From Asset",
        "description": "Removes the link between the specified image and the specified asset. Sandbox data only — no mutation.",
        "parameters": [
          {
            "name": "refGuId",
            "in": "path",
            "description": "Unique identifier (refGuId) of the image.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (refId) of the asset.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/insurances": {
      "get": {
        "tags": [
          "Insurance"
        ],
        "summary": "Get Insurances",
        "description": "Retrieves all insurance records.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter insurances. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter insurances. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text is matched. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which insurance fields are searched. Default: \"InsuranceCo\" Allowed values: InsuranceCo, Description, PersonName, Policy, Phone, Coverage, Email, Limits.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which insurance fields are searched. Default: \"InsuranceCo\" Allowed values: InsuranceCo, Description, PersonName, Policy, Phone, Coverage, Email, Limits.",
              "default": [
                "InsuranceCo"
              ],
              "nullable": true
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to sort results by. Default: \"InsuranceCo\" Allowed values: InsuranceCo, Description, PersonName, Phone, Email, Policy, Coverage, Limits, StartDate, EndDate.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering insurance records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering insurance records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering insurance records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering insurance records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filter applies to. Default: \"EndDate\" Allowed values: StartDate, EndDate.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Insurance[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"insuranceCo":"ABC Insurance Ltd.","description":"Comprehensive insurance coverage for office equipment and assets","person":"John Smith","phone":"+1-555-123-4567","email":"john.smith@abcinsurance.com","policy":"POL-2024-001","coverage":"Asset Damage and Theft","limits":"$500,000","deductible":1000.00,"premium":5000.00,"startDate":"2024-01-01","endDate":"2024-12-31","active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"refId":2,"insuranceCo":"Global Secure Insurance","description":"Cybersecurity and IT infrastructure insurance policy","person":"Sarah Johnson","phone":"+1-555-987-6543","email":"sarah.johnson@globalsecure.com","policy":"CYBER-2024-101","coverage":"Cyber Liability","limits":"$1,000,000","deductible":2500.00,"premium":12000.00,"startDate":"2024-04-01","endDate":null,"active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/insurances/{refId}": {
      "get": {
        "tags": [
          "Insurance"
        ],
        "summary": "Get Insurance by RefId",
        "description": "Retrieves the details of a single insurance by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Insurance>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"insuranceCo":"ABC Insurance Ltd.","description":"Comprehensive insurance coverage for office equipment and assets","person":"John Smith","phone":"555-123-4567","email":"john.smith@abcinsurance.com","policy":"POL-2024-001","coverage":"Asset Damage and Theft","limits":"$500,000","deductible":1000.00,"premium":5000.00,"startDate":"2024-01-01","endDate":"2024-12-31","active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/insurances/add": {
      "post": {
        "tags": [
          "Insurance"
        ],
        "summary": "Add Insurance",
        "description": "Creates a new insurance using the details provided in the request body.",
        "requestBody": {
          "description": "Contains the insurance details to be added.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddInsuranceRequest"
                  }
                ],
                "description": "Request model for creating a new insurance."
              },
              "example": {"insuranceCo":"ABC Insurance Ltd.","description":"Comprehensive insurance coverage for office equipment and assets","person":"John Smith","phone":"555-123-4567","email":"john.smith@abcinsurance.com","policy":"POL-2024-001","coverage":"Asset Damage and Theft","limits":"$500,000","deductible":1000.00,"premium":5000.00,"startDate":"2024-01-01","endDate":"2024-12-31","active":true}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Insurance>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/insurances/{refId}/update": {
      "put": {
        "tags": [
          "Insurance"
        ],
        "summary": "Update Insurance",
        "description": "Modifies the insurance identified by refId using the details provided in the request body.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the insurance details to update.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateInsuranceRequest"
                  }
                ],
                "description": "Request model for updating an existing insurance."
              },
              "example": {"insuranceCo":"ABC Insurance Ltd.","description":"Comprehensive insurance coverage for office equipment and assets","person":"John Smith","phone":"55-123-4567","email":"john.smith@abcinsurance.com","policy":"POL-2024-001","coverage":"Asset Damage and Theft","limits":"$500,000","deductible":1000.00,"premium":5000.00,"startDate":"2024-01-01","endDate":"2024-12-31","active":true}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/insurances/{refId}/assets": {
      "get": {
        "tags": [
          "Insurance"
        ],
        "summary": "Get Insurance Assets",
        "description": "Retrieves all active assets linked to the insurance identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InsuranceAssetLinked[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":101,"insuranceRefId":5},{"refId":2,"assetRefId":102,"insuranceRefId":9}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/insurances/{refId}/documents": {
      "get": {
        "tags": [
          "Insurance"
        ],
        "summary": "Get Insurance Documents",
        "description": "Retrieves all documents for the insurance identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"documentRefGuid":"d1a2b3c4-e5f6-7890-abcd-ef1234567890","fileType":"PDF","fileName":"IT_Infrastructure_Budget_2024.pdf","description":"Annual budget allocation document","keywords":"budget, IT, 2024","uploadDate":"2024-01-05T00:00:00","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"documentRefGuid":"f2c3d4e5-f6a7-8901-bcde-f12345678901","fileType":"XLSX","fileName":"IT_Asset_Tracker.xlsx","description":"Spreadsheet tracking IT assets","keywords":"assets, tracker","uploadDate":"2024-02-10T00:00:00","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/insurances/{refId}/assets/associate": {
      "post": {
        "tags": [
          "Insurance"
        ],
        "summary": "Link Insurance Assets",
        "description": "Links an asset to the insurance identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the asset reference ID.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AssociateInsuranceAssetRequest"
                  }
                ],
                "description": "Request model for associating an asset with a insurance."
              },
              "example": {"assetRefId":[101,102,103]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Insurance>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":101},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/insurances/{refId}/assets/unlink": {
      "put": {
        "tags": [
          "Insurance"
        ],
        "summary": "Unlink Insurance Assets",
        "description": "Removes the link between the insurance identified by refId and one or more assets.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the asset reference IDs to unlink.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UnlinkInsuranceAssetsRequest"
                  }
                ],
                "description": "Request model for unlinking one or more assets from a insurance."
              },
              "example": {"assetRefIds":[101,102]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/insurances/documents/{refGuid}/download": {
      "get": {
        "tags": [
          "Insurance"
        ],
        "summary": "Download Insurance Document",
        "description": "Downloads the insurance document identified by refGuid.\r\nReturns a binary file stream.\r\n            \r\n**Response:**\r\n- Type: File\r\n- Format: Binary\r\n- Example: budget.pdf",
        "parameters": [
          {
            "name": "refGuid",
            "in": "path",
            "description": "Unique GUID of the insurance document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","data":{"fileName":"sample.pdf","contentType":"application/pdf","contentDisposition":"attachment; filename=\"sample.pdf\"","body":"(binary document stream)"},"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/insurances/documents/{refGuid}/delete": {
      "delete": {
        "tags": [
          "Insurance"
        ],
        "summary": "Delete Insurance Document",
        "description": "Deletes the insurance document identified by refGuid.",
        "parameters": [
          {
            "name": "refGuid",
            "in": "path",
            "description": "Unique GUID of the insurance document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/insurances/{refId}/delete": {
      "delete": {
        "tags": [
          "Insurance"
        ],
        "summary": "Delete Insurance",
        "description": "Deletes the insurance identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/insurances": {
      "get": {
        "tags": [
          "InsuranceSandbox"
        ],
        "summary": "Get Insurances",
        "description": "Retrieves all insurance records.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter insurances. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter insurances. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text is matched. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which insurance fields are searched. Default: \"InsuranceCo\" Allowed values: InsuranceCo, Description, PersonName, Policy, Phone, Coverage, Email, Limits.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which insurance fields are searched. Default: \"InsuranceCo\" Allowed values: InsuranceCo, Description, PersonName, Policy, Phone, Coverage, Email, Limits.",
              "default": [
                "InsuranceCo"
              ],
              "nullable": true
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to sort results by. Default: \"InsuranceCo\" Allowed values: InsuranceCo, Description, PersonName, Phone, Email, Policy, Coverage, Limits, StartDate, EndDate.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering insurance records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering insurance records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering insurance records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering insurance records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filter applies to. Default: \"EndDate\" Allowed values: StartDate, EndDate.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Insurance[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"insuranceCo":"ABC Insurance Ltd.","description":"Comprehensive insurance coverage for office equipment and assets","person":"John Smith","phone":"+1-555-123-4567","email":"john.smith@abcinsurance.com","policy":"POL-2024-001","coverage":"Asset Damage and Theft","limits":"$500,000","deductible":1000.00,"premium":5000.00,"startDate":"2024-01-01","endDate":"2024-12-31","active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"refId":2,"insuranceCo":"Global Secure Insurance","description":"Cybersecurity and IT infrastructure insurance policy","person":"Sarah Johnson","phone":"+1-555-987-6543","email":"sarah.johnson@globalsecure.com","policy":"CYBER-2024-101","coverage":"Cyber Liability","limits":"$1,000,000","deductible":2500.00,"premium":12000.00,"startDate":"2024-04-01","endDate":null,"active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/insurances/{refId}": {
      "get": {
        "tags": [
          "InsuranceSandbox"
        ],
        "summary": "Get Insurance by RefId",
        "description": "Retrieves the details of a single insurance by its unique identifier (refId). For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Insurance>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"insuranceCo":"ABC Insurance Ltd.","description":"Comprehensive insurance coverage for office equipment and assets","person":"John Smith","phone":"555-123-4567","email":"john.smith@abcinsurance.com","policy":"POL-2024-001","coverage":"Asset Damage and Theft","limits":"$500,000","deductible":1000.00,"premium":5000.00,"startDate":"2024-01-01","endDate":"2024-12-31","active":true,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/insurances/add": {
      "post": {
        "tags": [
          "InsuranceSandbox"
        ],
        "summary": "Add Insurance",
        "description": "Creates a new insurance using the details provided in the request body.",
        "requestBody": {
          "description": "Contains the insurance details to be added.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddInsuranceRequest"
                  }
                ],
                "description": "Request model for creating a new insurance."
              },
              "example": {"insuranceCo":"ABC Insurance Ltd.","description":"Comprehensive insurance coverage for office equipment and assets","person":"John Smith","phone":"555-123-4567","email":"john.smith@abcinsurance.com","policy":"POL-2024-001","coverage":"Asset Damage and Theft","limits":"$500,000","deductible":1000.00,"premium":5000.00,"startDate":"2024-01-01","endDate":"2024-12-31","active":true}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Insurance>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/insurances/{refId}/update": {
      "put": {
        "tags": [
          "InsuranceSandbox"
        ],
        "summary": "Update Insurance",
        "description": "Modifies the insurance identified by refId using the details provided in the request body.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the insurance details to update.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateInsuranceRequest"
                  }
                ],
                "description": "Request model for updating an existing insurance."
              },
              "example": {"insuranceCo":"ABC Insurance Ltd.","description":"Comprehensive insurance coverage for office equipment and assets","person":"John Smith","phone":"55-123-4567","email":"john.smith@abcinsurance.com","policy":"POL-2024-001","coverage":"Asset Damage and Theft","limits":"$500,000","deductible":1000.00,"premium":5000.00,"startDate":"2024-01-01","endDate":"2024-12-31","active":true}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/insurances/{refId}/assets": {
      "get": {
        "tags": [
          "InsuranceSandbox"
        ],
        "summary": "Get Insurance Assets",
        "description": "Retrieves all assets linked to the insurance identified by refId. For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InsuranceAssetLinked[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":101,"insuranceRefId":5},{"refId":2,"assetRefId":102,"insuranceRefId":9}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/insurances/{refId}/documents": {
      "get": {
        "tags": [
          "InsuranceSandbox"
        ],
        "summary": "Get Insurance Documents",
        "description": "Retrieves all documents associated with the insurance identified by refId. For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"documentRefGuid":"d1a2b3c4-e5f6-7890-abcd-ef1234567890","fileType":"PDF","fileName":"IT_Infrastructure_Budget_2024.pdf","description":"Annual budget allocation document","keywords":"budget, IT, 2024","uploadDate":"2024-01-05T00:00:00","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"documentRefGuid":"f2c3d4e5-f6a7-8901-bcde-f12345678901","fileType":"XLSX","fileName":"IT_Asset_Tracker.xlsx","description":"Spreadsheet tracking IT assets","keywords":"assets, tracker","uploadDate":"2024-02-10T00:00:00","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/insurances/{refId}/assets/associate": {
      "post": {
        "tags": [
          "InsuranceSandbox"
        ],
        "summary": "Link Insurance Assets",
        "description": "Links an asset to the insurance identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the asset reference ID.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AssociateInsuranceAssetRequest"
                  }
                ],
                "description": "Request model for associating an asset with a insurance."
              },
              "example": {"assetRefId":[101,102,103]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Insurance>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":101},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/insurances/{refId}/assets/unlink": {
      "put": {
        "tags": [
          "InsuranceSandbox"
        ],
        "summary": "Unlink Insurance Assets",
        "description": "Removes the link between the insurance identified by refId and one or more assets.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the asset reference IDs to unlink.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UnlinkInsuranceAssetsRequest"
                  }
                ],
                "description": "Request model for unlinking one or more assets from a insurance."
              },
              "example": {"assetRefIds":[101,102]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/insurances/documents/{refGuid}/download": {
      "get": {
        "tags": [
          "InsuranceSandbox"
        ],
        "summary": "Download Insurance Document",
        "description": "Downloads the insurance document identified by refGuid. For a successful response, pass refGuid = \"d1a2b3c4-e5f6-7890-abcd-ef1234567890\".\r\nReturns a simulated file stream description in sandbox mode.",
        "parameters": [
          {
            "name": "refGuid",
            "in": "path",
            "description": "Unique GUID of the insurance document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","data":{"fileName":"sample.pdf","contentType":"application/pdf","contentDisposition":"attachment; filename=\"sample.pdf\"","body":"(binary document stream)"},"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/insurances/documents/{refGuid}/delete": {
      "delete": {
        "tags": [
          "InsuranceSandbox"
        ],
        "summary": "Delete Insurance Document",
        "description": "Deletes the insurance document identified by refGuid. For a successful response, pass refGuid = \"d1a2b3c4-e5f6-7890-abcd-ef1234567890\".",
        "parameters": [
          {
            "name": "refGuid",
            "in": "path",
            "description": "Unique GUID of the insurance document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/insurances/{refId}/delete": {
      "delete": {
        "tags": [
          "InsuranceSandbox"
        ],
        "summary": "Delete Insurance",
        "description": "Deletes the insurance identified by refId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the insurance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/{refId}": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Inventory by RefId",
        "description": "Retrieves the details of a inventory item by its unique identifier (refId).\r\nIt supports optional query parameters to include related data such as custom fields, images, and documents.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCategorytName",
            "in": "query",
            "description": "Whether to include category name.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include category name.",
              "default": false
            }
          },
          {
            "name": "fetchSubCategorytName",
            "in": "query",
            "description": "Whether to include subcategory name.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include subcategory name.",
              "default": false
            }
          },
          {
            "name": "fetchDefaultImageDetail",
            "in": "query",
            "description": "Whether to include detailed information of the default image.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include detailed information of the default image.",
              "default": false
            }
          },
          {
            "name": "fetchImages",
            "in": "query",
            "description": "Whether to include all images associated with the inventory item. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include all images associated with the inventory item. Default: \"false\"",
              "default": false
            }
          },
          {
            "name": "fetchDocuments",
            "in": "query",
            "description": "Whether to include documents associated with the inventory item. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include documents associated with the inventory item. Default: \"false\"",
              "default": false
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields associated with the inventory item. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields associated with the inventory item. Default: \"false\"",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventoryItem>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"inventoryTagId":"INV-000001","description":"Sample Laptop","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2025-01-01T00:00:00","defaultImageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","defaultImage":null,"images":[],"documents":[],"categoryRefId":1,"categoryName":"Sample Category","subCategoryRefId":1,"subCategoryName":"Sample SubCategory","notes":"Sample inventory record","sku":"SKU-001","brand":"Example Brand","model":"Model-X","vendor":"Sample Vendor","url":"https://example.com/product","size":"13-inch","color":"Silver","style":"Standard","unit":"Piece","minQty":1,"maxQty":50,"stock":10,"customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}},{"refId":2,"customFieldRefId":102,"value":"10","customField":{"refId":203,"label":"NextNumber","fieldType":{"refId":7,"name":"Numeric Auto Increment","hasList":true,"fieldName":"NUMERICAUTOINCREMENT"},"isRequired":true,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":11}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/bytagId/{inventoryTagId}": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Inventory by TagId",
        "description": "Retrieves the details of a inventory item by its unique identifier `inventoryTagId `.\r\nIt supports optional query parameters to include related data such as custom fields, images, and documents.",
        "parameters": [
          {
            "name": "inventoryTagId",
            "in": "path",
            "description": "Unique tag or code assigned to the inventory item for tracking.",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string"
            }
          },
          {
            "name": "fetchCategorytName",
            "in": "query",
            "description": "Whether to include category name.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include category name.",
              "default": false
            }
          },
          {
            "name": "fetchSubCategorytName",
            "in": "query",
            "description": "Whether to include subcategory name.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include subcategory name.",
              "default": false
            }
          },
          {
            "name": "fetchDefaultImageDetail",
            "in": "query",
            "description": "Whether to include detailed information of the default image.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include detailed information of the default image.",
              "default": false
            }
          },
          {
            "name": "fetchImages",
            "in": "query",
            "description": "Whether to include all images associated with the inventory item. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include all images associated with the inventory item. Default: \"false\"",
              "default": false
            }
          },
          {
            "name": "fetchDocuments",
            "in": "query",
            "description": "Whether to include documents associated with the inventory item. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include documents associated with the inventory item. Default: \"false\"",
              "default": false
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields associated with the inventory item. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields associated with the inventory item. Default: \"false\"",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventoryItem>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"inventoryTagId":"INV-000001","description":"Sample Laptop","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2025-01-01T00:00:00","defaultImageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","defaultImage":null,"images":[],"documents":[],"categoryRefId":1,"categoryName":"Sample Category","subCategoryRefId":1,"subCategoryName":"Sample SubCategory","notes":"Sample inventory record","sku":"SKU-001","brand":"Example Brand","model":"Model-X","vendor":"Sample Vendor","url":"https://example.com/product","size":"13-inch","color":"Silver","style":"Standard","unit":"Piece","minQty":1,"maxQty":50,"stock":10,"customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}},{"refId":2,"customFieldRefId":102,"value":"10","customField":{"refId":203,"label":"NextNumber","fieldType":{"refId":7,"name":"Numeric Auto Increment","hasList":true,"fieldName":"NUMERICAUTOINCREMENT"},"isRequired":true,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":11}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Inventories",
        "description": "Retrieves collection of inventory items filtered and sorted based on the provided query parameters.\r\nSupports searching by category, subcategory, keywords, and various fields, with flexible sorting and pagination options.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter inventories by defined inventory search fields. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter inventories by defined inventory search fields. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which inventory fields can be searched. Default: \"InventoryTagId\", \"Description\" Allowed values include: InventoryTagId, Description, Unit, SKU, Brand, Model, Size, Style, Color, Notes, Vendor, Url.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which inventory fields can be searched. Default: \"InventoryTagId\", \"Description\" Allowed values include: InventoryTagId, Description, Unit, SKU, Brand, Model, Size, Style, Color, Notes, Vendor, Url.",
              "default": [
                "InventoryTagId",
                "Description"
              ],
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which inventory custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which inventory custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "categoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
              "format": "int32"
            }
          },
          {
            "name": "subCategoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
              "format": "int32"
            }
          },
          {
            "name": "stock",
            "in": "query",
            "description": "Defines the stock filter for the inventory list. Default: \"All\" Allowed values: All, Ideal, IdealAndLow, IdealAndOverflow, Low, LowAndOverflow, Overflow.",
            "schema": {
              "$ref": "#/components/schemas/StockType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Allowed values: InventoryTagId, Description, Unit, Stock, SKU, Brand, Model, Size, Style, Color, Notes, Vendor, Url, MinQty, MaxQty, DateCreated, CreatedBy, CategoryName, SubCategoryName.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering inventory records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering inventory records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering inventory records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering inventory records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filtering should apply to. Ignored if dateRangeByCustomField is provided. Default: \"DateCreated\" Allowed values: DateCreated.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "dateRangeByCustomField",
            "in": "query",
            "description": "Defines which custom date field the filter should apply to. Provide the Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which custom date field the filter should apply to. Provide the Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "fetchCategoryName",
            "in": "query",
            "description": "Whether to include category name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include category name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchSubCategoryName",
            "in": "query",
            "description": "Whether to include subcategory name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include subcategory name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventoryItem[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":123,"inventoryTagId":"INV-SAMPLE-001","description":"Sample Laptop Device","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-11-04T18:12:17.5073874Z","defaultImageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","defaultImage":null,"images":[],"documents":[],"categoryRefId":10,"categoryName":"Sample Electronics","subCategoryRefId":101,"subCategoryName":"Sample Laptops","notes":"This is a sample asset for demo purposes.","sku":"SAMPLE-SKU-001","brand":"Sample Brand","model":"Sample Model X","vendor":"Sample Vendor Inc.","url":"https://example.com/","size":"13-inch","color":"Silver","style":"Ultra-thin","unit":"Piece","minQty":1,"maxQty":50,"stock":10,"customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},{"refId":453,"inventoryTagId":"INV-SAMPLE-002","description":"Sample Desktop Device","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-11-04T18:12:17.5073923Z","defaultImageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","defaultImage":null,"images":[],"documents":[],"categoryRefId":10,"categoryName":"Sample Electronics","subCategoryRefId":101,"subCategoryName":"Sample Desktop","notes":"This is a sample asset for demo purposes.","sku":"SAMPLE-SKU-002","brand":"Sample Brand","model":"Sample Model Y","vendor":"Sample Vendor Inc.","url":"https://example.com/sample-desktop.jpg","size":"Standard","color":"Silver","style":"Modern","unit":"Piece","minQty":1,"maxQty":50,"stock":10,"customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/{refId}/images": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Inventory Images by RefId",
        "description": "Retrieves the list of images linked to a given inventory item along with metadata such as file name, upload date, and URL paths.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Image[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"imageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","url":"https://example.com/images/sample1.jpg","thumbnail_64":"https://example.com/images/sample1_64.jpg","thumbnail_128":"https://example.com/images/sample1_128.jpg","thumbnail_256":"https://example.com/images/sample1_256.jpg","fileName":"sample-front.jpg","type":"image/jpeg","uploadDate":"2026-10-25T18:12:17.5077205Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","description":"Sample front view image","keywords":"sample,demo,image","isStockImage":true},{"imageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","url":"https://example.com/images/sample2.jpg","thumbnail_64":"https://example.com/images/sample2_64.jpg","thumbnail_128":"https://example.com/images/sample2_128.jpg","thumbnail_256":"https://example.com/images/sample2_256.jpg","fileName":"sample-side.jpg","type":"image/jpeg","uploadDate":"2026-10-30T18:12:17.5077212Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","description":"Sample side view image","keywords":"sample,demo,image","isStockImage":true}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/{refId}/documents": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Inventory Documents by RefId",
        "description": "Retrieves the list of documents linked to a given inventory item, including metadata such as file name, description, upload date, type.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"front.jpg","description":"Front view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.5079404Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"back.jpg","description":"Back view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.5079405Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/{refId}/transactions": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Transactions",
        "description": "Retrieves the details of a inventory transactions by inventory item unique identifier (refId) RefId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "TransactionType",
            "in": "query",
            "description": "Defines which transaction type include in result. Default All type transaction included in result. Allowed values include: Opening, Adjustment, AddStock, RemoveStock, Movement.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/InventoryEvent"
              },
              "description": "Defines which transaction type include in result. Default All type transaction included in result. Allowed values include: Opening, Adjustment, AddStock, RemoveStock, Movement.",
              "nullable": true
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Desc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Transaction[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"inventoryItemRefId":1,"inventoryEvent":"Opening","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","personRefId":100,"customerRefId":null,"personName":"Sample Person A","eventDate":"2026-11-04T18:12:17.508828Z","refNo":"SAMPLE-REF-001","quantity":10,"unitCost":20,"totalCost":200,"notes":"Sample notes","signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-11-04T18:12:17.5088288Z","runningBalance":10,"aisle":null,"shelf":null,"bin":null,"transactionSummaries":[{"aisleRefId":1,"shelfRefId":10,"binRefId":100,"quantity":10},{"aisleRefId":0,"shelfRefId":0,"binRefId":0,"quantity":5}]},{"refId":2,"inventoryItemRefId":1,"inventoryEvent":"AddStock","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","personRefId":101,"customerRefId":null,"personName":"Sample Person B","eventDate":"2026-11-04T18:12:17.5088297Z","refNo":"SAMPLE-REF-002","quantity":5,"unitCost":10,"totalCost":50,"notes":"Sample notes 2","signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-11-04T18:12:17.5088299Z","runningBalance":15,"aisle":null,"shelf":null,"bin":null,"transactionSummaries":[{"aisleRefId":2,"shelfRefId":20,"binRefId":200,"quantity":5},{"aisleRefId":0,"shelfRefId":0,"binRefId":0,"quantity":5}]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/transactions/{refId}": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Transaction",
        "description": "Retrieves the details of a inventory transactions by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item transaction. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Transaction>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"inventoryItemRefId":1,"inventoryEvent":"Opening","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","personRefId":100,"customerRefId":null,"personName":"Sample Person A","eventDate":"2026-11-04T18:12:17.5093143Z","refNo":"SAMPLE-REF-001","quantity":10,"unitCost":20,"totalCost":200,"notes":"Sample notes","signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-11-04T18:12:17.5093148Z","runningBalance":10,"aisle":null,"shelf":null,"bin":null,"transactionSummaries":[{"aisleRefId":1,"shelfRefId":10,"binRefId":100,"quantity":10},{"aisleRefId":0,"shelfRefId":0,"binRefId":0,"quantity":5}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/transactions/{refId}/update": {
      "put": {
        "tags": [
          "Inventory"
        ],
        "summary": "Update Inventory Transaction",
        "description": "Update inventory transaction using the provided request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory transaction. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateTransactionRequest"
                  }
                ],
                "description": "Represents a transaction record for inventory item, including details\r\nsuch as event type, cost, and associated person or customer."
              },
              "example": {"personRefId":1,"customerRefId":1,"personName":"Jhon","eventDate":"2026-11-04","unitCost":100.00,"totalCost":500.00,"refNo":"REF-001","notes":"this is test notes","aisle":"A1","shelf":"S1","bin":"B1"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Transaction>"
                },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/{refId}/transactions/add": {
      "post": {
        "tags": [
          "Inventory"
        ],
        "summary": "Add Inventory Transaction",
        "description": "Creates a new inventory transaction (AddStock, RemoveStock, Adjustment Or Stock Movement) for the specified inventory item.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddTransactionRequest"
                  }
                ],
                "description": "Request model for adding a new inventory transaction to an existing inventory item.\r\nSupports five transaction types: Opening, AddStock, RemoveStock, Adjustment, and Movement (Movement requires stock location tracking).\r\nFor accounts with stock-location tracking enabled, stock can be distributed across\r\nmultiple storage locations using the Locations array (AddStock, RemoveStock, Adjustment)\r\nor the FromLocations and ToLocations arrays (Movement).\r\nOnly one of PersonRefId, CustomerRefId, or PersonName may be provided per request."
              },
              "example": {"eventType":"AddStock","quantity":10,"isAddToStock":true,"eventDate":"2026-11-04","personRefId":1,"customerRefId":null,"personName":null,"unitCost":100.00,"totalCost":1000.00,"refNo":"REF-001","notes":"this is test notes","aisle":"A1","shelf":"S1","bin":"B1","locations":[{"aisleRefId":1,"shelfRefId":10,"binRefId":100,"quantity":6},{"aisleRefId":1,"shelfRefId":10,"binRefId":101,"quantity":4}],"fromLocations":null,"toLocations":null}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Object>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":901},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/{refId}/histories": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Inventory Histories by RefId",
        "description": "Retrieves the details of a inventory history by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Desc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventoryItemHistory[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"historyRefId":1,"historyOn":"2026-11-04T18:12:17.5118717Z","event":"Inventory edit","historyDetails":[{"historyDetailsRefId":11,"field":"Min. Qty.","changeFrom":"0","changeTo":"1"},{"historyDetailsRefId":11,"field":"Max. Qty.","changeFrom":"5","changeTo":"10"}],"transactionRefId":null,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"historyRefId":2,"historyOn":"2026-11-04T18:12:17.5118723Z","event":"Add stock","historyDetails":[{"historyDetailsRefId":1,"field":"Stock","changeFrom":"5","changeTo":"10"}],"transactionRefId":1,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/histories/{refId}": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Inventory History by RefId",
        "description": "Retrieves a single inventory history record by the history's unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory history record (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventoryItemHistory>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"historyRefId":1,"historyOn":"2026-11-04T18:12:17.5123094Z","event":"Inventory edit","historyDetails":[{"historyDetailsRefId":11,"field":"Min. Qty.","changeFrom":"0","changeTo":"1"}],"transactionRefId":null,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/customfields": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Inventory Custom Fields",
        "description": "Get Inventory custom fields.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomField>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0},{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":true,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":0}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/settings": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Inventory Settings",
        "description": "Get Inventory Settings",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventorySetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"hasInventory":true,"field_InventoryTagId_Enabled":true,"field_InventoryTagId_Label":"Inventory Tag ID","field_InventoryTagId_Required":true,"field_Description_Enabled":true,"field_Description_Label":"Description","field_Description_Required":true,"field_Unit_Enabled":true,"field_Unit_Label":"Unit","field_Unit_Required":true,"field_Stock_Enabled":true,"field_Stock_Label":"Stock","field_Stock_Required":true,"field_Notes_Enabled":false,"field_Notes_Label":"Notes","field_Notes_Required":false,"field_Sku_Enabled":false,"field_Sku_Label":"SKU","field_Sku_Required":false,"field_Size_Enabled":true,"field_Size_Label":"Size","field_Size_Required":true,"field_Color_Enabled":false,"field_Color_Label":"Color","field_Color_Required":false,"field_Style_Enabled":true,"field_Style_Label":"Style","field_Style_Required":true,"field_Brand_Enabled":true,"field_Brand_Label":"Brand","field_Brand_Required":true,"field_Model_Enabled":true,"field_Model_Label":"Model","field_Model_Required":true,"field_Vendor_Enabled":false,"field_Vendor_Label":"Vendor","field_Vendor_Required":false,"field_VendorWebsite_Enabled":false,"field_VendorWebsite_Label":"Vendor Website","field_VendorWebsite_Required":false,"field_MinQty_Enabled":true,"field_MinQty_Label":"Min. Qty.","field_MinQty_Required":true,"field_MaxQty_Enabled":true,"field_MaxQty_Label":"Max. Qty.","field_MaxQty_Required":true,"field_Transaction_EventDate_Enabled":true,"field_Transaction_EventDate_Label":"Event Date","field_Transaction_EventDate_Required":true,"field_Transaction_Quantity_Enabled":true,"field_Transaction_Quantity_Label":"Quantity","field_Transaction_Quantity_Required":true,"field_Transaction_UnitPrice_Enabled":true,"field_Transaction_UnitPrice_Label":"Unit Price","field_Transaction_UnitPrice_Required":true,"field_Transaction_TotalValue_Enabled":true,"field_Transaction_TotalValue_Label":"Total Value","field_Transaction_TotalValue_Required":true,"field_Transaction_PoNo_Enabled":true,"field_Transaction_PoNo_Label":"PO No.","field_Transaction_PoNo_Required":true,"field_Transaction_Notes_Enabled":true,"field_Transaction_Notes_Label":"Notes","field_Transaction_Notes_Required":true,"person_List_Enabled":true,"customer_List_Enabled":false,"field_TypeName_Enabled":true,"signature_Enabled":false,"field_Event_OpeningBalance_Label":"Opening Balance","field_Event_AddToStock_Label":"Add to Stock","field_Event_RemoveFromStock_Label":"Remove from Stock","field_Event_StockAdjustment_Label":"Stock Adjustment","field_Location_Enabled":true,"field_Location_Level":"Level_3","field_Level_1_Label":"Bin","field_Level_1_Required":false,"field_Level_2_Label":"Shelf","field_Level_2_Required":false,"field_Level_3_Label":"Aisle","field_Level_3_Required":true,"autoTagging_Enabled":true,"nextTagId":"INV001","padding_Enabled":true,"padding_Digits":"4","prefix":"D","suffix":"G","nextTagStartingNumber":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/add": {
      "post": {
        "tags": [
          "Inventory"
        ],
        "summary": "Add Inventory Item",
        "description": "Creates a inventory item using the provided request.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddInventoryItemRequest"
                  }
                ],
                "description": "Request model for adding a new inventory item.\r\nContains core item details, stock information, pricing, alerts,\r\nopening date, and optional custom fields."
              },
              "example": {"inventoryTagId":"INV-000001","description":"Sample 24-inch Monitor","quantity":5,"categoryRefId":1,"subCategoryRefId":1,"notes":"Sample inventory record","sku":"SKU-001","brand":"Example Brand","model":"Model-X","vendor":"Sample Vendor","url":"https://example.com/product","size":"24-inch","color":"Black","style":"Standard","unit":"Piece","minQty":1,"maxQty":100,"hasMaxQtyAlert":false,"hasMinQtyAlert":false,"minQtyAlert":null,"maxQtyAlert":null,"openingDate":"2026-11-04","unitCost":100.00,"totalCost":500.00,"refNo":"REF-001","aisle":"A1","shelf":"S1","bin":"B1","eventNotes":"Sample stock entry","customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Location"},{"customFieldId":2,"customFieldValue":"Sample Batch"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventoryItem>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/{refId}/update": {
      "put": {
        "tags": [
          "Inventory"
        ],
        "summary": "Update Inventory Item",
        "description": "Update a inventory item using the provided request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateInventoryItemRequest"
                  }
                ],
                "description": "Request model for update inventory item.\r\nContains core item details, stock information, pricing, alerts,\r\nopening date, and optional custom fields."
              },
              "example": {"inventoryTagId":"INV-000001","description":"Sample 24-inch Monitor","categoryRefId":1,"subCategoryRefId":1,"notes":"Sample inventory record","sku":"SKU-001","brand":"Example Brand","model":"Model-X","vendor":"Sample Vendor","url":"https://example.com/product","size":"24-inch","color":"Black","style":"Standard","unit":"Piece","minQty":1,"maxQty":100,"hasMaxQtyAlert":false,"hasMinQtyAlert":false,"minQtyAlert":null,"maxQtyAlert":null,"openingDate":"2026-11-04","unitCost":100.00,"totalCost":500.00,"refNo":"REF-001","aisle":"A1","shelf":"S1","bin":"B1","eventNotes":"Sample stock entry","customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Location"},{"customFieldId":2,"customFieldValue":"Sample Batch"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/{refId}/delete": {
      "delete": {
        "tags": [
          "Inventory"
        ],
        "summary": "Delete Inventory Item",
        "description": "Deletes a Inventory Item by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/deletebulk": {
      "delete": {
        "tags": [
          "Inventory"
        ],
        "summary": "Delete Inventory Items",
        "description": "Deletes multiple Inventory Items by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of inventory item unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of inventory item unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/inventories/{refId}/stocksummary": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Stock Summary",
        "description": "Retrieves the stock summary of a inventory item by its unique identifier (refId), as one\r\nentry per storage location (Aisle/Shelf/Bin combination) that currently holds stock.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<StockSummary[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"aisleRefId":1,"shelfRefId":10,"binRefId":100,"quantity":15},{"aisleRefId":1,"shelfRefId":10,"binRefId":101,"quantity":8},{"aisleRefId":2,"shelfRefId":20,"binRefId":200,"quantity":12}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/{refId}": {
      "get": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Get Inventory by RefId",
        "description": "Retrieves the details of a inventory item by its unique identifier (refId).\r\nIt supports optional query parameters to include related data such as custom fields, images, and documents.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCategorytName",
            "in": "query",
            "description": "Whether to include category name.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include category name.",
              "default": false
            }
          },
          {
            "name": "fetchSubCategorytName",
            "in": "query",
            "description": "Whether to include subcategory name.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include subcategory name.",
              "default": false
            }
          },
          {
            "name": "fetchDefaultImageDetail",
            "in": "query",
            "description": "Whether to include detailed information of the default image.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include detailed information of the default image.",
              "default": false
            }
          },
          {
            "name": "fetchImages",
            "in": "query",
            "description": "Whether to include all images associated with the inventory item. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include all images associated with the inventory item. Default: \"false\"",
              "default": false
            }
          },
          {
            "name": "fetchDocuments",
            "in": "query",
            "description": "Whether to include documents associated with the inventory item. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include documents associated with the inventory item. Default: \"false\"",
              "default": false
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields associated with the inventory item. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields associated with the inventory item. Default: \"false\"",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventoryItem>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"inventoryTagId":"INV-000001","description":"Sample Laptop","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2025-01-01T00:00:00","defaultImageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","defaultImage":null,"images":[],"documents":[],"categoryRefId":1,"categoryName":"Sample Category","subCategoryRefId":1,"subCategoryName":"Sample SubCategory","notes":"Sample inventory record","sku":"SKU-001","brand":"Example Brand","model":"Model-X","vendor":"Sample Vendor","url":"https://example.com/product","size":"13-inch","color":"Silver","style":"Standard","unit":"Piece","minQty":1,"maxQty":50,"stock":10,"customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}},{"refId":2,"customFieldRefId":102,"value":"10","customField":{"refId":203,"label":"NextNumber","fieldType":{"refId":7,"name":"Numeric Auto Increment","hasList":true,"fieldName":"NUMERICAUTOINCREMENT"},"isRequired":true,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":11}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/bytagId/{inventoryTagId}": {
      "get": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Get Inventory by TagId",
        "description": "Retrieves the details of a inventory item by its unique identifier `inventoryTagId `.\r\nIt supports optional query parameters to include related data such as custom fields, images, and documents.",
        "parameters": [
          {
            "name": "inventoryTagId",
            "in": "path",
            "description": "Unique TagId assigned to the inventory item.",
            "required": true,
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string"
            }
          },
          {
            "name": "fetchCategorytName",
            "in": "query",
            "description": "Whether to include category name.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include category name.",
              "default": false
            }
          },
          {
            "name": "fetchSubCategorytName",
            "in": "query",
            "description": "Whether to include subcategory name.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include subcategory name.",
              "default": false
            }
          },
          {
            "name": "fetchDefaultImageDetail",
            "in": "query",
            "description": "Whether to include detailed information of the default image.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include detailed information of the default image.",
              "default": false
            }
          },
          {
            "name": "fetchImages",
            "in": "query",
            "description": "Whether to include all images associated with the inventory item. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include all images associated with the inventory item. Default: \"false\"",
              "default": false
            }
          },
          {
            "name": "fetchDocuments",
            "in": "query",
            "description": "Whether to include documents associated with the inventory item. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include documents associated with the inventory item. Default: \"false\"",
              "default": false
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields associated with the inventory item. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields associated with the inventory item. Default: \"false\"",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventoryItem>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"inventoryTagId":"INV-000001","description":"Sample Laptop","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2025-01-01T00:00:00","defaultImageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","defaultImage":null,"images":[],"documents":[],"categoryRefId":1,"categoryName":"Sample Category","subCategoryRefId":1,"subCategoryName":"Sample SubCategory","notes":"Sample inventory record","sku":"SKU-001","brand":"Example Brand","model":"Model-X","vendor":"Sample Vendor","url":"https://example.com/product","size":"13-inch","color":"Silver","style":"Standard","unit":"Piece","minQty":1,"maxQty":50,"stock":10,"customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}},{"refId":2,"customFieldRefId":102,"value":"10","customField":{"refId":203,"label":"NextNumber","fieldType":{"refId":7,"name":"Numeric Auto Increment","hasList":true,"fieldName":"NUMERICAUTOINCREMENT"},"isRequired":true,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":11}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories": {
      "get": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Get Inventories",
        "description": "Retrieves collection of inventory items filtered and sorted based on the provided query parameters.\r\nSupports searching by category, subcategory, keywords, and various fields, with flexible sorting and pagination options.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter inventories by defined inventory search fields. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter inventories by defined inventory search fields. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which inventory fields can be searched. Default: \"InventoryTagId\", \"Description\" Allowed values include: InventoryTagId, Description, Unit, SKU, Brand, Model, Size, Style, Color, Notes, Vendor, Url.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which inventory fields can be searched. Default: \"InventoryTagId\", \"Description\" Allowed values include: InventoryTagId, Description, Unit, SKU, Brand, Model, Size, Style, Color, Notes, Vendor, Url.",
              "default": [
                "InventoryTagId",
                "Description"
              ],
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which inventory custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which inventory custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "categoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
              "format": "int32"
            }
          },
          {
            "name": "subCategoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
              "format": "int32"
            }
          },
          {
            "name": "stock",
            "in": "query",
            "description": "Defines the stock filter for the inventory list. Default: \"All\" Allowed values: All, Ideal, IdealAndLow, IdealAndOverflow, Low, LowAndOverflow, Overflow.",
            "schema": {
              "$ref": "#/components/schemas/StockType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Allowed values: InventoryTagId, Description, Unit, Stock, SKU, Brand, Model, Size, Style, Color, Notes, Vendor, Url, MinQty, MaxQty, DateCreated, CreatedBy, CategoryName, SubCategoryName.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering inventory records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering inventory records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering inventory records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering inventory records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filtering should apply to. Ignored if dateRangeByCustomField is provided. Default: \"DateCreated\" Allowed values: DateCreated.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "dateRangeByCustomField",
            "in": "query",
            "description": "Defines which custom date field the filter should apply to. Provide the Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which custom date field the filter should apply to. Provide the Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "fetchCategoryName",
            "in": "query",
            "description": "Whether to include category name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include category name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchSubCategoryName",
            "in": "query",
            "description": "Whether to include subcategory name in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include subcategory name in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventoryItem[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":123,"inventoryTagId":"INV-SAMPLE-001","description":"Sample Laptop Device","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-11-04T18:12:17.5177808Z","defaultImageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","defaultImage":null,"images":[],"documents":[],"categoryRefId":10,"categoryName":"Sample Electronics","subCategoryRefId":101,"subCategoryName":"Sample Laptops","notes":"This is a sample asset for demo purposes.","sku":"SAMPLE-SKU-001","brand":"Sample Brand","model":"Sample Model X","vendor":"Sample Vendor Inc.","url":"https://example.com/","size":"13-inch","color":"Silver","style":"Ultra-thin","unit":"Piece","minQty":1,"maxQty":50,"stock":10,"customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},{"refId":453,"inventoryTagId":"INV-SAMPLE-002","description":"Sample Desktop Device","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-11-04T18:12:17.5177828Z","defaultImageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","defaultImage":null,"images":[],"documents":[],"categoryRefId":10,"categoryName":"Sample Electronics","subCategoryRefId":101,"subCategoryName":"Sample Desktop","notes":"This is a sample asset for demo purposes.","sku":"SAMPLE-SKU-002","brand":"Sample Brand","model":"Sample Model Y","vendor":"Sample Vendor Inc.","url":"https://example.com/sample-desktop.jpg","size":"Standard","color":"Silver","style":"Modern","unit":"Piece","minQty":1,"maxQty":50,"stock":10,"customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/{refId}/images": {
      "get": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Get Inventory Images by RefId",
        "description": "Retrieves the list of images linked to a given inventory item along with metadata such as file name, upload date, and URL paths.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Image[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"imageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","url":"https://example.com/images/sample1.jpg","thumbnail_64":"https://example.com/images/sample1_64.jpg","thumbnail_128":"https://example.com/images/sample1_128.jpg","thumbnail_256":"https://example.com/images/sample1_256.jpg","fileName":"sample-front.jpg","type":"image/jpeg","uploadDate":"2026-10-25T18:12:17.518137Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","description":"Sample front view image","keywords":"sample,demo,image","isStockImage":true},{"imageRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","url":"https://example.com/images/sample2.jpg","thumbnail_64":"https://example.com/images/sample2_64.jpg","thumbnail_128":"https://example.com/images/sample2_128.jpg","thumbnail_256":"https://example.com/images/sample2_256.jpg","fileName":"sample-side.jpg","type":"image/jpeg","uploadDate":"2026-10-30T18:12:17.5181376Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","description":"Sample side view image","keywords":"sample,demo,image","isStockImage":true}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/{refId}/documents": {
      "get": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Get Inventory Documents by RefId",
        "description": "Retrieves the list of documents linked to a given inventory item, including metadata such as file name, description, upload date, type.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Document[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"front.jpg","description":"Front view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.5183924Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"documentRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","fileType":"image/jpeg","fileName":"back.jpg","description":"Back view of the laptop","keywords":"keyword","uploadDate":"2026-10-25T18:12:17.5183925Z","uploadedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/{refId}/transactions": {
      "get": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Get Transactions",
        "description": "Retrieves the details of a inventory transactions by inventory item unique identifier (refId) RefId.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "TransactionType",
            "in": "query",
            "description": "Defines which transaction type include in result. Default All type transaction included in result. Allowed values include: Opening, Adjustment, AddStock, RemoveStock, Movement.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/InventoryEvent"
              },
              "description": "Defines which transaction type include in result. Default All type transaction included in result. Allowed values include: Opening, Adjustment, AddStock, RemoveStock, Movement.",
              "nullable": true
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Desc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Transaction[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"inventoryItemRefId":1,"inventoryEvent":"Opening","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","personRefId":100,"customerRefId":null,"personName":"Sample Person A","eventDate":"2026-11-04T18:12:17.5187052Z","refNo":"SAMPLE-REF-001","quantity":10,"unitCost":20,"totalCost":200,"notes":"Sample notes","signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-11-04T18:12:17.518706Z","runningBalance":10,"aisle":null,"shelf":null,"bin":null,"transactionSummaries":[{"aisleRefId":1,"shelfRefId":10,"binRefId":100,"quantity":10},{"aisleRefId":0,"shelfRefId":0,"binRefId":0,"quantity":5}]},{"refId":2,"inventoryItemRefId":1,"inventoryEvent":"AddStock","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","personRefId":101,"customerRefId":null,"personName":"Sample Person B","eventDate":"2026-11-04T18:12:17.518707Z","refNo":"SAMPLE-REF-002","quantity":5,"unitCost":10,"totalCost":50,"notes":"Sample notes 2","signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-11-04T18:12:17.5187072Z","runningBalance":15,"aisle":null,"shelf":null,"bin":null,"transactionSummaries":[{"aisleRefId":2,"shelfRefId":20,"binRefId":200,"quantity":5},{"aisleRefId":0,"shelfRefId":0,"binRefId":0,"quantity":5}]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/transactions/{refId}": {
      "get": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Get Transaction",
        "description": "Retrieves the details of a inventory transactions by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Transaction>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"inventoryItemRefId":1,"inventoryEvent":"Opening","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","personRefId":100,"customerRefId":null,"personName":"Sample Person A","eventDate":"2026-11-04T18:12:17.5189154Z","refNo":"SAMPLE-REF-001","quantity":10,"unitCost":20,"totalCost":200,"notes":"Sample notes","signature":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateAdded":"2026-11-04T18:12:17.5189158Z","runningBalance":10,"aisle":null,"shelf":null,"bin":null,"transactionSummaries":[{"aisleRefId":1,"shelfRefId":10,"binRefId":100,"quantity":10},{"aisleRefId":0,"shelfRefId":0,"binRefId":0,"quantity":5}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/transactions/{refId}/update": {
      "put": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Update Inventory Transaction",
        "description": "Update inventory transaction using the provided request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory transaction. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateTransactionRequest"
                  }
                ],
                "description": "Represents a transaction record for inventory item, including details\r\nsuch as event type, cost, and associated person or customer."
              },
              "example": {"personRefId":1,"customerRefId":1,"personName":"Jhon","eventDate":"2026-11-04","unitCost":100.00,"totalCost":500.00,"refNo":"REF-001","notes":"this is test notes","aisle":"A1","shelf":"S1","bin":"B1"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Transaction>"
                },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/{refId}/transactions/add": {
      "post": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Add Inventory Transaction",
        "description": "Creates a new inventory transaction (AddStock, RemoveStock, or Adjustment) for the specified inventory item.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddTransactionRequest"
                  }
                ],
                "description": "Request model for adding a new inventory transaction to an existing inventory item.\r\nSupports five transaction types: Opening, AddStock, RemoveStock, Adjustment, and Movement (Movement requires stock location tracking).\r\nFor accounts with stock-location tracking enabled, stock can be distributed across\r\nmultiple storage locations using the Locations array (AddStock, RemoveStock, Adjustment)\r\nor the FromLocations and ToLocations arrays (Movement).\r\nOnly one of PersonRefId, CustomerRefId, or PersonName may be provided per request."
              },
              "example": {"eventType":"AddStock","quantity":10,"isAddToStock":true,"eventDate":"2026-11-04","personRefId":1,"customerRefId":null,"personName":null,"unitCost":100.00,"totalCost":1000.00,"refNo":"REF-001","notes":"this is test notes","aisle":"A1","shelf":"S1","bin":"B1","locations":[{"aisleRefId":1,"shelfRefId":10,"binRefId":100,"quantity":6},{"aisleRefId":1,"shelfRefId":10,"binRefId":101,"quantity":4}],"fromLocations":null,"toLocations":null}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Object>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":901},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/{refId}/histories": {
      "get": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Get Inventory Histories by RefId",
        "description": "Retrieves the details of a inventory history by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Desc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventoryItemHistory[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"historyRefId":1,"historyOn":"2026-11-04T18:12:17.5198094Z","event":"Inventory edit","historyDetails":[{"historyDetailsRefId":11,"field":"Min. Qty.","changeFrom":"0","changeTo":"1"},{"historyDetailsRefId":11,"field":"Max. Qty.","changeFrom":"5","changeTo":"10"}],"transactionRefId":null,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},{"historyRefId":2,"historyOn":"2026-11-04T18:12:17.5198099Z","event":"Add stock","historyDetails":[{"historyDetailsRefId":1,"field":"Stock","changeFrom":"5","changeTo":"10"}],"transactionRefId":1,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/histories/{refId}": {
      "get": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Get Inventory History by RefId",
        "description": "Retrieves a single inventory history record by the history's unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory history record (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventoryItemHistory>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"historyRefId":1,"historyOn":"2026-11-04T18:12:17.5200026Z","event":"Inventory edit","historyDetails":[{"historyDetailsRefId":11,"field":"Min. Qty.","changeFrom":"0","changeTo":"1"}],"transactionRefId":null,"addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/customfields": {
      "get": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Get Inventory Custom Fields",
        "description": "Get Inventory custom fields.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomField>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0},{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":true,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":0}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/settings": {
      "get": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Get Inventory Settings",
        "description": "Get Inventory Settings",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventorySetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"hasInventory":true,"field_InventoryTagId_Enabled":true,"field_InventoryTagId_Label":"Inventory Tag ID","field_InventoryTagId_Required":true,"field_Description_Enabled":true,"field_Description_Label":"Description","field_Description_Required":true,"field_Unit_Enabled":true,"field_Unit_Label":"Unit","field_Unit_Required":true,"field_Stock_Enabled":true,"field_Stock_Label":"Stock","field_Stock_Required":true,"field_Notes_Enabled":false,"field_Notes_Label":"Notes","field_Notes_Required":false,"field_Sku_Enabled":false,"field_Sku_Label":"SKU","field_Sku_Required":false,"field_Size_Enabled":true,"field_Size_Label":"Size","field_Size_Required":true,"field_Color_Enabled":false,"field_Color_Label":"Color","field_Color_Required":false,"field_Style_Enabled":true,"field_Style_Label":"Style","field_Style_Required":true,"field_Brand_Enabled":true,"field_Brand_Label":"Brand","field_Brand_Required":true,"field_Model_Enabled":true,"field_Model_Label":"Model","field_Model_Required":true,"field_Vendor_Enabled":false,"field_Vendor_Label":"Vendor","field_Vendor_Required":false,"field_VendorWebsite_Enabled":false,"field_VendorWebsite_Label":"Vendor Website","field_VendorWebsite_Required":false,"field_MinQty_Enabled":true,"field_MinQty_Label":"Min. Qty.","field_MinQty_Required":true,"field_MaxQty_Enabled":true,"field_MaxQty_Label":"Max. Qty.","field_MaxQty_Required":true,"field_Transaction_EventDate_Enabled":true,"field_Transaction_EventDate_Label":"Event Date","field_Transaction_EventDate_Required":true,"field_Transaction_Quantity_Enabled":true,"field_Transaction_Quantity_Label":"Quantity","field_Transaction_Quantity_Required":true,"field_Transaction_UnitPrice_Enabled":true,"field_Transaction_UnitPrice_Label":"Unit Price","field_Transaction_UnitPrice_Required":true,"field_Transaction_TotalValue_Enabled":true,"field_Transaction_TotalValue_Label":"Total Value","field_Transaction_TotalValue_Required":true,"field_Transaction_PoNo_Enabled":true,"field_Transaction_PoNo_Label":"PO No.","field_Transaction_PoNo_Required":true,"field_Transaction_Notes_Enabled":true,"field_Transaction_Notes_Label":"Notes","field_Transaction_Notes_Required":true,"person_List_Enabled":true,"customer_List_Enabled":false,"field_TypeName_Enabled":true,"signature_Enabled":false,"field_Event_OpeningBalance_Label":"Opening Balance","field_Event_AddToStock_Label":"Add to Stock","field_Event_RemoveFromStock_Label":"Remove from Stock","field_Event_StockAdjustment_Label":"Stock Adjustment","field_Location_Enabled":true,"field_Location_Level":"Level_3","field_Level_1_Label":"Bin","field_Level_1_Required":false,"field_Level_2_Label":"Shelf","field_Level_2_Required":false,"field_Level_3_Label":"Aisle","field_Level_3_Required":true,"autoTagging_Enabled":true,"nextTagId":"INV001","padding_Enabled":true,"padding_Digits":"4","prefix":"D","suffix":"G","nextTagStartingNumber":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/add": {
      "post": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Add Inventory Item",
        "description": "Creates a inventory item using the provided request.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddInventoryItemRequest"
                  }
                ],
                "description": "Request model for adding a new inventory item.\r\nContains core item details, stock information, pricing, alerts,\r\nopening date, and optional custom fields."
              },
              "example": {"inventoryTagId":"INV-000001","description":"Sample 24-inch Monitor","quantity":5,"categoryRefId":1,"subCategoryRefId":1,"notes":"Sample inventory record","sku":"SKU-001","brand":"Example Brand","model":"Model-X","vendor":"Sample Vendor","url":"https://example.com/product","size":"24-inch","color":"Black","style":"Standard","unit":"Piece","minQty":1,"maxQty":100,"hasMaxQtyAlert":false,"hasMinQtyAlert":false,"minQtyAlert":null,"maxQtyAlert":null,"openingDate":"2026-11-04","unitCost":100.00,"totalCost":500.00,"refNo":"REF-001","aisle":"A1","shelf":"S1","bin":"B1","eventNotes":"Sample stock entry","customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Location"},{"customFieldId":2,"customFieldValue":"Sample Batch"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<InventoryItem>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/{refId}/update": {
      "put": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Update Inventory Item",
        "description": "Update a inventory item using the provided request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateInventoryItemRequest"
                  }
                ],
                "description": "Request model for update inventory item.\r\nContains core item details, stock information, pricing, alerts,\r\nopening date, and optional custom fields."
              },
              "example": {"inventoryTagId":"INV-000001","description":"Sample 24-inch Monitor","categoryRefId":1,"subCategoryRefId":1,"notes":"Sample inventory record","sku":"SKU-001","brand":"Example Brand","model":"Model-X","vendor":"Sample Vendor","url":"https://example.com/product","size":"24-inch","color":"Black","style":"Standard","unit":"Piece","minQty":1,"maxQty":100,"hasMaxQtyAlert":false,"hasMinQtyAlert":false,"minQtyAlert":null,"maxQtyAlert":null,"openingDate":"2026-11-04","unitCost":100.00,"totalCost":500.00,"refNo":"REF-001","aisle":"A1","shelf":"S1","bin":"B1","eventNotes":"Sample stock entry","customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Location"},{"customFieldId":2,"customFieldValue":"Sample Batch"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/{refId}/delete": {
      "delete": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Delete Inventory Item",
        "description": "Deletes a Inventory Item by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/deletebulk": {
      "delete": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Delete Inventory Items",
        "description": "Deletes multiple Inventory Items by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of inventory item unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of inventory item unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/inventories/{refId}/stocksummary": {
      "get": {
        "tags": [
          "InventorySandbox"
        ],
        "summary": "Get Stock Summary",
        "description": "Retrieves the stock summary of an inventory item by its unique identifier (refId), as one\r\nentry per storage location (Aisle/Shelf/Bin combination) that currently holds stock.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the inventory item. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<StockSummary[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"aisleRefId":1,"shelfRefId":10,"binRefId":100,"quantity":15},{"aisleRefId":1,"shelfRefId":10,"binRefId":101,"quantity":8},{"aisleRefId":2,"shelfRefId":20,"binRefId":200,"quantity":12}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/locations": {
      "get": {
        "tags": [
          "Location"
        ],
        "summary": "Get Locations",
        "description": "Retrieves a paginated, filtered list of all active locations.",
        "parameters": [
          {
            "name": "siteRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the site (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Unique identifier (primary key) for the site (positive integer only).",
              "format": "int32"
            }
          },
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter locations by name (cannot exceed 100 characters).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter locations by name (cannot exceed 100 characters)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by location name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "fetchSite",
            "in": "query",
            "description": "Whether to include the parent site associated with each location in the result. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include the parent site associated with each location in the result. Default: \"false\"",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Location[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":11,"name":"Sample Location A","siteRefId":1,"description":null,"site":null},{"refId":12,"name":"Sample Conference Room","siteRefId":1,"description":"Main conference room","site":null}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/locations/{refId}": {
      "get": {
        "tags": [
          "Location"
        ],
        "summary": "Get Location by RefId",
        "description": "Retrieves the details of a location by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique reference ID of the location (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchSite",
            "in": "query",
            "description": "Whether to include the parent site associated with this location (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Location>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":11,"name":"Sample Location","siteRefId":1,"description":null,"site":{"refId":1,"name":"Sample Site","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"countryName":"Example Country","description":"Sample description","locations":null}},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/locations/add": {
      "post": {
        "tags": [
          "Location"
        ],
        "summary": "Add Location",
        "description": "Creates a new location under a site using the details provided in the request.",
        "requestBody": {
          "description": "Contains the location details to be added.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddLocationRequest"
                  }
                ],
                "description": "Request model for adding a new location."
              },
              "example": {"name":"HQ Floor 1","siteRefId":1,"description":"First floor of the headquarters building"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Location>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":11},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/locations/{refId}/update": {
      "put": {
        "tags": [
          "Location"
        ],
        "summary": "Update Location",
        "description": "Modifies the location identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the location (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the location details to update.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateLocationRequest"
                  }
                ],
                "description": "Request model for updating an existing location."
              },
              "example": {"name":"HQ Floor 1","siteRefId":1,"description":"First floor of the headquarters building"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/locations/{refId}/delete": {
      "delete": {
        "tags": [
          "Location"
        ],
        "summary": "Delete Location",
        "description": "Deletes a location by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the location (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/locations/deletebulk": {
      "delete": {
        "tags": [
          "Location"
        ],
        "summary": "Delete Locations",
        "description": "Deletes multiple locations by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of location unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of location unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/locations/bysiterefId/delete": {
      "delete": {
        "tags": [
          "Location"
        ],
        "summary": "Delete Locations by Site RefId",
        "description": "Deletes all locations belonging to the site identified by siteRefId.",
        "parameters": [
          {
            "name": "siteRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the site (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/locations": {
      "get": {
        "tags": [
          "LocationSandbox"
        ],
        "summary": "Get Locations",
        "description": "Retrieves a paginated, filtered list of all active locations.",
        "parameters": [
          {
            "name": "siteRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the site (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Unique identifier (primary key) for the site (positive integer only).",
              "format": "int32"
            }
          },
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter locations by name (cannot exceed 100 characters).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter locations by name (cannot exceed 100 characters)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by location name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "fetchSite",
            "in": "query",
            "description": "Whether to include the parent site associated with each location in the result. Default: \"false\"",
            "schema": {
              "type": "boolean",
              "description": "Whether to include the parent site associated with each location in the result. Default: \"false\"",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Location[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":11,"name":"Sample Location A","siteRefId":1,"description":null,"site":null},{"refId":12,"name":"Sample Conference Room","siteRefId":1,"description":"Main conference room","site":null}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/locations/{refId}": {
      "get": {
        "tags": [
          "LocationSandbox"
        ],
        "summary": "Get Location by RefId",
        "description": "Retrieves the details of a location by its unique identifier (refId). Optionally includes site data if requested. For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique reference ID of the location (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchSite",
            "in": "query",
            "description": "Whether to include the parent site associated with this location (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Location>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":11,"name":"Sample Location","siteRefId":1,"description":null,"site":{"refId":1,"name":"Sample Site","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"countryName":"Example Country","description":"Sample description","locations":null}},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/locations/add": {
      "post": {
        "tags": [
          "LocationSandbox"
        ],
        "summary": "Add Location",
        "description": "Creates a new location under a site using the details provided in the request.",
        "requestBody": {
          "description": "Contains the location details to be added.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddLocationRequest"
                  }
                ],
                "description": "Request model for adding a new location."
              },
              "example": {"name":"HQ Floor 1","siteRefId":1,"description":"First floor of the headquarters building"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Location>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":11},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/locations/{refId}/update": {
      "put": {
        "tags": [
          "LocationSandbox"
        ],
        "summary": "Update Location",
        "description": "Modifies the location identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the location (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the location details to update.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateLocationRequest"
                  }
                ],
                "description": "Request model for updating an existing location."
              },
              "example": {"name":"HQ Floor 1","siteRefId":1,"description":"First floor of the headquarters building"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/locations/{refId}/delete": {
      "delete": {
        "tags": [
          "LocationSandbox"
        ],
        "summary": "Delete Location",
        "description": "Deletes a location by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the location (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/locations/deletebulk": {
      "delete": {
        "tags": [
          "LocationSandbox"
        ],
        "summary": "Delete Locations",
        "description": "Deletes multiple locations by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of location unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of location unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/locations/bysiterefId/delete": {
      "delete": {
        "tags": [
          "LocationSandbox"
        ],
        "summary": "Delete Locations by Site RefId",
        "description": "Deletes all locations belonging to the site identified by siteRefId.",
        "parameters": [
          {
            "name": "siteRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the site (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/maintenances/{refId}": {
      "get": {
        "tags": [
          "Maintenance"
        ],
        "summary": "Get Maintenance by RefId",
        "description": "Retrieves the details of a maintenance by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the maintenance (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Indicates whether to include custom fields associated with this maintenance (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetMaintenance>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"assetRefId":2,"title":"Quarterly servicing","details":"Routine inspection and cleaning of internal components.","dueDate":"2026-03-01","maintenanceBy":"John Smith","status":"Scheduled","cost":150.00,"dateCompleted":null,"repeating":true,"frequency":"Monthly","recurEvery":3,"recurOn":1,"recurredFromRefId":null,"isNextRecurrenceCreated":false,"customFieldValues":[{"refId":1,"customFieldRefId":401,"value":"Vendor Service Co.","customField":{"refId":401,"label":"Service Vendor","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":0,"customFieldRefId":402,"value":"","customField":{"refId":402,"label":"Warranty Claim Number","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/maintenances": {
      "get": {
        "tags": [
          "Maintenance"
        ],
        "summary": "Get Maintenances",
        "description": "Retrieves a list of maintenance filtered and sorted based on the provided query parameters.\r\nSupports keyword search, maintenance and asset custom field search, filtering by category/\r\nsubcategory, site/location, department, person, customer, and event type, and date-range\r\nfiltering by expiry date, an asset date, a maintenance custom field, or an asset custom field\r\n(requires startDate and endDate when dateRangeByCustomField or dateRangeByAssetCustomField\r\nis provided), sorting, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter maintenances by defined search fields. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter maintenances by defined search fields. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which maintenance fields can be searched. Default: \"AssetTagId\", \"Description\", \"Title\". Allowed values include: Title, Details, MaintenanceBy, AssetTagId, Description, PurchaseFrom, Brand, Model, SerialNo.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which maintenance fields can be searched. Default: \"AssetTagId\", \"Description\", \"Title\". Allowed values include: Title, Details, MaintenanceBy, AssetTagId, Description, PurchaseFrom, Brand, Model, SerialNo.",
              "default": [
                "AssetTagId",
                "Description",
                "Title"
              ],
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which maintenance custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which maintenance custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "searchAssetCustomFields",
            "in": "query",
            "description": "Defines which asset custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which asset custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "categoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
              "format": "int32"
            }
          },
          {
            "name": "subCategoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
              "format": "int32"
            }
          },
          {
            "name": "siteRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the site to filter by. Pass 0 to filter unassigned sites.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the site to filter by. Pass 0 to filter unassigned sites.",
              "format": "int32"
            }
          },
          {
            "name": "locationRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the location to filter by. If provided, siteRefId must also be specified. Pass 0 to filter unassigned locations.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the location to filter by. If provided, siteRefId must also be specified. Pass 0 to filter unassigned locations.",
              "format": "int32"
            }
          },
          {
            "name": "departmentRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the department to filter by. Pass 0 to filter unassigned departments.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the department to filter by. Pass 0 to filter unassigned departments.",
              "format": "int32"
            }
          },
          {
            "name": "personRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the assigned person to filter by.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the assigned person to filter by.",
              "format": "int32"
            }
          },
          {
            "name": "customerRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the assigned customer to filter by.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the assigned customer to filter by.",
              "format": "int32"
            }
          },
          {
            "name": "EventTypes",
            "in": "query",
            "description": "Filters assets by the specified event types. Selecting \"Custom\" includes all user-defined custom events.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/EventType"
              },
              "description": "Filters assets by the specified event types. Selecting \"Custom\" includes all user-defined custom events.",
              "nullable": true
            }
          },
          {
            "name": "maintenanceStatus",
            "in": "query",
            "description": "Filters results to only maintenance records with the specified status(es). Allowed values: Scheduled, InProgress, OnHold, Cancelled, Completed. Omit to return records in any status.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/MaintenanceStatus"
              },
              "description": "Filters results to only maintenance records with the specified status(es). Allowed values: Scheduled, InProgress, OnHold, Cancelled, Completed. Omit to return records in any status.",
              "nullable": true
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Default: \"DueDate\". Allowed values: DueDate, DateCompleted, AssetTagId, Description, Brand, Model, SerialNo, PurchaseDate, DateCreated, CreatedBy, MaintAssignedTo, MaintDetail, MaintTitle, MaintStatus, Repeating, RepairCost, Frequency, RecurOn1, RecurOn2, Cost, PurchaseFrom, InitialCost, SiteName, LocationName, CategoryName, SubCategoryName, DepartmentName, isDepreciable, SalvageValue, AssetLife, DepreciationMethodName, DateAcquired, Status, PersonName, LeaseTo, Reservation, EventDate1, EventDate2, Relation, IsLinked, CurrentCost.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering maintenance records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering maintenance records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering maintenance records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering maintenance records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filtering should apply to. Ignored if dateRangeByCustomField or dateRangeByAssetCustomField is provided. Default: \"DueDate\" Allowed values: DueDate, DateCompleted, DateCreated, PurchaseDate, DateAcquired.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "dateRangeByCustomField",
            "in": "query",
            "description": "Defines which maintenance custom date field the filter should apply to. Provide the maintenance Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which maintenance custom date field the filter should apply to. Provide the maintenance Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "dateRangeByAssetCustomField",
            "in": "query",
            "description": "Defines which asset custom date field the filter should apply to. Provide the asset Custom Field ID to enable this filter, which takes precedence over dateRangeBy and dateRangeByCustomField when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which asset custom date field the filter should apply to. Provide the asset Custom Field ID to enable this filter, which takes precedence over dateRangeBy and dateRangeByCustomField when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetMaintenance[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"title":"Quarterly servicing","details":"Routine inspection and cleaning of internal components.","dueDate":"2026-03-01","maintenanceBy":"John Smith","status":"Scheduled","cost":150.00,"dateCompleted":null,"repeating":true,"frequency":"Monthly","recurEvery":3,"recurOn":1,"recurredFromRefId":null,"isNextRecurrenceCreated":false,"customFieldValues":[{"refId":1,"customFieldRefId":401,"value":"Vendor Service Co.","customField":{"refId":401,"label":"Service Vendor","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":0,"customFieldRefId":402,"value":"","customField":{"refId":402,"label":"Warranty Claim Number","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}}]},{"refId":2,"assetRefId":3,"title":"Hardware repair","details":"Replaced faulty power supply unit.","dueDate":"2026-01-15","maintenanceBy":"Jane Doe","status":"Completed","cost":320.50,"dateCompleted":"2026-01-16","repeating":false,"frequency":null,"recurEvery":null,"recurOn":null,"recurredFromRefId":null,"isNextRecurrenceCreated":false,"customFieldValues":null}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/maintenances/settings": {
      "get": {
        "tags": [
          "Maintenance"
        ],
        "summary": "Get Maintenance Settings",
        "description": "Get Maintenance Settings.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<MaintenanceSetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"field_Title_Enabled":true,"field_Title_Required":true,"field_Details_Enabled":true,"field_Details_Required":false,"field_DueDate_Enabled":true,"field_DueDate_Required":false,"field_MaintenanceBy_Enabled":true,"field_MaintenanceBy_Required":false,"field_Status_Enabled":true,"field_Status_Required":false,"field_Cost_Enabled":true,"field_Cost_Required":false,"field_DateCompleted_Enabled":true,"field_DateCompleted_Required":false,"field_Repeating_Enabled":true,"field_Repeating_Required":true},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/maintenances/add": {
      "post": {
        "tags": [
          "Maintenance"
        ],
        "summary": "Add Maintenance",
        "description": "Creates an Asset Maintenance using the provided request. The response always includes refId,\r\nthe id of the created record, and nextRecurrRefId. If Repeating is true and Status is\r\nCompleted or Cancelled, a next-occurrence maintenance record is created automatically and\r\nnextRecurrRefId is set to its id; otherwise nextRecurrRefId is null.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/MaintenanceRequest"
                  }
                ],
                "description": "Request model for adding or updating an asset maintenance.\r\nContains the associated asset, title, details, due date, assignee, status, cost, completion date,\r\nrecurrence settings, and optional custom fields."
              },
              "example": {"assetRefId":1,"title":"Quarterly Inspection","details":"Inspect and service the unit.","dueDate":"2025-01-01","maintenanceBy":"John Smith","status":"Scheduled","cost":150.00,"dateCompleted":null,"repeating":true,"frequency":"Monthly","recurEvery":3,"recurOn":15,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetMaintenance>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5,"nextRecurrRefId":null},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/maintenances/{refId}/update": {
      "put": {
        "tags": [
          "Maintenance"
        ],
        "summary": "Update Maintenance",
        "description": "Updates a maintenance using the provided request. Normally returns 204 No Content. If\r\nRepeating is true and Status is Completed or Cancelled, a next-occurrence maintenance record\r\nis created automatically, and the endpoint instead returns 201 Created with nextRecurrRefId\r\ncontaining that record's id.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the maintenance. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/MaintenanceRequest"
                  }
                ],
                "description": "Request model for adding or updating an asset maintenance.\r\nContains the associated asset, title, details, due date, assignee, status, cost, completion date,\r\nrecurrence settings, and optional custom fields."
              },
              "example": {"assetRefId":1,"title":"Quarterly Inspection","details":"Inspect and service the unit.","dueDate":"2025-01-01","maintenanceBy":"John Smith","status":"Scheduled","cost":150.00,"dateCompleted":null,"repeating":true,"frequency":"Monthly","recurEvery":3,"recurOn":15,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetMaintenance>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"nextRecurrRefId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/maintenances/delete": {
      "delete": {
        "tags": [
          "Maintenance"
        ],
        "summary": "Delete Maintenance",
        "description": "Deletes a maintenance by its unique reference ID, scoped to the asset it belongs to (both refId and assetRefId are required).",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeleteMaintenanceRequest"
                  }
                ],
                "description": "Request model for deleting a maintenance."
              },
              "example": {"refId":1,"assetRefId":101}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/maintenances/{refId}": {
      "get": {
        "tags": [
          "MaintenanceSandbox"
        ],
        "summary": "Get Maintenance by RefId",
        "description": "Retrieves the details of a maintenance record by its unique identifier (refId). For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the maintenance record (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Indicates whether to include custom fields associated with this maintenance record (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetMaintenance>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"assetRefId":2,"title":"Quarterly servicing","details":"Routine inspection and cleaning of internal components.","dueDate":"2026-03-01","maintenanceBy":"John Smith","status":"Scheduled","cost":150.00,"dateCompleted":null,"repeating":true,"frequency":"Monthly","recurEvery":3,"recurOn":1,"recurredFromRefId":null,"isNextRecurrenceCreated":false,"customFieldValues":[{"refId":1,"customFieldRefId":401,"value":"Vendor Service Co.","customField":{"refId":401,"label":"Service Vendor","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":0,"customFieldRefId":402,"value":"","customField":{"refId":402,"label":"Warranty Claim Number","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/maintenances": {
      "get": {
        "tags": [
          "MaintenanceSandbox"
        ],
        "summary": "Get Maintenances",
        "description": "Retrieves a list of maintenance records filtered and sorted based on the provided query parameters.\r\nSupports keyword search, custom field search, status filtering, date-range filtering by due date\r\nor a custom field, sorting, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter maintenances by defined search fields. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter maintenances by defined search fields. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which maintenance fields can be searched. Default: \"AssetTagId\", \"Description\", \"Title\". Allowed values include: Title, Details, MaintenanceBy, AssetTagId, Description, PurchaseFrom, Brand, Model, SerialNo.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which maintenance fields can be searched. Default: \"AssetTagId\", \"Description\", \"Title\". Allowed values include: Title, Details, MaintenanceBy, AssetTagId, Description, PurchaseFrom, Brand, Model, SerialNo.",
              "default": [
                "AssetTagId",
                "Description",
                "Title"
              ],
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which maintenance custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which maintenance custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "searchAssetCustomFields",
            "in": "query",
            "description": "Defines which asset custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which asset custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "categoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
              "format": "int32"
            }
          },
          {
            "name": "subCategoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
              "format": "int32"
            }
          },
          {
            "name": "siteRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the site to filter by. Pass 0 to filter unassigned sites.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the site to filter by. Pass 0 to filter unassigned sites.",
              "format": "int32"
            }
          },
          {
            "name": "locationRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the location to filter by. If provided, siteRefId must also be specified. Pass 0 to filter unassigned locations.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the location to filter by. If provided, siteRefId must also be specified. Pass 0 to filter unassigned locations.",
              "format": "int32"
            }
          },
          {
            "name": "departmentRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the department to filter by. Pass 0 to filter unassigned departments.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the department to filter by. Pass 0 to filter unassigned departments.",
              "format": "int32"
            }
          },
          {
            "name": "personRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the assigned person to filter by.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the assigned person to filter by.",
              "format": "int32"
            }
          },
          {
            "name": "customerRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the assigned customer to filter by.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the assigned customer to filter by.",
              "format": "int32"
            }
          },
          {
            "name": "EventTypes",
            "in": "query",
            "description": "Filters assets by the specified event types. Selecting \"Custom\" includes all user-defined custom events.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/EventType"
              },
              "description": "Filters assets by the specified event types. Selecting \"Custom\" includes all user-defined custom events.",
              "nullable": true
            }
          },
          {
            "name": "maintenanceStatus",
            "in": "query",
            "description": "Filters results to only maintenance records with the specified status(es). Allowed values: Scheduled, InProgress, OnHold, Cancelled, Completed. Omit to return records in any status.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/MaintenanceStatus"
              },
              "description": "Filters results to only maintenance records with the specified status(es). Allowed values: Scheduled, InProgress, OnHold, Cancelled, Completed. Omit to return records in any status.",
              "nullable": true
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Default: \"DueDate\". Allowed values: DueDate, DateCompleted, AssetTagId, Description, Brand, Model, SerialNo, PurchaseDate, DateCreated, CreatedBy, MaintAssignedTo, MaintDetail, MaintTitle, MaintStatus, Repeating, RepairCost, Frequency, RecurOn1, RecurOn2, Cost, PurchaseFrom, InitialCost, SiteName, LocationName, CategoryName, SubCategoryName, DepartmentName, isDepreciable, SalvageValue, AssetLife, DepreciationMethodName, DateAcquired, Status, PersonName, LeaseTo, Reservation, EventDate1, EventDate2, Relation, IsLinked, CurrentCost.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering maintenance records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering maintenance records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering maintenance records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering maintenance records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filtering should apply to. Ignored if dateRangeByCustomField or dateRangeByAssetCustomField is provided. Default: \"DueDate\" Allowed values: DueDate, DateCompleted, DateCreated, PurchaseDate, DateAcquired.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "dateRangeByCustomField",
            "in": "query",
            "description": "Defines which maintenance custom date field the filter should apply to. Provide the maintenance Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which maintenance custom date field the filter should apply to. Provide the maintenance Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "dateRangeByAssetCustomField",
            "in": "query",
            "description": "Defines which asset custom date field the filter should apply to. Provide the asset Custom Field ID to enable this filter, which takes precedence over dateRangeBy and dateRangeByCustomField when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which asset custom date field the filter should apply to. Provide the asset Custom Field ID to enable this filter, which takes precedence over dateRangeBy and dateRangeByCustomField when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetMaintenance[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"title":"Quarterly servicing","details":"Routine inspection and cleaning of internal components.","dueDate":"2026-03-01","maintenanceBy":"John Smith","status":"Scheduled","cost":150.00,"dateCompleted":null,"repeating":true,"frequency":"Monthly","recurEvery":3,"recurOn":1,"recurredFromRefId":null,"isNextRecurrenceCreated":false,"customFieldValues":[{"refId":1,"customFieldRefId":401,"value":"Vendor Service Co.","customField":{"refId":401,"label":"Service Vendor","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}},{"refId":0,"customFieldRefId":402,"value":"","customField":{"refId":402,"label":"Warranty Claim Number","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}}]},{"refId":2,"assetRefId":3,"title":"Hardware repair","details":"Replaced faulty power supply unit.","dueDate":"2026-01-15","maintenanceBy":"Jane Doe","status":"Completed","cost":320.50,"dateCompleted":"2026-01-16","repeating":false,"frequency":null,"recurEvery":null,"recurOn":null,"recurredFromRefId":null,"isNextRecurrenceCreated":false,"customFieldValues":null}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/maintenances/settings": {
      "get": {
        "tags": [
          "MaintenanceSandbox"
        ],
        "summary": "Get Maintenance Settings",
        "description": "Get Maintenance Settings.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<MaintenanceSetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"field_Title_Enabled":true,"field_Title_Required":true,"field_Details_Enabled":true,"field_Details_Required":false,"field_DueDate_Enabled":true,"field_DueDate_Required":false,"field_MaintenanceBy_Enabled":true,"field_MaintenanceBy_Required":false,"field_Status_Enabled":true,"field_Status_Required":false,"field_Cost_Enabled":true,"field_Cost_Required":false,"field_DateCompleted_Enabled":true,"field_DateCompleted_Required":false,"field_Repeating_Enabled":true,"field_Repeating_Required":true},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/maintenances/add": {
      "post": {
        "tags": [
          "MaintenanceSandbox"
        ],
        "summary": "Add Maintenance",
        "description": "Creates an Asset Maintenance using the provided request. The response always includes refId,\r\nthe id of the created record, and nextRecurrRefId. If Repeating is true and Status is\r\nCompleted or Cancelled, a next-occurrence maintenance record is created automatically and\r\nnextRecurrRefId is set to its id; otherwise nextRecurrRefId is null.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/MaintenanceRequest"
                  }
                ],
                "description": "Request model for adding or updating an asset maintenance.\r\nContains the associated asset, title, details, due date, assignee, status, cost, completion date,\r\nrecurrence settings, and optional custom fields."
              },
              "example": {"assetRefId":1,"title":"Quarterly Inspection","details":"Inspect and service the unit.","dueDate":"2025-01-01","maintenanceBy":"John Smith","status":"Scheduled","cost":150.00,"dateCompleted":null,"repeating":true,"frequency":"Monthly","recurEvery":3,"recurOn":15,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetMaintenance>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5,"nextRecurrRefId":null},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/maintenances/{refId}/update": {
      "put": {
        "tags": [
          "MaintenanceSandbox"
        ],
        "summary": "Update Maintenance",
        "description": "Updates a maintenance using the provided request. Normally returns 204 No Content. If\r\nRepeating is true and Status is Completed or Cancelled, a next-occurrence maintenance record\r\nis created automatically, and the endpoint instead returns 201 Created with nextRecurrRefId\r\ncontaining that record's id.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the maintenance. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/MaintenanceRequest"
                  }
                ],
                "description": "Request model for adding or updating an asset maintenance.\r\nContains the associated asset, title, details, due date, assignee, status, cost, completion date,\r\nrecurrence settings, and optional custom fields."
              },
              "example": {"assetRefId":1,"title":"Quarterly Inspection","details":"Inspect and service the unit.","dueDate":"2025-01-01","maintenanceBy":"John Smith","status":"Scheduled","cost":150.00,"dateCompleted":null,"repeating":true,"frequency":"Monthly","recurEvery":3,"recurOn":15,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetMaintenance>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"nextRecurrRefId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/maintenances/delete": {
      "delete": {
        "tags": [
          "MaintenanceSandbox"
        ],
        "summary": "Delete Maintenance",
        "description": "Deletes a maintenance by its unique reference ID, scoped to the asset it belongs to (both refId and assetRefId are required).",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeleteMaintenanceRequest"
                  }
                ],
                "description": "Request model for deleting a maintenance."
              },
              "example": {"refId":1,"assetRefId":101}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/persons/{refId}": {
      "get": {
        "tags": [
          "Person"
        ],
        "summary": "Get Person by RefId",
        "description": "Retrieves the details of a person by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the person (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchSiteName",
            "in": "query",
            "description": "Whether to include site name in the result (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchLocationName",
            "in": "query",
            "description": "Whether to include location name in the result (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchDepartmentName",
            "in": "query",
            "description": "Whether to include department name in the result (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Person>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"John Doe","title":"Mr","phone":"(555) 123-4567","email":"example@example.com","notes":"Sample employee record","empId":"EMP-001","siteRefId":1,"siteName":"Sample Site","locationRefId":1,"locationName":"Sample Conference Room","departmentRefId":1,"departmentName":"Sample Department","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/persons": {
      "get": {
        "tags": [
          "Person"
        ],
        "summary": "Get Persons",
        "description": "Retrieves a list of persons filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter person by name (cannot exceed 100 characters).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter person by name (cannot exceed 100 characters)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\". Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which person fields can be searched. Default: \"Name\", \"Title\", \"Email\", \"Phone\", \"EmpID\" Allowed values: Name, EmpID, Title, Email, Phone.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which person fields can be searched. Default: \"Name\", \"Title\", \"Email\", \"Phone\", \"EmpID\" Allowed values: Name, EmpID, Title, Email, Phone.",
              "default": [
                "Name",
                "EmpID",
                "Title",
                "Email",
                "Phone"
              ],
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which person custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which person custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Default: \"Name\". Allowed values: Name, EmpID, Title, Email, Phone, Notes, SiteName, LocationName, DepartmentName, CreatedBy.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "fetchSiteName",
            "in": "query",
            "description": "Whether to include site name in the result. Default: false.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include site name in the result. Default: false.",
              "default": false
            }
          },
          {
            "name": "fetchLocationName",
            "in": "query",
            "description": "Whether to include location name in the result. Default: false.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include location name in the result. Default: false.",
              "default": false
            }
          },
          {
            "name": "fetchDepartmentName",
            "in": "query",
            "description": "Whether to include department name in the result. Default: false.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include department name in the result. Default: false.",
              "default": false
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: false.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: false.",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: 0.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: 0.",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: 20. Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: 20. Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Person[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"John Doe","title":"Mr","phone":"(555) 123-4567","email":"example@example.com","notes":"Sample employee record","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","empId":"EMP-001","siteRefId":1,"siteName":"Sample Site","locationRefId":1,"locationName":"Sample Conference Room","departmentRefId":1,"departmentName":"Sample Department","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},{"refId":2,"name":"Robert Doe","title":"Mr","phone":"(555) 987-6543","email":"example@example.com","notes":"Sample employee record","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","empId":"EMP-002","siteRefId":1,"siteName":"Sample Site","locationRefId":1,"locationName":"Sample Office","departmentRefId":1,"departmentName":"Sample Department","customFieldValues":[{"refId":2,"customFieldRefId":201,"value":"White","customField":{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/persons/customfields": {
      "get": {
        "tags": [
          "Person"
        ],
        "summary": "Get Person Custom Fields",
        "description": "Get person custom fields.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomField>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0},{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":true,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":0}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/persons/settings": {
      "get": {
        "tags": [
          "Person"
        ],
        "summary": "Get Person Settings",
        "description": "Get persons Settings.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<PersonSetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"field_FullName_Enabled":true,"field_FullName_Required":true,"field_Email_Enabled":true,"field_Email_Required":true,"field_EmployeeId_Enabled":false,"field_EmployeeId_Required":false,"field_Title_Enabled":false,"field_Title_Required":false,"field_Phone_Enabled":false,"field_Phone_Required":false,"field_Notes_Enabled":true,"field_Notes_Required":true,"field_Site_Enabled":true,"field_Site_Required":true,"field_Location_Enabled":true,"field_Location_Required":true,"field_Department_Enabled":true,"field_Department_Required":true,"field_FullName_Unique":true},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/persons/add": {
      "post": {
        "tags": [
          "Person"
        ],
        "summary": "Add Person",
        "description": "Creates a person using the provided request.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddPersonRequest"
                  }
                ],
                "description": "Request model for adding a new Person."
              },
              "example": {"name":"John Doe","title":"Mr","phone":"(555) 123-4567","email":"example@example.com","notes":"Sample employee record","empId":"EMP-001","siteRefId":1,"locationRefId":1,"departmentRefId":1,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Person>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/persons/{refId}/update": {
      "put": {
        "tags": [
          "Person"
        ],
        "summary": "Update Person",
        "description": "Modifies the Person identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the person (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdatePersonRequest"
                  }
                ],
                "description": "Request model for update person."
              },
              "example": {"name":"John Doe","title":"Mr","phone":"(555) 123-4567","email":"example@example.com","notes":"Sample employee record","empId":"EMP-001","siteRefId":1,"locationRefId":1,"departmentRefId":1,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/persons/{refId}/delete": {
      "delete": {
        "tags": [
          "Person"
        ],
        "summary": "Delete Person",
        "description": "Deletes a person by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the person (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/persons/deletebulk": {
      "delete": {
        "tags": [
          "Person"
        ],
        "summary": "Delete Persons",
        "description": "Deletes multiple persons by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of person unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of person unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/persons/{refId}": {
      "get": {
        "tags": [
          "PersonSandbox"
        ],
        "summary": "Get Person by RefId",
        "description": "Retrieves the details of a person by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the person (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchSiteName",
            "in": "query",
            "description": "Whether to include site name in the result (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchLocationName",
            "in": "query",
            "description": "Whether to include location name in the result (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchDepartmentName",
            "in": "query",
            "description": "Whether to include department name in the result (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Person>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"John Doe","title":"Mr","phone":"(555) 123-4567","email":"example@example.com","notes":"Sample employee record","empId":"EMP-001","siteRefId":1,"siteName":"Sample Site","locationRefId":1,"locationName":"Sample Conference Room","departmentRefId":1,"departmentName":"Sample Department","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/persons": {
      "get": {
        "tags": [
          "PersonSandbox"
        ],
        "summary": "Get Persons",
        "description": "Retrieves a list of persons filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter person by name (cannot exceed 100 characters).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter person by name (cannot exceed 100 characters)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\". Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which person fields can be searched. Default: \"Name\", \"Title\", \"Email\", \"Phone\", \"EmpID\" Allowed values: Name, EmpID, Title, Email, Phone.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which person fields can be searched. Default: \"Name\", \"Title\", \"Email\", \"Phone\", \"EmpID\" Allowed values: Name, EmpID, Title, Email, Phone.",
              "default": [
                "Name",
                "EmpID",
                "Title",
                "Email",
                "Phone"
              ],
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which person custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which person custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Default: \"Name\". Allowed values: Name, EmpID, Title, Email, Phone, Notes, SiteName, LocationName, DepartmentName, CreatedBy.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "fetchSiteName",
            "in": "query",
            "description": "Whether to include site name in the result. Default: false.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include site name in the result. Default: false.",
              "default": false
            }
          },
          {
            "name": "fetchLocationName",
            "in": "query",
            "description": "Whether to include location name in the result. Default: false.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include location name in the result. Default: false.",
              "default": false
            }
          },
          {
            "name": "fetchDepartmentName",
            "in": "query",
            "description": "Whether to include department name in the result. Default: false.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include department name in the result. Default: false.",
              "default": false
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: false.",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: false.",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: 0.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: 0.",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: 20. Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: 20. Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Person[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"John Doe","title":"Mr","phone":"(555) 123-4567","email":"example@example.com","notes":"Sample employee record","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","empId":"EMP-001","siteRefId":1,"siteName":"Sample Site","locationRefId":1,"locationName":"Sample Conference Room","departmentRefId":1,"departmentName":"Sample Department","customFieldValues":[{"refId":1,"customFieldRefId":101,"value":"Black","customField":{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]},{"refId":2,"name":"Robert Doe","title":"Mr","phone":"(555) 987-6543","email":"example@example.com","notes":"Sample employee record","addedByRefGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","empId":"EMP-002","siteRefId":1,"siteName":"Sample Site","locationRefId":1,"locationName":"Sample Office","departmentRefId":1,"departmentName":"Sample Department","customFieldValues":[{"refId":2,"customFieldRefId":201,"value":"White","customField":{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"TEXT"},"isRequired":true,"hasSelectedCategories":null,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":null}}]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/persons/customfields": {
      "get": {
        "tags": [
          "PersonSandbox"
        ],
        "summary": "Get Person Custom Fields",
        "description": "Get person custom fields.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<CustomField>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":101,"label":"Color","fieldType":{"refId":5,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":false,"options":null,"customFieldCategories":null,"counter":0},{"refId":201,"label":"Color","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":true,"hasSelectedCategories":true,"options":["Black","White","Silver"],"customFieldCategories":null,"counter":0}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/persons/settings": {
      "get": {
        "tags": [
          "PersonSandbox"
        ],
        "summary": "Get Person Settings",
        "description": "Get persons Settings.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<PersonSetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"field_FullName_Enabled":true,"field_FullName_Required":true,"field_Email_Enabled":true,"field_Email_Required":true,"field_EmployeeId_Enabled":false,"field_EmployeeId_Required":false,"field_Title_Enabled":false,"field_Title_Required":false,"field_Phone_Enabled":false,"field_Phone_Required":false,"field_Notes_Enabled":true,"field_Notes_Required":true,"field_Site_Enabled":true,"field_Site_Required":true,"field_Location_Enabled":true,"field_Location_Required":true,"field_Department_Enabled":true,"field_Department_Required":true,"field_FullName_Unique":true},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/persons/add": {
      "post": {
        "tags": [
          "PersonSandbox"
        ],
        "summary": "Add Person",
        "description": "Creates a person using the provided request.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddPersonRequest"
                  }
                ],
                "description": "Request model for adding a new Person."
              },
              "example": {"name":"John Doe","title":"Mr","phone":"(555) 123-4567","email":"example@example.com","notes":"Sample employee record","empId":"EMP-001","siteRefId":1,"locationRefId":1,"departmentRefId":1,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Person>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/persons/{refId}/update": {
      "put": {
        "tags": [
          "PersonSandbox"
        ],
        "summary": "Update Person",
        "description": "Modifies the Person identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the person (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdatePersonRequest"
                  }
                ],
                "description": "Request model for update person."
              },
              "example": {"name":"John Doe","title":"Mr","phone":"(555) 123-4567","email":"example@example.com","notes":"Sample employee record","empId":"EMP-001","siteRefId":1,"locationRefId":1,"departmentRefId":1,"customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/persons/{refId}/delete": {
      "delete": {
        "tags": [
          "PersonSandbox"
        ],
        "summary": "Delete Person",
        "description": "Deletes a person by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the person (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/persons/deletebulk": {
      "delete": {
        "tags": [
          "PersonSandbox"
        ],
        "summary": "Delete Persons",
        "description": "Deletes multiple persons by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of person unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of person unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/shelves/{refId}": {
      "get": {
        "tags": [
          "Shelf"
        ],
        "summary": "Get Shelf by RefId",
        "description": "Retrieves the details of a shelf by its unique identifier (refId). including optional aisle and bin data if requested.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the shelf (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchBins",
            "in": "query",
            "description": "Indicates whether to include bins associated with this ailse/shelves (default: false).",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Shelf>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":11,"name":"New York","bins":null},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/shelves": {
      "get": {
        "tags": [
          "Shelf"
        ],
        "summary": "Get Shelves",
        "description": "Retrieves a list of shelves filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "aisleRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the Aisle (positive integer only). Leave this field empty to retrieve unallocated locations. Required only when the inventory location hierarchy is configured as Aisle > Shelf > Bins.",
            "schema": {
              "type": "integer",
              "description": "Unique identifier (primary key) for the Aisle (positive integer only). Leave this field empty to retrieve unallocated locations. Required only when the inventory location hierarchy is configured as Aisle > Shelf > Bins.",
              "format": "int32"
            }
          },
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter shelves by name (Search keyword cannot exceed 100 characters.).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter shelves by name (Search keyword cannot exceed 100 characters.)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by shelf name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Shelf[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"New York","bins":[]},{"refId":2,"name":"London","bins":[]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/shelves/add": {
      "post": {
        "tags": [
          "Shelf"
        ],
        "summary": "Add Shelf",
        "description": "Creates a shelf using the provided `name` in the request. `aisleRefId` is optional: provide it to\r\ncreate the shelf under an aisle, or omit/null it to create an unallocated shelf.",
        "requestBody": {
          "description": "Contains the shelf details to be added (e.g., `name`, `aisleRefId`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddShelfRequest"
                  }
                ],
                "description": "Request model for adding shelf. Applicable only when multi-quantiy feature is enabled"
              },
              "example": {"aisleRefId":1,"name":"New York"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Shelf>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/shelves/{refId}/update": {
      "put": {
        "tags": [
          "Shelf"
        ],
        "summary": "Update Shelf",
        "description": "Modifies the shelf identified by `refId` using the details provided in the request.\r\n`aisleRefId` is optional: provide it to (re)assign the shelf to an aisle, or omit/null it to make the shelf unallocated.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the shelf (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the shelf details to update (e.g. `name`, `aisleRefId`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateShelfRequest"
                  }
                ],
                "description": "Request model for updating shelf. Applicable only when multi-quantiy feature is enabled"
              },
              "example": {"aisleRefId":1,"name":"New York"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/shelves/{refId}/delete": {
      "delete": {
        "tags": [
          "Shelf"
        ],
        "summary": "Delete Shelf",
        "description": "Deletes a shelf by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the shelf (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/shelves": {
      "get": {
        "tags": [
          "ShelfSandbox"
        ],
        "summary": "Get Shelves",
        "description": "Retrieves a list of shelves filtered by optional parameters such as search keyword, and pagination.",
        "parameters": [
          {
            "name": "aisleRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the Aisle (positive integer only). Leave this field empty to retrieve unallocated locations. Required only when the inventory location hierarchy is configured as Aisle > Shelf > Bins.",
            "schema": {
              "type": "integer",
              "description": "Unique identifier (primary key) for the Aisle (positive integer only). Leave this field empty to retrieve unallocated locations. Required only when the inventory location hierarchy is configured as Aisle > Shelf > Bins.",
              "format": "int32"
            }
          },
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter shelves by name (Search keyword cannot exceed 100 characters.).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter shelves by name (Search keyword cannot exceed 100 characters.)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by shelf name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Shelf[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"New York","bins":[]},{"refId":2,"name":"London","bins":[]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/shelves/{refId}": {
      "get": {
        "tags": [
          "ShelfSandbox"
        ],
        "summary": "Get Shelf by RefId",
        "description": "Retrieves the details of a shelf by its unique identifier (refId), including optional bin data if requested. For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the shelf (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchBins",
            "in": "query",
            "description": "Indicates whether to include bins associated with this shelf (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Shelf>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":11,"name":"New York","bins":null},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/shelves/add": {
      "post": {
        "tags": [
          "ShelfSandbox"
        ],
        "summary": "Add Shelf",
        "description": "Creates a shelf using the provided `name` and `aisleRefId` in the request.",
        "requestBody": {
          "description": "Contains the shelf details to be added (e.g., `name`, `aisleRefId`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddShelfRequest"
                  }
                ],
                "description": "Request model for adding shelf. Applicable only when multi-quantiy feature is enabled"
              },
              "example": {"aisleRefId":1,"name":"New York"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Object>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/shelves/{refId}/update": {
      "put": {
        "tags": [
          "ShelfSandbox"
        ],
        "summary": "Update Shelf",
        "description": "Modifies the shelf identified by refId using the details provided in the request.\r\n`aisleRefId` is optional: provide it to (re)assign the shelf to an aisle, or omit it to make the shelf unallocated.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the shelf (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the shelf details to update (e.g., `name`, `aisleRefId`).",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateShelfRequest"
                  }
                ],
                "description": "Request model for updating shelf. Applicable only when multi-quantiy feature is enabled"
              },
              "example": {"aisleRefId":1,"name":"New York"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/shelves/{refId}/delete": {
      "delete": {
        "tags": [
          "ShelfSandbox"
        ],
        "summary": "Delete Shelf",
        "description": "Deletes a shelf by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the shelf (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/sites": {
      "get": {
        "tags": [
          "Site"
        ],
        "summary": "Get Sites",
        "description": "Retrieves a paginated, filtered list of all active sites.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter sites by name (cannot exceed 100 characters).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter sites by name (cannot exceed 100 characters)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by site name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Site[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"Head Office","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"countryName":"Example Country","description":"Main headquarters","locations":[]},{"refId":2,"name":"Warehouse A","address1":"456 Storage Blvd","address2":null,"city":"Sample City","state":"Example State","zip":"00001","countryRefId":221,"countryName":"Example Country","description":null,"locations":[]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/sites/{refId}": {
      "get": {
        "tags": [
          "Site"
        ],
        "summary": "Get Site by RefId",
        "description": "Retrieves the details of a site by its unique identifier (refId). including optional locations data if requested.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the site (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchLocations",
            "in": "query",
            "description": "Indicates whether to include locations associated with this site (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Site>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"Sample Site","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"countryName":"Example Country","description":"Sample description","locations":[{"refId":11,"name":"Sample Location A","siteRefId":1,"description":null,"site":null},{"refId":12,"name":"Sample Conference Room","siteRefId":1,"description":null,"site":null}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/sites/add": {
      "post": {
        "tags": [
          "Site"
        ],
        "summary": "Add Site",
        "description": "Creates a new site using the details provided in the request.",
        "requestBody": {
          "description": "Contains the site details to be added.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddSiteRequest"
                  }
                ],
                "description": "Request model for adding a new site."
              },
              "example": {"name":"Head Office","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"description":"Main headquarters"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Site>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/sites/{refId}/update": {
      "put": {
        "tags": [
          "Site"
        ],
        "summary": "Update Site",
        "description": "Modifies the site identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the site (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the site details to update.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateSiteRequest"
                  }
                ],
                "description": "Request model for updating an existing site."
              },
              "example": {"name":"Head Office","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"description":"Main headquarters"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/sites/{refId}/delete": {
      "delete": {
        "tags": [
          "Site"
        ],
        "summary": "Delete Site",
        "description": "Deletes a site by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the site (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/sites/deletebulk": {
      "delete": {
        "tags": [
          "Site"
        ],
        "summary": "Delete Sites",
        "description": "Deletes multiple sites by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of site unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of site unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/sites": {
      "get": {
        "tags": [
          "SiteSandbox"
        ],
        "summary": "Get Sites",
        "description": "Retrieves a paginated, filtered list of all active sites.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter sites by name (cannot exceed 100 characters).",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter sites by name (cannot exceed 100 characters)."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by site name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Site[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"name":"Head Office","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"countryName":"Example Country","description":"Main headquarters","locations":[]},{"refId":2,"name":"Warehouse A","address1":"456 Storage Blvd","address2":null,"city":"Sample City","state":"Example State","zip":"00001","countryRefId":221,"countryName":"Example Country","description":null,"locations":[]}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/sites/{refId}": {
      "get": {
        "tags": [
          "SiteSandbox"
        ],
        "summary": "Get Site by RefId",
        "description": "Retrieves the details of a site by its unique identifier (refId). Optionally includes location data if requested. For a successful response, pass refId = 1.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the site (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchLocations",
            "in": "query",
            "description": "Indicates whether to include locations associated with this site (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Site>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"name":"Sample Site","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"countryName":"Example Country","description":"Sample description","locations":[{"refId":11,"name":"Sample Location A","siteRefId":1,"description":null,"site":null},{"refId":12,"name":"Sample Conference Room","siteRefId":1,"description":null,"site":null}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/sites/add": {
      "post": {
        "tags": [
          "SiteSandbox"
        ],
        "summary": "Add Site",
        "description": "Creates a new site using the details provided in the request.",
        "requestBody": {
          "description": "Contains the site details to be added.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddSiteRequest"
                  }
                ],
                "description": "Request model for adding a new site."
              },
              "example": {"name":"Head Office","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"description":"Main headquarters"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<Site>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":1},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/sites/{refId}/update": {
      "put": {
        "tags": [
          "SiteSandbox"
        ],
        "summary": "Update Site",
        "description": "Modifies the site identified by `refId` using the details provided in the request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the site (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Contains the site details to update.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateSiteRequest"
                  }
                ],
                "description": "Request model for updating an existing site."
              },
              "example": {"name":"Head Office","address1":"123 Example Street","address2":"Suite 100","city":"Sample City","state":"Example State","zip":"00000","countryRefId":221,"description":"Main headquarters"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/sites/{refId}/delete": {
      "delete": {
        "tags": [
          "SiteSandbox"
        ],
        "summary": "Delete Site",
        "description": "Deletes a site by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the site (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/sites/deletebulk": {
      "delete": {
        "tags": [
          "SiteSandbox"
        ],
        "summary": "Delete Sites",
        "description": "Deletes multiple sites by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of site unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of site unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/subcategories/{refId}": {
      "get": {
        "tags": [
          "SubCategory"
        ],
        "summary": "Get Subcategory by RefId",
        "description": "Retrieves the details of a subcategory by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique reference ID of the subcategory (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCategory",
            "in": "query",
            "description": "Whether to include the parent category associated with this subcategory.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<SubCategory>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":11,"name":"Sample SubCategory","categoryRefId":1,"dateAdded":"2025-01-01T00:00:00","category":{"refId":1,"name":"Sample Category","subCategories":null}},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/subcategories": {
      "get": {
        "tags": [
          "SubCategory"
        ],
        "summary": "Get Subcategories",
        "description": "Retrieves a list of subcategories filtered by optional parameters such as categoryRefId, search keyword, and pagination.",
        "parameters": [
          {
            "name": "categoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the category (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Unique identifier (primary key) for the category (positive integer only).",
              "format": "int32"
            }
          },
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter subcategories by name (Search keyword cannot exceed 100 characters.)",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter subcategories by name (Search keyword cannot exceed 100 characters.)"
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by subcategory name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "fetchCategory",
            "in": "query",
            "description": "Whether to include category in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include category in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<SubCategory[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":11,"name":"Sample SubCategory A","categoryRefId":1,"dateAdded":"2026-11-04T13:12:17.5455368-05:00","category":{"refId":1,"name":"Sample Category","subCategories":null}},{"refId":12,"name":"Sample SubCategory B","categoryRefId":1,"dateAdded":"2026-11-04T13:12:17.5455385-05:00","category":{"refId":1,"name":"Sample Category","subCategories":null}}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/subcategories/add": {
      "post": {
        "tags": [
          "SubCategory"
        ],
        "summary": "Add Subcategory",
        "description": "Creates a new subcategory under the specified category.",
        "requestBody": {
          "description": "Subcategory creation request containing category reference ID and subcategory name.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddSubCategoryRequest"
                  }
                ],
                "description": "Request model for adding a new subcategory."
              },
              "example": {"categoryRefId":1,"name":"Laptop"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<SubCategory>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/subcategories/{refId}/update": {
      "put": {
        "tags": [
          "SubCategory"
        ],
        "summary": "Update Subcategory",
        "description": "Updates the name or associated category of an existing subcategory.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique reference ID of the subcategory (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Subcategory update request containing subcategory ID, category reference ID, and new name.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateSubCategoryRequest"
                  }
                ],
                "description": "Request model for updating subcategory."
              },
              "example": {"name":"Server"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/subcategories/{refId}/move": {
      "put": {
        "tags": [
          "SubCategory"
        ],
        "summary": "Move Subcategory",
        "description": "Move subcategory to another category.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique reference ID of the subcategory (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Subcategory move request containing RefID, CategoryRefID.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/MoveSubCategoryRequest"
                  }
                ],
                "description": "Request model for moving a subcategory to another category."
              },
              "example": {"categoryRefId":1}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource moved successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource moved successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/subcategories/{refId}/delete": {
      "delete": {
        "tags": [
          "SubCategory"
        ],
        "summary": "Delete Subcategory",
        "description": "Deletes a subcategory by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique reference ID of the subcategory (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/subcategories/deletebulk": {
      "delete": {
        "tags": [
          "SubCategory"
        ],
        "summary": "Delete Subcategories",
        "description": "Deletes multiple subcategories by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of subcategory unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of subcategory unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/subcategories/bycatrefId/delete": {
      "delete": {
        "tags": [
          "SubCategory"
        ],
        "summary": "Delete Subcategories by Category RefId",
        "description": "Deletes Subcategories by Category reference ID.",
        "parameters": [
          {
            "name": "categoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the category.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/subcategories/{refId}": {
      "get": {
        "tags": [
          "SubCategorySandbox"
        ],
        "summary": "Get Subcategory by RefId",
        "description": "Retrieves the details of a subcategory by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique reference ID of the subcategory (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCategory",
            "in": "query",
            "description": "Whether to include the parent category associated with this subcategory.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<SubCategory>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":11,"name":"Sample SubCategory","categoryRefId":1,"dateAdded":"2025-01-01T00:00:00","category":{"refId":1,"name":"Sample Category","subCategories":null}},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/subcategories": {
      "get": {
        "tags": [
          "SubCategorySandbox"
        ],
        "summary": "Get Subcategories",
        "description": "Retrieves a list of subcategories filtered by optional parameters such as categoryRefId, search keyword, and pagination.",
        "parameters": [
          {
            "name": "categoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the category (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Unique identifier (primary key) for the category (positive integer only).",
              "format": "int32"
            }
          },
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter subcategories by name (Search keyword cannot exceed 100 characters.)",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter subcategories by name (Search keyword cannot exceed 100 characters.)"
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: \"Contains\", \"Exact\", \"StartWith\", \"EndsWith\".",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by subcategory name. Default: \"Name\" Allowed values: \"Name\".",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction (Ascending or Descending). Default: \"Asc\" Allowed values: \"Asc\", \"Desc\".",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "fetchCategory",
            "in": "query",
            "description": "Whether to include category in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include category in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed values: Must be between 1 and 100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<SubCategory[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":11,"name":"Sample SubCategory A","categoryRefId":1,"dateAdded":"2026-11-04T13:12:17.5475405-05:00","category":{"refId":1,"name":"Sample Category","subCategories":null}},{"refId":12,"name":"Sample SubCategory B","categoryRefId":1,"dateAdded":"2026-11-04T13:12:17.5475418-05:00","category":{"refId":1,"name":"Sample Category","subCategories":null}}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/subcategories/add": {
      "post": {
        "tags": [
          "SubCategorySandbox"
        ],
        "summary": "Add Subcategory",
        "description": "Creates a new subcategory under the specified category.",
        "requestBody": {
          "description": "Subcategory creation request containing category reference ID and subcategory name.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AddSubCategoryRequest"
                  }
                ],
                "description": "Request model for adding a new subcategory."
              },
              "example": {"categoryRefId":1,"name":"Laptop"}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<SubCategory>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/subcategories/{refId}/update": {
      "put": {
        "tags": [
          "SubCategorySandbox"
        ],
        "summary": "Update Subcategory",
        "description": "Updates the name or associated category of an existing subcategory.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique reference ID of the subcategory (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Subcategory update request containing subcategory ID, category reference ID, and new name.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateSubCategoryRequest"
                  }
                ],
                "description": "Request model for updating subcategory."
              },
              "example": {"name":"Server"}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/subcategories/{refId}/move": {
      "put": {
        "tags": [
          "SubCategorySandbox"
        ],
        "summary": "Move Subcategory",
        "description": "Move subcategory to another category.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique reference ID of the subcategory (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Subcategory move request containing RefID, CategoryRefID.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/MoveSubCategoryRequest"
                  }
                ],
                "description": "Request model for moving a subcategory to another category."
              },
              "example": {"categoryRefId":1}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource moved successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource moved successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/subcategories/{refId}/delete": {
      "delete": {
        "tags": [
          "SubCategorySandbox"
        ],
        "summary": "Delete Subcategory",
        "description": "Deletes a subcategory by its unique reference ID.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique reference ID of the subcategory (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/subcategories/deletebulk": {
      "delete": {
        "tags": [
          "SubCategorySandbox"
        ],
        "summary": "Delete Subcategories",
        "description": "Deletes multiple subcategories by their reference IDs.",
        "parameters": [
          {
            "name": "RefIds",
            "in": "query",
            "description": "Collection of subcategory unique identifiers (RefIds) to delete. Maximum 100 items.",
            "required": true,
            "schema": {
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Collection of subcategory unique identifiers (RefIds) to delete. Maximum 100 items."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/subcategories/bycatrefId/delete": {
      "delete": {
        "tags": [
          "SubCategorySandbox"
        ],
        "summary": "Delete Subcategories by Category RefId",
        "description": "Deletes Subcategories by Category reference ID.",
        "parameters": [
          {
            "name": "categoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) for the category.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/timeformats": {
      "get": {
        "tags": [
          "TimeFormat"
        ],
        "summary": "Get Time Formats",
        "description": "Retrieves TimeFormat.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<TimeFormat>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":1,"name":"12-hour long - 09:58:30 PM","format":"hh:mm tt","example":"09:58 PM"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/timeformats": {
      "get": {
        "tags": [
          "TimeFormatSandbox"
        ],
        "summary": "Get Time Formats",
        "description": "Retrieves TimeFormat.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<TimeFormat>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":1,"name":"12-hour long - 09:58:30 PM","format":"hh:mm tt","example":"09:58 PM"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/timezones": {
      "get": {
        "tags": [
          "TimeZone"
        ],
        "summary": "Get Time Zones",
        "description": "Retrieves timeZones.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<TimeZone>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":1,"name":"(GMT -6:00) Central Time (US & Canada)","gmt":"-12:00","offset":12,"id":"Central Standard Time"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/timezones": {
      "get": {
        "tags": [
          "TimeZoneSandbox"
        ],
        "summary": "Get Time Zones",
        "description": "Retrieves timeZones.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<TimeZone>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":[{"refId":1,"name":"(GMT -6:00) Central Time (US & Canada)","gmt":"-12:00","offset":12,"id":"Central Standard Time"}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/users/{RefGuId}": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Get User by RefGuId",
        "description": "Retrieves the details of a user by its unique GUID.",
        "parameters": [
          {
            "name": "RefGuId",
            "in": "path",
            "description": "Unique GUID of the user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<User>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","firstName":"John","lastName":"Doe","title":"Sample User","phone":"+1 000-000-0000","email":"example@example.com","photo":"/uploads/users/sample.png","timeZoneRefId":1,"timeZone":"(GMT) Example Time Zone","dateFormatRefId":1,"dateFormat":"yyyy-MM-dd","timeFormatRefId":1,"timeFormat":"12-hour format","lastLogin":"2025-01-01T00:00:00","userRole":"ExampleRole","emailVerified":true,"userGroup":"Sample Group","userGroupDescription":"Example permission group.","registerDate":"2024-01-01T00:00:00","lastAccessIP":"0.0.0.0","lastAccessDevice":"Sample Browser","twoFAEnabled":true,"twoFAPhone":"+1 000-000-0000","twoFAPhoneVerified":true,"twoFAByEmail":true,"twoFAByPhone":true,"twoFAPhoneCountry":1,"apiEnabled":true,"defaultSelectionEnabled":true,"accessibilityEnabled":true,"defaultSiteRefId":1,"defaultLocationRefId":1,"defaultCategoryRefId":1,"defaultSubCategoryRefId":1,"defaultDepartmentRefId":1,"scannerType":"DefaultScanner","barcodes":"CODE_39"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/users/{RefGuId}": {
      "get": {
        "tags": [
          "UserSandBox"
        ],
        "summary": "Get User by RefGuId",
        "description": "Retrieves the details of a user by its unique GUID. For a successful response, pass RefGuId = a3f1c9e2-7b4d-4f9a-8c21-1d2e3f4a5b6c.",
        "parameters": [
          {
            "name": "RefGuId",
            "in": "path",
            "description": "Unique Unique GUID of the user.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<User>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refGuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","firstName":"John","lastName":"Doe","title":"Sample User","phone":"+1 000-000-0000","email":"example@example.com","photo":"/uploads/users/sample.png","timeZoneRefId":1,"timeZone":"(GMT) Example Time Zone","dateFormatRefId":1,"dateFormat":"yyyy-MM-dd","timeFormatRefId":1,"timeFormat":"12-hour format","lastLogin":"2025-01-01T00:00:00","userRole":"ExampleRole","emailVerified":true,"userGroup":"Sample Group","userGroupDescription":"Example permission group.","registerDate":"2024-01-01T00:00:00","lastAccessIP":"0.0.0.0","lastAccessDevice":"Sample Browser","twoFAEnabled":true,"twoFAPhone":"+1 000-000-0000","twoFAPhoneVerified":true,"twoFAByEmail":true,"twoFAByPhone":true,"twoFAPhoneCountry":1,"apiEnabled":true,"defaultSelectionEnabled":true,"accessibilityEnabled":true,"defaultSiteRefId":1,"defaultLocationRefId":1,"defaultCategoryRefId":1,"defaultSubCategoryRefId":1,"defaultDepartmentRefId":1,"scannerType":"DefaultScanner","barcodes":"CODE_39"},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/warranties/{refId}": {
      "get": {
        "tags": [
          "Warranty"
        ],
        "summary": "Get Warranty by RefId",
        "description": "Retrieves the details of a warranty by its unique identifier (refId).",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the warranty (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Indicates whether to include custom fields associated with this warranty (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetWarranty>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"assetRefId":2,"length":5,"expiryDate":"2026-01-01","notes":"Extended manufacturer warranty covering parts and labor.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":1,"customFieldRefId":301,"value":"Gold","customField":{"refId":301,"label":"Warranty Plan","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":false,"hasSelectedCategories":null,"options":["Gold","Silver","Bronze"],"customFieldCategories":null,"counter":null}},{"refId":0,"customFieldRefId":302,"value":"","customField":{"refId":302,"label":"Claim Reference Number","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/warranties": {
      "get": {
        "tags": [
          "Warranty"
        ],
        "summary": "Get Warranties",
        "description": "Retrieves a list of warranties filtered and sorted based on the provided query parameters.\r\nSupports keyword search, warranty and asset custom field search, filtering by category/\r\nsubcategory, site/location, department, person, customer, and event type, and date-range\r\nfiltering by expiry date, an asset date, a warranty custom field, or an asset custom field\r\n(requires startDate and endDate when dateRangeByCustomField or dateRangeByAssetCustomField\r\nis provided), sorting, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter warranties by defined search fields. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter warranties by defined search fields. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which asset fields can be searched. Default: \"AssetTagId\", \"Description\", \"Notes\". Allowed values include: AssetTagId, Description, Notes, PurchaseFrom, Brand, Model, SerialNo.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which asset fields can be searched. Default: \"AssetTagId\", \"Description\", \"Notes\". Allowed values include: AssetTagId, Description, Notes, PurchaseFrom, Brand, Model, SerialNo.",
              "default": [
                "AssetTagId",
                "Description",
                "Notes"
              ],
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which warranty custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which warranty custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "searchAssetCustomFields",
            "in": "query",
            "description": "Defines which asset custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which asset custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "categoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
              "format": "int32"
            }
          },
          {
            "name": "subCategoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
              "format": "int32"
            }
          },
          {
            "name": "siteRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the site to filter by. Pass 0 to filter unassigned sites.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the site to filter by. Pass 0 to filter unassigned sites.",
              "format": "int32"
            }
          },
          {
            "name": "locationRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the location to filter by. If provided, siteRefId must also be specified. Pass 0 to filter unassigned locations.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the location to filter by. If provided, siteRefId must also be specified. Pass 0 to filter unassigned locations.",
              "format": "int32"
            }
          },
          {
            "name": "departmentRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the department to filter by. Pass 0 to filter unassigned departments.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the department to filter by. Pass 0 to filter unassigned departments.",
              "format": "int32"
            }
          },
          {
            "name": "personRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the assigned person to filter by.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the assigned person to filter by.",
              "format": "int32"
            }
          },
          {
            "name": "customerRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the assigned customer to filter by.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the assigned customer to filter by.",
              "format": "int32"
            }
          },
          {
            "name": "EventTypes",
            "in": "query",
            "description": "Filters assets by the specified event types. Selecting \"Custom\" includes all user-defined custom events.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/EventType"
              },
              "description": "Filters assets by the specified event types. Selecting \"Custom\" includes all user-defined custom events.",
              "nullable": true
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Default: \"ExpiryDate\". Allowed values: ExpiryDate, AssetTagId, Description, Brand, Model, SerialNo, PurchaseDate, DateCreated, CreatedBy, WarrantyNotes, WarrantyLength, WarrantyCreatedBy, Cost, PurchaseFrom, InitialCost, SiteName, LocationName, CategoryName, SubCategoryName, DepartmentName, isDepreciable, SalvageValue, AssetLife, DepreciationMethodName, DateAcquired, Status, PersonName, LeaseTo, Reservation, EventDate1, EventDate2, Relation, IsLinked, CurrentCost.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering warranty records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering warranty records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering warranty records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering warranty records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filtering should apply to. Ignored if dateRangeByCustomField or dateRangeByAssetCustomField is provided. Default: \"ExpiryDate\" Allowed values: ExpiryDate, DateCreated, PurchaseDate, DateAcquired.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "dateRangeByCustomField",
            "in": "query",
            "description": "Defines which warranty custom date field the filter should apply to. Provide the warranty Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which warranty custom date field the filter should apply to. Provide the warranty Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "dateRangeByAssetCustomField",
            "in": "query",
            "description": "Defines which asset custom date field the filter should apply to. Provide the asset Custom Field ID to enable this filter, which takes precedence over dateRangeBy and dateRangeByCustomField when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which asset custom date field the filter should apply to. Provide the asset Custom Field ID to enable this filter, which takes precedence over dateRangeBy and dateRangeByCustomField when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetWarranty[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"length":5,"expiryDate":"2026-01-01","notes":"Extended manufacturer warranty covering parts and labor.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":1,"customFieldRefId":301,"value":"Gold","customField":{"refId":301,"label":"Warranty Plan","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":false,"hasSelectedCategories":null,"options":["Gold","Silver","Bronze"],"customFieldCategories":null,"counter":null}},{"refId":0,"customFieldRefId":302,"value":"","customField":{"refId":302,"label":"Claim Reference Number","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}}]},{"refId":2,"assetRefId":3,"length":6,"expiryDate":"2026-06-15","notes":"Third-party extended warranty, includes on-site service.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":null}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/warranties/settings": {
      "get": {
        "tags": [
          "Warranty"
        ],
        "summary": "Get Warranty Settings",
        "description": "Get Warranty Settings.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<WarrantySetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"field_ExpiryDate_Enabled":true,"field_ExpiryDate_Required":true,"field_Length_Enabled":true,"field_Length_Required":false,"field_Notes_Enabled":true,"field_Notes_Required":false},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/warranties/add": {
      "post": {
        "tags": [
          "Warranty"
        ],
        "summary": "Add Warranty",
        "description": "Creates a Asset Warranty using the provided request.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WarrantyRequest"
                  }
                ],
                "description": "Request model for adding or updating an asset warranty.\r\nContains the associated asset, warranty length, expiry date, notes, and optional custom fields."
              },
              "example": {"assetRefId":1,"length":36,"expiryDate":"2025-01-01","notes":"Warranty Notes","customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetWarranty>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/warranties/{refId}/update": {
      "put": {
        "tags": [
          "Warranty"
        ],
        "summary": "Update Warranty",
        "description": "Update a warranty using the provided request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the warranty. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WarrantyRequest"
                  }
                ],
                "description": "Request model for adding or updating an asset warranty.\r\nContains the associated asset, warranty length, expiry date, notes, and optional custom fields."
              },
              "example": {"assetRefId":1,"length":36,"expiryDate":"2025-01-01","notes":"Warranty Notes","customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/v1/warranties/delete": {
      "delete": {
        "tags": [
          "Warranty"
        ],
        "summary": "Delete Warranty",
        "description": "Deletes a warranty by its unique reference ID, scoped to the asset it belongs to (both refId and assetRefId are required).",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeleteWarrantyRequest"
                  }
                ],
                "description": "Request model for deleting a warranty."
              },
              "example": {"refId":1,"assetRefId":101}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/warranties/{refId}": {
      "get": {
        "tags": [
          "WarrantySandbox"
        ],
        "summary": "Get Warranty by RefId",
        "description": "Retrieves the details of a warranty by its unique identifier (refId). For a successful response, pass refId = 101.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) for the warranty (positive integer only).",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Indicates whether to include custom fields associated with this warranty (default: false).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetWarranty>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"refId":1,"assetRefId":2,"length":5,"expiryDate":"2026-01-01","notes":"Extended manufacturer warranty covering parts and labor.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":1,"customFieldRefId":301,"value":"Gold","customField":{"refId":301,"label":"Warranty Plan","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":false,"hasSelectedCategories":null,"options":["Gold","Silver","Bronze"],"customFieldCategories":null,"counter":null}},{"refId":0,"customFieldRefId":302,"value":"","customField":{"refId":302,"label":"Claim Reference Number","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}}]},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/warranties": {
      "get": {
        "tags": [
          "WarrantySandbox"
        ],
        "summary": "Get Warranties",
        "description": "Retrieves a list of warranties filtered and sorted based on the provided query parameters.\r\nSupports keyword search, warranty and asset custom field search, filtering by category/\r\nsubcategory, site/location, department, person, customer, and event type, and date-range\r\nfiltering by expiry date, an asset date, a warranty custom field, or an asset custom field\r\n(requires startDate and endDate when dateRangeByCustomField or dateRangeByAssetCustomField\r\nis provided), sorting, and pagination.",
        "parameters": [
          {
            "name": "searchKeyword",
            "in": "query",
            "description": "Search keyword to filter warranties by defined search fields. Maximum length: 100 characters.",
            "schema": {
              "maxLength": 100,
              "minLength": 0,
              "type": "string",
              "description": "Search keyword to filter warranties by defined search fields. Maximum length: 100 characters."
            }
          },
          {
            "name": "searchType",
            "in": "query",
            "description": "Defines how the search text should be matched against the field. Default: \"Contains\" Allowed values: Contains, Exact, StartWith, EndsWith.",
            "schema": {
              "$ref": "#/components/schemas/SearchType"
            }
          },
          {
            "name": "searchFields",
            "in": "query",
            "description": "Defines which asset fields can be searched. Default: \"AssetTagId\", \"Description\", \"Notes\". Allowed values include: AssetTagId, Description, Notes, PurchaseFrom, Brand, Model, SerialNo.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DataField"
              },
              "description": "Defines which asset fields can be searched. Default: \"AssetTagId\", \"Description\", \"Notes\". Allowed values include: AssetTagId, Description, Notes, PurchaseFrom, Brand, Model, SerialNo.",
              "default": [
                "AssetTagId",
                "Description",
                "Notes"
              ],
              "nullable": true
            }
          },
          {
            "name": "searchCustomFields",
            "in": "query",
            "description": "Defines which warranty custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which warranty custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "searchAssetCustomFields",
            "in": "query",
            "description": "Defines which asset custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Defines which asset custom fields can be searched (Excluding Data Type Date, Date and Time). Please provide custom field Id. Allowed custom field data type: TEXT, NUMERIC, NUMERICAUTOINCREMENT, CURRENCY, DROPDOWNLIST, MEMO, EMAIL, URL, SCANNER, RADIOBUTTONLIST, CHECKBOXLIST, GPSCOORDINATES."
            }
          },
          {
            "name": "categoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the category to filter by. Pass 0 to filter unassigned categories.",
              "format": "int32"
            }
          },
          {
            "name": "subCategoryRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the subcategory to filter by. If provided, categoryRefId must also be specified. Pass 0 to filter unassigned subcategories.",
              "format": "int32"
            }
          },
          {
            "name": "siteRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the site to filter by. Pass 0 to filter unassigned sites.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the site to filter by. Pass 0 to filter unassigned sites.",
              "format": "int32"
            }
          },
          {
            "name": "locationRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the location to filter by. If provided, siteRefId must also be specified. Pass 0 to filter unassigned locations.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the location to filter by. If provided, siteRefId must also be specified. Pass 0 to filter unassigned locations.",
              "format": "int32"
            }
          },
          {
            "name": "departmentRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the department to filter by. Pass 0 to filter unassigned departments.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the department to filter by. Pass 0 to filter unassigned departments.",
              "format": "int32"
            }
          },
          {
            "name": "personRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the assigned person to filter by.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the assigned person to filter by.",
              "format": "int32"
            }
          },
          {
            "name": "customerRefId",
            "in": "query",
            "description": "Unique identifier (primary key) of the assigned customer to filter by.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "Unique identifier (primary key) of the assigned customer to filter by.",
              "format": "int32"
            }
          },
          {
            "name": "EventTypes",
            "in": "query",
            "description": "Filters assets by the specified event types. Selecting \"Custom\" includes all user-defined custom events.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/EventType"
              },
              "description": "Filters assets by the specified event types. Selecting \"Custom\" includes all user-defined custom events.",
              "nullable": true
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "The field to order results by. Default: \"ExpiryDate\". Allowed values: ExpiryDate, AssetTagId, Description, Brand, Model, SerialNo, PurchaseDate, DateCreated, CreatedBy, WarrantyNotes, WarrantyLength, WarrantyCreatedBy, Cost, PurchaseFrom, InitialCost, SiteName, LocationName, CategoryName, SubCategoryName, DepartmentName, isDepreciable, SalvageValue, AssetLife, DepreciationMethodName, DateAcquired, Status, PersonName, LeaseTo, Reservation, EventDate1, EventDate2, Relation, IsLinked, CurrentCost.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "The sorting direction for the result set. Default: \"Asc\" Allowed values: Asc, Desc.",
            "schema": {
              "$ref": "#/components/schemas/SortOrder"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date for filtering warranty records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
            "schema": {
              "type": "string",
              "description": "The start date for filtering warranty records. Format: \"yyyy-MM-dd\" Example: 2025-04-01.",
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date for filtering warranty records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
            "schema": {
              "type": "string",
              "description": "The end date for filtering warranty records. Format: \"yyyy-MM-dd\" Example: 2025-04-30.",
              "format": "date"
            }
          },
          {
            "name": "dateRangeBy",
            "in": "query",
            "description": "Defines which date field the filtering should apply to. Ignored if dateRangeByCustomField or dateRangeByAssetCustomField is provided. Default: \"ExpiryDate\" Allowed values: ExpiryDate, DateCreated, PurchaseDate, DateAcquired.",
            "schema": {
              "$ref": "#/components/schemas/DataField"
            }
          },
          {
            "name": "dateRangeByCustomField",
            "in": "query",
            "description": "Defines which warranty custom date field the filter should apply to. Provide the warranty Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which warranty custom date field the filter should apply to. Provide the warranty Custom Field ID to enable the dateRangeByCustomField filter, which takes precedence over dateRangeBy when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "dateRangeByAssetCustomField",
            "in": "query",
            "description": "Defines which asset custom date field the filter should apply to. Provide the asset Custom Field ID to enable this filter, which takes precedence over dateRangeBy and dateRangeByCustomField when set. Requires startDate and endDate to also be provided.",
            "schema": {
              "type": "integer",
              "description": "Defines which asset custom date field the filter should apply to. Provide the asset Custom Field ID to enable this filter, which takes precedence over dateRangeBy and dateRangeByCustomField when set. Requires startDate and endDate to also be provided.",
              "format": "int32"
            }
          },
          {
            "name": "fetchCustomFields",
            "in": "query",
            "description": "Whether to include custom fields in the result. Default: \"false\".",
            "schema": {
              "type": "boolean",
              "description": "Whether to include custom fields in the result. Default: \"false\".",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of records to skip before returning results. Default: \"0\"",
            "schema": {
              "maximum": 2147483647,
              "minimum": 0,
              "type": "integer",
              "description": "The number of records to skip before returning results. Default: \"0\"",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "The maximum number of records to return. Default: \"20\" Allowed range: 1-100.",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetWarranty[]>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":2,"data":[{"refId":1,"assetRefId":2,"length":5,"expiryDate":"2026-01-01","notes":"Extended manufacturer warranty covering parts and labor.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":[{"refId":1,"customFieldRefId":301,"value":"Gold","customField":{"refId":301,"label":"Warranty Plan","fieldType":{"refId":5,"name":"Dropdown","hasList":true,"fieldName":"DROPDOWNLIST"},"isRequired":false,"hasSelectedCategories":null,"options":["Gold","Silver","Bronze"],"customFieldCategories":null,"counter":null}},{"refId":0,"customFieldRefId":302,"value":"","customField":{"refId":302,"label":"Claim Reference Number","fieldType":{"refId":1,"name":"Text","hasList":false,"fieldName":"TEXT"},"isRequired":false,"hasSelectedCategories":null,"options":null,"customFieldCategories":null,"counter":null}}]},{"refId":2,"assetRefId":3,"length":6,"expiryDate":"2026-06-15","notes":"Third-party extended warranty, includes on-site service.","addedByRefGuId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","customFieldValues":null}],"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/warranties/settings": {
      "get": {
        "tags": [
          "WarrantySandbox"
        ],
        "summary": "Get Warranty Settings",
        "description": "Get Warranty Settings.",
        "responses": {
          "200": {
            "description": "Request completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<WarrantySetting>"
                },
                "example": {"success":true,"statusCode":200,"message":"Request completed successfully.","totalRecords":null,"data":{"field_ExpiryDate_Enabled":true,"field_ExpiryDate_Required":true,"field_Length_Enabled":true,"field_Length_Required":false,"field_Notes_Enabled":true,"field_Notes_Required":false},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/warranties/add": {
      "post": {
        "tags": [
          "WarrantySandbox"
        ],
        "summary": "Add Warranty",
        "description": "Creates a Asset Warranty using the provided request.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WarrantyRequest"
                  }
                ],
                "description": "Request model for adding or updating an asset warranty.\r\nContains the associated asset, warranty length, expiry date, notes, and optional custom fields."
              },
              "example": {"assetRefId":1,"length":36,"expiryDate":"2025-01-01","notes":"Warranty Notes","customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "201": {
            "description": "Resource created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APIResponse<AssetWarranty>"
                },
                "example": {"success":true,"statusCode":201,"message":"Resource created successfully","totalRecords":null,"data":{"refId":5},"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/warranties/{refId}/update": {
      "put": {
        "tags": [
          "WarrantySandbox"
        ],
        "summary": "Update Warranty",
        "description": "Update a warranty using the provided request.",
        "parameters": [
          {
            "name": "refId",
            "in": "path",
            "description": "Unique identifier (primary key) of the warranty. Must be a positive integer.",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WarrantyRequest"
                  }
                ],
                "description": "Request model for adding or updating an asset warranty.\r\nContains the associated asset, warranty length, expiry date, notes, and optional custom fields."
              },
              "example": {"assetRefId":1,"length":36,"expiryDate":"2025-01-01","notes":"Warranty Notes","customFieldRequest":[{"customFieldId":1,"customFieldValue":"Sample Text"},{"customFieldId":2,"customFieldValue":"sample@example.com"}]}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource updated successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource updated successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    },
    "/sandbox/warranties/delete": {
      "delete": {
        "tags": [
          "WarrantySandbox"
        ],
        "summary": "Delete Warranty",
        "description": "Deletes a warranty by its unique reference ID, scoped to the asset it belongs to (both refId and assetRefId are required).",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeleteWarrantyRequest"
                  }
                ],
                "description": "Request model for deleting a warranty."
              },
              "example": {"refId":1,"assetRefId":101}
            }
          }
        },
        "responses": {
          "204": {
            "description": "Resource deleted successfully.",
            "content": {
              "application/json": {
                "schema": { },
                "example": {"success":true,"statusCode":204,"message":"Resource deleted successfully","totalRecords":null,"data":null,"errors":null,"requestId":"unique identifier","result":"Success"}
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorisedAccess"
          },
          "403": {
            "$ref": "#/components/responses/AccessDenied"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/NotAllowed"
          },
          "422": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "498": {
            "$ref": "#/components/responses/TokenExpired"
          },
          "423": {
            "$ref": "#/components/responses/FeatureDisabled"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          },
          "502": {
            "$ref": "#/components/responses/BadGateway"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "504": {
            "$ref": "#/components/responses/GatewayTimeout"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "APIResponse<Aisle>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Aisle"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Aisle[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Aisle"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Asset>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Asset"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AssetAudit>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetAudit"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AssetAudit[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetAudit"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AssetHistory>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetHistory"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AssetHistory[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetHistory"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AssetLink>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetLink"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AssetMaintenance>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetMaintenance"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AssetMaintenance[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetMaintenance"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AssetReservation>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetReservation"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AssetReservation[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetReservation"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AssetSetting>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetSetting"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AssetWarranty>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetWarranty"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AssetWarranty[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetWarranty"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Asset[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Asset"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AuditName>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuditName"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AuditName[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuditName"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<AuthorizeResponse>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthorizeResponse"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Bin>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Bin"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Bin[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Bin"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<BulkAudit>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BulkAudit"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Category>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Category"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Category[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Category"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Contract>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Contract"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<ContractAssetLinked[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContractAssetLinked"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<ContractSetting>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContractSetting"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Contract[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Country>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Country"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Currency>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Currency"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<CustomEventSetting>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomEventSetting"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<CustomField>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomField"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Customer>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Customer"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<CustomerSetting>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerSetting"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Customer[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Customer"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<DateFormat>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DateFormat"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Department>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Department[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Department"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Document>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Document"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Document[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Document"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Event>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Event"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Event[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Event"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Fund>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Fund"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<FundAssetLinked[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FundAssetLinked"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Fund[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fund"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Image>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Image"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Image[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Image"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Insurance>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Insurance"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<InsuranceAssetLinked[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InsuranceAssetLinked"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Insurance[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Insurance"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<InventoryItem>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InventoryItem"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<InventoryItemHistory>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InventoryItemHistory"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<InventoryItemHistory[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InventoryItemHistory"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<InventoryItem[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InventoryItem"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<InventorySetting>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InventorySetting"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Location>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Location"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Location[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Location"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<MaintenanceSetting>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaintenanceSetting"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Object>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Person>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Person"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<PersonSetting>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PersonSetting"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Person[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Person"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Shelf>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Shelf"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Shelf[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Shelf"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Site>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Site"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Site[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Site"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<StockSummary[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockSummary"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<SubCategory>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SubCategory"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<SubCategory[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubCategory"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<TimeFormat>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TimeFormat"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<TimeZone>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TimeZone"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Transaction>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Transaction"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<Transaction[]>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Transaction"
            },
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<User>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/User"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "APIResponse<WarrantySetting>": {
        "required": [
          "requestId",
          "result",
          "statusCode",
          "success"
        ],
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the request was processed successfully (true) or not (false)."
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code of the response (e.g., 200 = OK, 400 = Bad Request).",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the request.",
            "nullable": true
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total number of records that match the request criteria before pagination is applied.\r\nNull for responses that are not paginated.",
            "format": "int32",
            "nullable": true
          },
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/WarrantySetting"
              }
            ],
            "description": "The actual payload of the response. \r\nContains the requested data if successful.",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "description": "A collection of validation or processing errors that occurred during the request.\r\nPopulated only when Success is false.",
            "nullable": true
          },
          "requestId": {
            "type": "string",
            "description": "A unique identifier for the request. \r\nUseful for tracing and debugging.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/Result"
          }
        },
        "additionalProperties": false,
        "description": "Represents a standard API response wrapper with metadata, message, \r\nand optional data payload of type <typeparamref name=\"T\" />."
      },
      "AddAisleRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the aisle (Aisle name cannot exceed 100 characters.)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding aisle. Applicable only when multi-quantiy feature is enabled"
      },
      "AddAssetRequest": {
        "required": [
          "assetTagId",
          "description"
        ],
        "type": "object",
        "properties": {
          "assetTagId": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Unique tag identifier assigned to the asset (e.g., barcode or QR code label). Cannot exceed 50 characters.",
            "format": "string"
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Detailed description of the asset including its purpose, specifications, or notes. Cannot exceed 1000 characters.",
            "format": "string"
          },
          "brand": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Brand or manufacturer name of the asset (e.g., Dell, HP, Samsung). Cannot exceed 50 characters.",
            "format": "string",
            "nullable": true
          },
          "model": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Model name or number of the asset as specified by the manufacturer. Cannot exceed 50 characters.",
            "format": "string",
            "nullable": true
          },
          "serialNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Unique serial number assigned by the manufacturer for asset identification and warranty tracking. Cannot exceed 50 characters.",
            "format": "string",
            "nullable": true
          },
          "purchaseDate": {
            "type": "string",
            "description": "The date the asset was purchased. Format: yyyy-MM-dd.",
            "format": "date",
            "nullable": true
          },
          "purchaseFrom": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the vendor or supplier from whom the asset was purchased. Cannot exceed 100 characters.",
            "format": "string",
            "nullable": true
          },
          "cost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Original purchase price of the asset at the time of acquisition.",
            "format": "currency",
            "nullable": true
          },
          "siteRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Foreign key referencing the site or facility where the asset is located.",
            "format": "int32",
            "nullable": true
          },
          "locationRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Foreign key referencing the physical location where the asset is stored or deployed.",
            "format": "int32",
            "nullable": true
          },
          "categoryRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Foreign key referencing the asset's primary category (e.g., IT Equipment, Furniture, Vehicles).",
            "format": "int32",
            "nullable": true
          },
          "subCategoryRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Foreign key referencing the sub-category for more granular asset classification.",
            "format": "int32",
            "nullable": true
          },
          "departmentRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Foreign key referencing the department responsible for or assigned to this asset.",
            "format": "int32",
            "nullable": true
          },
          "depreciationMethod": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DepreciationMethod"
              }
            ],
            "description": "Type of Depreciation Method. Allowed values: StraightLine, DecliningBalance, DecliningBalance150Percent, SumoftheYearsDigits, DoubleDecliningBalance.",
            "nullable": true
          },
          "dateAcquired": {
            "type": "string",
            "description": "The date the asset was formally acquired or put into service. Format: yyyy-MM-dd.",
            "format": "date",
            "nullable": true
          },
          "isDepreciable": {
            "type": "boolean",
            "description": "Indicates whether this asset is subject to depreciation calculations."
          },
          "initialCost": {
            "maximum": 999999999999999,
            "minimum": 0.01,
            "type": "number",
            "description": "The original value of the asset at the start of its depreciable life.",
            "format": "currency",
            "nullable": true
          },
          "salvageValue": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "The estimated residual or scrap value of the asset at the end of its useful life.",
            "format": "currency",
            "nullable": true
          },
          "assetLife": {
            "maximum": 999,
            "minimum": 1,
            "type": "integer",
            "description": "The expected useful lifespan of the asset, in months.",
            "format": "int32",
            "nullable": true
          },
          "customFieldRequest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldRequest"
            },
            "description": "Represents a value submitted for a specific custom field. Used for text, numeric, date, dropdown, radio, or checkbox list fields.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding an asset.\r\nContains core item details, category/location assignment, purchase and depreciation\r\ninformation, and optional custom fields."
      },
      "AddAuditRequest": {
        "required": [
          "auditDate",
          "auditNameRefId",
          "locationRefId",
          "recordGps",
          "siteRefId",
          "updateAssetLocation"
        ],
        "type": "object",
        "properties": {
          "auditNameRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the audit name to audit the asset against. Must not be locked.",
            "format": "int32"
          },
          "siteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the site where the audit took place.",
            "format": "int32"
          },
          "locationRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the location where the audit took place. Must belong to <code>siteRefId</code>.",
            "format": "int32"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Text area for notes. (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "auditDate": {
            "type": "string",
            "description": "Date and time when the asset was audited. Format: yyyy-MM-ddTHH:mm:ss.",
            "format": "date-time"
          },
          "updateAssetLocation": {
            "type": "boolean",
            "description": "When true, updates the asset's own site/location to match <code>siteRefId/locationRefId</code> and logs a history entry for the change."
          },
          "recordGps": {
            "type": "boolean",
            "description": "Indicates whether GPS coordinates were captured for this audit."
          },
          "latitude": {
            "maximum": 90,
            "minimum": -90,
            "type": "number",
            "description": "Latitude coordinate where the audit was performed. Required when <code>recordGps</code> is true.",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "maximum": 180,
            "minimum": -180,
            "type": "number",
            "description": "Longitude coordinate where the audit was performed. Required when <code>recordGps</code> is true.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding an asset audit."
      },
      "AddBinRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "aisleRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Optional foreign key referencing the aisle. Set null to create an unallocated. Required only when the inventory location hierarchy is configured as Aisle > Shelf > Bins.",
            "format": "int32",
            "nullable": true
          },
          "shelfRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Optional foreign key referencing the shelf. Set null to create an unallocated bin (not assigned to any shelf). Required only when the inventory location hierarchy is configured as Shelf > Bins.",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the bin (Bin Name cannot exceed 100 characters.)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding bin. Applicable only when multi-quantiy feature is enabled"
      },
      "AddBrokenEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the asset was found broken. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for broken in Setup Events.",
            "format": "date-time"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Broken notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a broken event to an asset."
      },
      "AddCategoryRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the category (cannot exceed 50 characters.)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a new category."
      },
      "AddCheckinEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Check-in (return) date. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for check-in in Setup Events (the same setting as check-out time).",
            "format": "date-time"
          },
          "siteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the site the asset is returned to. Required when the asset is checked out to a site/location; ignored when it is checked out to a person.",
            "format": "int32",
            "nullable": true
          },
          "locationRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the location the asset is returned to. Used when the asset is checked out to a site/location; must belong to <code>siteRefId</code>.",
            "format": "int32",
            "nullable": true
          },
          "newSiteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Optional new site for the asset when it is checked in from a person.",
            "format": "int32",
            "nullable": true
          },
          "newLocationRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Optional new location for the asset when it is checked in from a person. Takes precedence over <code>newSiteRefId</code>.",
            "format": "int32",
            "nullable": true
          },
          "newDepartmentRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Optional new department for the asset. Applied only when departments are enabled.",
            "format": "int32",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Check-in notes. (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "sendEmail": {
            "type": "boolean",
            "description": "When true and the asset is checked in from a person, sends the check-in notification email to the email address of the person the asset is checked out to. No email is sent if that person has no email address."
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a check-in event to an asset."
      },
      "AddCheckoutEventRequest": {
        "required": [
          "checkoutTo"
        ],
        "type": "object",
        "properties": {
          "checkoutTo": {
            "$ref": "#/components/schemas/AssignTo"
          },
          "date1": {
            "type": "string",
            "description": "Check-out date. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when check-out time is enabled in Setup Events.",
            "format": "date-time",
            "nullable": true
          },
          "date2": {
            "type": "string",
            "description": "Due date. Leave empty for no due date. Same format as <code>date1</code>.",
            "format": "date-time",
            "nullable": true
          },
          "personRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the person the asset is checked out to. Required when <code>checkoutTo</code> is <code>Person</code>.",
            "format": "int32",
            "nullable": true
          },
          "siteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the site the asset is checked out to. Required when <code>checkoutTo</code> is <code>SiteLocation</code>.",
            "format": "int32",
            "nullable": true
          },
          "locationRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the location the asset is checked out to. Used when <code>checkoutTo</code> is <code>SiteLocation</code>; must belong to <code>siteRefId</code>.",
            "format": "int32",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Check-out notes. (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "newSiteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Optional new site for the asset itself when checking out to a person.",
            "format": "int32",
            "nullable": true
          },
          "newLocationRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Optional new location for the asset itself when checking out to a person. Takes precedence over <code>newSiteRefId</code>.",
            "format": "int32",
            "nullable": true
          },
          "newDepartmentRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Optional new department for the asset. Applied only when departments are enabled.",
            "format": "int32",
            "nullable": true
          },
          "sendEmail": {
            "type": "boolean",
            "description": "When true and <code>checkoutTo</code> is <code>Person</code>, sends the check-out notification email to the email address of the person identified by <code>personRefId</code>. No email is sent if that person has no email address."
          },
          "overrideReservation": {
            "type": "boolean",
            "description": "What to do when the asset (or, with check-out linking, a linked asset) is reserved by someone else for the check-out dates. False (default): the check-out is not saved and a 409 lists the reservations. True: checks out anyway and leaves the reservations in place."
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a check-out event to an asset."
      },
      "AddContractRequest": {
        "required": [
          "contractTitle",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "contractTitle": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Title or name of the contract or license. (cannot exceed 50 characters.)",
            "format": "string"
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Additional details or notes about the contract or license. (cannot exceed 1000 characters.)",
            "format": "string",
            "nullable": true
          },
          "hyperlink": {
            "maxLength": 150,
            "minLength": 0,
            "type": "string",
            "description": "Website URL or hyperlink associated with the contract or license. (cannot exceed 150 characters.)",
            "format": "uri",
            "nullable": true
          },
          "contractNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Contract or license number assigned by the vendor or provider. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "vendor": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the vendor associated with the contract. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "contactPerson": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the primary contact person for the contract or license. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "phone": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "Phone number of the contract or license contact person. (cannot exceed 20 characters.)",
            "format": "tel",
            "nullable": true
          },
          "cost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Cost of the contract or license.",
            "format": "currency",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Start date of the contract or license (yyyy-MM-dd).",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "End date or expiration date of the contract or license (yyyy-MM-dd). Required unless NoEndDate is true (returns 422 if missing). When NoEndDate is true, send null; any stored end date is cleared.",
            "format": "date",
            "nullable": true
          },
          "licenseCount": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "description": "Number of licenses covered by the contract.",
            "format": "int32",
            "nullable": true
          },
          "noEndDate": {
            "type": "boolean",
            "description": "Indicates whether the contract has no expiration date."
          },
          "softwareContract": {
            "type": "boolean",
            "description": "Indicates whether the contract is for software."
          },
          "customFieldRequest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldRequest"
            },
            "description": "Represents a value submitted for a specific custom field. Used for text, numeric, date, dropdown, radio, or checkbox list fields.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new contract or license."
      },
      "AddCustomerRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Customer Name (cannot exceed 100 characters.)"
          },
          "company": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Company name of the customer. (cannot exceed 100 characters.)",
            "nullable": true
          },
          "address1": {
            "maxLength": 250,
            "minLength": 0,
            "type": "string",
            "description": "Address1 of the customer. (cannot exceed 250 characters.)",
            "nullable": true
          },
          "address2": {
            "maxLength": 250,
            "minLength": 0,
            "type": "string",
            "description": "Address2 of the customer. (cannot exceed 250 characters.)",
            "nullable": true
          },
          "city": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "City of the customer (cannot exceed 50 characters.)",
            "nullable": true
          },
          "state": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "State of the customer. (cannot exceed 50 characters.)",
            "nullable": true
          },
          "zip": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Zip of the customer. (cannot exceed 50 characters.)",
            "nullable": true
          },
          "countryRefId": {
            "type": "integer",
            "description": "Foreign key referencing the country.",
            "format": "int32",
            "nullable": true
          },
          "phone": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Phone number of the customer. (cannot exceed 50 characters.)",
            "nullable": true
          },
          "cell": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Cell number of the customer. (cannot exceed 50 characters.)",
            "nullable": true
          },
          "email": {
            "maxLength": 50,
            "minLength": 0,
            "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$",
            "type": "string",
            "description": "Email of the customer. (cannot exceed 50 characters.)",
            "format": "email",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Notes or Comment (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "customFieldRequest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldRequest"
            },
            "description": "Represents a value submitted for a specific custom field. Used for text, numeric, date, dropdown, radio, or checkbox list fields.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a new customer."
      },
      "AddDepartmentRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the department (cannot exceed 50 characters.)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a new department."
      },
      "AddDisposeEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the asset was disposed. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for dispose in Setup Events.",
            "format": "date-time"
          },
          "textField": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Who or what the asset was disposed to (free text, e.g. a recycling vendor). (cannot exceed 100 characters.)",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Dispose notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a dispose event to an asset."
      },
      "AddDonateEventRequest": {
        "required": [
          "boolean",
          "currency",
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the asset was donated. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for donate in Setup Events.",
            "format": "date-time"
          },
          "textField": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Who the asset was donated to (free text, e.g. a charity). (cannot exceed 100 characters.)",
            "nullable": true
          },
          "currency": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Value of the donation. Use 0 when there is no value.",
            "format": "double"
          },
          "boolean": {
            "type": "boolean",
            "description": "Whether the donation is tax deductible."
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Donate notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a donate event to an asset."
      },
      "AddFoundEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the asset was found. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for found in Setup Events.",
            "format": "date-time"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Found notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a found event to a lost asset. Same fields as an update; found has no\r\nnotification email."
      },
      "AddFundRequest": {
        "required": [
          "active",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the fund. Must be unique.(cannot exceed 50 characters.)",
            "format": "string"
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Description of the fund.(cannot exceed 1000 characters.)",
            "format": "string",
            "nullable": true
          },
          "amount": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Total allocated amount.",
            "format": "currency",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Fund start date (yyyy-MM-dd).",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "Fund end date (yyyy-MM-dd).",
            "format": "date",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Additional notes.(cannot exceed 1000 characters.)",
            "format": "multiline",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "description": "Whether this fund is active (default: true)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new fund."
      },
      "AddInsuranceRequest": {
        "required": [
          "active",
          "description",
          "endDate",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "insuranceCo": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the insurance company or provider.(cannot exceed 100 characters.)",
            "format": "string",
            "nullable": true
          },
          "description": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Additional details or notes about the insurance policy.(cannot exceed 100 characters.)",
            "format": "string"
          },
          "person": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the primary contact person for the insurance policy.(cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "phone": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "Contact phone number for the insurance provider or representative.(cannot exceed 20 characters.)",
            "format": "tel",
            "nullable": true
          },
          "email": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Contact email address for the insurance provider or representative.(cannot exceed 50 characters.)",
            "format": "email",
            "nullable": true
          },
          "policy": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Policy number assigned by the insurance provider.(cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "coverage": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Coverage details provided by the insurance policy.(cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "limits": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Coverage limits or maximum claim amount defined by the policy.(cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "deductible": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Deductible amount that must be paid before insurance coverage applies.",
            "format": "currency",
            "nullable": true
          },
          "premium": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Premium amount paid for the insurance policy.",
            "format": "currency",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Policy start date (yyyy-MM-dd).",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "Policy end or expiration date (yyyy-MM-dd).",
            "format": "date"
          },
          "active": {
            "type": "boolean",
            "description": "Whether this insurance is active (default: true)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new insurance."
      },
      "AddInventoryItemRequest": {
        "required": [
          "description",
          "inventoryTagId",
          "unit"
        ],
        "type": "object",
        "properties": {
          "inventoryTagId": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Unique tag or code assigned to the inventory item for tracking. (cannot exceed 50 characters.)",
            "format": "string"
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Detailed description of the inventory item. (cannot exceed 1000 characters.)",
            "format": "string"
          },
          "categoryRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Readable name of the main category (resolved from CategoryRefId).",
            "format": "int32",
            "nullable": true
          },
          "subCategoryRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Readable name of the main subcategory (resolved from SubCategoryRefId).",
            "format": "int32",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Notes. (Notes cannot exceed 1000 characters.)",
            "format": "multiline",
            "nullable": true
          },
          "sku": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Stock Keeping Unit – unique identifier used for managing stock. (SKU cannot exceed 100 characters.)",
            "format": "string",
            "nullable": true
          },
          "brand": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Brand name of the item. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "model": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Model name/number of the item. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "vendor": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Supplier or vendor associated with the item. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "url": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "(^|\\s)((https?:\\/\\/)?[\\w-]+(\\.[\\w-]+)+\\.?(:\\d+)?(\\/\\S*)?)",
            "type": "string",
            "description": "Reference URL (e.g., vendor page, product page, or documentation). (cannot exceed 100 characters.)",
            "format": "uri",
            "nullable": true
          },
          "size": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Size or dimensions of the item. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "color": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Color of the item. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "style": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Style or variant of the item (if applicable). (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "unit": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Unit of measurement (e.g., piece, box, kg, liter). (cannot exceed 50 characters.)",
            "format": "string"
          },
          "minQty": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Minimum quantity threshold for stock. (used for re-order alerts).",
            "format": "double",
            "nullable": true
          },
          "maxQty": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Maximum quantity limit for stock. (used for inventory control).",
            "format": "double",
            "nullable": true
          },
          "hasMaxQtyAlert": {
            "type": "boolean",
            "description": "Enable Maximum quantity alert."
          },
          "hasMinQtyAlert": {
            "type": "boolean",
            "description": "Enable Minimum quantity alert."
          },
          "minQtyAlert": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Minimum quantity alert.",
            "format": "double",
            "nullable": true
          },
          "maxQtyAlert": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Maximum quantity alert.",
            "format": "double",
            "nullable": true
          },
          "openingDate": {
            "type": "string",
            "description": "Opening date in yyyy-MM-dd format. Applicable only when the Multi-Quantity feature is disabled.",
            "format": "date",
            "nullable": true
          },
          "unitCost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Unit Cost. Applicable only when the Multi-Quantity feature is disabled.",
            "format": "currency",
            "nullable": true
          },
          "totalCost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Total Cost. Applicable only when the Multi-Quantity feature is disabled.",
            "format": "currency",
            "nullable": true
          },
          "refNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Reference No. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "aisle": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Aisle, Warehouse, Site. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "shelf": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Shelf, Rack, Cabinet. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "bin": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Bins, Bay, Drawer. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "eventNotes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Event Notes. (cannot exceed 1000 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "multiline",
            "nullable": true
          },
          "customFieldRequest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldRequest"
            },
            "description": "Represents a value submitted for a specific custom field. Used for text, numeric, date, dropdown, radio, or checkbox list fields.",
            "nullable": true
          },
          "quantity": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Opening quantity. Applicable only when stock location tracking (Multi-Quantity) is disabled. When it is enabled, leave this empty, create the item, then post an Opening transaction with locations; sending a quantity returns 422.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a new inventory item.\r\nContains core item details, stock information, pricing, alerts,\r\nopening date, and optional custom fields."
      },
      "AddLeaseEventRequest": {
        "required": [
          "customerRefId",
          "date1"
        ],
        "type": "object",
        "properties": {
          "customerRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the customer the asset is leased to.",
            "format": "int32"
          },
          "date1": {
            "type": "string",
            "description": "Date the lease begins. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for lease in Setup Events.",
            "format": "date-time"
          },
          "date2": {
            "type": "string",
            "description": "Date the lease expires. Leave empty for no end date. Same format as <code>date1</code>.",
            "format": "date-time",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Lease notes. (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "sendEmail": {
            "type": "boolean",
            "description": "When true, sends the lease notification email to the email address of the customer identified by <code>customerRefId</code>. No email is sent if that customer has no email address."
          },
          "overrideReservation": {
            "type": "boolean",
            "description": "What to do when the asset (or, with lease linking, a linked asset) is reserved by someone else for the lease dates. False (default): the lease is not saved and a 409 lists the reservations. True: leases anyway and leaves the reservations in place."
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a lease event to an asset."
      },
      "AddLeaseReturnEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the leased asset was returned. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for lease return in Setup Events.",
            "format": "date-time"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Lease return notes. (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "sendEmail": {
            "type": "boolean",
            "description": "When true, sends the lease return notification email to the email address of the customer the asset is leased to. No email is sent if that customer has no email address."
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a lease return event to a leased asset."
      },
      "AddLocationRequest": {
        "required": [
          "name",
          "siteRefId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the location (cannot exceed 100 characters)."
          },
          "siteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the parent site (positive integer only).",
            "format": "int32"
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Description (cannot exceed 1000 characters).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a new location."
      },
      "AddLostEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the asset was lost. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for lost in Setup Events.",
            "format": "date-time"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Lost notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a lost event to an asset. Same fields as an update; lost has no\r\nnotification email."
      },
      "AddPersonRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Person Name (cannot exceed 100 characters.)"
          },
          "title": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Title of the person. (cannot exceed 100 characters.)",
            "nullable": true
          },
          "phone": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "Phone number of the person. (cannot exceed 20 characters.)",
            "nullable": true
          },
          "email": {
            "maxLength": 50,
            "minLength": 0,
            "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$",
            "type": "string",
            "description": "Email of the person. (cannot exceed 50 characters.)",
            "format": "email",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Notes or Comment (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "empId": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "EmpId of the person. (cannot exceed 50 characters.)",
            "nullable": true
          },
          "siteRefId": {
            "type": "integer",
            "description": "Foreign key referencing the site.",
            "format": "int32",
            "nullable": true
          },
          "locationRefId": {
            "type": "integer",
            "description": "Foreign key referencing the location.",
            "format": "int32",
            "nullable": true
          },
          "departmentRefId": {
            "type": "integer",
            "description": "Foreign key referencing the department.",
            "format": "int32",
            "nullable": true
          },
          "customFieldRequest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldRequest"
            },
            "description": "Represents a value submitted for a specific custom field. Used for text, numeric, date, dropdown, radio, or checkbox list fields.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a new Person."
      },
      "AddRepairEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the repair is scheduled. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for repair in Setup Events.",
            "format": "date-time"
          },
          "textField": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Who the repair is assigned to (free text, e.g. a technician or vendor). (cannot exceed 100 characters.)",
            "nullable": true
          },
          "date2": {
            "type": "string",
            "description": "Date the repair was completed. Setting it ends the repair: the asset goes back to its previous check-out or lease, or to Available. Same format as <code>date1</code>.",
            "format": "date-time",
            "nullable": true
          },
          "currency": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Cost of the repair.",
            "format": "double",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Repair notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a repair event to an asset."
      },
      "AddReserveRequest": {
        "required": [
          "date1",
          "date2",
          "reserveTo"
        ],
        "type": "object",
        "properties": {
          "reserveTo": {
            "$ref": "#/components/schemas/AssignTo"
          },
          "personRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the person the asset is reserved for. Required when <code>reserveTo</code> is <code>Person</code>.",
            "format": "int32",
            "nullable": true
          },
          "customerRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the customer the asset is reserved for. Required when <code>reserveTo</code> is <code>Customer</code>.",
            "format": "int32",
            "nullable": true
          },
          "siteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the site the asset is reserved for. Required when <code>reserveTo</code> is <code>SiteLocation</code>.",
            "format": "int32",
            "nullable": true
          },
          "locationRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the location the asset is reserved for. Optional with <code>reserveTo</code> <code>SiteLocation</code>; must belong to <code>siteRefId</code>.",
            "format": "int32",
            "nullable": true
          },
          "date1": {
            "type": "string",
            "description": "Reservation start. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for reservations in Setup Events.",
            "format": "date-time"
          },
          "date2": {
            "type": "string",
            "description": "Reservation end; must not be before <code>date1</code>. Same format as <code>date1</code>. Without time, the reservation runs to the end of this day.",
            "format": "date-time"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Reservation notes. (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "sendEmail": {
            "type": "boolean",
            "description": "When true and <code>reserveTo</code> is <code>Person</code> or <code>Customer</code>, sends the reservation confirmation email to that person's or customer's email address and turns on the reminder emails below. No email is sent if they have no email address."
          },
          "firstReminderEnabled": {
            "type": "boolean",
            "description": "Send reminder email #1. Applies only when <code>sendEmail</code> is true."
          },
          "firstReminderLeadTimeDays": {
            "maximum": 99,
            "minimum": 1,
            "type": "integer",
            "description": "Days before the reservation starts to send reminder email #1 (1-99, default 2).",
            "format": "int32"
          },
          "secondReminderEnabled": {
            "type": "boolean",
            "description": "Send reminder email #2. Applies only when <code>sendEmail</code> is true."
          },
          "secondReminderLeadTimeDays": {
            "maximum": 99,
            "minimum": 1,
            "type": "integer",
            "description": "Days before the reservation starts to send reminder email #2 (1-99, default 1).",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request model for reserving an asset."
      },
      "AddSellEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the asset was sold. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for sell in Setup Events.",
            "format": "date-time"
          },
          "textField": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Who the asset was sold to (free text). (cannot exceed 100 characters.)",
            "nullable": true
          },
          "currency": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Amount the asset was sold for.",
            "format": "double",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Sell notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a sell event to an asset."
      },
      "AddShelfRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "aisleRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Optional foreign key referencing the aisle. Set null to create an unallocated shelf (not assigned to any aisle). Required only when the inventory location hierarchy is configured as Aisle > Shelf > Bins.",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the shelf (Shelf name cannot exceed 100 characters.)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding shelf. Applicable only when multi-quantiy feature is enabled"
      },
      "AddSiteRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the site (cannot exceed 50 characters)."
          },
          "address1": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "description": "Address line 1 (cannot exceed 500 characters).",
            "nullable": true
          },
          "address2": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "description": "Address line 2 / Apt. / Suite (cannot exceed 500 characters).",
            "nullable": true
          },
          "city": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "City (cannot exceed 50 characters).",
            "nullable": true
          },
          "state": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "State / Province (cannot exceed 50 characters).",
            "nullable": true
          },
          "zip": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Postal / Zip code (cannot exceed 50 characters).",
            "nullable": true
          },
          "countryRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the country (positive integer only).",
            "format": "int32",
            "nullable": true
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Description (cannot exceed 1000 characters).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a new site."
      },
      "AddSubCategoryRequest": {
        "required": [
          "categoryRefId",
          "name"
        ],
        "type": "object",
        "properties": {
          "categoryRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) for the category (positive integer only).",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the subcategory (cannot exceed 100 characters.)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a new subcategory."
      },
      "AddTransactionRequest": {
        "required": [
          "eventDate",
          "eventType",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "eventType": {
            "$ref": "#/components/schemas/InventoryEvent"
          },
          "quantity": {
            "maximum": 999999999999999,
            "minimum": 0.00001,
            "type": "number",
            "description": "Total quantity involved in the transaction. When <code>locations</code> are provided, this value must equal the sum of all location quantities. For Movement, this must equal the sum of all <code>fromLocations</code> quantities and the sum of all <code>toLocations</code> quantities.",
            "format": "double"
          },
          "isAddToStock": {
            "type": "boolean",
            "description": "For Adjustment transactions, specifies whether to add or remove from stock. True = add to stock, False = remove from stock. Ignored for AddStock, RemoveStock, and Movement."
          },
          "eventDate": {
            "type": "string",
            "description": "Date of the transaction in yyyy-MM-dd format.",
            "format": "date"
          },
          "personRefId": {
            "type": "integer",
            "description": "Reference ID of the employee/person associated with the transaction. Applicable only for Remove Stock transactions. Only one of <code>personRefId</code>, <code>customerRefId</code>, or <code>personName</code> may be provided — supplying more than one returns a 422 Validation error.",
            "format": "int32",
            "nullable": true
          },
          "customerRefId": {
            "type": "integer",
            "description": "Reference ID of the customer associated with the transaction. Applicable only for Remove Stock transactions. Only one of <code>personRefId</code>, <code>customerRefId</code>, or <code>personName</code> may be provided — supplying more than one returns a 422 Validation error.",
            "format": "int32",
            "nullable": true
          },
          "personName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Free-text name of the person or customer (max 50 characters). Applicable only for Remove Stock transactions. Only one of <code>personRefId</code>, <code>customerRefId</code>, or <code>personName</code> may be provided — supplying more than one returns a 422 Validation error.",
            "nullable": true
          },
          "unitCost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Unit cost of the item at the time of the transaction. Applicable only for Add Stock and Opening Stock transactions.",
            "format": "currency",
            "nullable": true
          },
          "totalCost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Total cost of the transaction (<code>quantity</code> × <code>unitCost</code>). Applicable only for Add Stock and Opening Stock transactions.",
            "format": "currency",
            "nullable": true
          },
          "refNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Reference number associated with the transaction.(cannot exceed 50 characters.) Applicable only for Add Stock and Opening Stock transactions.",
            "format": "string",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Additional notes or comments related to the transaction. (cannot exceed 1000 characters.)",
            "format": "string",
            "nullable": true
          },
          "aisle": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Aisle name for the storage location. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "shelf": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Shelf name within the aisle. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "bin": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Bin Name within the shelf. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "locations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionLocationEntry"
            },
            "description": "Array of location entries for Opening, AddStock, RemoveStock, and Adjustment transactions. Each entry contains a quantity and location reference IDs (AisleRefId, ShelfRefId, BinRefId). Required when stock location tracking (Multi-Quantity) and locations are enabled for the account; ignored otherwise. When required, the sum of all entry quantities must equal the top-level <code>quantity</code> field. Not used for Movement transactions.",
            "nullable": true
          },
          "fromLocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionLocationEntry"
            },
            "description": "Array of source location entries for Movement transactions. Each entry specifies the quantity and location reference IDs (AisleRefId, ShelfRefId, BinRefId) of the location stock is moving from. Movement is only available when stock location tracking (Multi-Quantity) and locations are enabled; otherwise it returns 422. The sum of all entry quantities must equal the top-level <code>quantity</code> field. Required when <code>eventType</code> is Movement.",
            "nullable": true
          },
          "toLocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionLocationEntry"
            },
            "description": "Array of destination location entries for Movement transactions. Each entry specifies the quantity and location reference IDs (AisleRefId, ShelfRefId, BinRefId) of the location stock is moving to. Movement is only available when stock location tracking (Multi-Quantity) and locations are enabled; otherwise it returns 422. The sum of all entry quantities must equal the top-level <code>quantity</code> field. Required when <code>eventType</code> is Movement.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding a new inventory transaction to an existing inventory item.\r\nSupports five transaction types: Opening, AddStock, RemoveStock, Adjustment, and Movement (Movement requires stock location tracking).\r\nFor accounts with stock-location tracking enabled, stock can be distributed across\r\nmultiple storage locations using the Locations array (AddStock, RemoveStock, Adjustment)\r\nor the FromLocations and ToLocations arrays (Movement).\r\nOnly one of PersonRefId, CustomerRefId, or PersonName may be provided per request."
      },
      "Aisle": {
        "required": [
          "name",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) for the Aisle (positive integer only).",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Aisle Name (Aisle name cannot exceed 100 characters.)"
          },
          "shelves": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Shelf"
            },
            "description": "A collection of shelves associated with this aisles.May be empty if none are defined.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a storage aisle within an inventory location hierarchy.\r\nAn aisle contains one or more shelves, which further contain bins. Applicable only when multi-quantiy feature is enabled."
      },
      "ApiError": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "The field or parameter name associated with the error. \r\nIf the error is not tied to a specific field, this may be null or empty.",
            "nullable": true
          },
          "message": {
            "type": "string",
            "description": "A descriptive message explaining the error.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a standardized error response returned by the API. It contains the field that caused the error and a descriptive message."
      },
      "Asset": {
        "required": [
          "addedByRefGuid",
          "assetTagId",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the asset.",
            "format": "int32"
          },
          "assetTagId": {
            "minLength": 1,
            "type": "string",
            "description": "Unique tag identifier assigned to the asset (e.g., barcode or QR code label)."
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the asset including its purpose, specifications, or notes.",
            "nullable": true
          },
          "defaultImageRefGuid": {
            "type": "string",
            "description": "Unique GUID referencing the primary image record for the asset.",
            "nullable": true
          },
          "brand": {
            "type": "string",
            "description": "Brand or manufacturer name of the asset (e.g., Dell, HP, Samsung).",
            "nullable": true
          },
          "model": {
            "type": "string",
            "description": "Model name or number of the asset as specified by the manufacturer.",
            "nullable": true
          },
          "serialNo": {
            "type": "string",
            "description": "Unique serial number assigned by the manufacturer for asset identification and warranty tracking.",
            "nullable": true
          },
          "purchaseDate": {
            "type": "string",
            "description": "The date the asset was purchased. Format: yyyy-MM-dd.",
            "format": "date",
            "nullable": true
          },
          "purchaseFrom": {
            "type": "string",
            "description": "Name of the vendor or supplier from whom the asset was purchased.",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "description": "Original purchase price of the asset at the time of acquisition.",
            "format": "double",
            "nullable": true
          },
          "dateAdded": {
            "type": "string",
            "description": "Datetime (UTC) when the asset record was added to the system.",
            "format": "date-time"
          },
          "siteRefId": {
            "type": "integer",
            "description": "Foreign key referencing the site or facility where the asset is located.",
            "format": "int32",
            "nullable": true
          },
          "siteName": {
            "type": "string",
            "description": "Readable name of the site (resolved from SiteRefId).",
            "nullable": true
          },
          "locationRefId": {
            "type": "integer",
            "description": "Foreign key referencing the physical location where the asset is stored or deployed.",
            "format": "int32",
            "nullable": true
          },
          "locationName": {
            "type": "string",
            "description": "Readable name of the location (resolved from LocationRefId).",
            "nullable": true
          },
          "categoryRefId": {
            "type": "integer",
            "description": "Foreign key referencing the asset's primary category (e.g., IT Equipment, Furniture, Vehicles).",
            "format": "int32",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "description": "Readable name of the category (resolved from CategoryRefId).",
            "nullable": true
          },
          "subCategoryRefId": {
            "type": "integer",
            "description": "Foreign key referencing the sub-category for more granular asset classification.",
            "format": "int32",
            "nullable": true
          },
          "subCategoryName": {
            "type": "string",
            "description": "Readable name of the sub-category (resolved from SubCategoryRefId).",
            "nullable": true
          },
          "departmentRefId": {
            "type": "integer",
            "description": "Foreign key referencing the department responsible for or assigned to this asset.",
            "format": "int32",
            "nullable": true
          },
          "departmentName": {
            "type": "string",
            "description": "Readable name of the department (resolved from DepartmentRefId).",
            "nullable": true
          },
          "depreciationMethod": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DepreciationMethod"
              }
            ],
            "description": "Name of the  the depreciation method applied to this asset (e.g., Straight-Line, Declining Balance).",
            "nullable": true
          },
          "addedByRefGuid": {
            "type": "string",
            "description": "Unique GUID referencing the user who created this asset.",
            "nullable": true
          },
          "eventRefId": {
            "type": "integer",
            "description": "Foreign key referencing the current events tracking record associated with this asset. Only populated when fetchEvent=true is passed; null otherwise.",
            "format": "int32",
            "nullable": true
          },
          "event": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Event"
              }
            ],
            "description": "Represents a tracked current event associated with an asset throughout its lifecycle.\r\nEvent can include checkout, checkin, lease, lease return \r\nor any custom event against an asset.",
            "nullable": true
          },
          "dateAcquired": {
            "type": "string",
            "description": "The date the asset was formally acquired or put into service. Format: yyyy-MM-dd.",
            "format": "date",
            "nullable": true
          },
          "isDepreciable": {
            "type": "boolean",
            "description": "Indicates whether this asset is subject to depreciation calculations."
          },
          "initialCost": {
            "type": "number",
            "description": "The original value of the asset at the start of its depreciable life.",
            "format": "double",
            "nullable": true
          },
          "salvageValue": {
            "type": "number",
            "description": "The estimated residual or scrap value of the asset at the end of its useful life.",
            "format": "double",
            "nullable": true
          },
          "assetLife": {
            "type": "integer",
            "description": "The expected useful lifespan of the asset in months or years (as configured).",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "Current status label of the asset (e.g., \"Available\", \"Checked Out\", \"Broken\"). For custom events this is the custom event name. Only populated when fetchEvent=true is passed; null otherwise.",
            "nullable": true
          },
          "currentCost": {
            "type": "number",
            "description": "The current book value of the asset after accumulated depreciation.",
            "format": "double",
            "nullable": true
          },
          "linked": {
            "type": "boolean",
            "description": "Indicate that this asset and its linking assets should be audited/check-out/checked-in, etc., as a group."
          },
          "linkType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LinkType"
              }
            ],
            "description": "Whether this asset is the parent or a child in a linked parent/child relationship. Null when the asset isn't linked. Independent of Linked (transact as a whole).",
            "nullable": true
          },
          "customEventRefId": {
            "type": "integer",
            "description": "Foreign key referencing the custom event definition for this event. Null for standard events.",
            "format": "int32",
            "nullable": true
          },
          "reservation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetReservation"
              }
            ],
            "description": "Current reservation for this asset. Null when no active or upcoming reservation exists.",
            "nullable": true
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldValue"
            },
            "description": "A collection of custom field values associated with this asset. May be null if no custom fields are defined.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a tracked asset within the asset management system, including\r\nasset details, categorization, location, purchase information, and depreciation data."
      },
      "AssetAudit": {
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the audit.",
            "format": "int32"
          },
          "assetRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the asset.",
            "format": "int32"
          },
          "auditName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuditName"
              }
            ],
            "description": "Represents an audit associated with an asset.",
            "nullable": true
          },
          "auditedByRefGuId": {
            "type": "string",
            "description": "Unique GUID of the User who audited the asset.",
            "nullable": true
          },
          "auditDate": {
            "type": "string",
            "description": "Date and time when the asset was audited.",
            "format": "date-time"
          },
          "siteRefId": {
            "type": "integer",
            "description": "Foreign key referencing the site where the asset was audited.",
            "format": "int32",
            "nullable": true
          },
          "siteName": {
            "type": "string",
            "description": "Readable name of the site (resolved from SiteRefId).",
            "nullable": true
          },
          "locationRefId": {
            "type": "integer",
            "description": "Foreign key referencing the physical location where the asset is stored or deployed.",
            "format": "int32",
            "nullable": true
          },
          "locationName": {
            "type": "string",
            "description": "Readable name of the location (resolved from LocationRefId).",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Text area for notes.",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "description": "Latitude coordinate where the audit was performed. Null when GPS wasn't recorded.",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "description": "Longitude coordinate where the audit was performed. Null when GPS wasn't recorded.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an audit record associated with an asset."
      },
      "AssetHistory": {
        "required": [
          "addedByRefGuid",
          "historyOn",
          "historyRefId"
        ],
        "type": "object",
        "properties": {
          "historyRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the history entry.",
            "format": "int32"
          },
          "historyOn": {
            "type": "string",
            "description": "Datetime (UTC) when the history event occurred.",
            "format": "date-time"
          },
          "event": {
            "type": "string",
            "description": "Type of event that occurred (e.g., Created, Updated, Deleted).",
            "nullable": true
          },
          "historyDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HistoryDetail"
            },
            "description": "Collection of field-level changes recorded for this history event.",
            "nullable": true
          },
          "addedByRefGuid": {
            "minLength": 1,
            "type": "string",
            "description": "GUID reference of the user who performed the action."
          },
          "eventTrackingRefId": {
            "type": "integer",
            "description": "Foreign key referencing the events tracking record this history entry is linked to. Null when the entry isn't tied to an event (e.g., checkout, check-in, lease).",
            "format": "int32",
            "nullable": true
          },
          "reserveAssetRefId": {
            "type": "integer",
            "description": "Foreign key referencing the reservation this history entry is linked to. Null when the entry isn't tied to a reservation.",
            "format": "int32",
            "nullable": true
          },
          "warrantyRefId": {
            "type": "integer",
            "description": "Foreign key referencing the warranty this history entry is linked to. Null when the entry isn't tied to a warranty.",
            "format": "int32",
            "nullable": true
          },
          "maintenanceRefId": {
            "type": "integer",
            "description": "Foreign key referencing the maintenance record this history entry is linked to. Null when the entry isn't tied to a maintenance record.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single audit-trail entry recorded against an asset."
      },
      "AssetLink": {
        "type": "object",
        "properties": {
          "transactAsWhole": {
            "type": "boolean",
            "description": "Indicate that this asset and its linking assets should be audited/check-out/checked-in, etc., as a group."
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            },
            "description": "Link information identifying whether the asset is a parent or child asset.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response model containing asset link information."
      },
      "AssetMaintenance": {
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the maintenance.",
            "format": "int32"
          },
          "assetRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the asset.",
            "format": "int32"
          },
          "title": {
            "type": "string",
            "description": "Title of the maintenance.",
            "nullable": true
          },
          "details": {
            "type": "string",
            "description": "Details of the maintenance.",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "Date when maintenance is due.",
            "format": "date",
            "nullable": true
          },
          "maintenanceBy": {
            "type": "string",
            "description": "Person doing maintenance.",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaintenanceStatus"
              }
            ],
            "description": "System field to show current status of the maintenance.",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "description": "Total cost spent on this maintenance.",
            "format": "double",
            "nullable": true
          },
          "dateCompleted": {
            "type": "string",
            "description": "Date when maintenance is completed.",
            "format": "date",
            "nullable": true
          },
          "repeating": {
            "type": "boolean",
            "description": "Indicates whether this maintenance repeats on a recurring schedule."
          },
          "frequency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Frequency"
              }
            ],
            "description": "How often the maintenance recurs: Daily, Weekly, Monthly, or Yearly. Only applies when <code>repeating</code> is true; null when <code>repeating</code> is false.",
            "nullable": true
          },
          "recurEvery": {
            "type": "integer",
            "description": "The recurrence interval, whose meaning depends on <code>frequency</code>: null for Daily (not used); for Weekly this is the number of weeks between occurrences (e.g. 2 = every 2 weeks); for Monthly this is the number of months between occurrences (e.g. 3 = every 3 months); for Yearly this is the month of the year the maintenance recurs in (1 = January ... 12 = December). Also null when <code>repeating</code> is false.",
            "format": "int32",
            "nullable": true
          },
          "recurOn": {
            "type": "integer",
            "description": "The day the maintenance recurs on within the interval set by <code>recurEvery</code>, whose meaning depends on <code>frequency</code>: null for Daily (not used); for Weekly this is the day of the week (0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday); for Monthly this is the day of the month (1-31); for Yearly this is the day of the month within the month set by <code>recurEvery</code> (1-31). Also null when <code>repeating</code> is false.",
            "format": "int32",
            "nullable": true
          },
          "recurredFromRefId": {
            "type": "integer",
            "description": "Unique identifier (RefId) of the previous maintenance record this one was automatically generated from, when that previous record was <code>repeating</code> and its <code>status</code> was set to Completed or Cancelled. Null if this record was not created by the recurrence engine.",
            "format": "int32",
            "nullable": true
          },
          "isNextRecurrenceCreated": {
            "type": "boolean",
            "description": "Indicates whether the next-occurrence maintenance record has already been generated from this one (happens once, when <code>repeating</code> is true and <code>status</code> is set to Completed or Cancelled). Once true, setting <code>status</code> to Completed or Cancelled again will not create another follow-up record, preventing duplicates."
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaintenanceCustomFieldValues"
            },
            "description": "A collection of custom field values associated with this maintenance. May be null if no custom fields are defined.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a maintenance record associated with an asset."
      },
      "AssetReservation": {
        "required": [
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the reservation.",
            "format": "int32"
          },
          "assetRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the asset.",
            "format": "int32"
          },
          "startTime": {
            "type": "string",
            "description": "Reservation start date and time. Whether the returned value includes a time component is determined by the <code>utc</code> property.",
            "format": "date-time",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "description": "Reservation end date and time. Whether the returned value includes a time component is determined by the <code>utc</code> property.",
            "format": "date-time",
            "nullable": true
          },
          "reserveTo": {
            "type": "string",
            "description": "Display name of the person or entity the asset is reserved for (e.g., person name, customer name, or site/location name).",
            "nullable": true
          },
          "personEmail": {
            "type": "string",
            "description": "Email address the reservation confirmation is sent to. Only set when the reservation is assigned to a person or customer; null otherwise.",
            "nullable": true
          },
          "assignTo": {
            "$ref": "#/components/schemas/AssignTo"
          },
          "personRefId": {
            "type": "integer",
            "description": "Foreign key referencing the person the asset is reserved for.",
            "format": "int32",
            "nullable": true
          },
          "customerRefId": {
            "type": "integer",
            "description": "Foreign key referencing the customer the asset is reserved for.",
            "format": "int32",
            "nullable": true
          },
          "siteRefId": {
            "type": "integer",
            "description": "Foreign key referencing the site the asset is reserved for.",
            "format": "int32",
            "nullable": true
          },
          "locationRefId": {
            "type": "integer",
            "description": "Foreign key referencing the location the asset is reserved for.",
            "format": "int32",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Additional notes for the reservation.",
            "nullable": true
          },
          "addedByRefGuId": {
            "type": "string",
            "description": "Unique GUID of the user who added the reservation.",
            "nullable": true
          },
          "dateAdded": {
            "type": "string",
            "description": "Date and time when the reservation record was added to the system.",
            "format": "date-time"
          },
          "emailSent": {
            "type": "boolean",
            "description": "Indicates whether the reservation confirmation email has been sent."
          },
          "firstReminderEnabled": {
            "type": "boolean",
            "description": "Indicates whether the first reminder is enabled for this reservation."
          },
          "firstReminderLeadTimeDays": {
            "type": "integer",
            "description": "How many days before the reservation start time the first reminder is sent. Only applies when <code>firstReminderEnabled</code> is true.",
            "format": "int32",
            "nullable": true
          },
          "secondReminderEnabled": {
            "type": "boolean",
            "description": "Indicates whether the second reminder is enabled for this reservation."
          },
          "secondReminderLeadTimeDays": {
            "type": "integer",
            "description": "How many days before the reservation start time the second reminder is sent. Only applies when <code>secondReminderEnabled</code> is true.",
            "format": "int32",
            "nullable": true
          },
          "utc": {
            "type": "boolean",
            "description": "Indicates whether <code>startTime</code> and <code>endTime</code> are stored in UTC format."
          }
        },
        "additionalProperties": false,
        "description": "Represents reservation details for an asset."
      },
      "AssetSetting": {
        "type": "object",
        "properties": {
          "field_AssetTagID_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Asset Tag ID is enabled.",
            "default": true
          },
          "field_AssetTagID_Required": {
            "type": "boolean",
            "description": "Indicates whether Asset Tag ID is required.",
            "default": true
          },
          "field_AssetDescription_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Asset Description is enabled.",
            "default": true
          },
          "field_AssetDescription_Required": {
            "type": "boolean",
            "description": "Indicates whether Asset Description is required.",
            "default": true
          },
          "field_PurchaseDate_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Purchase Date is enabled.",
            "default": true
          },
          "field_PurchaseDate_Required": {
            "type": "boolean",
            "description": "Indicates whether Purchase Date is required.",
            "default": false
          },
          "field_Cost_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Cost is enabled.",
            "default": true
          },
          "field_Cost_Required": {
            "type": "boolean",
            "description": "Indicates whether Cost is required.",
            "default": false
          },
          "field_PurchasedFrom_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Purchased from is enabled.",
            "default": true
          },
          "field_PurchasedFrom_Required": {
            "type": "boolean",
            "description": "Indicates whether Purchased from is required.",
            "default": false
          },
          "field_Brand_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Brand is enabled.",
            "default": true
          },
          "field_Brand_Required": {
            "type": "boolean",
            "description": "Indicates whether Brand is required.",
            "default": false
          },
          "field_Model_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Model is enabled.",
            "default": true
          },
          "field_Model_Required": {
            "type": "boolean",
            "description": "Indicates whether Model is required.",
            "default": false
          },
          "field_SerialNo_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Serial No is enabled.",
            "default": true
          },
          "field_SerialNo_Required": {
            "type": "boolean",
            "description": "Indicates whether Serial No is required.",
            "default": false
          }
        },
        "additionalProperties": false,
        "description": "Represents configuration settings for asset fields, including\r\nvisibility (enabled/disabled), validation rules (required)."
      },
      "AssetWarranty": {
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the warranty.",
            "format": "int32"
          },
          "assetRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the asset.",
            "format": "int32"
          },
          "length": {
            "type": "integer",
            "description": "Length of the warranty (in months).",
            "format": "int32",
            "nullable": true
          },
          "expiryDate": {
            "type": "string",
            "description": "Date when warranty expires.",
            "format": "date"
          },
          "notes": {
            "type": "string",
            "description": "Text area for notes.",
            "nullable": true
          },
          "addedByRefGuId": {
            "type": "string",
            "description": "Unique GUID of the User who added warranty.",
            "nullable": true
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WarrantyCustomFieldValues"
            },
            "description": "A collection of custom field values associated with this warranty. May be null if no custom fields are defined.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a warranty associated with an asset."
      },
      "AssignTo": {
        "enum": [
          "Person",
          "Customer",
          "SiteLocation"
        ],
        "type": "string",
        "description": "Defines the type of entity that a record can be assigned to.",
        "x-enum-descriptions": {
          "Person": "Assigned to person.",
          "Customer": "Assigned to Customer.",
          "SiteLocation": "Assigned to Site/location."
        }
      },
      "AssociateContractAssetRequest": {
        "required": [
          "assetRefId"
        ],
        "type": "object",
        "properties": {
          "assetRefId": {
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Unique identifier (primary key) of the asset to associate with the contract. Maximum 100 items."
          }
        },
        "additionalProperties": false,
        "description": "Request model for associating an asset with a contract."
      },
      "AssociateFundAssetRequest": {
        "required": [
          "amount",
          "assetRefId"
        ],
        "type": "object",
        "properties": {
          "assetRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) of the asset to associate with the fund.",
            "format": "int32"
          },
          "amount": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Amount to debit from the fund for this asset.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Request model for associating an asset with a fund."
      },
      "AssociateInsuranceAssetRequest": {
        "required": [
          "assetRefId"
        ],
        "type": "object",
        "properties": {
          "assetRefId": {
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Unique identifier (primary key) of the asset to associate with the insurance. Maximum 100 items."
          }
        },
        "additionalProperties": false,
        "description": "Request model for associating an asset with a insurance."
      },
      "AuditName": {
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the audit name.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name of the audit.",
            "nullable": true
          },
          "locked": {
            "type": "boolean",
            "description": "Indicates whether this audit name is locked. When true, assets cannot be audited against this audit name."
          },
          "assetCount": {
            "type": "integer",
            "description": "Number of active assets audited under this audit name.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an audit associated with an asset."
      },
      "AuditNameRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the audit name to create. Must be unique. Cannot exceed 100 characters."
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding/updating an audit name."
      },
      "AuthorizeRequest": {
        "required": [
          "apiToken",
          "authToken"
        ],
        "type": "object",
        "properties": {
          "apiToken": {
            "maxLength": 2000,
            "minLength": 32,
            "type": "string",
            "description": "The API token used for authenticating requests. Must be between 32 and 2000 characters."
          },
          "authToken": {
            "maxLength": 2000,
            "minLength": 32,
            "type": "string",
            "description": "The Auth token used for authenticating requests. Must be between 32 and 2000 characters."
          }
        },
        "additionalProperties": false,
        "description": "Contains the tokens required to authorize a user in the system."
      },
      "AuthorizeResponse": {
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string",
            "description": "The access token issued for authentication.  \r\nUsed to authorize subsequent API requests.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response returned after a successful attempt, including access token."
      },
      "Bin": {
        "required": [
          "name",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) for the Bin (positive integer only).",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Bin Name (Bin Name cannot exceed 100 characters.)"
          }
        },
        "additionalProperties": false,
        "description": "Represents a bin within a shelf in the inventory storage hierarchy.\r\nA bin is the lowest level where inventory items are stored. Applicable only when multi-quantiy feature is enabled"
      },
      "BulkAudit": {
        "required": [
          "auditedCount",
          "skippedAssets",
          "skippedCount"
        ],
        "type": "object",
        "properties": {
          "auditedCount": {
            "type": "integer",
            "description": "Number of assets that were audited.",
            "format": "int32"
          },
          "skippedCount": {
            "type": "integer",
            "description": "Number of assets that were skipped.",
            "format": "int32"
          },
          "skippedAssets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkippedAsset"
            },
            "description": "Assets that were skipped, each with the reason it was skipped.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Result of a bulk audit, listing which assets were audited and which were skipped."
      },
      "BulkAuditRequest": {
        "required": [
          "assetRefIds",
          "auditDate",
          "auditNameRefId",
          "locationRefId",
          "recordGps",
          "siteRefId",
          "updateAssetLocation"
        ],
        "type": "object",
        "properties": {
          "auditNameRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the audit name to audit the asset against. Must not be locked.",
            "format": "int32"
          },
          "siteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the site where the audit took place.",
            "format": "int32"
          },
          "locationRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the location where the audit took place. Must belong to <code>siteRefId</code>.",
            "format": "int32"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Text area for notes. (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "auditDate": {
            "type": "string",
            "description": "Date and time when the asset was audited. Format: yyyy-MM-ddTHH:mm:ss.",
            "format": "date-time"
          },
          "updateAssetLocation": {
            "type": "boolean",
            "description": "When true, updates the asset's own site/location to match <code>siteRefId/locationRefId</code> and logs a history entry for the change."
          },
          "recordGps": {
            "type": "boolean",
            "description": "Indicates whether GPS coordinates were captured for this audit."
          },
          "latitude": {
            "maximum": 90,
            "minimum": -90,
            "type": "number",
            "description": "Latitude coordinate where the audit was performed. Required when <code>recordGps</code> is true.",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "maximum": 180,
            "minimum": -180,
            "type": "number",
            "description": "Longitude coordinate where the audit was performed. Required when <code>recordGps</code> is true.",
            "format": "double",
            "nullable": true
          },
          "assetRefIds": {
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Collection of asset unique identifiers (RefIds) to audit. Maximum 100 items. Assets that are inactive, not found, outside your access, or already audited under <code>auditNameRefId</code> are skipped."
          }
        },
        "additionalProperties": false,
        "description": "Request model for auditing multiple assets against one audit name in a single request."
      },
      "Category": {
        "required": [
          "name",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) for the category (positive integer only).",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Category Name (Category name cannot exceed 50 characters.)"
          },
          "subCategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubCategory"
            },
            "description": "A collection of subcategories associated with this entity. May be empty if none are defined.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a high-level classification for assets and/or inventory items."
      },
      "Contract": {
        "required": [
          "addedByRefGuid"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the contract or license.",
            "format": "int32"
          },
          "contractTitle": {
            "type": "string",
            "description": "Title or name of the contract or license.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Additional details or notes about the contract or license.",
            "nullable": true
          },
          "hyperlink": {
            "type": "string",
            "description": "Website URL or hyperlink associated with the contract or license.",
            "nullable": true
          },
          "contractNo": {
            "type": "string",
            "description": "Contract or license number assigned by the vendor or provider.",
            "nullable": true
          },
          "vendor": {
            "type": "string",
            "description": "Name of the vendor associated with the contract.",
            "nullable": true
          },
          "contactPerson": {
            "type": "string",
            "description": "Name of the primary contact person for the contract or license.",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Phone number of the contract or license contact person.",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "description": "Cost of the contract or license.",
            "format": "double",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Start date of the contract or license.",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "End date or expiration date of the contract or license. Always null when NoEndDate is true.",
            "format": "date",
            "nullable": true
          },
          "licenseCount": {
            "type": "integer",
            "description": "Number of licenses covered by the contract.",
            "format": "int32",
            "nullable": true
          },
          "noEndDate": {
            "type": "boolean",
            "description": "Indicates whether the contract has no expiration date."
          },
          "softwareContract": {
            "type": "boolean",
            "description": "Indicates whether the contract is for software."
          },
          "active": {
            "type": "boolean",
            "description": "Indicates whether the contract or license is active."
          },
          "addedByRefGuid": {
            "type": "string",
            "description": "Unique GUID of the user who created the contract record.",
            "nullable": true
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContractsCustomFieldValues"
            },
            "description": "A collection of custom field values associated with the contracts. May be null if no custom fields are defined.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ContractAssetLinked": {
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the asset-contract link record.",
            "format": "int32"
          },
          "assetRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the asset.",
            "format": "int32"
          },
          "contractRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the contract.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Represents an asset linked to a contract."
      },
      "ContractSetting": {
        "type": "object",
        "properties": {
          "field_ContractTitle_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Title of Contract is enabled.",
            "default": true
          },
          "field_ContractTitle_Required": {
            "type": "boolean",
            "description": "Indicates whether Title of Contract is required.",
            "default": true
          },
          "field_Description_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Description of the contract is enabled.",
            "default": true
          },
          "field_Description_Required": {
            "type": "boolean",
            "description": "Indicates whether Description of the contract is required.",
            "default": false
          },
          "field_Hyperlink_Enabled": {
            "type": "boolean",
            "description": "Indicates whether HyperLink of Contract is enabled.",
            "default": true
          },
          "field_Hyperlink_Required": {
            "type": "boolean",
            "description": "Indicates whether HyperLink of Contract is required.",
            "default": false
          },
          "field_ContractNo_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Contract No. is enabled.",
            "default": true
          },
          "field_ContractNo_Required": {
            "type": "boolean",
            "description": "Indicates whether Contract No. is required.",
            "default": false
          },
          "field_Cost_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Cost of Contract is enabled.",
            "default": true
          },
          "field_Cost_Required": {
            "type": "boolean",
            "description": "Indicates whether Cost of Contract is required.",
            "default": false
          },
          "field_StartDate_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Start Date of Contract is enabled.",
            "default": true
          },
          "field_StartDate_Required": {
            "type": "boolean",
            "description": "Indicates whether Start Date of Contract is required.",
            "default": true
          },
          "field_EndDate_Enabled": {
            "type": "boolean",
            "description": "Indicates whether End Date of Contract is enabled.",
            "default": true
          },
          "field_EndDate_Required": {
            "type": "boolean",
            "description": "Indicates whether End Date of Contract is required.",
            "default": true
          },
          "field_NoEndDate_Enabled": {
            "type": "boolean",
            "description": "Indicates whether No End Date is enabled.",
            "default": true
          },
          "field_Vendor_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Vendor is enabled.",
            "default": false
          },
          "field_ContractPerson_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Contact Person is enabled.",
            "default": true
          },
          "field_ContractPerson_Required": {
            "type": "boolean",
            "description": "Indicates whether Contact Person is required.",
            "default": false
          },
          "field_Phone_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Phone number is enabled.",
            "default": true
          },
          "field_Phone_Required": {
            "type": "boolean",
            "description": "Indicates whether Phone number is required.",
            "default": false
          },
          "field_NoOfLicenses_Enabled": {
            "type": "boolean",
            "description": "Indicates whether No. of Licenses is enabled.",
            "default": true
          },
          "field_NoOfLicenses_Required": {
            "type": "boolean",
            "description": "Indicates whether No. of Licenses is required.",
            "default": false
          },
          "field_IsSoftware_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Is Contract a Software is enabled.",
            "default": true
          }
        },
        "additionalProperties": false,
        "description": "Represents configuration settings for contract fields, including\r\nvisibility (enabled/disabled), validation rules (required)."
      },
      "ContractsCustomFieldValues": {
        "required": [
          "customField",
          "customFieldRefId",
          "refId",
          "value"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the custom field value.",
            "format": "int32"
          },
          "customFieldRefId": {
            "type": "integer",
            "description": "Foreign key referencing the custom field.",
            "format": "int32"
          },
          "value": {
            "minLength": 1,
            "type": "string",
            "description": "value of the custom field."
          },
          "customField": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomField"
              }
            ],
            "description": "Defines a customizable field that can be attached to entities like assets, inventory items, persons contacts, warranties etc. Includes type, label, and options."
          }
        },
        "additionalProperties": false,
        "description": "Stores the value of a CustomField for a specific entity. Links to the corresponding custom field definition."
      },
      "Country": {
        "required": [
          "countryName",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the country.",
            "format": "int32"
          },
          "countryName": {
            "minLength": 1,
            "type": "string",
            "description": "Full name of the country (e.g., United States)."
          }
        },
        "additionalProperties": false,
        "description": "Represents a country available in the system for address and region configuration."
      },
      "Currency": {
        "required": [
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the currency.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Full name of the currency (e.g., United States Dollar).",
            "nullable": true
          },
          "code": {
            "type": "string",
            "description": "ISO 4217 currency code (e.g., USD).",
            "nullable": true
          },
          "uniCode": {
            "type": "string",
            "description": "Unicode symbol for the currency (e.g., $).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a currency available for financial configuration."
      },
      "CustomEventSetting": {
        "required": [
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the custom event.",
            "format": "int32"
          },
          "eventName": {
            "type": "string",
            "description": "Event Name. For example, 'Retired', 'End of Life', etc.",
            "nullable": true
          },
          "eventDescription": {
            "type": "string",
            "description": "Event Description.",
            "nullable": true
          },
          "eventIcon": {
            "type": "string",
            "description": "Name of the icon assigned to this custom event, used for display purposes in the UI.",
            "nullable": true
          },
          "eventIconClass": {
            "type": "string",
            "description": "Name of the icon class assigned to this custom event, used for display purposes in the UI.",
            "nullable": true
          },
          "eventColor": {
            "type": "string",
            "description": "Name of the color assigned to this custom event, used for display purposes in the UI.",
            "nullable": true
          },
          "eventColorCode": {
            "type": "string",
            "description": "Name of the color code assigned to this custom event, used for display purposes in the UI.",
            "nullable": true
          },
          "field_Event_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Event is enabled.",
            "default": true
          },
          "field_Date1_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Date 1 is enabled. 'Date 1' typically represents the day when the event takes place. example: Check out date",
            "default": false
          },
          "field_Date1_Required": {
            "type": "boolean",
            "description": "Indicates whether Date 1 is required.",
            "default": false
          },
          "field_Date1_Time_Enable": {
            "type": "boolean",
            "description": "Indicates whether Date 1 Time is enabled.",
            "default": false
          },
          "field_Date1_Label": {
            "type": "string",
            "description": "Date 1 Label.",
            "nullable": true
          },
          "field_Date2_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Date 2 is enabled. If you expect the user to return the assets by a specific due date, utilize 'Date 2' for that purpose. example: Due date",
            "default": false
          },
          "field_Date2_Required": {
            "type": "boolean",
            "description": "Indicates whether Date 2 is required.",
            "default": false
          },
          "field_Date2_Time_Enable": {
            "type": "boolean",
            "description": "Indicates whether Date 2 Time is enabled.",
            "default": false
          },
          "field_Date2_Label": {
            "type": "string",
            "description": "Date 2 Label.",
            "nullable": true
          },
          "field_Text_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Text field is enabled. The text field can hold text up to 100 characters long.",
            "default": false
          },
          "field_Text_Required": {
            "type": "boolean",
            "description": "Indicates whether Text field  is required.",
            "default": false
          },
          "field_Text_Label": {
            "type": "string",
            "description": "Text field Label.",
            "nullable": true
          },
          "field_Currency_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Currency is enabled. Use the field to enter an amount. The currency symbol will be as defined in the company setup.  example: Amount spent",
            "default": false
          },
          "field_Currency_Required": {
            "type": "boolean",
            "description": "Indicates whether Currency  is required.",
            "default": false
          },
          "field_Currency_Label": {
            "type": "string",
            "description": "Currency Label.",
            "nullable": true
          },
          "field_Boolean_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Boolean is enabled. A boolean field will present a radio button to allow the user to select either 'Yes' or 'No'. Please enter your question in the Customize Label section.  example: Is the asset functioning properly?",
            "default": false
          },
          "field_Boolean_Label": {
            "type": "string",
            "description": "Boolean Label.",
            "nullable": true
          },
          "field_Notes_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Notes is enabled. A text area for the user to enter notes up to 1000 characters in length.",
            "default": false
          },
          "field_Notes_Required": {
            "type": "boolean",
            "description": "Indicates whether Notes  is required.",
            "default": false
          },
          "field_Notes_Label": {
            "type": "string",
            "description": "Notes Label.",
            "nullable": true
          },
          "field_Person_Enabled": {
            "type": "boolean",
            "description": "Indicates whether List of Persons is enabled. Assets are generally 'checked out' or 'assigned to' individuals. Individuals should be entered in the \"Advanced > Persons/Employees\" table.",
            "default": false
          },
          "field_Person_Required": {
            "type": "boolean",
            "description": "Indicates whether List of Persons is required.",
            "default": false
          },
          "field_Customer_Enabled": {
            "type": "boolean",
            "description": "Indicates whether List of Customer is enabled. Assets are generally 'leased' to customers. Customers should be entered in the \"Advanced > Customers\" table.",
            "default": false
          },
          "field_Customer_Required": {
            "type": "boolean",
            "description": "Indicates whether List of Customer is required.",
            "default": false
          },
          "field_SiteLocation_Enabled": {
            "type": "boolean",
            "description": "Indicates whether List of Sites/Locations is enabled. Assets can also be assigned to \"Sites/Locations.\" For instance, a projector or TV can be assigned to a conference room.",
            "default": false
          },
          "field_SiteLocation_Required": {
            "type": "boolean",
            "description": "Indicates whether List of Sites/Locations is required.",
            "default": false
          },
          "field_Signature_Enable": {
            "type": "boolean",
            "description": "Indicates whether Signature pad is enable for the user to sign.",
            "default": false
          },
          "field_Signature_Required": {
            "type": "boolean",
            "description": "Indicates whether Signature is required.",
            "default": false
          },
          "field_SignatureDisclaimer_Text": {
            "type": "string",
            "description": "Disclaimer text displayed above the signature pad when <code>field_Signature_Enable</code> is true.",
            "nullable": true
          },
          "field_IsReturnEvent": {
            "type": "boolean",
            "description": "Indicates whether Event is Return Event. Event that involve the user returning the asset are categorized as \"Return Event.\" These events require both a primary event and a return event.",
            "default": false
          },
          "primary_CustomRefId": {
            "type": "integer",
            "description": "Foreign key referencing the primary custom event this return event is linked to. Populated only when <code>field_IsReturnEvent</code> is true; null otherwise.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the configuration of a single custom event (e.g. \"Retired\",\r\n\"End of Life\"), identified by AssetTigerAPI.Models.CustomEventSetting.RefId, including its display name, description,\r\nicon/color, and which optional fields (dates, text, currency, boolean, notes, person,\r\ncustomer, site/location, signature) are enabled and/or required for that event."
      },
      "CustomField": {
        "required": [
          "fieldType",
          "isRequired",
          "label",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the custom field.",
            "format": "int32"
          },
          "label": {
            "type": "string",
            "description": "Label of the custom field.",
            "nullable": true
          },
          "fieldType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FieldType"
              }
            ],
            "description": "Defines the type of a custom field (e.g., Text, Number, Date, Boolean) and whether it supports a predefined list of values.",
            "nullable": true
          },
          "isRequired": {
            "type": "boolean",
            "description": "Indicates whether this value is required. Returns true if required; otherwise, false."
          },
          "hasSelectedCategories": {
            "type": "boolean",
            "description": "Indicates whether this custom field is limited to specific categories (true) or applies to all categories (false). Applicable for Asset/Inventory Custom Fields only.",
            "nullable": true
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Collection of available options. Applicable for field types such as DropdownList, RadioButtonList, and CheckBoxList.",
            "nullable": true
          },
          "customFieldCategories": {
            "type": "string",
            "description": "Comma-separated list of category RefIds this custom field is limited to. Applicable for Asset/Inventory Custom Fields only.",
            "nullable": true
          },
          "counter": {
            "type": "integer",
            "description": "The next number that will be auto-generated for this field. Applicable only for the NumericAutoIncrement field type, on Asset/Inventory Custom Fields only.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Defines a customizable field that can be attached to entities like assets, inventory items, persons contacts, warranties etc. Includes type, label, and options."
      },
      "CustomFieldRequest": {
        "required": [
          "customFieldId",
          "customFieldValue"
        ],
        "type": "object",
        "properties": {
          "customFieldId": {
            "type": "integer",
            "description": "Unique identifier of the custom field.",
            "format": "int32"
          },
          "customFieldValue": {
            "minLength": 1,
            "type": "string",
            "description": "Value provided for the custom field. Format varies by field type: Text = string; Number/Currency = numeric value; Date = yyyy-MM-dd; DateTime = yyyy-MM-dd HH:mm:ss; Dropdown/Radio = one allowed option; Checkbox List = comma-separated allowed option values (e.g., '1,3,5')."
          }
        },
        "additionalProperties": false,
        "description": "Represents a value submitted for a specific custom field.  \r\nUsed for text, numeric, date, dropdown, radio, or checkbox list fields."
      },
      "CustomFieldValue": {
        "required": [
          "customField",
          "customFieldRefId",
          "refId",
          "value"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the custom field value.",
            "format": "int32"
          },
          "customFieldRefId": {
            "type": "integer",
            "description": "Foreign key referencing the custom field.",
            "format": "int32"
          },
          "value": {
            "minLength": 1,
            "type": "string",
            "description": "value of the custom field."
          },
          "customField": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomField"
              }
            ],
            "description": "Defines a customizable field that can be attached to entities like assets, inventory items, persons contacts, warranties etc. Includes type, label, and options."
          }
        },
        "additionalProperties": false,
        "description": "Stores the value of a CustomField for a specific entity. Links to the corresponding custom field definition."
      },
      "Customer": {
        "required": [
          "addedByRefGuid",
          "name",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) for the customer (positive integer only).",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Customer Name (name cannot exceed 100 characters.)"
          },
          "company": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Company name of the customer. (company cannot exceed 100 characters.)",
            "nullable": true
          },
          "address1": {
            "maxLength": 250,
            "minLength": 0,
            "type": "string",
            "description": "Address1 of the customer. (address1 cannot exceed 250 characters.)",
            "nullable": true
          },
          "address2": {
            "maxLength": 250,
            "minLength": 0,
            "type": "string",
            "description": "Address2 of the customer. (address2 cannot exceed 250 characters.)",
            "nullable": true
          },
          "city": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "City of the customer (city cannot exceed 50 characters.)",
            "nullable": true
          },
          "state": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "State of the customer. (state cannot exceed 50 characters.)",
            "nullable": true
          },
          "zip": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Zip of the customer. (zip cannot exceed 50 characters.)",
            "nullable": true
          },
          "countryRefId": {
            "type": "integer",
            "description": "Foreign key referencing the country.",
            "format": "int32",
            "nullable": true
          },
          "countryName": {
            "type": "string",
            "description": "Readable name of the country (resolved from CountryRefId).",
            "nullable": true
          },
          "phone": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Phone number of the customer. (phone cannot exceed 50 characters.)",
            "nullable": true
          },
          "cell": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Cell number of the customer. (cell cannot exceed 50 characters.)",
            "nullable": true
          },
          "email": {
            "maxLength": 70,
            "minLength": 0,
            "type": "string",
            "description": "Email of the customer. (email cannot exceed 70 characters.)",
            "nullable": true
          },
          "addedByRefGuid": {
            "type": "string",
            "description": "Unqiue GUID referencing the user who created or manages this customer.",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 0,
            "type": "string",
            "description": "Notes or Comment (notes cannot exceed 2000 characters.)",
            "nullable": true
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerCustomFieldValues"
            },
            "description": "A collection of custom field values associated with the customer. May be null if no custom fields are defined.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a customer details, containing identifying information, contact details, \r\nand references to related entities."
      },
      "CustomerCustomFieldValues": {
        "required": [
          "customField",
          "customFieldRefId",
          "refId",
          "value"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the custom field value.",
            "format": "int32"
          },
          "customFieldRefId": {
            "type": "integer",
            "description": "Foreign key referencing the custom field.",
            "format": "int32"
          },
          "value": {
            "minLength": 1,
            "type": "string",
            "description": "value of the custom field."
          },
          "customField": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomField"
              }
            ],
            "description": "Defines a customizable field that can be attached to entities like assets, inventory items, persons contacts, warranties etc. Includes type, label, and options."
          }
        },
        "additionalProperties": false,
        "description": "Stores the value of a CustomField for a specific entity. Links to the corresponding custom field definition."
      },
      "CustomerSetting": {
        "type": "object",
        "properties": {
          "field_FullName_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Full name of the customer is enabled.",
            "default": true
          },
          "field_FullName_Required": {
            "type": "boolean",
            "description": "Indicates whether Full name of the customer is required.",
            "default": false
          },
          "field_Email_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Email of the customer is enabled.",
            "default": true
          },
          "field_Email_Required": {
            "type": "boolean",
            "description": "Indicates whether Email of the customer is required.",
            "default": false
          },
          "field_Company_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Customer's company name is enabled.",
            "default": true
          },
          "field_Company_Required": {
            "type": "boolean",
            "description": "Indicates whether Customer's company name is required.",
            "default": false
          },
          "field_Address_Enabled": {
            "type": "boolean",
            "description": "Indicates whether All address fields of the customer is enabled.",
            "default": true
          },
          "field_Address_Required": {
            "type": "boolean",
            "description": "Indicates whether All address fields of the customer is required.",
            "default": false
          },
          "field_Phone_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Phone number of the customer is enabled.",
            "default": true
          },
          "field_Phone_Required": {
            "type": "boolean",
            "description": "Indicates whether Phone number of the customer is required.",
            "default": false
          },
          "field_MobilePhone_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Mobile Cell of the customer is enabled.",
            "default": true
          },
          "field_MobilePhone_Required": {
            "type": "boolean",
            "description": "Indicates whether Mobile Cell of the customer is required.",
            "default": false
          },
          "field_Notes_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Text area for notes is enabled.",
            "default": true
          },
          "field_Notes_Required": {
            "type": "boolean",
            "description": "Indicates whether Text area for notes is required.",
            "default": false
          },
          "field_FullName_Unique": {
            "type": "boolean",
            "description": "Specifies whether Full Name serves as the unique identifier. When false, Email is used as the unique identifier instead.",
            "default": true
          }
        },
        "additionalProperties": false,
        "description": "Represents configuration settings for Customer fields, including\r\nvisibility (enabled/disabled), validation rules (required),\r\nand uniqueness constraints for key identifiers such as Full Name and Email."
      },
      "DataField": {
        "enum": [
          "Name",
          "InventoryTagId",
          "AssetTagId",
          "Description",
          "Unit",
          "Stock",
          "Notes",
          "SKU",
          "Size",
          "Color",
          "Style",
          "Brand",
          "SerialNo",
          "Model",
          "Vendor",
          "Url",
          "MinQty",
          "MaxQty",
          "CreatedBy",
          "DateCreated",
          "CategoryName",
          "SubCategoryName",
          "EmpID",
          "Title",
          "Email",
          "Phone",
          "Company",
          "Address1",
          "Address2",
          "City",
          "State",
          "Zip",
          "Country",
          "Cell",
          "PersonName",
          "FundAmount",
          "StartDate",
          "EndDate",
          "TotalDebits",
          "AssetCount",
          "InsuranceCo",
          "Policy",
          "Coverage",
          "Limits",
          "Hyperlink",
          "ContractNo",
          "ContractCost",
          "License",
          "IsSoftware",
          "PurchaseDate",
          "PurchaseFrom",
          "SiteName",
          "LocationName",
          "DepartmentName",
          "DepreciationMethodName",
          "DateAcquired",
          "isDepreciable",
          "InitialCost",
          "CurrentCost",
          "AssetLife",
          "SalvageValue",
          "Status",
          "IsLinked",
          "Relation",
          "ExpiryDate",
          "Details",
          "MaintenanceBy",
          "DueDate",
          "WarrantyLength",
          "WarrantyNotes",
          "DateCompleted",
          "Cost",
          "Reservation",
          "EventDate1",
          "EventDate2",
          "LeaseTo",
          "MaintAssignedTo",
          "MaintDetail",
          "MaintTitle",
          "MaintStatus",
          "Repeating",
          "RepairCost",
          "Frequency",
          "RecurOn1",
          "RecurOn2",
          "WarrantyCreatedBy"
        ],
        "type": "string",
        "description": "Represents the different data fields.",
        "x-enum-descriptions": {
          "Name": "Name of the record (e.g., item, asset, category, person, customer, site, or fund).",
          "InventoryTagId": "Unique tag or code assigned to the inventory item for tracking.",
          "AssetTagId": "Unique tag or code assigned to the asset for tracking.",
          "Description": "Detailed description of the record (e.g., item, asset, fund, or document).",
          "Unit": "Unit of measurement (e.g., piece, box, kg, liter).",
          "Stock": "Current available stock quantity of the item.",
          "Notes": "Additional notes or remarks.",
          "SKU": "Stock Keeping Unit – unique identifier used for managing stock.",
          "Size": "Size or dimensions of the item.",
          "Color": "Color of the item.",
          "Style": "Style or variant of the item (if applicable).",
          "Brand": "Brand name of the item.",
          "SerialNo": "Serial No of the asset.",
          "Model": "Model name/number of the item.",
          "Vendor": "Supplier or vendor associated with the item.",
          "Url": "Reference URL (e.g., vendor page, product page, or documentation).",
          "MinQty": "Minimum quantity threshold for stock (used for re-order alerts).",
          "MaxQty": "Maximum quantity limit for stock (used for inventory control).",
          "CreatedBy": "Name of the user who created the record.",
          "DateCreated": "Datetime (UTC) when the item was added.",
          "CategoryName": "Readable name of the main category.",
          "SubCategoryName": "Readable name of the main subcategory.",
          "EmpID": "Employee Id.",
          "Title": "Title.",
          "Email": "Email address.",
          "Phone": "Phone number.",
          "Company": "Company name.",
          "Address1": "Primary address.",
          "Address2": "Secondary address.",
          "City": "City name.",
          "State": "State or region.",
          "Zip": "ZIP or postal code.",
          "Country": "Country name.",
          "Cell": "Cell.",
          "PersonName": "Name of the person associated with the record (e.g., an asset's current event, an insurance policy, or a contract).",
          "FundAmount": "Total allocated amount for a fund.",
          "StartDate": "The date when the record or activity starts.",
          "EndDate": "The date when the record or activity ends.",
          "TotalDebits": "Total debits linked to a fund.",
          "AssetCount": "Number of assets linked to a record.",
          "InsuranceCo": "Name of the insurance company.",
          "Policy": "Insurance policy number or identifier.",
          "Coverage": "Type of insurance coverage provided.",
          "Limits": "Coverage limits or maximum claim amount.",
          "Hyperlink": "Website URL or hyperlink associated with the contract or license.",
          "ContractNo": "Contract or license number assigned by the vendor or provider.",
          "ContractCost": "Cost of the contract or license.",
          "License": "Number of licenses covered by the contract.",
          "IsSoftware": "whether the contract is for software.",
          "PurchaseDate": "Purchase Date.",
          "PurchaseFrom": "Purchase From.",
          "SiteName": "Site Name.",
          "LocationName": "Location Name.",
          "DepartmentName": "Department Name.",
          "DepreciationMethodName": "Depreciation Method.",
          "DateAcquired": "Date Acquired.",
          "isDepreciable": "Is Depreciable.",
          "InitialCost": "Initial Cost.",
          "CurrentCost": "Current Cost.",
          "AssetLife": "Asset Life.",
          "SalvageValue": "Salvage Value.",
          "Status": "Status.",
          "IsLinked": "Is Linked.",
          "Relation": "Relation.",
          "ExpiryDate": "Expiration Date.",
          "Details": "Maintenance Details.",
          "MaintenanceBy": "Maintenance By.",
          "DueDate": "Due Date.",
          "WarrantyLength": "Warranty Length.",
          "WarrantyNotes": "Warranty Notes.",
          "DateCompleted": "Date Completed.",
          "Cost": "Original purchase price of the asset at the time of acquisition.",
          "Reservation": "Start time of the asset's next upcoming or current reservation.",
          "EventDate1": "Primary event date (e.g., checkout date, lease start, repair start) of the asset's current event.",
          "EventDate2": "Secondary event date (e.g., due date, end date, return date) of the asset's current event.",
          "LeaseTo": "Name of the customer this asset is currently leased to. Populated only when the asset's current event is a lease event with a customer attached.",
          "MaintAssignedTo": "Person assigned to a maintenance record.",
          "MaintDetail": "Detail text of a maintenance record.",
          "MaintTitle": "Title of a maintenance record.",
          "MaintStatus": "Status of a maintenance record.",
          "Repeating": "Whether a maintenance record repeats.",
          "RepairCost": "Repair cost of a maintenance record.",
          "Frequency": "Recurrence frequency of a maintenance record.",
          "RecurOn1": "First recurrence value of a maintenance record.",
          "RecurOn2": "Second recurrence value of a maintenance record.",
          "WarrantyCreatedBy": "User who created a warranty record."
        }
      },
      "DateFormat": {
        "required": [
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the date format.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Display name of the date format (e.g., MM/DD/YYYY).",
            "nullable": true
          },
          "format": {
            "type": "string",
            "description": "Date format pattern string used for formatting (e.g., MM/dd/yyyy).",
            "nullable": true
          },
          "example": {
            "type": "string",
            "description": "Example date rendered using this format (e.g., 12/31/2025).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a date display format available for user and configuration."
      },
      "DeleteMaintenanceRequest": {
        "required": [
          "assetRefId",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) of the maintenance.",
            "format": "int32"
          },
          "assetRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) of the asset the maintenance belongs to.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request model for deleting a maintenance."
      },
      "DeleteWarrantyRequest": {
        "required": [
          "assetRefId",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) of the warranty.",
            "format": "int32"
          },
          "assetRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) of the asset the warranty belongs to.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request model for deleting a warranty."
      },
      "Department": {
        "required": [
          "name",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) for the department (positive integer only).",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Department Name (Department name cannot exceed 50 characters.)"
          }
        },
        "additionalProperties": false,
        "description": "Represents a department to organize assets and/or inventory items more granularly."
      },
      "DepreciationMethod": {
        "enum": [
          "StraightLine",
          "DoubleDecliningBalance",
          "DecliningBalance150Percent",
          "SumoftheYearsDigits",
          "DecliningBalance"
        ],
        "type": "string",
        "description": "Represents the supported depreciation methods that can be used to calculate\r\nasset depreciation over its useful life.",
        "x-enum-descriptions": {
          "StraightLine": "Straight Line - Allocates the same amount to each period over time. This is the most popular and easiest to use.",
          "DoubleDecliningBalance": "Double Declining – Allocates twice as much as straight line in the first half of the asset life, and half as much in the second half. Typically used for tax purposes.",
          "DecliningBalance150Percent": "150% Declining – works the same as double declining but just at a 1.5x level of straight line. Again typically used for tax purposes.",
          "SumoftheYearsDigits": "Sum of year’s digits – Allocates the deprecation based on the fractional calculation of the assets useful life. This accelerates deprecation faster than straight line but lesser than double declining. Typically not used but acceptable for US GAAP purposes.",
          "DecliningBalance": "Declining Balance – Allocates 1x as much as straight line in the first half of the asset life, and full as much in the second half. Typically used for tax purposes."
        }
      },
      "Document": {
        "type": "object",
        "properties": {
          "documentRefGuid": {
            "type": "string",
            "description": "Unique GUID of the document.",
            "nullable": true
          },
          "fileType": {
            "type": "string",
            "description": "File type (e.g., PDF, DOCX, JPG).",
            "nullable": true
          },
          "fileName": {
            "type": "string",
            "description": "Original file name of the document.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Description or additional notes for the document.",
            "nullable": true
          },
          "keywords": {
            "type": "string",
            "description": "Keywords associated with the document for search or filtering.",
            "nullable": true
          },
          "uploadDate": {
            "type": "string",
            "description": "Date and time when the document was uploaded.",
            "format": "date-time",
            "nullable": true
          },
          "uploadedByRefGuid": {
            "type": "string",
            "description": "GUID reference of the user who uploaded the document.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a document linked to an inventory item."
      },
      "Event": {
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the event record.",
            "format": "int32"
          },
          "eventType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EventType"
              }
            ],
            "description": "Represents the type of event recorded against an asset in its lifecycle. Standard events map to built-in asset tracking operations. When a user-defined custom event is recorded, EventTypeName is Custom",
            "nullable": true
          },
          "assetRefId": {
            "type": "integer",
            "description": "Foreign key referencing the asset this event is associated with.",
            "format": "int32",
            "nullable": true
          },
          "customEventRefId": {
            "type": "integer",
            "description": "Foreign key referencing the custom event definition for this event. Null for standard events.",
            "format": "int32",
            "nullable": true
          },
          "personRefId": {
            "type": "integer",
            "description": "Foreign key referencing the person involved in this event.",
            "format": "int32",
            "nullable": true
          },
          "customerRefId": {
            "type": "integer",
            "description": "Foreign key referencing the customer associated with this event.",
            "format": "int32",
            "nullable": true
          },
          "siteRefId": {
            "type": "integer",
            "description": "Foreign key referencing the site where this event occurred.",
            "format": "int32",
            "nullable": true
          },
          "locationRefId": {
            "type": "integer",
            "description": "Foreign key referencing the physical location where this event occurred.",
            "format": "int32",
            "nullable": true
          },
          "addedByRefGuid": {
            "type": "string",
            "description": "Unique GUID referencing the user who created this event.",
            "nullable": true
          },
          "date1": {
            "type": "string",
            "description": "Primary event date and time. Represents when the event started (e.g., checkout date, lease start, repair start). Whether the returned value includes a time component is determined by the Utc property.",
            "format": "date-time",
            "nullable": true
          },
          "date2": {
            "type": "string",
            "description": "Secondary event date and time. Represents a due date, end date, or return date depending on the event type (e.g., checkout due date, lease end date). Whether the returned value includes a time component is determined by the Utc property.",
            "format": "date-time",
            "nullable": true
          },
          "dateAdded": {
            "type": "string",
            "description": "The date and time (UTC) this event record was created in the system.",
            "format": "date-time",
            "nullable": true
          },
          "personName": {
            "type": "string",
            "description": "Display name of the person, customer, or site/location associated with this event.",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Additional notes, comments, or observations recorded for this event.",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "description": "Monetary amount associated with this event. Can represent repair cost, service fee, insurance payout, or transaction value.",
            "format": "double",
            "nullable": true
          },
          "signature": {
            "type": "string",
            "description": "Unique identifier (GUID) of the signature associated with this event.",
            "nullable": true
          },
          "deductible": {
            "type": "boolean",
            "description": "Indicates whether the amount associated with this event is tax-deductible."
          },
          "booleanField": {
            "type": "boolean",
            "description": "Boolean value associated with a custom event. This field is only populated for custom events; otherwise, it is null.",
            "nullable": true
          },
          "textField": {
            "type": "string",
            "description": "Text value associated with a custom event. This field is only populated for custom events; otherwise, it is null.",
            "nullable": true
          },
          "currencyField": {
            "type": "number",
            "description": "Currency value associated with a custom event. This field is only populated for custom events; otherwise, it is null.",
            "format": "double",
            "nullable": true
          },
          "utc": {
            "type": "boolean",
            "description": "Indicates whether Date1 and Date2 are stored in UTC format."
          }
        },
        "additionalProperties": false,
        "description": "Represents a tracked current event associated with an asset throughout its lifecycle.\r\nEvent can include checkout, checkin, lease, lease return \r\nor any custom event against an asset."
      },
      "EventType": {
        "enum": [
          "Available",
          "Checkout",
          "CheckIn",
          "Lease",
          "LeaseReturn",
          "Lost",
          "Found",
          "Repair",
          "Broken",
          "Dispose",
          "Donate",
          "Sell",
          "Custom"
        ],
        "type": "string",
        "description": "Represents the type of event recorded against an asset in its lifecycle.\r\nStandard events map to built-in asset tracking operations.\r\nWhen a user-defined custom event is recorded, EventTypeName is `Custom`.",
        "x-enum-descriptions": {
          "Available": "Asset was available.",
          "Checkout": "Asset was checked out to a person or location.",
          "CheckIn": "Asset was checked back in and returned to available status.",
          "Lease": "Asset was placed under a lease agreement.",
          "LeaseReturn": "Asset was returned after a lease agreement ended.",
          "Lost": "Asset was reported lost or missing.",
          "Found": "Asset was found after being reported lost.",
          "Repair": "Asset was sent for repair or maintenance.",
          "Broken": "Asset was marked as broken or damaged.",
          "Dispose": "Asset was disposed of (retired or scrapped).",
          "Donate": "Asset was donated.",
          "Sell": "Asset was sold.",
          "Custom": "A user-defined custom event was applied."
        }
      },
      "FieldType": {
        "required": [
          "fieldName",
          "hasList",
          "name",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the field type .",
            "format": "int32"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Field type name."
          },
          "hasList": {
            "type": "boolean",
            "description": "Indicates whether this field type presents a list of predefined options to choose from, such as Dropdown List, Radio Button List, or Checkbox List."
          },
          "fieldName": {
            "$ref": "#/components/schemas/FieldTypeName"
          }
        },
        "additionalProperties": false,
        "description": "Defines the type of a custom field (e.g., Text, Number, Date, Boolean) and whether it supports a predefined list of values."
      },
      "FieldTypeName": {
        "enum": [
          "TEXT",
          "NUMERIC",
          "NUMERICAUTOINCREMENT",
          "CURRENCY",
          "DATE",
          "DATEANDTIME",
          "DROPDOWNLIST",
          "MEMO",
          "EMAIL",
          "URL",
          "SCANNER",
          "RADIOBUTTONLIST",
          "CHECKBOXLIST",
          "GPSCOORDINATES"
        ],
        "type": "string",
        "description": "Enumerates all possible field types for CustomFields, such as TEXT, NUMERIC, DATE, CURRENCY, etc.",
        "x-enum-descriptions": {
          "TEXT": "Single line text field",
          "NUMERIC": "Numeric field",
          "NUMERICAUTOINCREMENT": "Auto increment numeric field",
          "CURRENCY": "Currency field",
          "DATE": "Date only field",
          "DATEANDTIME": "Date and time field",
          "DROPDOWNLIST": "Dropdown list field",
          "MEMO": "Multi-line memo field",
          "EMAIL": "Email address field",
          "URL": "URL field",
          "SCANNER": "Scanner input field",
          "RADIOBUTTONLIST": "Radio button list",
          "CHECKBOXLIST": "Checkbox list",
          "GPSCOORDINATES": "GPS coordinates field"
        }
      },
      "Frequency": {
        "enum": [
          "Daily",
          "Weekly",
          "Monthly",
          "Yearly"
        ],
        "type": "string",
        "description": "Represents how often a repeating maintenance recurs.",
        "x-enum-descriptions": {
          "Daily": "Recurs every day.",
          "Weekly": "Recurs every N week(s), on a specific day of the week.",
          "Monthly": "Recurs every N month(s), on a specific date.",
          "Yearly": "Recurs every year, on a specific month and date."
        }
      },
      "Fund": {
        "required": [
          "addedByRefGuid"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the fund.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name of the fund.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Description of the fund.",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "description": "Total allocated amount for this fund.",
            "format": "double",
            "nullable": true
          },
          "availableAmount": {
            "type": "number",
            "description": "Amount not yet allocated to assets.",
            "format": "double"
          },
          "totalDebits": {
            "type": "number",
            "description": "Total amount debited to active assets.",
            "format": "double"
          },
          "totalAssets": {
            "type": "integer",
            "description": "Number of active assets linked to this fund.",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "description": "Fund start date (yyyy-MM-dd).",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "Fund end date (yyyy-MM-dd).",
            "format": "date",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Additional notes about the fund.",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "description": "Whether this fund is active."
          },
          "addedByRefGuid": {
            "type": "string",
            "description": "Unqiue GUID referencing the user who created or manages this fund.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a fund record."
      },
      "FundAssetLinked": {
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the asset-fund link record.",
            "format": "int32"
          },
          "assetRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the asset.",
            "format": "int32"
          },
          "fundRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the fund.",
            "format": "int32"
          },
          "debitedFromFund": {
            "type": "number",
            "description": "Amount debited from this fund for the asset.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an asset linked to a fund."
      },
      "HistoryDetail": {
        "required": [
          "field",
          "historyDetailsRefId"
        ],
        "type": "object",
        "properties": {
          "historyDetailsRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the history details.",
            "format": "int32"
          },
          "field": {
            "minLength": 1,
            "type": "string",
            "description": "Name of the field on which the event was performed."
          },
          "changeFrom": {
            "type": "string",
            "description": "Previous value of the field before the change.",
            "nullable": true
          },
          "changeTo": {
            "type": "string",
            "description": "New value of the field after the change.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an history details associated with an asset and inventory item history."
      },
      "Image": {
        "type": "object",
        "properties": {
          "imageRefGuid": {
            "type": "string",
            "description": "Unique GUID of the image.",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "Public URL where the image is stored or accessible.",
            "nullable": true
          },
          "thumbnail_64": {
            "type": "string",
            "description": "Public URL of the 64-pixel thumbnail version of the image.",
            "nullable": true
          },
          "thumbnail_128": {
            "type": "string",
            "description": "Public URL of the 128-pixel thumbnail version of the image.",
            "nullable": true
          },
          "thumbnail_256": {
            "type": "string",
            "description": "Public URL of the 256-pixel thumbnail version of the image.",
            "nullable": true
          },
          "fileName": {
            "type": "string",
            "description": "Name of the uploaded image file.",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Specifies the category or source type of the image (for example, \"Your Uploads\", \"Stock Images\", or other upload types).",
            "nullable": true
          },
          "uploadDate": {
            "type": "string",
            "description": "Date and time when the image was uploaded.",
            "format": "date-time",
            "nullable": true
          },
          "uploadedByRefGuid": {
            "type": "string",
            "description": "GUID reference of the user who uploaded the image.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Short description or label associated with the image.",
            "nullable": true
          },
          "keywords": {
            "type": "string",
            "description": "Keywords associated with the image for search or filtering.",
            "nullable": true
          },
          "isStockImage": {
            "type": "boolean",
            "description": "Indicates whether the image is a stock image."
          }
        },
        "additionalProperties": false,
        "description": "Represents a image linked to an inventory item."
      },
      "ImageType": {
        "enum": [
          "Assigned",
          "UnAssigned",
          "ShowAll"
        ],
        "type": "string",
        "description": "Specifies the image assignment status used to filter images.",
        "x-enum-descriptions": {
          "Assigned": "Represents images that are assigned to a record.",
          "UnAssigned": "Represents images that are not assigned to any record.",
          "ShowAll": "Represents all images regardless of assignment status."
        }
      },
      "Insurance": {
        "required": [
          "addedByRefGuid"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the insurance.",
            "format": "int32"
          },
          "insuranceCo": {
            "type": "string",
            "description": "Name of the insurance company or provider.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Additional details or notes about the insurance policy.",
            "nullable": true
          },
          "person": {
            "type": "string",
            "description": "Name of the primary contact person for the insurance policy.",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Contact phone number for the insurance provider or representative.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Contact email address for the insurance provider or representative.",
            "nullable": true
          },
          "policy": {
            "type": "string",
            "description": "Policy number assigned by the insurance provider.",
            "nullable": true
          },
          "coverage": {
            "type": "string",
            "description": "Coverage details provided by the insurance policy.",
            "nullable": true
          },
          "limits": {
            "type": "string",
            "description": "Coverage limits or maximum claim amount defined by the policy.",
            "nullable": true
          },
          "deductible": {
            "type": "number",
            "description": "Deductible amount that must be paid before insurance coverage applies.",
            "format": "double",
            "nullable": true
          },
          "premium": {
            "type": "number",
            "description": "Premium amount paid for the insurance policy.",
            "format": "double",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Policy start date.",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "Policy end or expiration date.",
            "format": "date",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "description": "Indicates whether the insurance policy is currently active."
          },
          "addedByRefGuid": {
            "type": "string",
            "description": "Unqiue GUID referencing the user who created or manages this insurance.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a insurance record."
      },
      "InsuranceAssetLinked": {
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the asset-insurances link record.",
            "format": "int32"
          },
          "assetRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the asset.",
            "format": "int32"
          },
          "insuranceRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the insurance.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Response model containing the insurances linked to an asset."
      },
      "InventoryEvent": {
        "enum": [
          "Opening",
          "AddStock",
          "RemoveStock",
          "Adjustment",
          "Movement"
        ],
        "type": "string",
        "description": "Defines the types of inventory events that can occur in the system.",
        "x-enum-descriptions": {
          "Opening": "Initial stock entry when the inventory item is first created.",
          "AddStock": "Indicates that stock has been added to the inventory (e.g., through purchase or transfer in).",
          "RemoveStock": "Indicates that stock has been removed from the inventory (e.g., issued, consumed, or transferred out).",
          "Adjustment": "Represents a manual adjustment made to correct stock discrepancies.",
          "Movement": "Represents the transfer of stock between inventory storage locations."
        }
      },
      "InventoryItem": {
        "required": [
          "addedByRefGuid",
          "dateAdded",
          "description",
          "inventoryTagId",
          "refId",
          "stock",
          "unit"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the inventory.",
            "format": "int32"
          },
          "inventoryTagId": {
            "minLength": 1,
            "type": "string",
            "description": "Unique tag or code assigned to the inventory item for tracking."
          },
          "description": {
            "minLength": 1,
            "type": "string",
            "description": "Detailed description of the inventory item."
          },
          "addedByRefGuid": {
            "minLength": 1,
            "type": "string",
            "description": "Unqiue GUID referencing the user who created or manages this inventory item."
          },
          "dateAdded": {
            "type": "string",
            "description": "Datetime (UTC) when the item was added.",
            "format": "date-time"
          },
          "defaultImageRefGuid": {
            "type": "string",
            "description": "Unqiue GUID referencing the primary image record for the inventory item.",
            "nullable": true
          },
          "defaultImage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Image"
              }
            ],
            "description": "Represents a image linked to an inventory item.",
            "nullable": true
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Image"
            },
            "description": "A collection of all images associated with this item.",
            "nullable": true
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Document"
            },
            "description": "A collection of all documents associated with this item.",
            "nullable": true
          },
          "categoryRefId": {
            "type": "integer",
            "description": "Foreign key referencing the main category of the item.",
            "format": "int32",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "description": "Readable name of the main category (resolved from CategoryRefId).",
            "nullable": true
          },
          "subCategoryRefId": {
            "type": "integer",
            "description": "Foreign key referencing the main subcategory of the item.",
            "format": "int32",
            "nullable": true
          },
          "subCategoryName": {
            "type": "string",
            "description": "Readable name of the main subcategory (resolved from SubCategoryRefId).",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or remarks about the item.",
            "nullable": true
          },
          "sku": {
            "type": "string",
            "description": "Stock Keeping Unit – unique identifier used for managing stock.",
            "nullable": true
          },
          "brand": {
            "type": "string",
            "description": "Brand name of the item.",
            "nullable": true
          },
          "model": {
            "type": "string",
            "description": "Model name/number of the item.",
            "nullable": true
          },
          "vendor": {
            "type": "string",
            "description": "Supplier or vendor associated with the item.",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "Reference URL (e.g., vendor page, product page, or documentation).",
            "nullable": true
          },
          "size": {
            "type": "string",
            "description": "Size or dimensions of the item.",
            "nullable": true
          },
          "color": {
            "type": "string",
            "description": "Color of the item.",
            "nullable": true
          },
          "style": {
            "type": "string",
            "description": "Style or variant of the item (if applicable).",
            "nullable": true
          },
          "unit": {
            "minLength": 1,
            "type": "string",
            "description": "Unit of measurement (e.g., piece, box, kg, liter)."
          },
          "minQty": {
            "type": "number",
            "description": "Minimum quantity threshold for stock (used for re-order alerts).",
            "format": "double",
            "nullable": true
          },
          "maxQty": {
            "type": "number",
            "description": "Maximum quantity limit for stock (used for inventory control).",
            "format": "double",
            "nullable": true
          },
          "stock": {
            "type": "number",
            "description": "Current available stock quantity of the item.",
            "format": "double"
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldValue"
            },
            "description": "A collection of custom field values associated with the inventory items. May be null if no custom fields are defined.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single inventory item in the system, including identification, category, subcategory, stock, and associated custom fields."
      },
      "InventoryItemHistory": {
        "required": [
          "addedByRefGuid",
          "historyOn",
          "historyRefId"
        ],
        "type": "object",
        "properties": {
          "historyRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the history entry.",
            "format": "int32"
          },
          "historyOn": {
            "type": "string",
            "description": "Datetime (UTC) when the history event occurred.",
            "format": "date-time"
          },
          "event": {
            "type": "string",
            "description": "Type of event that occurred (e.g., Created, Updated, Deleted).",
            "nullable": true
          },
          "historyDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HistoryDetail"
            },
            "description": "Collection of field-level changes recorded for this history event.",
            "nullable": true
          },
          "addedByRefGuid": {
            "minLength": 1,
            "type": "string",
            "description": "GUID reference of the user who performed the action."
          },
          "transactionRefId": {
            "type": "integer",
            "description": "Foreign key referencing the inventory transaction this history entry is linked to. Null when the entry isn't tied to a transaction (e.g., item details edited).",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single audit-trail entry recorded against an inventory item."
      },
      "InventorySetting": {
        "type": "object",
        "properties": {
          "hasInventory": {
            "type": "boolean",
            "description": "Indicates whether inventory module is enabled.",
            "default": false
          },
          "field_InventoryTagId_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Inventory Tag ID field is enabled.",
            "default": true
          },
          "field_InventoryTagId_Label": {
            "type": "string",
            "description": "Display label for Inventory Tag ID field.",
            "default": "Inventory Tag ID",
            "nullable": true
          },
          "field_InventoryTagId_Required": {
            "type": "boolean",
            "description": "Indicates if Inventory Tag ID is required.",
            "default": true
          },
          "field_Description_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Description field is enabled.",
            "default": true
          },
          "field_Description_Label": {
            "type": "string",
            "description": "Display label for Description field.",
            "default": "Description",
            "nullable": true
          },
          "field_Description_Required": {
            "type": "boolean",
            "description": "Indicates if Description is required.",
            "default": true
          },
          "field_Unit_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Unit field is enabled.",
            "default": true
          },
          "field_Unit_Label": {
            "type": "string",
            "description": "Display label for Unit field.",
            "default": "Unit",
            "nullable": true
          },
          "field_Unit_Required": {
            "type": "boolean",
            "description": "Indicates if Unit is required.",
            "default": true
          },
          "field_Stock_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Stock field is enabled.",
            "default": true
          },
          "field_Stock_Label": {
            "type": "string",
            "description": "Display label for Stock field.",
            "default": "Stock",
            "nullable": true
          },
          "field_Stock_Required": {
            "type": "boolean",
            "description": "Indicates if Stock is required.",
            "default": true
          },
          "field_Notes_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Notes field is enabled.",
            "default": true
          },
          "field_Notes_Label": {
            "type": "string",
            "description": "Display label for Notes field.",
            "default": "Notes",
            "nullable": true
          },
          "field_Notes_Required": {
            "type": "boolean",
            "description": "Indicates if Notes is required.",
            "default": false
          },
          "field_Sku_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Sku field is enabled.",
            "default": false
          },
          "field_Sku_Label": {
            "type": "string",
            "description": "Display label for Sku field.",
            "default": "SKU",
            "nullable": true
          },
          "field_Sku_Required": {
            "type": "boolean",
            "description": "Indicates if Sku is required.",
            "default": false
          },
          "field_Size_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Size field is enabled.",
            "default": false
          },
          "field_Size_Label": {
            "type": "string",
            "description": "Display label for Size field.",
            "default": "Size",
            "nullable": true
          },
          "field_Size_Required": {
            "type": "boolean",
            "description": "Indicates if Size is required.",
            "default": false
          },
          "field_Color_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Color field is enabled.",
            "default": false
          },
          "field_Color_Label": {
            "type": "string",
            "description": "Display label for Color field.",
            "default": "Color",
            "nullable": true
          },
          "field_Color_Required": {
            "type": "boolean",
            "description": "Indicates if Color is required.",
            "default": false
          },
          "field_Style_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Style field is enabled.",
            "default": false
          },
          "field_Style_Label": {
            "type": "string",
            "description": "Display label for Style field.",
            "default": "Style",
            "nullable": true
          },
          "field_Style_Required": {
            "type": "boolean",
            "description": "Indicates if Style is required.",
            "default": false
          },
          "field_Brand_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Brand field is enabled.",
            "default": false
          },
          "field_Brand_Label": {
            "type": "string",
            "description": "Display label for Brand field.",
            "default": "Brand",
            "nullable": true
          },
          "field_Brand_Required": {
            "type": "boolean",
            "description": "Indicates if Brand is required.",
            "default": false
          },
          "field_Model_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Model field is enabled.",
            "default": false
          },
          "field_Model_Label": {
            "type": "string",
            "description": "Display label for Model field.",
            "default": "Model",
            "nullable": true
          },
          "field_Model_Required": {
            "type": "boolean",
            "description": "Indicates if Model is required.",
            "default": false
          },
          "field_Vendor_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Vendor field is enabled.",
            "default": false
          },
          "field_Vendor_Label": {
            "type": "string",
            "description": "Display label for Vendor field.",
            "default": "Vendor",
            "nullable": true
          },
          "field_Vendor_Required": {
            "type": "boolean",
            "description": "Indicates if Vendor is required.",
            "default": false
          },
          "field_VendorWebsite_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Vendor Website field is enabled.",
            "default": false
          },
          "field_VendorWebsite_Label": {
            "type": "string",
            "description": "Display label for Vendor Website field.",
            "default": "Vendor Website",
            "nullable": true
          },
          "field_VendorWebsite_Required": {
            "type": "boolean",
            "description": "Indicates if Vendor Website is required.",
            "default": false
          },
          "field_MinQty_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Min. Qty. field is enabled.",
            "default": false
          },
          "field_MinQty_Label": {
            "type": "string",
            "description": "Display label for Min. Qty. field.",
            "default": "Min. Qty.",
            "nullable": true
          },
          "field_MinQty_Required": {
            "type": "boolean",
            "description": "Indicates if Min. Qty. is required.",
            "default": false
          },
          "field_MaxQty_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Max. Qty. field is enabled.",
            "default": false
          },
          "field_MaxQty_Label": {
            "type": "string",
            "description": "Display label for Max. Qty. field.",
            "default": "Max. Qty.",
            "nullable": true
          },
          "field_MaxQty_Required": {
            "type": "boolean",
            "description": "Indicates if Max. Qty. is required.",
            "default": false
          },
          "field_Transaction_EventDate_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Transaction Event Date field is enabled.",
            "default": true
          },
          "field_Transaction_EventDate_Label": {
            "type": "string",
            "description": "Display label for Transaction Event Date field.",
            "default": "Event Date",
            "nullable": true
          },
          "field_Transaction_EventDate_Required": {
            "type": "boolean",
            "description": "Indicates if Transaction Event Date is required.",
            "default": true
          },
          "field_Transaction_Quantity_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Transaction Quantity field is enabled.",
            "default": true
          },
          "field_Transaction_Quantity_Label": {
            "type": "string",
            "description": "Display label for Transaction Quantity field.",
            "default": "Quantity",
            "nullable": true
          },
          "field_Transaction_Quantity_Required": {
            "type": "boolean",
            "description": "Indicates if Transaction Quantity is required.",
            "default": true
          },
          "field_Transaction_UnitPrice_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Transaction Unit Price field is enabled.",
            "default": false
          },
          "field_Transaction_UnitPrice_Label": {
            "type": "string",
            "description": "Display label for Transaction Unit Price field.",
            "default": "Unit Price",
            "nullable": true
          },
          "field_Transaction_UnitPrice_Required": {
            "type": "boolean",
            "description": "Indicates if Transaction Unit Price is required.",
            "default": false
          },
          "field_Transaction_TotalValue_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Transaction Total Value field is enabled.",
            "default": false
          },
          "field_Transaction_TotalValue_Label": {
            "type": "string",
            "description": "Display label for Transaction Total Value field.",
            "default": "Total Value",
            "nullable": true
          },
          "field_Transaction_TotalValue_Required": {
            "type": "boolean",
            "description": "Indicates if Transaction Total Value is required.",
            "default": false
          },
          "field_Transaction_PoNo_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Transaction PO No. field is enabled.",
            "default": true
          },
          "field_Transaction_PoNo_Label": {
            "type": "string",
            "description": "Display label for Transaction PO No. field.",
            "default": "PO No.",
            "nullable": true
          },
          "field_Transaction_PoNo_Required": {
            "type": "boolean",
            "description": "Indicates if Transaction PO No. is required.",
            "default": false
          },
          "field_Transaction_Notes_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Transaction Notes field is enabled.",
            "default": true
          },
          "field_Transaction_Notes_Label": {
            "type": "string",
            "description": "Display label for Transaction Notes field.",
            "default": "Notes",
            "nullable": true
          },
          "field_Transaction_Notes_Required": {
            "type": "boolean",
            "description": "Indicates if Transaction Notes is required.",
            "default": false
          },
          "person_List_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Person/Employee List field is enabled.",
            "default": true
          },
          "customer_List_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Customer List field is enabled.",
            "default": false
          },
          "field_TypeName_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Type name field is enabled.",
            "default": false
          },
          "signature_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Signature Pad is enabled.",
            "default": false
          },
          "field_Event_OpeningBalance_Label": {
            "type": "string",
            "description": "Display label for Opening Balance Event field.",
            "default": "Opening Balance",
            "nullable": true
          },
          "field_Event_AddToStock_Label": {
            "type": "string",
            "description": "Display label for Add to Stock Event field.",
            "default": "Add to Stock",
            "nullable": true
          },
          "field_Event_RemoveFromStock_Label": {
            "type": "string",
            "description": "Display label for Remove from Stock Event field.",
            "default": "Remove from Stock",
            "nullable": true
          },
          "field_Event_StockAdjustment_Label": {
            "type": "string",
            "description": "Display label for Stock Adjustment Event field.",
            "default": "Stock Adjustment",
            "nullable": true
          },
          "field_Location_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Inventory Location is enabled.",
            "default": false
          },
          "field_Location_Level": {
            "$ref": "#/components/schemas/LocationLevel"
          },
          "field_Level_1_Label": {
            "type": "string",
            "description": "Display label for Level 1: Bins. (Bins, Bay, Drawer)",
            "default": "Bin",
            "nullable": true
          },
          "field_Level_1_Required": {
            "type": "boolean",
            "description": "Indicates if Level 1 is required.",
            "default": false
          },
          "field_Level_2_Label": {
            "type": "string",
            "description": "Display label for Level 2: Shelf. (Shelf, Rack, Cabinet)",
            "default": "Shelf",
            "nullable": true
          },
          "field_Level_2_Required": {
            "type": "boolean",
            "description": "Indicates if Level 2 is required.",
            "default": false
          },
          "field_Level_3_Label": {
            "type": "string",
            "description": "Display label for Level 3: Aisle. (Aisle, Warehouse, Site)",
            "default": "Aisle",
            "nullable": true
          },
          "field_Level_3_Required": {
            "type": "boolean",
            "description": "Indicates if Level 3 is required.",
            "default": false
          },
          "autoTagging_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Automatic inventory tags is enabled.",
            "default": false
          },
          "nextTagId": {
            "type": "string",
            "description": "Defines Next generated tag ID.",
            "nullable": true
          },
          "padding_Enabled": {
            "type": "boolean",
            "description": "Indicates whether the Padding is enabled.",
            "default": false
          },
          "padding_Digits": {
            "type": "string",
            "description": "Defines Padding Digits.",
            "default": "4",
            "nullable": true
          },
          "prefix": {
            "type": "string",
            "description": "Defines Prefix.",
            "nullable": true
          },
          "suffix": {
            "type": "string",
            "description": "Defines Suffix.",
            "nullable": true
          },
          "nextTagStartingNumber": {
            "type": "integer",
            "description": "Defines Next Inventory Tag Starting Number.",
            "format": "int64",
            "default": 1
          }
        },
        "additionalProperties": false,
        "description": "Represents configuration settings for Inventory module including field visibility,\r\nlabels, required flags, transaction settings, and auto-tagging rules."
      },
      "Link": {
        "type": "object",
        "properties": {
          "assetRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the linked asset.",
            "format": "int32"
          },
          "linkType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LinkType"
              }
            ],
            "description": "Specifies whether the linked asset is a parent or child asset.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for collection of linked assets."
      },
      "LinkType": {
        "enum": [
          "Parent",
          "Child"
        ],
        "type": "string",
        "description": "Represents the an asset as parent or child.",
        "x-enum-descriptions": {
          "Parent": "Asset is parent.",
          "Child": "Asset is child."
        }
      },
      "Location": {
        "required": [
          "name",
          "refId",
          "site",
          "siteRefId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) for the location (positive integer only).",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Location Name (Location name cannot exceed 100 characters.)"
          },
          "siteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the site.",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "description": "Optional description for the location (cannot exceed 1000 characters).",
            "nullable": true
          },
          "site": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Site"
              }
            ],
            "description": "Represents a high-level classification for assets and/or inventory items."
          }
        },
        "additionalProperties": false,
        "description": "Represents a locations under a primary sites to organize assets and/or inventory items more granularly."
      },
      "LocationLevel": {
        "enum": [
          "Level_1",
          "Level_2",
          "Level_3"
        ],
        "type": "string",
        "description": "Defines the hierarchical structure of inventory location levels,\r\nindicating how locations are organized from top-level to most granular (e.g., Aisle, Shelf, Bins).",
        "x-enum-descriptions": {
          "Level_1": "For example Bins",
          "Level_2": "For example Shelf > Bins",
          "Level_3": " For example Aisle > Shelf > Bins"
        }
      },
      "MaintenanceCustomFieldValues": {
        "required": [
          "customField",
          "customFieldRefId",
          "refId",
          "value"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the custom field value. 0 if no value has been saved for this custom field yet.",
            "format": "int32"
          },
          "customFieldRefId": {
            "type": "integer",
            "description": "Foreign key referencing the custom field.",
            "format": "int32"
          },
          "value": {
            "minLength": 1,
            "type": "string",
            "description": "Value saved for this custom field. Empty if no value has been saved yet."
          },
          "customField": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomField"
              }
            ],
            "description": "Defines a customizable field that can be attached to entities like assets, inventory items, persons contacts, warranties etc. Includes type, label, and options."
          }
        },
        "additionalProperties": false,
        "description": "Stores the value of a CustomField for a specific entity. Links to the corresponding custom field definition."
      },
      "MaintenanceRequest": {
        "required": [
          "assetRefId",
          "title"
        ],
        "type": "object",
        "properties": {
          "assetRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) of the asset to associate with the maintenance.",
            "format": "int32"
          },
          "title": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Title of the maintenance. (cannot exceed 50 characters.)",
            "format": "string"
          },
          "details": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Details of the maintenance. (cannot exceed 1000 characters.)",
            "format": "string",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "Date when maintenance is due. Format: yyyy-MM-dd.",
            "format": "date",
            "nullable": true
          },
          "maintenanceBy": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Person doing maintenance. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaintenanceStatus"
              }
            ],
            "description": "System field to show current status of the maintenance. Allowed values: Scheduled, InProgress, OnHold, Cancelled, Completed.",
            "nullable": true
          },
          "cost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Total cost spent on this maintenance.",
            "format": "currency",
            "nullable": true
          },
          "dateCompleted": {
            "type": "string",
            "description": "Date when maintenance is completed. Format: yyyy-MM-dd.",
            "format": "date",
            "nullable": true
          },
          "repeating": {
            "type": "boolean",
            "description": "Indicates whether this maintenance repeats on a recurring schedule."
          },
          "frequency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Frequency"
              }
            ],
            "description": "How often the maintenance recurs. Only applies when <code>repeating</code> is true; null when <code>repeating</code> is false. Allowed values: Daily, Weekly, Monthly, Yearly.",
            "nullable": true
          },
          "recurEvery": {
            "type": "integer",
            "description": "The recurrence interval, whose meaning depends on <code>frequency</code>: null for Daily (not used); for Weekly this is the number of weeks between occurrences (e.g. 2 = every 2 weeks); for Monthly this is the number of months between occurrences (e.g. 3 = every 3 months); for Yearly this is the month of the year the maintenance recurs in (1 = January ... 12 = December). Also null when <code>repeating</code> is false.",
            "format": "int32",
            "nullable": true
          },
          "recurOn": {
            "type": "integer",
            "description": "The day the maintenance recurs on within the interval set by <code>recurEvery</code>, whose meaning depends on <code>frequency</code>: null for Daily (not used); for Weekly this is the day of the week (0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday); for Monthly this is the day of the month (1-31); for Yearly this is the day of the month within the month set by <code>recurEvery</code> (1-31). Also null when <code>repeating</code> is false.",
            "format": "int32",
            "nullable": true
          },
          "customFieldRequest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldRequest"
            },
            "description": "Represents a value submitted for a specific custom field. Used for text, numeric, date, dropdown, radio, or checkbox list fields.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding or updating an asset maintenance.\r\nContains the associated asset, title, details, due date, assignee, status, cost, completion date,\r\nrecurrence settings, and optional custom fields."
      },
      "MaintenanceSetting": {
        "type": "object",
        "properties": {
          "field_Title_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Title is enabled. Always true — this field cannot be disabled.",
            "default": true
          },
          "field_Title_Required": {
            "type": "boolean",
            "description": "Indicates whether Title is required. Always true — this field is always required.",
            "default": true
          },
          "field_Details_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Details is enabled.",
            "default": false
          },
          "field_Details_Required": {
            "type": "boolean",
            "description": "Indicates whether Details is required.",
            "default": false
          },
          "field_DueDate_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Due Date is enabled. Always true — this field cannot be disabled.",
            "default": true
          },
          "field_DueDate_Required": {
            "type": "boolean",
            "description": "Indicates whether Due Date is required.",
            "default": false
          },
          "field_MaintenanceBy_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Maintenance By is enabled.",
            "default": false
          },
          "field_MaintenanceBy_Required": {
            "type": "boolean",
            "description": "Indicates whether Maintenance By is required.",
            "default": false
          },
          "field_Status_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Status is enabled. Always true — this field cannot be disabled.",
            "default": true
          },
          "field_Status_Required": {
            "type": "boolean",
            "description": "Indicates whether Status is required.",
            "default": false
          },
          "field_Cost_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Cost is enabled.",
            "default": false
          },
          "field_Cost_Required": {
            "type": "boolean",
            "description": "Indicates whether Cost is required.",
            "default": false
          },
          "field_DateCompleted_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Date Completed is enabled.",
            "default": false
          },
          "field_DateCompleted_Required": {
            "type": "boolean",
            "description": "Indicates whether Date Completed is required.",
            "default": false
          },
          "field_Repeating_Enabled": {
            "type": "boolean",
            "description": "Indicates whether recurring (repeating) maintenance is enabled. Always true — this field cannot be disabled.",
            "default": true
          },
          "field_Repeating_Required": {
            "type": "boolean",
            "description": "Indicates whether recurring (repeating) maintenance is required. Always true — this field is always required.",
            "default": true
          }
        },
        "additionalProperties": false,
        "description": "Represents configuration settings for maintenance fields, including\r\nvisibility (enabled/disabled) and validation rules (required)."
      },
      "MaintenanceStatus": {
        "enum": [
          "Scheduled",
          "InProgress",
          "OnHold",
          "Cancelled",
          "Completed"
        ],
        "type": "string",
        "description": "Represents the status of a maintenance.",
        "x-enum-descriptions": {
          "Scheduled": "Maintenance has been scheduled but not yet started.",
          "InProgress": "Maintenance is currently in progress.",
          "OnHold": "Maintenance has been paused or put on hold.",
          "Cancelled": "Maintenance was cancelled before completion.",
          "Completed": "Maintenance has been completed."
        }
      },
      "MoveSubCategoryRequest": {
        "required": [
          "categoryRefId"
        ],
        "type": "object",
        "properties": {
          "categoryRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) of the target category to move the subcategory into. Must be a positive integer.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request model for moving a subcategory to another category."
      },
      "Person": {
        "required": [
          "addedByRefGuid",
          "name",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) for the person (positive integer only).",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Person Name (person name cannot exceed 100 characters.)"
          },
          "title": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Title of the person. (title cannot exceed 100 characters.)",
            "nullable": true
          },
          "phone": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "Phone number of the person. (phone cannot exceed 20 characters.)",
            "nullable": true
          },
          "email": {
            "maxLength": 70,
            "minLength": 0,
            "type": "string",
            "description": "Email of the person. (email cannot exceed 70 characters.)",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Notes or Comment (notes cannot exceed 1000 characters.)",
            "nullable": true
          },
          "empId": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "EmpId of the person. (notes cannot exceed 50 characters.)",
            "nullable": true
          },
          "siteRefId": {
            "type": "integer",
            "description": "Foreign key referencing the site.",
            "format": "int32",
            "nullable": true
          },
          "siteName": {
            "type": "string",
            "description": "Readable name of the site (resolved from SiteRefId).",
            "nullable": true
          },
          "locationRefId": {
            "type": "integer",
            "description": "Foreign key referencing the location.",
            "format": "int32",
            "nullable": true
          },
          "locationName": {
            "type": "string",
            "description": "Readable name of the location (resolved from LocationRefId).",
            "nullable": true
          },
          "departmentRefId": {
            "type": "integer",
            "description": "Foreign key referencing the department.",
            "format": "int32",
            "nullable": true
          },
          "departmentName": {
            "type": "string",
            "description": "Readable name of the department (resolved from DepartmentRefId).",
            "nullable": true
          },
          "addedByRefGuid": {
            "type": "string",
            "description": "Unqiue GUID referencing the user who created or manages this person.",
            "nullable": true
          },
          "customFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonsCustomFieldValues"
            },
            "description": "A collection of custom field values associated with the person. May be null if no custom fields are defined.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a person details, containing identifying information, contact details, \r\nand references to related entities such as site, location, and department."
      },
      "PersonSetting": {
        "type": "object",
        "properties": {
          "field_FullName_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Full name of the person / employee is enabled.",
            "default": true
          },
          "field_FullName_Required": {
            "type": "boolean",
            "description": "Indicates whether Full name of the person / employee is required.",
            "default": true
          },
          "field_Email_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Email of the person is enabled.",
            "default": true
          },
          "field_Email_Required": {
            "type": "boolean",
            "description": "Indicates whether Email of the person is required.",
            "default": false
          },
          "field_EmployeeId_Enabled": {
            "type": "boolean",
            "description": "Indicates whether For example Employee ID, Student ID, etc is enabled.",
            "default": true
          },
          "field_EmployeeId_Required": {
            "type": "boolean",
            "description": "Indicates whether For example Employee ID, Student ID, etc is required.",
            "default": false
          },
          "field_Title_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Title of the person is enabled.",
            "default": true
          },
          "field_Title_Required": {
            "type": "boolean",
            "description": "Indicates whether Title of the person is required.",
            "default": false
          },
          "field_Phone_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Phone number of the person is enabled.",
            "default": true
          },
          "field_Phone_Required": {
            "type": "boolean",
            "description": "Indicates whether Phone number of the person is required.",
            "default": false
          },
          "field_Notes_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Text area for notes is enabled.",
            "default": true
          },
          "field_Notes_Required": {
            "type": "boolean",
            "description": "Indicates whether Text area for notes is required.",
            "default": false
          },
          "field_Site_Enabled": {
            "type": "boolean",
            "description": "Indicates whether System field to link person to a Site is enabled.",
            "default": true
          },
          "field_Site_Required": {
            "type": "boolean",
            "description": "Indicates whether System field to link person to a Site is required.",
            "default": false
          },
          "field_Location_Enabled": {
            "type": "boolean",
            "description": "Indicates whether System field to link person to a Location is enabled.",
            "default": true
          },
          "field_Location_Required": {
            "type": "boolean",
            "description": "Indicates whether System field to link person to a Locatio is required.",
            "default": false
          },
          "field_Department_Enabled": {
            "type": "boolean",
            "description": "Indicates whether System field to link person to a Department is enabled.",
            "default": true
          },
          "field_Department_Required": {
            "type": "boolean",
            "description": "Indicates whether System field to link person to a Department is required.",
            "default": false
          },
          "field_FullName_Unique": {
            "type": "boolean",
            "description": "Specifies whether Full Name serves as the unique identifier. When false, Email is used as the unique identifier instead.",
            "default": true
          }
        },
        "additionalProperties": false,
        "description": "Represents configuration settings for Person fields, including\r\nvisibility (enabled/disabled), validation rules (required),\r\nand uniqueness constraints for key identifiers such as Full Name and Email."
      },
      "PersonsCustomFieldValues": {
        "required": [
          "customField",
          "customFieldRefId",
          "refId",
          "value"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the custom field value.",
            "format": "int32"
          },
          "customFieldRefId": {
            "type": "integer",
            "description": "Foreign key referencing the custom field.",
            "format": "int32"
          },
          "value": {
            "minLength": 1,
            "type": "string",
            "description": "value of the custom field."
          },
          "customField": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomField"
              }
            ],
            "description": "Defines a customizable field that can be attached to entities like assets, inventory items, persons contacts, warranties etc. Includes type, label, and options."
          }
        },
        "additionalProperties": false,
        "description": "Stores the value of a CustomField for a specific entity. Links to the corresponding custom field definition."
      },
      "Result": {
        "enum": [
          "Success",
          "NotFound",
          "ErrorOccoured",
          "AccessDenied",
          "AlreadyAutherized",
          "TokenExpired",
          "MissingToken",
          "TokenNotfound",
          "BadRequest",
          "Conflict",
          "InvalidRequest",
          "NotImplemented",
          "NotAllowed",
          "TooManyRequests",
          "BadGateway",
          "GatewayTimeout",
          "ServiceUnavailable",
          "InternalServerError",
          "UnauthorisedAccess",
          "FeatureDisabled",
          "PlanLimitReached"
        ],
        "type": "string",
        "description": "Enumerates possible outcomes or statuses of an operation, such as Success, Success, or ErrorOccoured.",
        "x-enum-descriptions": {
          "Success": "Request completed successfully.",
          "NotFound": "The requested resource could not be found.",
          "ErrorOccoured": "An unexpected error occurred during the operation.",
          "AccessDenied": "Forbidden access denied.",
          "AlreadyAutherized": "You are already autherized.",
          "TokenExpired": "Unauthorized access. AuthToken is expired.",
          "MissingToken": "Invalid or missing/expired Token.",
          "TokenNotfound": "Token not found or invalid token.",
          "BadRequest": "Invalid request (e.g., missing or incorrect refId)",
          "Conflict": "Resource already exists.",
          "InvalidRequest": "Validation error",
          "NotImplemented": "Not implemented",
          "NotAllowed": "Method Not Allowed",
          "TooManyRequests": "Too many requests. Please try again later.",
          "BadGateway": "Bad Gateway.",
          "GatewayTimeout": "Gateway Timeout.",
          "ServiceUnavailable": "Service temporarily unavailable",
          "InternalServerError": "Internal Server Error",
          "UnauthorisedAccess": "Unauthorized access",
          "FeatureDisabled": "Feature disabled.",
          "PlanLimitReached": "Subscription plan limit reached."
        }
      },
      "ScanType": {
        "enum": [
          "DefaultScanner",
          "DeviceScanner"
        ],
        "type": "string",
        "description": "Specifies the type of scanner to be used for barcode or QR code scanning.",
        "x-enum-descriptions": {
          "DefaultScanner": "Uses the application's built-in default scanner to scan using the device camera. Supports QR Code, 2D Barcode (Data Matrix), Code 39, Code 128, UPC-A, UPC-E, EAN-8, EAN-13, and Code 93.",
          "DeviceScanner": "Uses the device’s native camera or hardware scanner for scanning."
        }
      },
      "SearchType": {
        "enum": [
          "Contains",
          "Exact",
          "StartWith",
          "EndsWith"
        ],
        "type": "string",
        "description": "Defines the available search types that can be used in queries.",
        "x-enum-descriptions": {
          "Contains": "Matches records that contain the specified value anywhere.",
          "Exact": "Matches records that exactly equal the specified value.",
          "StartWith": "Matches records that begin with the specified value.",
          "EndsWith": "Matches records that end with the specified value."
        }
      },
      "Shelf": {
        "required": [
          "name",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) for the Shelf (positive integer only).",
            "format": "int32"
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Shelf Name (Shelf name cannot exceed 100 characters.)"
          },
          "bins": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Bin"
            },
            "description": "A collection of bins associated with this shelves.May be empty if none are defined.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a shelf within an aisle in the inventory storage hierarchy.\r\nA shelf contains one or more bins. Applicable only when multi-quantiy feature is enabled"
      },
      "Site": {
        "required": [
          "name",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) for the site (positive integer only).",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Site Name (site name cannot exceed 50 characters.)"
          },
          "address1": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "description": "Address1 (address1 cannot exceed 500 characters.)",
            "nullable": true
          },
          "address2": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "description": "Address2 (address2 cannot exceed 500 characters.)",
            "nullable": true
          },
          "city": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "City (city cannot exceed 50 characters.)",
            "nullable": true
          },
          "state": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "State (state cannot exceed 50 characters.)",
            "nullable": true
          },
          "zip": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Zip (zip cannot exceed 50 characters.)",
            "nullable": true
          },
          "countryRefId": {
            "type": "integer",
            "description": "Foreign key referencing the country.",
            "format": "int32",
            "nullable": true
          },
          "countryName": {
            "type": "string",
            "description": "Readable name of the country (resolved from CountryRefId).",
            "nullable": true
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Description (description cannot exceed 1000 characters.)",
            "nullable": true
          },
          "locations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Location"
            },
            "description": "A collection of locations associated with this entity. May be empty if none are defined.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a high-level classification for assets and/or inventory items."
      },
      "SkippedAsset": {
        "required": [
          "assetRefId",
          "message"
        ],
        "type": "object",
        "properties": {
          "assetRefId": {
            "type": "integer",
            "description": "Unique identifier (primary key) of the skipped asset.",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "description": "Reason the asset was skipped: already audited under the audit name, or not found (also returned when the asset is inactive or outside your access).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An asset that was skipped during a bulk operation, with the reason."
      },
      "SortOrder": {
        "enum": [
          "Asc",
          "Desc"
        ],
        "type": "string",
        "description": "The sorting direction (Ascending or Descending).",
        "x-enum-descriptions": {
          "Asc": "Sorts results in ascending order.",
          "Desc": "Sorts results in descending order."
        }
      },
      "Status": {
        "enum": [
          "Available",
          "Checkout",
          "Lease",
          "Lost",
          "Repair",
          "Broken",
          "Dispose",
          "Donate",
          "Sell",
          "Custom"
        ],
        "type": "string",
        "description": "Represents the current lifecycle status of an asset.\r\nStandard statuses reflect the outcome of the last event applied to the asset.\r\nWhen a custom event is applied, Status is `Custom`.",
        "x-enum-descriptions": {
          "Available": "Asset is available and not currently assigned to any event.",
          "Checkout": "Asset has been checked out to a person or location.",
          "Lease": "Asset is currently under an active lease agreement.",
          "Lost": "Asset has been reported lost or missing.",
          "Repair": "Asset is currently under repair or maintenance.",
          "Broken": "Asset has been marked as broken or damaged beyond normal use.",
          "Dispose": "Asset has been disposed of (retired or scrapped).",
          "Donate": "Asset has been donated.",
          "Sell": "Asset has been sold.",
          "Custom": "Asset status reflects a user-defined custom event."
        }
      },
      "StockSummary": {
        "type": "object",
        "properties": {
          "aisleRefId": {
            "type": "integer",
            "description": "Foreign key referencing the aisle. Populated only when inventory location level is configured as Aisle > Shelf > Bins.",
            "format": "int32",
            "nullable": true
          },
          "shelfRefId": {
            "type": "integer",
            "description": "Foreign key referencing the shelf. Populated only when inventory location level is configured as Shelf > Bins or Aisle > Shelf > Bins.",
            "format": "int32",
            "nullable": true
          },
          "binRefId": {
            "type": "integer",
            "description": "Foreign key referencing the bin. Populated for any inventory location level, since Bins is the lowest level in every configuration.",
            "format": "int32",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "description": "Stock quantity held at this location.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the stock quantity held at a single storage location (Aisle/Shelf/Bin) for an\r\ninventory item. Only the ref id(s) relevant to the configured inventory\r\nlocation level (Bins / Shelf-Bins / Aisle-Shelf-Bins) are populated; the rest are null."
      },
      "StockType": {
        "enum": [
          "All",
          "Ideal",
          "IdealAndLow",
          "IdealAndOverflow",
          "Low",
          "LowAndOverflow",
          "Overflow"
        ],
        "type": "string",
        "description": "Represents the stock availability classification for inventory items.",
        "x-enum-descriptions": {
          "All": "Includes all stock types without any filtering.",
          "Ideal": "Includes items with ideal stock levels (within the desired range).",
          "IdealAndLow": "Includes items with either ideal or low stock levels.",
          "IdealAndOverflow": "Includes items with either ideal or overflow (excess) stock levels.",
          "Low": "Includes items with low stock levels (below the minimum threshold)",
          "LowAndOverflow": " Includes items with either low or overflow stock levels.",
          "Overflow": "Includes items with overflow stock levels (above the maximum threshold)."
        }
      },
      "SubCategory": {
        "required": [
          "category",
          "categoryRefId",
          "dateAdded",
          "name",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) for the subcategory (positive integer only).",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "SubCategory Name (SubCategory name cannot exceed 50 characters.)"
          },
          "categoryRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the category.",
            "format": "int32"
          },
          "dateAdded": {
            "type": "string",
            "description": "Datetime (UTC) when the sub categories was added.",
            "format": "date-time"
          },
          "category": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Category"
              }
            ],
            "description": "Represents a high-level classification for assets and/or inventory items."
          }
        },
        "additionalProperties": false,
        "description": "Represents a subcategory under a primary category to organize assets and/or inventory items more granularly."
      },
      "TimeFormat": {
        "required": [
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the time format.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Display name of the time format (e.g., 12-Hour).",
            "nullable": true
          },
          "format": {
            "type": "string",
            "description": "Time format pattern string used for formatting (e.g., hh:mm tt).",
            "nullable": true
          },
          "example": {
            "type": "string",
            "description": "Example time rendered using this format (e.g., 02:30 PM).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a time display format available for user and configuration."
      },
      "TimeZone": {
        "required": [
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the time zone.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Display name of the time zone (e.g., Eastern Standard Time).",
            "nullable": true
          },
          "gmt": {
            "type": "string",
            "description": "GMT offset label for the time zone (e.g., GMT-05:00).",
            "nullable": true
          },
          "offset": {
            "type": "number",
            "description": "Numeric UTC offset in hours (e.g., -5.0 for UTC-5).",
            "format": "double"
          },
          "id": {
            "type": "string",
            "description": "IANA or Windows time zone identifier (e.g., America/New_York).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a time zone available for user and configuration."
      },
      "Transaction": {
        "required": [
          "addedByRefGuid",
          "dateAdded",
          "inventoryEvent",
          "inventoryItemRefId",
          "refId"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the inventory transaction.",
            "format": "int32"
          },
          "inventoryItemRefId": {
            "type": "integer",
            "description": "Reference ID of the associated inventory item.",
            "format": "int32"
          },
          "inventoryEvent": {
            "$ref": "#/components/schemas/InventoryEvent"
          },
          "addedByRefGuid": {
            "minLength": 1,
            "type": "string",
            "description": "Unique GUID of the user who added the transaction."
          },
          "personRefId": {
            "type": "integer",
            "description": "Reference ID of the person related to the transaction.",
            "format": "int32",
            "nullable": true
          },
          "customerRefId": {
            "type": "integer",
            "description": "Reference ID of the customer related to the transaction.",
            "format": "int32",
            "nullable": true
          },
          "personName": {
            "type": "string",
            "description": "person/customer name related to the transaction.",
            "nullable": true
          },
          "eventDate": {
            "type": "string",
            "description": "Date added by user at the time of the transaction.",
            "format": "date-time",
            "nullable": true
          },
          "refNo": {
            "type": "string",
            "description": "Reference number associated with the transaction.",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "description": "Quantity of inventory involved in the transaction.",
            "format": "double"
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost of the item at the time of the transaction.",
            "format": "double",
            "nullable": true
          },
          "totalCost": {
            "type": "number",
            "description": "Total cost of the transaction (Quantity × UnitCost).",
            "format": "double",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments related to the transaction.",
            "nullable": true
          },
          "signature": {
            "type": "string",
            "description": "Unique identifier (GUID) of the signature associated with this transaction.",
            "nullable": true
          },
          "dateAdded": {
            "type": "string",
            "description": "Datetime (UTC) when the transaction record was created in the system.",
            "format": "date-time"
          },
          "runningBalance": {
            "type": "number",
            "description": "Running balance after the transaction was processed.",
            "format": "double"
          },
          "aisle": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Aisle name indicating the top-level storage location where the inventory item is placed.",
            "format": "string",
            "nullable": true
          },
          "shelf": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Shelf name within the specified aisle representing the intermediate storage level.",
            "format": "string",
            "nullable": true
          },
          "bin": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Bin Name within the specified shelf representing the exact storage position of the item.",
            "format": "string",
            "nullable": true
          },
          "transactionSummaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionSummary"
            },
            "description": "Location-wise breakdown of this transaction, one entry per Aisle/Shelf/Bin combination the transaction quantity was split across. Returned only when inventory multi-quantity feature is enabled.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a transaction record for inventory item, including details\r\nsuch as event type, quantity, cost, and associated person or customer."
      },
      "TransactionLocationEntry": {
        "required": [
          "quantity"
        ],
        "type": "object",
        "properties": {
          "aisleRefId": {
            "type": "integer",
            "description": "Reference ID (primary key) of the aisle. Omit or set to 0 when the location level does not include aisles.",
            "format": "int32",
            "nullable": true
          },
          "shelfRefId": {
            "type": "integer",
            "description": "Reference ID (primary key) of the shelf. Omit or set to 0 when the location level does not include shelves.",
            "format": "int32",
            "nullable": true
          },
          "binRefId": {
            "type": "integer",
            "description": "Reference ID (primary key) of the bin.",
            "format": "int32",
            "nullable": true
          },
          "quantity": {
            "maximum": 999999999999999,
            "minimum": 0.00001,
            "type": "number",
            "description": "Quantity at this specific location. Must be greater than zero.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Represents a single location entry in a multi-quantity inventory transaction.\r\nEach entry specifies the quantity allocated to a particular storage location\r\nidentified by its Aisle, Shelf, and Bins reference IDs.\r\nUsed within the Locations array of AddTransactionRequest for accounts\r\nwith stock-location tracking enabled."
      },
      "TransactionSummary": {
        "type": "object",
        "properties": {
          "aisleRefId": {
            "type": "integer",
            "description": "Foreign key referencing the aisle. Populated only when inventory location level is configured as Aisle > Shelf > Bins.",
            "format": "int32",
            "nullable": true
          },
          "shelfRefId": {
            "type": "integer",
            "description": "Foreign key referencing the shelf. Populated only when inventory location level is configured as Shelf > Bins or Aisle > Shelf > Bins.",
            "format": "int32",
            "nullable": true
          },
          "binRefId": {
            "type": "integer",
            "description": "Foreign key referencing the bin. Populated for any inventory location level, since Bins is the lowest level in every configuration.",
            "format": "int32",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "description": "Stock quantity held at this location.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the single storage location (Aisle/Shelf/Bin) and quantity involved in one\r\ninventory transaction. Returned only when the inventory Multi-Quantity feature is enabled."
      },
      "UnlinkContractAssetsRequest": {
        "required": [
          "assetRefIds"
        ],
        "type": "object",
        "properties": {
          "assetRefIds": {
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "One or more asset reference IDs to unlink from the contract. Maximum 100 items."
          }
        },
        "additionalProperties": false,
        "description": "Request model for unlinking one or more assets from a contract."
      },
      "UnlinkFundAssetsRequest": {
        "required": [
          "assetRefIds"
        ],
        "type": "object",
        "properties": {
          "assetRefIds": {
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "One or more asset reference IDs to unlink from the fund. Maximum 100 items."
          }
        },
        "additionalProperties": false,
        "description": "Request model for unlinking one or more assets from a fund."
      },
      "UnlinkInsuranceAssetsRequest": {
        "required": [
          "assetRefIds"
        ],
        "type": "object",
        "properties": {
          "assetRefIds": {
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "One or more asset reference IDs to unlink from the insurance. Maximum 100 items."
          }
        },
        "additionalProperties": false,
        "description": "Request model for unlinking one or more assets from a insurance."
      },
      "UpdateAisleRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the aisle (Aisle name cannot exceed 100 characters.)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating aisle. Applicable only when multi-quantiy feature is enabled"
      },
      "UpdateAssetRequest": {
        "required": [
          "assetTagId",
          "description"
        ],
        "type": "object",
        "properties": {
          "assetTagId": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Unique tag identifier assigned to the asset (e.g., barcode or QR code label). Cannot exceed 50 characters.",
            "format": "string"
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Detailed description of the asset including its purpose, specifications, or notes. Cannot exceed 1000 characters.",
            "format": "string"
          },
          "brand": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Brand or manufacturer name of the asset (e.g., Dell, HP, Samsung). Cannot exceed 50 characters.",
            "format": "string",
            "nullable": true
          },
          "model": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Model name or number of the asset as specified by the manufacturer. Cannot exceed 50 characters.",
            "format": "string",
            "nullable": true
          },
          "serialNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Unique serial number assigned by the manufacturer for asset identification and warranty tracking. Cannot exceed 50 characters.",
            "format": "string",
            "nullable": true
          },
          "purchaseDate": {
            "type": "string",
            "description": "The date the asset was purchased. Format: yyyy-MM-dd.",
            "format": "date",
            "nullable": true
          },
          "purchaseFrom": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the vendor or supplier from whom the asset was purchased. Cannot exceed 100 characters.",
            "format": "string",
            "nullable": true
          },
          "cost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Original purchase price of the asset at the time of acquisition.",
            "format": "currency",
            "nullable": true
          },
          "siteRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Foreign key referencing the site or facility where the asset is located.",
            "format": "int32",
            "nullable": true
          },
          "locationRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Foreign key referencing the physical location where the asset is stored or deployed.",
            "format": "int32",
            "nullable": true
          },
          "categoryRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Foreign key referencing the asset's primary category (e.g., IT Equipment, Furniture, Vehicles).",
            "format": "int32",
            "nullable": true
          },
          "subCategoryRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Foreign key referencing the sub-category for more granular asset classification.",
            "format": "int32",
            "nullable": true
          },
          "departmentRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Foreign key referencing the department responsible for or assigned to this asset.",
            "format": "int32",
            "nullable": true
          },
          "depreciationMethod": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DepreciationMethod"
              }
            ],
            "description": "Type of Depreciation Method. Allowed values: StraightLine, DecliningBalance, DecliningBalance150Percent, SumoftheYearsDigits, DoubleDecliningBalance.",
            "nullable": true
          },
          "dateAcquired": {
            "type": "string",
            "description": "The date the asset was formally acquired or put into service. Format: yyyy-MM-dd.",
            "format": "date",
            "nullable": true
          },
          "isDepreciable": {
            "type": "boolean",
            "description": "Indicates whether this asset is subject to depreciation calculations."
          },
          "initialCost": {
            "maximum": 999999999999999,
            "minimum": 0.01,
            "type": "number",
            "description": "The original value of the asset at the start of its depreciable life.",
            "format": "currency",
            "nullable": true
          },
          "salvageValue": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "The estimated residual or scrap value of the asset at the end of its useful life.",
            "format": "currency",
            "nullable": true
          },
          "assetLife": {
            "maximum": 999,
            "minimum": 1,
            "type": "integer",
            "description": "The expected useful lifespan of the asset, in months.",
            "format": "int32",
            "nullable": true
          },
          "customFieldRequest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldRequest"
            },
            "description": "Represents a value submitted for a specific custom field. Used for text, numeric, date, dropdown, radio, or checkbox list fields.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for update an asset.\r\nContains core item details, category/location assignment, purchase and depreciation\r\ninformation, and optional custom fields."
      },
      "UpdateAuditRequest": {
        "required": [
          "auditNameRefId",
          "locationRefId",
          "recordGps",
          "siteRefId",
          "updateAssetLocation"
        ],
        "type": "object",
        "properties": {
          "auditNameRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the audit name to audit the asset against. Must not be locked.",
            "format": "int32"
          },
          "siteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the site where the audit took place.",
            "format": "int32"
          },
          "locationRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the location where the audit took place. Must belong to <code>siteRefId</code>.",
            "format": "int32"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Text area for notes. (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "updateAssetLocation": {
            "type": "boolean",
            "description": "When true, updates the asset's own site/location to match <code>siteRefId/locationRefId</code> and logs a history entry for the change."
          },
          "recordGps": {
            "type": "boolean",
            "description": "Indicates whether GPS coordinates were captured for this audit."
          },
          "latitude": {
            "maximum": 90,
            "minimum": -90,
            "type": "number",
            "description": "Latitude coordinate where the audit was performed. Required when <code>recordGps</code> is true.",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "maximum": 180,
            "minimum": -180,
            "type": "number",
            "description": "Longitude coordinate where the audit was performed. Required when <code>recordGps</code> is true.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an asset audit."
      },
      "UpdateBinRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "aisleRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Optional foreign key referencing the aisle. Set null to create an unallocated. Required only when the inventory location hierarchy is configured as Aisle > Shelf > Bins.",
            "format": "int32",
            "nullable": true
          },
          "shelfRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Optional foreign key referencing the shelf. Set null to create an unallocated bin (not assigned to any shelf). Required only when the inventory location hierarchy is configured as Shelf > Bins.",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Updated name of the Bin (Bin Name cannot exceed 100 characters.)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating bin. Applicable only when multi-quantiy feature is enabled"
      },
      "UpdateBrokenEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the asset was found broken. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for broken in Setup Events.",
            "format": "date-time"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Broken notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating a broken event."
      },
      "UpdateCategoryRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the category (cannot exceed 50 characters.)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating category."
      },
      "UpdateCheckinEventRequest": {
        "required": [
          "checkinFrom",
          "date1"
        ],
        "type": "object",
        "properties": {
          "checkinFrom": {
            "$ref": "#/components/schemas/AssignTo"
          },
          "date1": {
            "type": "string",
            "description": "Check-in (return) date. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for check-in in Setup Events (the same setting as check-out time).",
            "format": "date-time"
          },
          "siteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the site the asset was checked in from. Required when <code>checkinFrom</code> is <code>SiteLocation</code>.",
            "format": "int32",
            "nullable": true
          },
          "locationRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the location the asset was checked in from. Used when <code>checkinFrom</code> is <code>SiteLocation</code>; must belong to <code>siteRefId</code>.",
            "format": "int32",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Check-in notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating a check-in event."
      },
      "UpdateCheckoutEventRequest": {
        "required": [
          "checkoutTo"
        ],
        "type": "object",
        "properties": {
          "checkoutTo": {
            "$ref": "#/components/schemas/AssignTo"
          },
          "date1": {
            "type": "string",
            "description": "Check-out date. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when check-out time is enabled in Setup Events.",
            "format": "date-time",
            "nullable": true
          },
          "date2": {
            "type": "string",
            "description": "Due date. Leave empty for no due date. Same format as <code>date1</code>.",
            "format": "date-time",
            "nullable": true
          },
          "personRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the person the asset is checked out to. Required when <code>checkoutTo</code> is <code>Person</code>.",
            "format": "int32",
            "nullable": true
          },
          "siteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the site the asset is checked out to. Required when <code>checkoutTo</code> is <code>SiteLocation</code>.",
            "format": "int32",
            "nullable": true
          },
          "locationRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the location the asset is checked out to. Used when <code>checkoutTo</code> is <code>SiteLocation</code>; must belong to <code>siteRefId</code>.",
            "format": "int32",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Check-out notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating a check-out event to an asset."
      },
      "UpdateContractRequest": {
        "required": [
          "contractTitle",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "contractTitle": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Title or name of the contract or license. (cannot exceed 50 characters.)",
            "format": "string"
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Additional details or notes about the contract or license. (cannot exceed 1000 characters.)",
            "format": "string",
            "nullable": true
          },
          "hyperlink": {
            "maxLength": 150,
            "minLength": 0,
            "type": "string",
            "description": "Website URL or hyperlink associated with the contract or license. (cannot exceed 150 characters.)",
            "format": "uri",
            "nullable": true
          },
          "contractNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Contract or license number assigned by the vendor or provider. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "vendor": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the vendor associated with the contract. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "contactPerson": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the primary contact person for the contract or license. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "phone": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "Phone number of the contract or license contact person. (cannot exceed 20 characters.)",
            "format": "tel",
            "nullable": true
          },
          "cost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Cost of the contract or license.",
            "format": "currency",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Start date of the contract or license (yyyy-MM-dd).",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "End date or expiration date of the contract or license (yyyy-MM-dd). Required unless NoEndDate is true (returns 422 if missing). When NoEndDate is true, send null; any stored end date is cleared.",
            "format": "date",
            "nullable": true
          },
          "licenseCount": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "description": "Number of licenses covered by the contract.",
            "format": "int32",
            "nullable": true
          },
          "noEndDate": {
            "type": "boolean",
            "description": "Indicates whether the contract has no expiration date."
          },
          "softwareContract": {
            "type": "boolean",
            "description": "Indicates whether the contract is for software."
          },
          "customFieldRequest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldRequest"
            },
            "description": "Represents a value submitted for a specific custom field. Used for text, numeric, date, dropdown, radio, or checkbox list fields.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for update contract."
      },
      "UpdateCustomerRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Customer Name (cannot exceed 100 characters.)"
          },
          "company": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Company name of the customer. (cannot exceed 100 characters.)",
            "nullable": true
          },
          "address1": {
            "maxLength": 250,
            "minLength": 0,
            "type": "string",
            "description": "Address1 of the customer. (cannot exceed 250 characters.)",
            "nullable": true
          },
          "address2": {
            "maxLength": 250,
            "minLength": 0,
            "type": "string",
            "description": "Address2 of the customer. (cannot exceed 250 characters.)",
            "nullable": true
          },
          "city": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "City of the customer (cannot exceed 50 characters.)",
            "nullable": true
          },
          "state": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "State of the customer. (cannot exceed 50 characters.)",
            "nullable": true
          },
          "zip": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Zip of the customer. (cannot exceed 50 characters.)",
            "nullable": true
          },
          "countryRefId": {
            "type": "integer",
            "description": "Foreign key referencing the country.",
            "format": "int32",
            "nullable": true
          },
          "phone": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Phone number of the customer. (cannot exceed 50 characters.)",
            "nullable": true
          },
          "cell": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Cell number of the customer. (cannot exceed 50 characters.)",
            "nullable": true
          },
          "email": {
            "maxLength": 50,
            "minLength": 0,
            "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$",
            "type": "string",
            "description": "Email of the customer. (cannot exceed 50 characters.)",
            "format": "email",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Notes or Comment (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "customFieldRequest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldRequest"
            },
            "description": "Represents a value submitted for a specific custom field. Used for text, numeric, date, dropdown, radio, or checkbox list fields.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for update customer."
      },
      "UpdateDepartmentRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the department (cannot exceed 50 characters.)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating department."
      },
      "UpdateDisposeEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the asset was disposed. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for dispose in Setup Events.",
            "format": "date-time"
          },
          "textField": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Who or what the asset was disposed to (free text, e.g. a recycling vendor). (cannot exceed 100 characters.)",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Dispose notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating a dispose event."
      },
      "UpdateDonateEventRequest": {
        "required": [
          "boolean",
          "currency",
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the asset was donated. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for donate in Setup Events.",
            "format": "date-time"
          },
          "textField": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Who the asset was donated to (free text, e.g. a charity). (cannot exceed 100 characters.)",
            "nullable": true
          },
          "currency": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Value of the donation. Use 0 when there is no value.",
            "format": "double"
          },
          "boolean": {
            "type": "boolean",
            "description": "Whether the donation is tax deductible."
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Donate notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating a donate event."
      },
      "UpdateFoundEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the asset was found. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for found in Setup Events.",
            "format": "date-time"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Found notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating a found event. Replaces the event's found date and notes; omitted\r\nnotes are cleared."
      },
      "UpdateFundRequest": {
        "required": [
          "active",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the fund. Must be unique.(cannot exceed 50 characters.)",
            "format": "string"
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Description of the fund.(cannot exceed 1000 characters.)",
            "format": "string",
            "nullable": true
          },
          "amount": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Total allocated amount.",
            "format": "currency",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Fund start date (yyyy-MM-dd).",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "Fund end date (yyyy-MM-dd).",
            "format": "date",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Additional notes.(cannot exceed 1000 characters.)",
            "format": "multiline",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "description": "Whether this fund is active (default: true)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing fund."
      },
      "UpdateInsuranceRequest": {
        "required": [
          "active",
          "description",
          "endDate",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "insuranceCo": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the insurance company or provider.(cannot exceed 100 characters.)",
            "format": "string",
            "nullable": true
          },
          "description": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Additional details or notes about the insurance policy.(cannot exceed 100 characters.)",
            "format": "string"
          },
          "person": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the primary contact person for the insurance policy.(cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "phone": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "Contact phone number for the insurance provider or representative.(cannot exceed 20 characters.)",
            "format": "tel",
            "nullable": true
          },
          "email": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Contact email address for the insurance provider or representative.(cannot exceed 50 characters.)",
            "format": "email",
            "nullable": true
          },
          "policy": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Policy number assigned by the insurance provider.(cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "coverage": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Coverage details provided by the insurance policy.(cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "limits": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Coverage limits or maximum claim amount defined by the policy.(cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "deductible": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Deductible amount that must be paid before insurance coverage applies.",
            "format": "currency",
            "nullable": true
          },
          "premium": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Premium amount paid for the insurance policy.",
            "format": "currency",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Policy start date (yyyy-MM-dd).",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "Policy end or expiration date (yyyy-MM-dd).",
            "format": "date"
          },
          "active": {
            "type": "boolean",
            "description": "Whether this insurance is active (default: true)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing insurance."
      },
      "UpdateInventoryItemRequest": {
        "required": [
          "description",
          "inventoryTagId",
          "unit"
        ],
        "type": "object",
        "properties": {
          "inventoryTagId": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Unique tag or code assigned to the inventory item for tracking. (cannot exceed 50 characters.)",
            "format": "string"
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Detailed description of the inventory item. (cannot exceed 1000 characters.)",
            "format": "string"
          },
          "categoryRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Readable name of the main category (resolved from CategoryRefId).",
            "format": "int32",
            "nullable": true
          },
          "subCategoryRefId": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "integer",
            "description": "Readable name of the main subcategory (resolved from SubCategoryRefId).",
            "format": "int32",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Notes. (Notes cannot exceed 1000 characters.)",
            "format": "multiline",
            "nullable": true
          },
          "sku": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Stock Keeping Unit – unique identifier used for managing stock. (SKU cannot exceed 100 characters.)",
            "format": "string",
            "nullable": true
          },
          "brand": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Brand name of the item. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "model": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Model name/number of the item. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "vendor": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Supplier or vendor associated with the item. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "url": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "(^|\\s)((https?:\\/\\/)?[\\w-]+(\\.[\\w-]+)+\\.?(:\\d+)?(\\/\\S*)?)",
            "type": "string",
            "description": "Reference URL (e.g., vendor page, product page, or documentation). (cannot exceed 100 characters.)",
            "format": "uri",
            "nullable": true
          },
          "size": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Size or dimensions of the item. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "color": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Color of the item. (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "style": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Style or variant of the item (if applicable). (cannot exceed 50 characters.)",
            "format": "string",
            "nullable": true
          },
          "unit": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Unit of measurement (e.g., piece, box, kg, liter). (cannot exceed 50 characters.)",
            "format": "string"
          },
          "minQty": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Minimum quantity threshold for stock. (used for re-order alerts).",
            "format": "double",
            "nullable": true
          },
          "maxQty": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Maximum quantity limit for stock. (used for inventory control).",
            "format": "double",
            "nullable": true
          },
          "hasMaxQtyAlert": {
            "type": "boolean",
            "description": "Enable Maximum quantity alert."
          },
          "hasMinQtyAlert": {
            "type": "boolean",
            "description": "Enable Minimum quantity alert."
          },
          "minQtyAlert": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Minimum quantity alert.",
            "format": "double",
            "nullable": true
          },
          "maxQtyAlert": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Maximum quantity alert.",
            "format": "double",
            "nullable": true
          },
          "openingDate": {
            "type": "string",
            "description": "Opening date in yyyy-MM-dd format. Applicable only when the Multi-Quantity feature is disabled.",
            "format": "date",
            "nullable": true
          },
          "unitCost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Unit Cost. Applicable only when the Multi-Quantity feature is disabled.",
            "format": "currency",
            "nullable": true
          },
          "totalCost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Total Cost. Applicable only when the Multi-Quantity feature is disabled.",
            "format": "currency",
            "nullable": true
          },
          "refNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Reference No. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "aisle": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Aisle, Warehouse, Site. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "shelf": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Shelf, Rack, Cabinet. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "bin": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Bins, Bay, Drawer. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "eventNotes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Event Notes. (cannot exceed 1000 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "multiline",
            "nullable": true
          },
          "customFieldRequest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldRequest"
            },
            "description": "Represents a value submitted for a specific custom field. Used for text, numeric, date, dropdown, radio, or checkbox list fields.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for update inventory item.\r\nContains core item details, stock information, pricing, alerts,\r\nopening date, and optional custom fields."
      },
      "UpdateLeaseEventRequest": {
        "required": [
          "customerRefId",
          "date1"
        ],
        "type": "object",
        "properties": {
          "customerRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the customer the asset is leased to.",
            "format": "int32"
          },
          "date1": {
            "type": "string",
            "description": "Date the lease begins. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for lease in Setup Events.",
            "format": "date-time"
          },
          "date2": {
            "type": "string",
            "description": "Date the lease expires. Leave empty for no end date. Same format as <code>date1</code>.",
            "format": "date-time",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Lease notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating a lease event."
      },
      "UpdateLeaseReturnEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the leased asset was returned. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for lease return in Setup Events.",
            "format": "date-time"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Lease return notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating a lease return event."
      },
      "UpdateLocationRequest": {
        "required": [
          "name",
          "siteRefId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the location (cannot exceed 100 characters)."
          },
          "siteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the parent site (positive integer only).",
            "format": "int32"
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Description (cannot exceed 1000 characters).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing location."
      },
      "UpdateLostEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the asset was lost. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for lost in Setup Events.",
            "format": "date-time"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Lost notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating a lost event."
      },
      "UpdatePersonRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Person Name (cannot exceed 100 characters.)"
          },
          "title": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Title of the person. (cannot exceed 100 characters.)",
            "nullable": true
          },
          "phone": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "Phone number of the person. (cannot exceed 20 characters.)",
            "nullable": true
          },
          "email": {
            "maxLength": 50,
            "minLength": 0,
            "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$",
            "type": "string",
            "description": "Email of the person. (cannot exceed 50 characters.)",
            "format": "email",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Notes or Comment (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "empId": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "EmpId of the person. (cannot exceed 50 characters.)",
            "nullable": true
          },
          "siteRefId": {
            "type": "integer",
            "description": "Foreign key referencing the site.",
            "format": "int32",
            "nullable": true
          },
          "locationRefId": {
            "type": "integer",
            "description": "Foreign key referencing the location.",
            "format": "int32",
            "nullable": true
          },
          "departmentRefId": {
            "type": "integer",
            "description": "Foreign key referencing the department.",
            "format": "int32",
            "nullable": true
          },
          "customFieldRequest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldRequest"
            },
            "description": "Represents a value submitted for a specific custom field. Used for text, numeric, date, dropdown, radio, or checkbox list fields.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for update person."
      },
      "UpdateRepairEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the repair is scheduled. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for repair in Setup Events.",
            "format": "date-time"
          },
          "textField": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Who the repair is assigned to (free text, e.g. a technician or vendor). (cannot exceed 100 characters.)",
            "nullable": true
          },
          "date2": {
            "type": "string",
            "description": "Date the repair was completed. Setting it ends the repair: the asset goes back to its previous check-out or lease, or to Available. Same format as <code>date1</code>.",
            "format": "date-time",
            "nullable": true
          },
          "currency": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Cost of the repair.",
            "format": "double",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Repair notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating a repair event."
      },
      "UpdateReserveRequest": {
        "required": [
          "date1",
          "date2",
          "reserveTo"
        ],
        "type": "object",
        "properties": {
          "reserveTo": {
            "$ref": "#/components/schemas/AssignTo"
          },
          "personRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the person the asset is reserved for. Required when <code>reserveTo</code> is <code>Person</code>.",
            "format": "int32",
            "nullable": true
          },
          "customerRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the customer the asset is reserved for. Required when <code>reserveTo</code> is <code>Customer</code>.",
            "format": "int32",
            "nullable": true
          },
          "siteRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the site the asset is reserved for. Required when <code>reserveTo</code> is <code>SiteLocation</code>.",
            "format": "int32",
            "nullable": true
          },
          "locationRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the location the asset is reserved for. Optional with <code>reserveTo</code> <code>SiteLocation</code>; must belong to <code>siteRefId</code>.",
            "format": "int32",
            "nullable": true
          },
          "date1": {
            "type": "string",
            "description": "Reservation start. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for reservations in Setup Events.",
            "format": "date-time"
          },
          "date2": {
            "type": "string",
            "description": "Reservation end; must not be before <code>date1</code>. Same format as <code>date1</code>. Without time, the reservation runs to the end of this day.",
            "format": "date-time"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Reservation notes. (cannot exceed 1000 characters.)",
            "nullable": true
          },
          "sendEmail": {
            "type": "boolean",
            "description": "When true and <code>reserveTo</code> is <code>Person</code> or <code>Customer</code>, sends the reservation confirmation email to that person's or customer's email address and turns on the reminder emails below. No email is sent if they have no email address."
          },
          "firstReminderEnabled": {
            "type": "boolean",
            "description": "Send reminder email #1. Applies only when <code>sendEmail</code> is true."
          },
          "firstReminderLeadTimeDays": {
            "maximum": 99,
            "minimum": 1,
            "type": "integer",
            "description": "Days before the reservation starts to send reminder email #1 (1-99, default 2).",
            "format": "int32"
          },
          "secondReminderEnabled": {
            "type": "boolean",
            "description": "Send reminder email #2. Applies only when <code>sendEmail</code> is true."
          },
          "secondReminderLeadTimeDays": {
            "maximum": 99,
            "minimum": 1,
            "type": "integer",
            "description": "Days before the reservation starts to send reminder email #2 (1-99, default 1).",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an asset reservation."
      },
      "UpdateSellEventRequest": {
        "required": [
          "date1"
        ],
        "type": "object",
        "properties": {
          "date1": {
            "type": "string",
            "description": "Date the asset was sold. Format: yyyy-MM-dd, or yyyy-MM-ddTHH:mm:ss when Enable Time is turned on for sell in Setup Events.",
            "format": "date-time"
          },
          "textField": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Who the asset was sold to (free text). (cannot exceed 100 characters.)",
            "nullable": true
          },
          "currency": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Amount the asset was sold for.",
            "format": "double",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Sell notes. (cannot exceed 1000 characters.)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating a sell event."
      },
      "UpdateShelfRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "aisleRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Optional foreign key referencing the aisle. Set null to create an unallocated shelf (not assigned to any aisle). Required only when the inventory location hierarchy is configured as Aisle > Shelf > Bins.",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the shelf (Shelf name cannot exceed 100 characters.)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating shelf. Applicable only when multi-quantiy feature is enabled"
      },
      "UpdateSiteRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Name of the site (cannot exceed 50 characters)."
          },
          "address1": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "description": "Address line 1 (cannot exceed 500 characters).",
            "nullable": true
          },
          "address2": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "description": "Address line 2 / Apt. / Suite (cannot exceed 500 characters).",
            "nullable": true
          },
          "city": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "City (cannot exceed 50 characters).",
            "nullable": true
          },
          "state": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "State / Province (cannot exceed 50 characters).",
            "nullable": true
          },
          "zip": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Postal / Zip code (cannot exceed 50 characters).",
            "nullable": true
          },
          "countryRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Foreign key referencing the country (positive integer only).",
            "format": "int32",
            "nullable": true
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Description (cannot exceed 1000 characters).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an existing site."
      },
      "UpdateSubCategoryRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Updated name of the subcategory (Subcategory name cannot exceed 100 characters.)."
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating subcategory."
      },
      "UpdateTransactionRequest": {
        "required": [
          "eventDate"
        ],
        "type": "object",
        "properties": {
          "personRefId": {
            "type": "integer",
            "description": "Reference ID of the employee/person associated with the transaction. Applicable only for Remove Stock transactions. Only one of <code>personRefId</code>, <code>customerRefId</code>, or <code>personName</code> may be provided — supplying more than one returns a 422 Validation error.",
            "format": "int32",
            "nullable": true
          },
          "customerRefId": {
            "type": "integer",
            "description": "Reference ID of the customer associated with the transaction. Applicable only for Remove Stock transactions. Only one of <code>personRefId</code>, <code>customerRefId</code>, or <code>personName</code> may be provided — supplying more than one returns a 422 Validation error.",
            "format": "int32",
            "nullable": true
          },
          "personName": {
            "type": "string",
            "description": "Free-text name of the person or customer associated with the transaction (max 50 characters). Applicable only for Remove Stock transactions. Only one of <code>personRefId</code>, <code>customerRefId</code>, or <code>personName</code> may be provided — supplying more than one returns a 422 Validation error.",
            "nullable": true
          },
          "eventDate": {
            "type": "string",
            "description": "Date added by user at the time of the transaction in yyyy-MM-dd format.",
            "format": "date"
          },
          "unitCost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Unit cost of the item at the time of the transaction. Applicable only for Add Stock and Opening Stock transactions.",
            "format": "currency",
            "nullable": true
          },
          "totalCost": {
            "maximum": 999999999999999,
            "minimum": 0,
            "type": "number",
            "description": "Total cost of the transaction (<code>quantity</code> × <code>unitCost</code>). Applicable only for Add Stock and Opening Stock transactions.",
            "format": "currency",
            "nullable": true
          },
          "refNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Reference number associated with the transaction. (cannot exceed 50 characters.) Applicable only for Add Stock and Opening Stock transactions.",
            "format": "string",
            "nullable": true
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Additional notes or comments related to the transaction. (cannot exceed 1000 characters.)",
            "format": "string",
            "nullable": true
          },
          "aisle": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Aisle name indicating the top-level storage location where the inventory item is placed. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "shelf": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Shelf name within the specified aisle representing the intermediate storage level. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          },
          "bin": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Bin Name within the specified shelf representing the exact storage position of the item. (cannot exceed 50 characters.) Applicable only when the Multi-Quantity feature is disabled.",
            "format": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a transaction record for inventory item, including details\r\nsuch as event type, cost, and associated person or customer."
      },
      "User": {
        "required": [
          "email",
          "firstName",
          "refGuid"
        ],
        "type": "object",
        "properties": {
          "refGuid": {
            "minLength": 1,
            "type": "string",
            "description": "Globally unique identifier for the user."
          },
          "firstName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "User’s first name. (first name cannot exceed 50 characters.)"
          },
          "lastName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "User’s last name. (last name cannot exceed 50 characters.)",
            "nullable": true
          },
          "title": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Optional title or designation (e.g., “Mr.”, “Dr.”, “Manager”). (title cannot exceed 50 characters.)",
            "nullable": true
          },
          "phone": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "User’s phone number. (phone cannot exceed 20 characters.)",
            "nullable": true
          },
          "email": {
            "maxLength": 70,
            "minLength": 0,
            "type": "string",
            "description": "User’s email address (used for login and notifications). (email cannot exceed 70 characters.)"
          },
          "photo": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "URL to the user’s profile photo or avatar. (user image cannot exceed 1000 characters.)",
            "nullable": true
          },
          "timeZoneRefId": {
            "type": "integer",
            "description": "Foreign key reference to the user’s selected time zone.",
            "format": "int32",
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "description": "User’s selected time zone.",
            "nullable": true
          },
          "dateFormatRefId": {
            "type": "integer",
            "description": "Foreign key reference to the user’s preferred date format (e.g., dd/MM/yyyy,MM-dd-yyyy )",
            "format": "int32",
            "nullable": true
          },
          "dateFormat": {
            "type": "string",
            "description": "User’s selected Date Format.",
            "nullable": true
          },
          "timeFormatRefId": {
            "type": "integer",
            "description": "Foreign key reference to the user’s preferred time format (e.g., 12-hour,  24-hour",
            "format": "int32",
            "nullable": true
          },
          "timeFormat": {
            "type": "string",
            "description": "User’s selected Time Format.",
            "nullable": true
          },
          "lastLogin": {
            "type": "string",
            "description": "Date and time of the user’s last successful login.",
            "format": "date-time",
            "nullable": true
          },
          "userRole": {
            "type": "string",
            "description": "Shows the access role assigned to the user (e.g. SuperAdmin / User).",
            "nullable": true
          },
          "emailVerified": {
            "type": "boolean",
            "description": "Shows whether the user’s email is verified or not.",
            "nullable": true
          },
          "userGroup": {
            "type": "string",
            "description": "Shows the classification or role group assigned to the user within the system.",
            "nullable": true
          },
          "userGroupDescription": {
            "type": "string",
            "description": "Shows readable description of the user’s group or role, explaining its purpose or permission level.",
            "nullable": true
          },
          "registerDate": {
            "type": "string",
            "description": "The date and time when the user registered in the system.",
            "format": "date-time",
            "nullable": true
          },
          "lastAccessIP": {
            "type": "string",
            "description": "The IP address from which the user last accessed the system.",
            "nullable": true
          },
          "lastAccessDevice": {
            "type": "string",
            "description": "The IP address from which the user last accessed the system.",
            "nullable": true
          },
          "twoFAEnabled": {
            "type": "boolean",
            "description": "Indicates whether two-factor authentication (2FA) is enabled for the user."
          },
          "twoFAPhone": {
            "type": "string",
            "description": "Phone number used for receiving OTP (One-Time Password) for 2FA.",
            "nullable": true
          },
          "twoFAPhoneVerified": {
            "type": "boolean",
            "description": "Indicates whether the 2FA phone number has been verified."
          },
          "twoFAByEmail": {
            "type": "boolean",
            "description": "Whether OTP is also sent to the user’s email for 2FA."
          },
          "twoFAByPhone": {
            "type": "boolean",
            "description": "Whether OTP is sent to the user’s phone for 2FA."
          },
          "twoFAPhoneCountry": {
            "type": "integer",
            "description": "Foreign key reference to the user’s country calling code (e.g., +91 for India).",
            "format": "int32",
            "nullable": true
          },
          "apiEnabled": {
            "type": "boolean",
            "description": "Determines whether API access is enabled for this user."
          },
          "defaultSelectionEnabled": {
            "type": "boolean",
            "description": "Specifies if the default selection is enabled for this user when adding/editing assets or inventory items."
          },
          "accessibilityEnabled": {
            "type": "boolean",
            "description": "Indicates whether accessibility features are enabled for the user."
          },
          "defaultSiteRefId": {
            "type": "integer",
            "description": "Specifies the site ref ID of the user’s default selected site when adding/editing assets or inventory items.",
            "format": "int32",
            "nullable": true
          },
          "defaultLocationRefId": {
            "type": "integer",
            "description": "Specifies the location ref ID of the user’s default selected location when adding/editing assets or inventory items.",
            "format": "int32",
            "nullable": true
          },
          "defaultCategoryRefId": {
            "type": "integer",
            "description": "Specifies the category ref ID of the user’s default selected category when adding/editing assets or inventory items.",
            "format": "int32",
            "nullable": true
          },
          "defaultSubCategoryRefId": {
            "type": "integer",
            "description": "Specifies the subcategory ref ID of the user’s default selected subcategory when adding/editing assets or inventory items.",
            "format": "int32",
            "nullable": true
          },
          "defaultDepartmentRefId": {
            "type": "integer",
            "description": "Specifies the department ref ID of the user’s default selected department when adding/editing assets or inventory items.",
            "format": "int32",
            "nullable": true
          },
          "scannerType": {
            "$ref": "#/components/schemas/ScanType"
          },
          "barcodes": {
            "type": "string",
            "description": "Contains the barcode(s) associated with the user.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a system user with personal details, contact information, \r\nauthentication settings, security options, and system-related metadata."
      },
      "WarrantyCustomFieldValues": {
        "required": [
          "customField",
          "customFieldRefId",
          "refId",
          "value"
        ],
        "type": "object",
        "properties": {
          "refId": {
            "type": "integer",
            "description": "Unique identifier (primary key) for the custom field value. 0 if no value has been saved for this custom field yet.",
            "format": "int32"
          },
          "customFieldRefId": {
            "type": "integer",
            "description": "Foreign key referencing the custom field.",
            "format": "int32"
          },
          "value": {
            "minLength": 1,
            "type": "string",
            "description": "Value saved for this custom field. Empty if no value has been saved yet."
          },
          "customField": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomField"
              }
            ],
            "description": "Defines a customizable field that can be attached to entities like assets, inventory items, persons contacts, warranties etc. Includes type, label, and options."
          }
        },
        "additionalProperties": false,
        "description": "Stores the value of a CustomField for a specific entity. Links to the corresponding custom field definition."
      },
      "WarrantyRequest": {
        "required": [
          "assetRefId",
          "expiryDate"
        ],
        "type": "object",
        "properties": {
          "assetRefId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier (primary key) of the asset to associate with the warranty.",
            "format": "int32"
          },
          "length": {
            "maximum": 9999,
            "minimum": 1,
            "type": "integer",
            "description": "Length of the warranty (in months). (Must be within 1 to 9999.)",
            "format": "int32",
            "nullable": true
          },
          "expiryDate": {
            "type": "string",
            "description": "Date when warranty expires. Format: yyyy-MM-dd.",
            "format": "date"
          },
          "notes": {
            "maxLength": 1000,
            "minLength": 0,
            "type": "string",
            "description": "Text area for notes. (cannot exceed 1000 characters.)",
            "format": "string",
            "nullable": true
          },
          "customFieldRequest": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldRequest"
            },
            "description": "Represents a value submitted for a specific custom field. Used for text, numeric, date, dropdown, radio, or checkbox list fields.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for adding or updating an asset warranty.\r\nContains the associated asset, warranty length, expiry date, notes, and optional custom fields."
      },
      "WarrantySetting": {
        "type": "object",
        "properties": {
          "field_ExpiryDate_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Expiry Date is enabled. Always true — this field cannot be disabled.",
            "default": true
          },
          "field_ExpiryDate_Required": {
            "type": "boolean",
            "description": "Indicates whether Expiry Date is required. Always true — this field is always required.",
            "default": true
          },
          "field_Length_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Length is enabled.",
            "default": false
          },
          "field_Length_Required": {
            "type": "boolean",
            "description": "Indicates whether Length is required.",
            "default": false
          },
          "field_Notes_Enabled": {
            "type": "boolean",
            "description": "Indicates whether Notes is enabled.",
            "default": false
          },
          "field_Notes_Required": {
            "type": "boolean",
            "description": "Indicates whether Notes is required.",
            "default": false
          }
        },
        "additionalProperties": false,
        "description": "Represents configuration settings for warranty fields, including\r\nvisibility (enabled/disabled) and validation rules (required)."
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Invalid request (e.g., missing or incorrect refId)",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 400,
              "message": "Invalid request (e.g., missing or incorrect refId)",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "BadRequest"
            }
          }
        }
      },
      "UnauthorisedAccess": {
        "description": "Invalid or missing/expired Token.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 401,
              "message": "Invalid or missing/expired Token.",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "MissingToken"
            }
          }
        }
      },
      "AccessDenied": {
        "description": "Forbidden access denied.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 403,
              "message": "Forbidden access denied.",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "AccessDenied"
            }
          }
        }
      },
      "NotFound": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 404,
              "message": "The requested resource could not be found.",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "NotFound"
            }
          }
        }
      },
      "NotAllowed": {
        "description": "Method Not Allowed",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 405,
              "message": "Method Not Allowed",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "NotAllowed"
            }
          }
        }
      },
      "Conflict": {
        "description": "Resource already exists.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 409,
              "message": "Resource already exists.",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "Conflict"
            }
          }
        }
      },
      "InvalidRequest": {
        "description": "Validation error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 422,
              "message": "Validation error",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "InvalidRequest"
            }
          }
        }
      },
      "FeatureDisabled": {
        "description": "Feature disabled.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 423,
              "message": "Feature disabled.",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "FeatureDisabled"
            }
          }
        }
      },
      "TooManyRequests": {
        "description": "Too many requests. Please try again later.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 429,
              "message": "Too many requests. Please try again later.",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "TooManyRequests"
            }
          }
        }
      },
      "TokenExpired": {
        "description": "Unauthorized access. AuthToken is expired.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 498,
              "message": "Unauthorized access. AuthToken is expired.",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "TokenExpired"
            }
          }
        }
      },
      "InternalServerError": {
        "description": "Internal Server Error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 500,
              "message": "Internal Server Error",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "InternalServerError"
            }
          }
        }
      },
      "NotImplemented": {
        "description": "Not implemented",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 501,
              "message": "Not implemented",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "NotImplemented"
            }
          }
        }
      },
      "BadGateway": {
        "description": "Bad Gateway.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 502,
              "message": "Bad Gateway.",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "BadGateway"
            }
          }
        }
      },
      "ServiceUnavailable": {
        "description": "Service temporarily unavailable",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 503,
              "message": "Service temporarily unavailable",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "ServiceUnavailable"
            }
          }
        }
      },
      "GatewayTimeout": {
        "description": "Gateway Timeout.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse<Object>"
            },
            "example": {
              "success": false,
              "statusCode": 504,
              "message": "Gateway Timeout.",
              "accessToken": "temporary token",
              "data": null,
              "errors": null,
              "requestId": "unique identifier",
              "result": "GatewayTimeout"
            }
          }
        }
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "apiKey",
        "description": "Enter your access token in the format: Bearer {token}",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "Bearer": [ ]
    }
  ]
}