{
  "openapi": "3.0.1",
  "info": {
    "title": "QRmaint external API",
    "description": "<div>QRmaint external API for clients.</div><br/><div><h4>Docs:</h4></div><div><a href='https://api.qrmaint.com/docs-v1'>ReDoc API documentation</a> <br/><a href='https://api.qrmaint.com/docs'>Swagger API documentation</a></div><br/><div><h4>Additional infromation:</h4></div><div>Request limitations:</div><br/><div><div><strong>10</strong> request per <strong>1s</strong></div><div><strong>9000</strong> request per <strong>15m</strong></div><div><strong>45000</strong> request per <strong>12h</strong></div> <div><strong>1000000</strong> request per <strong>7d</strong></div></div><br/><div><h4>API Key: Bearer</h4></div><div>QRmaint API use JWT Authorization header with the Bearer scheme. To authorize request add <strong>\"Authorization\"</strong> header with token created in QRmaint app settings section to request headers section. Request authorization header should looks like: <strong>\"Authorization: Bearer {token}\"</strong></div><br/>",
    "contact": {
      "name": "SUPPORT",
      "url": "https://qrmaint.pl/kontakt/",
      "email": "kontakt@qrmaint.com"
    },
    "version": "1.0",
    "x-logo": {
      "url": "/logo.png",
      "altText": "QRmaint"
    }
  },
  "paths": {
    "/v1/andon-calls": {
      "get": {
        "tags": [
          "AndonCalls"
        ],
        "summary": "Get andon calls",
        "description": "Get a list of andon calls. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "onlyActive",
            "in": "query",
            "description": "Filter by active status",
            "schema": {
              "type": "boolean",
              "description": "Filter by active status"
            }
          },
          {
            "name": "assetOrLocationId",
            "in": "query",
            "description": "Filter by asset or location ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter by asset or location ID",
              "format": "int32"
            }
          },
          {
            "name": "assetOrLocationExternalId",
            "in": "query",
            "description": "Filter by asset or location external ID",
            "schema": {
              "type": "string",
              "description": "Filter by asset or location external ID"
            }
          },
          {
            "name": "priority",
            "in": "query",
            "description": "Filter by priority",
            "schema": {
              "type": "integer",
              "description": "Filter by priority",
              "format": "int32"
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "Filter by call type name",
            "schema": {
              "type": "string",
              "description": "Filter by call type name",
              "default": ""
            }
          },
          {
            "name": "teamsIds",
            "in": "query",
            "description": "Filter by team ID",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filter by team ID"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns list of andon calls",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AndonCallPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/andon-calls/types": {
      "get": {
        "tags": [
          "AndonCalls"
        ],
        "summary": "Get andon call types",
        "description": "Get a list of andon call types. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "assetOrLocationId",
            "in": "query",
            "description": "Filter by asset or location ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter by asset or location ID",
              "format": "int32"
            }
          },
          {
            "name": "assetOrLocationExternalId",
            "in": "query",
            "description": "Filter by asset or location external ID",
            "schema": {
              "type": "string",
              "description": "Filter by asset or location external ID"
            }
          },
          {
            "name": "priority",
            "in": "query",
            "description": "Filter by priority",
            "schema": {
              "type": "integer",
              "description": "Filter by priority",
              "format": "int32"
            }
          },
          {
            "name": "teamId",
            "in": "query",
            "description": "Filter by team ID",
            "schema": {
              "type": "integer",
              "description": "Filter by team ID",
              "format": "int32"
            }
          },
          {
            "name": "andonPanelUserId",
            "in": "query",
            "description": "Filter by ANDON panel user ID",
            "schema": {
              "type": "integer",
              "description": "Filter by ANDON panel user ID",
              "format": "int32"
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "Filter by call type name or team name",
            "schema": {
              "type": "string",
              "description": "Filter by call type name or team name",
              "default": ""
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns list of andon call types",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AndonCallPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/assets": {
      "get": {
        "tags": [
          "Assets"
        ],
        "summary": "Get assets",
        "description": "Get a list of assets",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering assets by name or number",
            "schema": {
              "type": "string",
              "description": "Query for filtering assets by name or number"
            }
          },
          {
            "name": "parentId",
            "in": "query",
            "description": "Filter by parent asset ID (use to get all nested assets)",
            "schema": {
              "type": "integer",
              "description": "Filter by parent asset ID (use to get all nested assets)",
              "format": "int32"
            }
          },
          {
            "name": "parentExternalId",
            "in": "query",
            "description": "Filter by parent asset external ID (use to get all nested assets)",
            "schema": {
              "type": "string",
              "description": "Filter by parent asset external ID (use to get all nested assets)"
            }
          },
          {
            "name": "locationId",
            "in": "query",
            "description": "Filter by parent location ID (use to get all nested assets for location)",
            "schema": {
              "type": "integer",
              "description": "Filter by parent location ID (use to get all nested assets for location)",
              "format": "int32"
            }
          },
          {
            "name": "locationExternalId",
            "in": "query",
            "description": "Filter by parent location external ID (use to get all nested assets for location)",
            "schema": {
              "type": "string",
              "description": "Filter by parent location external ID (use to get all nested assets for location)"
            }
          },
          {
            "name": "tagIds",
            "in": "query",
            "description": "Filter by tags IDs",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filter by tags IDs"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns list of assets",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Assets"
        ],
        "summary": "Create new asset",
        "description": "Create new asset",
        "requestBody": {
          "description": "New asset body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AssetParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created asset ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/assets/{id}": {
      "get": {
        "tags": [
          "Assets"
        ],
        "summary": "Get asset by ID",
        "description": "Get asset by asset ID",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Asset ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the asset by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Asset ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the asset by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found asset",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/assets/{assetId}": {
      "put": {
        "tags": [
          "Assets"
        ],
        "summary": "Update asset",
        "description": "Update asset item. Only the fields provided in the body of the request will be updated. Any unspecified fields will remain unchanged. To clear a specific field, use null.",
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "description": "Asset ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the asset by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Asset ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the asset by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "requestBody": {
          "description": "Updated asset body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedAssetParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedAssetParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedAssetParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/assets/{id}/planned-production-time": {
      "get": {
        "tags": [
          "Assets"
        ],
        "summary": "Get asset planned production time - BETA",
        "description": "Get asset planned production time - BETA",
        "parameters": [
          {
            "name": "dateFrom",
            "in": "query",
            "description": "Date from. <br/><i>ISO8601 format YYYY-MM-DD without time, eg.2022-02-02</i><br/>",
            "required": true,
            "schema": {
              "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
              "type": "string",
              "description": "Date from. <br/><i>ISO8601 format YYYY-MM-DD without time, eg.2022-02-02</i><br/>"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "description": "Date to.<br/><i>ISO8601 format YYYY-MM-DD without time, eg.2022-02-02</i><br/>",
            "required": true,
            "schema": {
              "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
              "type": "string",
              "description": "Date to.<br/><i>ISO8601 format YYYY-MM-DD without time, eg.2022-02-02</i><br/>"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Asset ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the asset by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Asset ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the asset by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns asset planned production time",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetPlannedProductionTimeResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/attachments": {
      "get": {
        "tags": [
          "Attachments"
        ],
        "summary": "Get attachments",
        "description": "Get a list of attachments. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering attachments by name or type group",
            "schema": {
              "type": "string",
              "description": "Query for filtering attachments by name or type group"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns attachments list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/attachments/{id}": {
      "get": {
        "tags": [
          "Attachments"
        ],
        "summary": "Get attachment by ID",
        "description": "Get a specific attachment by its ID.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Attachment ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Attachment ID",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns attachment data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentResponsePayload"
                }
              }
            }
          },
          "404": {
            "description": "Attachment not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/attachments/{id}/download-url": {
      "get": {
        "tags": [
          "Attachments"
        ],
        "summary": "Get attachment download URL",
        "description": "Generate a signed URL for downloading the attachment.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Attachment ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Attachment ID",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns download URL with expiration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentDownloadUrlResponseResponsePayload"
                }
              }
            }
          },
          "404": {
            "description": "Attachment not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/dictionaries/{rootParentId}/items": {
      "get": {
        "tags": [
          "Dictionaries"
        ],
        "summary": "Get dictionaries items",
        "description": "Get dictionaries items within dictionary root parent. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "rootParentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering dictionaries items by name",
            "schema": {
              "type": "string",
              "description": "Query for filtering dictionaries items by name"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns dictionary items list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionariesItemPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Dictionaries"
        ],
        "summary": "Create new dictionary item",
        "description": "Create new dictionary item within dictionary root parent.",
        "parameters": [
          {
            "name": "rootParentId",
            "in": "path",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "New new dictionaries item body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DictionariesItemParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DictionariesItemParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DictionariesItemParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created dictionaries item Id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad order error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/dictionaries": {
      "get": {
        "tags": [
          "Dictionaries"
        ],
        "summary": "Get dictionaries root parents",
        "description": "Get dictionaries root parents items list. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering dictionaries items by name",
            "schema": {
              "type": "string",
              "description": "Query for filtering dictionaries items by name"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns dictionary items list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionariesRootParentPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/dictionaries/{rootParentId}/items/{itemId}": {
      "patch": {
        "tags": [
          "Dictionaries"
        ],
        "summary": "Update dictionaries item",
        "description": "Update selected fields of the dictionaries item. Only the fields included in the request body are modified — other fields remain unchanged. To clear a specific field, use null.",
        "parameters": [
          {
            "name": "rootParentId",
            "in": "path",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "itemId",
            "in": "path",
            "description": "Dictionary item ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the item by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Dictionary item ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the item by its external ID instead."
            }
          },
          {
            "name": "usedItemIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "requestBody": {
          "description": "Update dictionaries item body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DictionariesItemParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DictionariesItemParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DictionariesItemParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns updated dictionaries item Id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad order error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/dictionary-items": {
      "get": {
        "tags": [
          "⚠️ DictionaryItems"
        ],
        "summary": "Get dictionary items",
        "description": "Get a list of dictionary items. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "parentType",
            "in": "query",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DICTIONARY_ITEMS_TYPES"
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering dictionary items by name",
            "schema": {
              "type": "string",
              "description": "Query for filtering dictionary items by name"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns dictionary items list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryItemPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/downtimes": {
      "post": {
        "tags": [
          "Downtimes"
        ],
        "summary": "Add downtime for asset",
        "description": "Add new downtime for asset.",
        "requestBody": {
          "description": "Downtime body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DowntimeParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DowntimeParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DowntimeParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created downtime ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Downtimes"
        ],
        "summary": "Get downtimes",
        "description": "Get a list of assets downtimes. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "assetOrLocationId",
            "in": "query",
            "description": "Filter by asset ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter by asset ID",
              "format": "int32"
            }
          },
          {
            "name": "assetOrLocationExternalId",
            "in": "query",
            "description": "Filter by asset external ID",
            "schema": {
              "type": "string",
              "description": "Filter by asset external ID"
            }
          },
          {
            "name": "getNested",
            "in": "query",
            "description": "Use to get downtimes for the parent node and all nested childs",
            "schema": {
              "type": "boolean",
              "description": "Use to get downtimes for the parent node and all nested childs"
            }
          },
          {
            "name": "onlyActive",
            "in": "query",
            "description": "Filter by active status",
            "schema": {
              "type": "boolean",
              "description": "Filter by active status"
            }
          },
          {
            "name": "datetimeFrom",
            "in": "query",
            "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "datetimeTo",
            "in": "query",
            "description": "Filter by date - date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "workId",
            "in": "query",
            "description": "Filter by work ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter by work ID",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns list of locations",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DowntimePaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/downtimes/{id}": {
      "get": {
        "tags": [
          "Downtimes"
        ],
        "summary": "Get downtime by ID",
        "description": "Get downtime by downtime ID.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Downtime ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Downtime ID",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found downtime",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DowntimeResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/failure-codes": {
      "get": {
        "tags": [
          "FailureCodes"
        ],
        "summary": "Get failure codes",
        "description": "Get a list of failure codes. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering failure codes by name",
            "schema": {
              "type": "string",
              "description": "Query for filtering failure codes by name"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns failure codes list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FailureCodePaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory-documents": {
      "post": {
        "tags": [
          "InventoryDocuments"
        ],
        "summary": "Create inventory document",
        "description": "Create inventory document",
        "requestBody": {
          "description": "New document params",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryDocumentParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryDocumentParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryDocumentParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created inventory document item ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "InventoryDocuments"
        ],
        "summary": "Get all inventory documents",
        "description": "Get a list of inventory documents. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "createdDatetimeFrom",
            "in": "query",
            "description": "Filter by date - created date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - created date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "createdDatetimeTo",
            "in": "query",
            "description": "Filter by date - created date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - created date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "Filter by call type name",
            "schema": {
              "type": "string",
              "description": "Filter by call type name",
              "default": ""
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns inventory documents list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryDocumentPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory-documents/{inventoryDocumentId}": {
      "get": {
        "tags": [
          "InventoryDocuments"
        ],
        "summary": "Get inventory document by ID",
        "description": "Get inventory document by ID",
        "parameters": [
          {
            "name": "inventoryDocumentId",
            "in": "path",
            "description": "Inventory document ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Inventory document ID",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found inventory document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryDocumentPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory-documents/{inventoryDocumentId}/items": {
      "get": {
        "tags": [
          "InventoryDocuments"
        ],
        "summary": "Get all inventory documents items",
        "description": "Get a list of inventory documents items. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "inventoryDocumentId",
            "in": "path",
            "description": "Inventory document ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Inventory document ID",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "Filter by call type name",
            "schema": {
              "type": "string",
              "description": "Filter by call type name",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns inventory documents items list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryDocumentItemPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "InventoryDocuments"
        ],
        "summary": "Add inventory document item",
        "description": "Add inventory document item",
        "parameters": [
          {
            "name": "inventoryDocumentId",
            "in": "path",
            "description": "Inventory document ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Inventory document ID",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Inventory document item params",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewInventoryDocumentItemParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NewInventoryDocumentItemParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NewInventoryDocumentItemParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns ok if updated succesfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory-documents/{inventoryDocumentId}/items/{inventoryDocumentItemId}": {
      "get": {
        "tags": [
          "InventoryDocuments"
        ],
        "summary": "Get inventory document item by ID",
        "description": "Get inventory document item by ID. Send usedIdType param to determine which ID you want to use (default usedIdType = ID)",
        "parameters": [
          {
            "name": "inventoryDocumentId",
            "in": "path",
            "description": "Inventory document ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Inventory document ID",
              "format": "int32"
            }
          },
          {
            "name": "inventoryDocumentItemId",
            "in": "path",
            "description": "Inventory document item ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Inventory document item ID",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found inventory document item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryDocumentItemPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "InventoryDocuments"
        ],
        "summary": "Update inventory document item",
        "description": "Update inventory document item. Only the fields provided in the body of the request will be updated. Any unspecified fields will remain unchanged.\r\n\r\nFields that can be updated:\r\n- Quantity (quantity)\r\n\r\n**Example usage:**\r\n`PATCH /v1/inventory-documents/12345/items/67890`\r\n\r\n**Related operations:**\r\n- Get inventory document item: `GET /v1/inventory-documents/{inventoryDocumentId}/items/{inventoryDocumentItemId}`\r\n- Add inventory document item: `POST /v1/inventory-documents/{inventoryDocumentId}/items`\r\n\r\n**Notes:**\r\n- Inventory document and item must belong to the client authorized by the token\r\n- If inventory document or item doesn't exist, returns 404 error\r\n- Quantity cannot be set to null\r\n- Only provided fields are updated; other fields remain unchanged",
        "parameters": [
          {
            "name": "inventoryDocumentId",
            "in": "path",
            "description": "Unique identifier of the inventory document",
            "required": true,
            "schema": {
              "title": "Inventory document ID",
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Unique identifier of the inventory document",
              "format": "int32"
            }
          },
          {
            "name": "inventoryDocumentItemId",
            "in": "path",
            "description": "Unique identifier of the inventory document item to update",
            "required": true,
            "schema": {
              "title": "Inventory document item ID",
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Unique identifier of the inventory document item to update",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Updated inventory document item body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedInventoryDocumentItemParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedInventoryDocumentItemParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedInventoryDocumentItemParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inventory-stock-logs": {
      "get": {
        "tags": [
          "⚠️ InventoryStockLogs"
        ],
        "summary": "Get inventory stock logs",
        "description": "Get a list of inventory stock logs. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "datetimeFrom",
            "in": "query",
            "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "datetimeTo",
            "in": "query",
            "description": "Filter by date - date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "partId",
            "in": "query",
            "description": "Filter by part ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter by part ID",
              "format": "int32"
            }
          },
          {
            "name": "partExternalId",
            "in": "query",
            "description": "Filter by part external ID",
            "schema": {
              "type": "string",
              "description": "Filter by part external ID"
            }
          },
          {
            "name": "inventoryId",
            "in": "query",
            "description": "Filter by inventory ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter by inventory ID",
              "format": "int32"
            }
          },
          {
            "name": "warehouseExternalId",
            "in": "query",
            "description": "Filter by warehouse external ID",
            "schema": {
              "type": "string",
              "description": "Filter by warehouse external ID"
            }
          },
          {
            "name": "lastId",
            "in": "query",
            "description": "Last inventory stock log ID - for sync",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Last inventory stock log ID - for sync",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns inventory stock log list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryStockLogPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/inventory-stocks/adjust-items": {
      "put": {
        "tags": [
          "⚠️ InventoryStocks"
        ],
        "summary": "Update adjust inventory stock items",
        "description": "",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryStockAdjustingParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryStockAdjustingParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryStockAdjustingParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/locations": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Get locations",
        "description": "Get a list of locations. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering locations by name or number",
            "schema": {
              "type": "string",
              "description": "Query for filtering locations by name or number"
            }
          },
          {
            "name": "parentId",
            "in": "query",
            "description": "Filter by parent location ID (use to get all nested locations)",
            "schema": {
              "type": "integer",
              "description": "Filter by parent location ID (use to get all nested locations)",
              "format": "int32"
            }
          },
          {
            "name": "parentExternalId",
            "in": "query",
            "description": "Filter by parent location external ID (use to get all nested locations)",
            "schema": {
              "type": "string",
              "description": "Filter by parent location external ID (use to get all nested locations)"
            }
          },
          {
            "name": "typeId",
            "in": "query",
            "description": "Filter by location type ID",
            "schema": {
              "type": "integer",
              "description": "Filter by location type ID",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns list of locations",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Locations"
        ],
        "summary": "Create new location",
        "description": "Create new location",
        "requestBody": {
          "description": "New location body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LocationParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/LocationParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/LocationParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created location ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/locations/{id}": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Get location by ID",
        "description": "Get location by ID or external ID",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Location ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the location by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Location ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the location by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found location",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/locations/{locationId}": {
      "put": {
        "tags": [
          "Locations"
        ],
        "summary": "Update location",
        "description": "Update location item. Only the fields provided in the body of the request will be updated. Any unspecified fields will remain unchanged. To clear a specific field, use null.",
        "parameters": [
          {
            "name": "locationId",
            "in": "path",
            "description": "Location ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the location by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Location ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the location by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "requestBody": {
          "description": "Updated location body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedLocationParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedLocationParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedLocationParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/meters": {
      "get": {
        "tags": [
          "Meters"
        ],
        "summary": "Get meters",
        "description": "Get a list of meters filtered by asset, location, production line or production area. Provide assetId and/or assetExternalId (at least one required). If both are provided and resolve to different records, returns 400 mismatch error. Optionally filter by unitOfMeasureId and/or unitOfMeasureExternalId with the same mismatch rules.",
        "parameters": [
          {
            "name": "assetId",
            "in": "query",
            "description": "Asset, location, production line or production area ID. Required if assetExternalId is not provided.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Asset, location, production line or production area ID. Required if assetExternalId is not provided.",
              "format": "int32"
            }
          },
          {
            "name": "assetExternalId",
            "in": "query",
            "description": "Asset, location, production line or production area external ID. Required if assetId is not provided.",
            "schema": {
              "type": "string",
              "description": "Asset, location, production line or production area external ID. Required if assetId is not provided."
            }
          },
          {
            "name": "unitOfMeasureId",
            "in": "query",
            "description": "Unit of measure ID. Optional filter. If both id and externalId are provided, they must refer to the same unit.",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Unit of measure ID. Optional filter. If both id and externalId are provided, they must refer to the same unit.",
              "format": "int32"
            }
          },
          {
            "name": "unitOfMeasureExternalId",
            "in": "query",
            "description": "Unit of measure external ID. Optional filter. If both id and externalId are provided, they must refer to the same unit.",
            "schema": {
              "type": "string",
              "description": "Unit of measure external ID. Optional filter. If both id and externalId are provided, they must refer to the same unit."
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns meters list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeterPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Meters"
        ],
        "summary": "Create meter",
        "description": "Create a new meter for an asset, location, production line or production area. Provide assetId and/or assetExternalId (at least one required). Provide unitOfMeasureId and/or unitOfMeasureExternalId (at least one required). If both id and externalId are provided for the same pair and resolve to different entities, returns 400 mismatch error. Resolved internal ids are stored in the database. Optional readingMode is an integer: 0 ExactValue, 1 Increase. Omitted defaults to 0. Other values return 400.",
        "requestBody": {
          "description": "Meter body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MeterCreateParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MeterCreateParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MeterCreateParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created meter",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeterResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/meters/{meterId}": {
      "get": {
        "tags": [
          "Meters"
        ],
        "summary": "Get meter by ID",
        "description": "Get a specific meter by its ID.",
        "parameters": [
          {
            "name": "meterId",
            "in": "path",
            "description": "Meter ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Meter ID",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns meter data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeterResponsePayload"
                }
              }
            }
          },
          "404": {
            "description": "Meter not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Meters"
        ],
        "summary": "Update meter",
        "description": "Update meter. Only the fields provided in the body of the request will be updated. Any unspecified fields will remain unchanged.\r\n\r\n**Example usage:**\r\n`PATCH /v1/meters/12345`\r\n\r\n**Notes:**\r\n- Meter must belong to the client authorized by the token\r\n- If meter doesn't exist, returns 404 error\r\n- Only provided fields are updated; other fields remain unchanged\r\n- Unit of measure can be updated via unitOfMeasureId or unitOfMeasureExternalId\r\n- Name, unit of measure and readingMode cannot be set to null\r\n- readingMode is an integer: 0 ExactValue, 1 Increase. Changing it does not rewrite existing readings",
        "parameters": [
          {
            "name": "meterId",
            "in": "path",
            "description": "Meter ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Meter ID",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Updated meter body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedMeterParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedMeterParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedMeterParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Meter not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/meters/{meterId}/readings": {
      "get": {
        "tags": [
          "Meters"
        ],
        "summary": "Get meter readings",
        "description": "Get readings for a meter. Use onlyLast=true to return the latest reading (optionally within a createdDatetime range).",
        "parameters": [
          {
            "name": "meterId",
            "in": "path",
            "description": "Meter ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Meter ID",
              "format": "int32"
            }
          },
          {
            "name": "onlyLast",
            "in": "query",
            "description": "When true, returns only the latest reading (within date range if provided)",
            "schema": {
              "type": "boolean",
              "description": "When true, returns only the latest reading (within date range if provided)"
            }
          },
          {
            "name": "createdDatetimeFrom",
            "in": "query",
            "description": "Filter by created datetime - from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by created datetime - from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "createdDatetimeTo",
            "in": "query",
            "description": "Filter by created datetime - to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by created datetime - to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns meter readings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeterReadingPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Meter not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Meters"
        ],
        "summary": "Add meter reading",
        "description": "Add a reading for a meter. Unit is taken from the meter. The stored value depends on the meter's readingMode from the database (not from the request): 0 ExactValue stores the submitted value; 1 Increase stores last reading (or 0) plus the submitted value. History always contains an absolute value. Triggers PM schedule generation for EVERY/WHEN rules using the stored absolute value.<br/><br/><strong>IMPORTANT - CUSTOM RATE LIMIT:</strong> max. 1 successful reading per meter every <strong>30 minutes</strong> (per client). Exceeding the limit returns HTTP 429.",
        "parameters": [
          {
            "name": "meterId",
            "in": "path",
            "description": "Meter ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Meter ID",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Meter reading body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MeterReadingParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MeterReadingParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MeterReadingParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created reading",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeterReadingResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Value out of numeric(24,8) range, or description longer than 250 characters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Meter not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "429": {
            "description": "CUSTOM RATE LIMIT: too many requests (max. 1 reading per meter every 30 minutes)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/parts": {
      "get": {
        "tags": [
          "Parts"
        ],
        "summary": "Get parts",
        "description": "Get a list of parts. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "typeId",
            "in": "query",
            "description": "Filter part by part type ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter part by part type ID",
              "format": "int32"
            }
          },
          {
            "name": "inventoryId",
            "in": "query",
            "description": "Filter part by inventory ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter part by inventory ID",
              "format": "int32"
            }
          },
          {
            "name": "onlyCritical",
            "in": "query",
            "description": "Filter part by criticality",
            "schema": {
              "type": "boolean",
              "description": "Filter part by criticality"
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering parts by name or number",
            "schema": {
              "type": "string",
              "description": "Query for filtering parts by name or number"
            }
          },
          {
            "name": "createdDatetimeFrom",
            "in": "query",
            "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "createdDatetimeTo",
            "in": "query",
            "description": "Filter by date - date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "modifiedDatetimeFrom",
            "in": "query",
            "description": "Filter by modification date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by modification date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "modifiedDatetimeTo",
            "in": "query",
            "description": "Filter by modification date - date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by modification date - date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns parts list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Parts"
        ],
        "summary": "Create new part",
        "description": "Create new part",
        "requestBody": {
          "description": "New part body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PartParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PartParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created part ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/parts/{partId}": {
      "get": {
        "tags": [
          "Parts"
        ],
        "summary": "Get part by ID",
        "description": "Get part by part ID or external ID",
        "parameters": [
          {
            "name": "partId",
            "in": "path",
            "description": "Part ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the part by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Part ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the part by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found part",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Parts"
        ],
        "summary": "Update part",
        "description": "Update part item. Only the fields provided in the body of the request will be updated. Any unspecified fields will remain unchanged. To clear a specific field, use null.",
        "parameters": [
          {
            "name": "partId",
            "in": "path",
            "description": "Part ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the part by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Part ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the part by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "requestBody": {
          "description": "Updated part body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedPartParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedPartParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedPartParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/parts/{partId}/suppliers": {
      "get": {
        "tags": [
          "Parts"
        ],
        "summary": "Get part suppliers",
        "description": "Get a list of part suppliers. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "partId",
            "in": "path",
            "description": "Part ID. Interpreted as the internal integer ID by default. Pass usedPartIdType=EXTERNAL_ID to identify the part by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Part ID. Interpreted as the internal integer ID by default. Pass usedPartIdType=EXTERNAL_ID to identify the part by its external ID instead."
            }
          },
          {
            "name": "usedPartIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering parts by name or number",
            "schema": {
              "type": "string",
              "description": "Query for filtering parts by name or number"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns part suppliers list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartSupplierPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Parts"
        ],
        "summary": "Add part supplier",
        "description": "Add part supplier",
        "parameters": [
          {
            "name": "partId",
            "in": "path",
            "description": "Part ID. Interpreted as the internal integer ID by default. Pass usedPartIdType=EXTERNAL_ID to identify the part by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Part ID. Interpreted as the internal integer ID by default. Pass usedPartIdType=EXTERNAL_ID to identify the part by its external ID instead."
            }
          },
          {
            "name": "usedPartIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "requestBody": {
          "description": "Part supplier params",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddPartSupplierParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AddPartSupplierParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AddPartSupplierParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns added part supplier id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/parts/{partId}/suppliers/{supplierId}": {
      "patch": {
        "tags": [
          "Parts"
        ],
        "summary": "Update part supplier",
        "description": "Update selected fields of the part supplier. Only the fields included in the request body are modified — other fields remain unchanged. To clear a specific field, use null.",
        "parameters": [
          {
            "name": "partId",
            "in": "path",
            "description": "Part ID. Interpreted as the internal integer ID by default. Pass usedPartIdType=EXTERNAL_ID to identify the part by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Part ID. Interpreted as the internal integer ID by default. Pass usedPartIdType=EXTERNAL_ID to identify the part by its external ID instead."
            }
          },
          {
            "name": "supplierId",
            "in": "path",
            "description": "Supplier (vendor) ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Supplier (vendor) ID",
              "format": "int32"
            }
          },
          {
            "name": "usedPartIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "requestBody": {
          "description": "Part supplier params",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePartSupplierParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePartSupplierParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePartSupplierParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns updated part supplier id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/production-areas": {
      "get": {
        "tags": [
          "ProductionAreas"
        ],
        "summary": "Get production areas",
        "description": "Get a list of production areas. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering by name or number",
            "schema": {
              "type": "string",
              "description": "Query for filtering by name or number"
            }
          },
          {
            "name": "parentId",
            "in": "query",
            "description": "Filter by parent location ID (nested production areas)",
            "schema": {
              "type": "integer",
              "description": "Filter by parent location ID (nested production areas)",
              "format": "int32"
            }
          },
          {
            "name": "parentExternalId",
            "in": "query",
            "description": "Filter by parent location external ID",
            "schema": {
              "type": "string",
              "description": "Filter by parent location external ID"
            }
          },
          {
            "name": "typeId",
            "in": "query",
            "description": "Filter by type ID",
            "schema": {
              "type": "integer",
              "description": "Filter by type ID",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns list of production areas",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductionAreaPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ProductionAreas"
        ],
        "summary": "Create new production area",
        "description": "Create new production area",
        "requestBody": {
          "description": "New production area body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductionAreaParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductionAreaParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProductionAreaParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created production area ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/production-areas/{id}": {
      "get": {
        "tags": [
          "ProductionAreas"
        ],
        "summary": "Get production area by ID",
        "description": "Get production area by ID or external ID",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Production area ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the production area by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Production area ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the production area by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found production area",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductionAreaResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/production-areas/{productionAreaId}": {
      "put": {
        "tags": [
          "ProductionAreas"
        ],
        "summary": "Update production area",
        "description": "Update production area. Only the fields provided in the body will be updated.",
        "parameters": [
          {
            "name": "productionAreaId",
            "in": "path",
            "description": "Production area ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the production area by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Production area ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the production area by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "requestBody": {
          "description": "Updated production area body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedProductionAreaParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedProductionAreaParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedProductionAreaParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/production-lines": {
      "get": {
        "tags": [
          "ProductionLines"
        ],
        "summary": "Get production lines",
        "description": "Get a list of production lines",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering by name or number",
            "schema": {
              "type": "string",
              "description": "Query for filtering by name or number"
            }
          },
          {
            "name": "parentId",
            "in": "query",
            "description": "Filter by parent asset ID",
            "schema": {
              "type": "integer",
              "description": "Filter by parent asset ID",
              "format": "int32"
            }
          },
          {
            "name": "parentExternalId",
            "in": "query",
            "description": "Filter by parent asset external ID",
            "schema": {
              "type": "string",
              "description": "Filter by parent asset external ID"
            }
          },
          {
            "name": "locationId",
            "in": "query",
            "description": "Filter by parent location ID",
            "schema": {
              "type": "integer",
              "description": "Filter by parent location ID",
              "format": "int32"
            }
          },
          {
            "name": "locationExternalId",
            "in": "query",
            "description": "Filter by parent location external ID",
            "schema": {
              "type": "string",
              "description": "Filter by parent location external ID"
            }
          },
          {
            "name": "tagIds",
            "in": "query",
            "description": "Filter by tags IDs",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filter by tags IDs"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns list of production lines",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductionLinePaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ProductionLines"
        ],
        "summary": "Create new production line",
        "description": "Create new production line",
        "requestBody": {
          "description": "New production line body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductionLineParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductionLineParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ProductionLineParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created production line ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/production-lines/{id}": {
      "get": {
        "tags": [
          "ProductionLines"
        ],
        "summary": "Get production line by ID",
        "description": "Get production line by ID or external ID",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Production line ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the production line by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Production line ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the production line by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found production line",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductionLineResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/production-lines/{productionLineId}": {
      "put": {
        "tags": [
          "ProductionLines"
        ],
        "summary": "Update production line",
        "description": "Update production line. Only the fields provided in the body will be updated.",
        "parameters": [
          {
            "name": "productionLineId",
            "in": "path",
            "description": "Production line ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the production line by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Production line ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the production line by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "requestBody": {
          "description": "Updated production line body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedProductionLineParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedProductionLineParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedProductionLineParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-requests": {
      "post": {
        "tags": [
          "PurchaseRequests"
        ],
        "summary": "Create purchase request",
        "description": "Creates a purchase request header. If statusId is omitted, status 59518 (waiting for approval) is used.\r\n\r\n**Notes:**\r\n- Type must be a dictionary item under parent 59356\r\n- Items are added separately through POST /v1/purchase-requests/{id}/items\r\n- Attachments and photos cannot be added through this endpoint\r\n- A notification about the new purchase request is sent after the transaction is committed\r\n- The created user is the technical API user",
        "requestBody": {
          "description": "New purchase request body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewPurchaseRequestParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NewPurchaseRequestParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NewPurchaseRequestParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created purchase request ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "PurchaseRequests"
        ],
        "summary": "Get purchase requests",
        "description": "Retrieves a paginated list of purchase requests with items and attachments.\r\n\r\nResults can be filtered by:\r\n- Creation date range (createdDatetimeFrom, createdDatetimeTo)\r\n- Modification date range (modifiedDatetimeFrom, modifiedDatetimeTo)\r\n- Last purchase request ID (lastId) - for synchronization\r\n- Purchase request type (typeId)\r\n- Purchase request status (statusId)\r\n- Purchase request external number (purchaseRequestExternalNumber)\r\n- Purchase order external number (purchaseOrderExternalNumber)\r\n\r\nEach purchase request includes complete information with purchase items and assigned attachments.\r\n\r\n**Example use cases:**\r\n- Get all purchase requests: `GET /v1/purchase-requests`\r\n- Filter by creation date: `GET /v1/purchase-requests?createdDatetimeFrom=2024-01-01&createdDatetimeTo=2024-12-31`\r\n- Filter by modification date: `GET /v1/purchase-requests?modifiedDatetimeFrom=2024-01-01&modifiedDatetimeTo=2024-12-31`\r\n- Pagination: `GET /v1/purchase-requests?page=2&perPage=50`\r\n- Synchronization: `GET /v1/purchase-requests?lastId=12345`\r\n\r\n**Related operations:**\r\n- Get single purchase request: `GET /v1/purchase-requests/{id}`\r\n- Update purchase request: `PATCH /v1/purchase-requests/{id}`\r\n\r\n**Notes:**\r\n- Times without timezone are interpreted as UTC\r\n- Maximum 100 records per page\r\n- Results include complete data with items and attachments",
        "parameters": [
          {
            "name": "createdDatetimeFrom",
            "in": "query",
            "description": "Filter purchase requests created after or on this date (inclusive). ISO8601 format (e.g., 2024-01-01, 2024-01-01T12:00:00, 2024-01-01T15:19:21+01:00). Time without timezone is interpreted as UTC.",
            "schema": {
              "title": "Created date from",
              "type": "string",
              "description": "Filter purchase requests created after or on this date (inclusive). ISO8601 format (e.g., 2024-01-01, 2024-01-01T12:00:00, 2024-01-01T15:19:21+01:00). Time without timezone is interpreted as UTC.",
              "format": "date-time"
            }
          },
          {
            "name": "createdDatetimeTo",
            "in": "query",
            "description": "Filter purchase requests created before or on this date (inclusive). ISO8601 format (e.g., 2024-12-31, 2024-12-31T23:59:59, 2024-12-31T15:19:21+01:00). Time without timezone is interpreted as UTC.",
            "schema": {
              "title": "Created date to",
              "type": "string",
              "description": "Filter purchase requests created before or on this date (inclusive). ISO8601 format (e.g., 2024-12-31, 2024-12-31T23:59:59, 2024-12-31T15:19:21+01:00). Time without timezone is interpreted as UTC.",
              "format": "date-time"
            }
          },
          {
            "name": "modifiedDatetimeFrom",
            "in": "query",
            "description": "Filter purchase requests modified after or on this date (inclusive). ISO8601 format (e.g., 2024-01-01, 2024-01-01T12:00:00, 2024-01-01T15:19:21+01:00). Time without timezone is interpreted as UTC.",
            "schema": {
              "title": "Modified date from",
              "type": "string",
              "description": "Filter purchase requests modified after or on this date (inclusive). ISO8601 format (e.g., 2024-01-01, 2024-01-01T12:00:00, 2024-01-01T15:19:21+01:00). Time without timezone is interpreted as UTC.",
              "format": "date-time"
            }
          },
          {
            "name": "modifiedDatetimeTo",
            "in": "query",
            "description": "Filter purchase requests modified before or on this date (inclusive). ISO8601 format (e.g., 2024-12-31, 2024-12-31T23:59:59, 2024-12-31T15:19:21+01:00). Time without timezone is interpreted as UTC.",
            "schema": {
              "title": "Modified date to",
              "type": "string",
              "description": "Filter purchase requests modified before or on this date (inclusive). ISO8601 format (e.g., 2024-12-31, 2024-12-31T23:59:59, 2024-12-31T15:19:21+01:00). Time without timezone is interpreted as UTC.",
              "format": "date-time"
            }
          },
          {
            "name": "lastId",
            "in": "query",
            "description": "Used for synchronization - retrieves purchase requests newer than the specified ID. Useful for incremental data synchronization.",
            "schema": {
              "title": "Last purchase request ID",
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Used for synchronization - retrieves purchase requests newer than the specified ID. Useful for incremental data synchronization.",
              "format": "int32"
            }
          },
          {
            "name": "typeId",
            "in": "query",
            "description": "Filter purchase requests by type (e.g., 1 - Parts, 2 - Services, etc.)",
            "schema": {
              "title": "Purchase request type ID",
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter purchase requests by type (e.g., 1 - Parts, 2 - Services, etc.)",
              "format": "int32"
            }
          },
          {
            "name": "statusId",
            "in": "query",
            "description": "Filter purchase requests by status (e.g., 1 - In Progress, 2 - Approved, etc.)",
            "schema": {
              "title": "Purchase request status ID",
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter purchase requests by status (e.g., 1 - In Progress, 2 - Approved, etc.)",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number for pagination (minimum 1)",
            "schema": {
              "title": "Page number",
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number for pagination (minimum 1)",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records per page (1-100)",
            "schema": {
              "title": "Records per page",
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records per page (1-100)",
              "format": "int32",
              "default": 100
            }
          },
          {
            "name": "purchaseRequestExternalNumber",
            "in": "query",
            "description": "Filter purchase requests by external purchase request number (exact match)",
            "schema": {
              "title": "Purchase request external number",
              "type": "string",
              "description": "Filter purchase requests by external purchase request number (exact match)"
            }
          },
          {
            "name": "purchaseOrderExternalNumber",
            "in": "query",
            "description": "Filter purchase requests by external purchase order number (exact match)",
            "schema": {
              "title": "Purchase order external number",
              "type": "string",
              "description": "Filter purchase requests by external purchase order number (exact match)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns list of purchase requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseRequestPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-requests/{id}/items": {
      "post": {
        "tags": [
          "PurchaseRequests"
        ],
        "summary": "Add purchase request item",
        "description": "Adds a single item to an existing purchase request.\r\n\r\n**Notes:**\r\n- Type 59357 (parts or supplies purchase request) requires an existing part identified by partId or partExternalId. Unit of measure is always copied from the part\r\n- partId and partExternalId are not allowed for types other than 59357 (parts or supplies purchase request)\r\n- serviceDescription and otherPRDescription are not allowed for type 59357 (parts or supplies purchase request)\r\n- serviceTypeId and serviceTypeExternalId are not allowed for types other than 59358 (other request)\r\n- unitOfMeasureId and unitOfMeasureExternalId are not allowed for types other than 59359 (other request)\r\n- Item currency code is copied from the part when currencyCode is not provided\r\n- If item currency differs from the client system currency, currencyRate is required\r\n- Type 59358 (service request) requires serviceDescription\r\n- Types 59358 (service request) and 59359 (other request) allow only one item\r\n- Type 59359 (other request) requires otherPRDescription\r\n- Items can be added only when the purchase request status is 59518 (waiting for approval)",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Purchase request ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Purchase request ID",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "New purchase request item body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewPurchaseRequestItemParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NewPurchaseRequestItemParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NewPurchaseRequestItemParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created purchase request item ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/purchase-requests/{id}": {
      "patch": {
        "tags": [
          "PurchaseRequests"
        ],
        "summary": "Update purchase request",
        "description": "Update purchase request. Only the fields provided in the body of the request will be updated. Any unspecified fields will remain unchanged. To clear a specific field, use null.\r\n\r\n**Example usage:**\r\n`PATCH /v1/purchase-requests/12345`\r\n\r\n**Notes:**\r\n- Purchase request must belong to the client authorized by the token\r\n- If purchase request doesn't exist, returns 404 error\r\n- Only provided fields are updated; other fields remain unchanged\r\n- Status can be updated via statusId or statusExternalId.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the purchase request to update",
            "required": true,
            "schema": {
              "title": "Purchase request ID",
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Unique identifier of the purchase request to update",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Updated purchase request body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedPurchaseRequestParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedPurchaseRequestParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedPurchaseRequestParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "PurchaseRequests"
        ],
        "summary": "Get purchase request by ID",
        "description": "Retrieves complete information about a single purchase request based on its identifier.\r\n\r\nThe returned purchase request includes:\r\n- Complete header data (ID, number, type, status, dates, assigned users/teams, external numbers, etc.)\r\n- All purchase items with detailed information (parts, quantities, prices, suppliers, assets, services)\r\n- Assigned attachments (documents and media files)\r\n\r\n**Example usage:**\r\n`GET /v1/purchase-requests/12345`\r\n\r\n**Related operations:**\r\n- Update purchase request: `PATCH /v1/purchase-requests/12345`\r\n- List all purchase requests: `GET /v1/purchase-requests`\r\n\r\n**Notes:**\r\n- Purchase request must belong to the client authorized by the token\r\n- If purchase request doesn't exist, returns 404 error\r\n- All items and attachments are automatically included in the response\r\n- Use PATCH method to update purchase request fields",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the purchase request to retrieve",
            "required": true,
            "schema": {
              "title": "Purchase request ID",
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Unique identifier of the purchase request to retrieve",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns purchase request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseRequestResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/shifts": {
      "get": {
        "tags": [
          "Shifts"
        ],
        "summary": "Get shifts",
        "description": "Get a list of shifts. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering shifts by name, start time, end time",
            "schema": {
              "type": "string",
              "description": "Query for filtering shifts by name, start time, end time"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns shifts list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/stocks": {
      "get": {
        "tags": [
          "Stocks"
        ],
        "summary": "Get stocks",
        "description": "Retrieves a paginated list of stocks with detailed information about parts, warehouses and quantities.\r\n\r\nResults can be filtered by:\r\n- Part ID (partId)\r\n- Part external ID (partExternalId)\r\n- Warehouse ID (warehouseId)\r\n\r\nEach stock record includes:\r\n- Part information (ID, external ID, name)\r\n- Warehouse information (ID, name)\r\n- Quantity information (current, minimum, maximum, reserved)\r\n- Storage place information (ID, name, path)\r\n\r\n**Example use cases:**\r\n- Get all stocks: `GET /v1/stocks`\r\n- Filter by part: `GET /v1/stocks?partId=12345`\r\n- Filter by warehouse: `GET /v1/stocks?warehouseId=67890`\r\n- Filter by part external ID: `GET /v1/stocks?partExternalId=EXT123`\r\n- Pagination: `GET /v1/stocks?page=2&perPage=50`\r\n\r\n**Related operations:**\r\n- Update stock levels: `PUT /v1/stocks/adjust-items`\r\n- Update stock settings: `PATCH /v1/stocks/{stockId}`\r\n\r\n**Notes:**\r\n- Part ID and external ID cannot be used simultaneously\r\n- If warehouse doesn't exist, returns 400 error\r\n- If part doesn't exist, returns 400 error\r\n- Maximum 100 records per page",
        "parameters": [
          {
            "name": "partId",
            "in": "query",
            "description": "Filter stocks by part ID",
            "schema": {
              "title": "Part ID",
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter stocks by part ID",
              "format": "int32"
            }
          },
          {
            "name": "partExternalId",
            "in": "query",
            "description": "Filter stocks by part external ID (cannot be used together with partId)",
            "schema": {
              "title": "Part external ID",
              "type": "string",
              "description": "Filter stocks by part external ID (cannot be used together with partId)"
            }
          },
          {
            "name": "warehouseId",
            "in": "query",
            "description": "Filter stocks by warehouse ID",
            "schema": {
              "title": "Warehouse ID",
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter stocks by warehouse ID",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number for pagination (minimum 1)",
            "schema": {
              "title": "Page number",
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number for pagination (minimum 1)",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records per page (1-100)",
            "schema": {
              "title": "Records per page",
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records per page (1-100)",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns stocks list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/stocks/{stockId}": {
      "patch": {
        "tags": [
          "Stocks"
        ],
        "summary": "Update stock settings",
        "description": "Update stock settings. Only the fields provided in the body of the request will be updated. Any unspecified fields will remain unchanged. To clear a specific field, use null.\r\n\r\nFields that can be updated:\r\n- Minimum quantity (minimumQuantity)\r\n- Maximum quantity (maximumQuantity)\r\n- Storage place ID (storagePlaceId) - if your organization uses storage places as a tree dictionary\r\n- Storage place text (storagePlaceText) - if your organization uses storage places in text version\r\n\r\n**Example usage:**\r\n`PATCH /v1/stocks/12345`\r\n\r\n**Related operations:**\r\n- List stocks: `GET /v1/stocks`\r\n\r\n**Notes:**\r\n- Stock must belong to the client authorized by the token\r\n- If stock doesn't exist, returns 404 error\r\n- If storage place doesn't exist, returns 400 error\r\n- Only provided fields are updated; other fields remain unchanged",
        "parameters": [
          {
            "name": "stockId",
            "in": "path",
            "description": "Unique identifier of the stock to update",
            "required": true,
            "schema": {
              "title": "Stock ID",
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Unique identifier of the stock to update",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Updated stock body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedStockParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedStockParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedStockParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/stocks/sync-quantities": {
      "put": {
        "tags": [
          "Stocks"
        ],
        "summary": "Sync stock quantities",
        "description": "Synchronize stock quantities for multiple items in batch. This endpoint sets the current stock level to the provided quantity value and updates the unit price.\r\n\r\nEach stock item in the request must provide:\r\n- Part identifier: **partId** or **partExternalId** (at least one is required)\r\n- Warehouse identifier: **warehouseId** or **warehouseExternalId** (at least one is required)\r\n- Quantity\r\n- Unit price\r\n\r\n**Example usage:**\r\n`PUT /v1/stocks/sync-quantities`\r\n\r\n**Related operations:**\r\n- List stocks: `GET /v1/stocks`\r\n- Update stock settings: `PATCH /v1/stocks/{stockId}`\r\n\r\n**Notes:**\r\n- This method **overwrites current stock quantities** - the provided quantity value completely replaces the existing stock level\r\n- Minimum quantity, maximum quantity and storage place are **not affected** by this operation\r\n- All stock items are processed in a single transaction\r\n- If any validation fails, the entire operation is rolled back\r\n- Part and warehouse must exist and belong to the client\r\n- On **validation failure** (HTTP 400), the response body is `ResponsePayload` whose **payload** contains **invalidItems**: a list of rejected rows with **item** (the submitted stock line) and **reason** (why it was rejected)",
        "requestBody": {
          "description": "Stock quantities sync parameters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SyncStockQuantitiesParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SyncStockQuantitiesParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SyncStockQuantitiesParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmptyPayloadResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Validation or bad request; when per-row validation fails, payload contains invalidItems",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SyncStockQuantityInvalidItemsResponsePayloadResponsePayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/stocks/adjust-items": {
      "put": {
        "tags": [
          "Stocks"
        ],
        "summary": "Adjust stock quantities",
        "description": "Adjust stock quantities for multiple items in batch. This endpoint allows bulk updates of stock levels, minimum/maximum quantities, storage places and unit prices.\r\n\r\nEach stock item in the request can update:\r\n- Current quantity\r\n- Minimum quantity\r\n- Maximum quantity\r\n- Storage place ID\r\n- Unit price\r\n\r\n**Example usage:**\r\n`PUT /v1/stocks/adjust-items`\r\n\r\n**Related operations:**\r\n- List stocks: `GET /v1/stocks`\r\n- Update stock settings: `PATCH /v1/stocks/{stockId}`\r\n\r\n**Notes:**\r\n- This method **overwrites current stock quantities** - the provided quantity value completely replaces the existing stock level\r\n- All stock items are processed in a single transaction\r\n- If any validation fails, the entire operation is rolled back\r\n- Warehouse, part and storage place must exist and belong to the client\r\n- Required fields: warehouseId, partId, quantity, minimumQuantity, maximumQuantity, unitPrice",
        "requestBody": {
          "description": "Stock adjusting parameters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StockAdjustingParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/StockAdjustingParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/StockAdjustingParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/stocks-logs": {
      "get": {
        "tags": [
          "StocksLogs"
        ],
        "summary": "Get stocks logs",
        "description": "Get a list of stocks logs. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "createdDatetimeFrom",
            "in": "query",
            "description": "Filter by date - created date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - created date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "createdDatetimeTo",
            "in": "query",
            "description": "Filter by date - created date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - created date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "partId",
            "in": "query",
            "description": "Filter by part ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter by part ID",
              "format": "int32"
            }
          },
          {
            "name": "partExternalId",
            "in": "query",
            "description": "Filter by part external ID",
            "schema": {
              "type": "string",
              "description": "Filter by part external ID"
            }
          },
          {
            "name": "warehouseId",
            "in": "query",
            "description": "Filter by part warehouse ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter by part warehouse ID",
              "format": "int32"
            }
          },
          {
            "name": "warehouseExternalId",
            "in": "query",
            "description": "Filter by warehouse external ID",
            "schema": {
              "type": "string",
              "description": "Filter by warehouse external ID"
            }
          },
          {
            "name": "stockMovementTypeIds",
            "in": "query",
            "description": "Filter by stock movement type IDs",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filter by stock movement type IDs"
            }
          },
          {
            "name": "inventoryDocumentTypeIds",
            "in": "query",
            "description": "Filter by inventory document type IDs",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filter by inventory document type IDs"
            }
          },
          {
            "name": "lastId",
            "in": "query",
            "description": "Last stock log ID - for sync",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Last stock log ID - for sync",
              "format": "int32"
            }
          },
          {
            "name": "excludeApiMoves",
            "in": "query",
            "description": "Exclude stock movements created by API (createdUserId = 100)",
            "schema": {
              "type": "boolean",
              "description": "Exclude stock movements created by API (createdUserId = 100)"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns stocks log list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockLogPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/dictionaries/storage-places": {
      "get": {
        "tags": [
          "StoragePlaces"
        ],
        "summary": "Get storage places",
        "description": "Get a list of storage places. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "warehouseId",
            "in": "query",
            "description": "Filter storage place by warehouse ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter storage place by warehouse ID",
              "format": "int32"
            }
          },
          {
            "name": "parentId",
            "in": "query",
            "description": "Filter storage place by parent ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter storage place by parent ID",
              "format": "int32"
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering storage place by name",
            "schema": {
              "type": "string",
              "description": "Query for filtering storage place by name"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns storage places list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoragePlacePaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "StoragePlaces"
        ],
        "summary": "Create storage place",
        "description": "Create storage place",
        "requestBody": {
          "description": "New storage place body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StoragePlaceParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/StoragePlaceParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/StoragePlaceParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created storage place ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/dictionaries/storage-places/{storagePlaceId}": {
      "get": {
        "tags": [
          "StoragePlaces"
        ],
        "summary": "Get storage place by ID",
        "description": "Get storage place by ID or external ID",
        "parameters": [
          {
            "name": "storagePlaceId",
            "in": "path",
            "description": "Storage place ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the storage place by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Storage place ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the storage place by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found storage place",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoragePlacePaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "StoragePlaces"
        ],
        "summary": "Update storage place",
        "description": "Update selected fields of the storage place. Only the fields included in the request body are modified — other fields remain unchanged. To clear a specific field, use null.",
        "parameters": [
          {
            "name": "storagePlaceId",
            "in": "path",
            "description": "Storage place ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the storage place by its external ID instead.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Storage place ID. Interpreted as the internal integer ID by default. Pass usedIdType=EXTERNAL_ID to identify the storage place by its external ID instead."
            }
          },
          {
            "name": "usedIdType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/ID_TYPES"
            }
          }
        ],
        "requestBody": {
          "description": "Updated storage place body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedStoragePlaceParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedStoragePlaceParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedStoragePlaceParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns updated storage place ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Get tags",
        "description": "Get a list of tags. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering tags by name",
            "schema": {
              "type": "string",
              "description": "Query for filtering tags by name"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/TAG_TYPES"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns tags list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/teams": {
      "get": {
        "tags": [
          "Teams"
        ],
        "summary": "Get teams",
        "description": "Get a list of teams. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering teams by name, description or external team ID",
            "schema": {
              "type": "string",
              "description": "Query for filtering teams by name, description or external team ID"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns teams list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get users",
        "description": "Get a list of users. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering users by name, email or external user ID",
            "schema": {
              "type": "string",
              "description": "Query for filtering users by name, email or external user ID"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns users list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/vendors": {
      "get": {
        "tags": [
          "Vendors/Suppliers"
        ],
        "summary": "Get vendors/suppliers",
        "description": "Get a list of vendors/suppliers. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering vendors by name",
            "schema": {
              "type": "string",
              "description": "Query for filtering vendors by name"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns vendors list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryItemPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Vendors/Suppliers"
        ],
        "summary": "Create new vendor/supplier",
        "description": "Create new vendor",
        "requestBody": {
          "description": "New vendor body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns created vendor ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/vendors/{vendorId}": {
      "get": {
        "tags": [
          "Vendors/Suppliers"
        ],
        "summary": "Get vendor/supplier by ID",
        "description": "Get vendor/supplier by ID. Returns 404 if vendor not found.",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "description": "Vendor ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Vendor ID",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns vendor/supplier info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorResponsePayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Vendors/Suppliers"
        ],
        "summary": "Update vendor/supplier",
        "description": "Update selected fields of the vendor/supplier. Only the fields included in the request body are modified — other fields remain unchanged. To clear a specific field, use null.",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Updated vendor body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedVendorParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedVendorParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedVendorParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns ok if updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/work-orders/{id}": {
      "get": {
        "tags": [
          "WorkOrders"
        ],
        "summary": "Get work order by ID",
        "description": "Get work order by work order ID.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Work order ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Work order ID",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found work order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkOrderResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/work-orders": {
      "get": {
        "tags": [
          "WorkOrders"
        ],
        "summary": "Get work orders",
        "description": "Get a list of all work orders. Records can be limited, paginated, and filtered. Sorted by creation date, ascending.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Filter by text query",
            "schema": {
              "type": "string",
              "description": "Filter by text query"
            }
          },
          {
            "name": "statusIds",
            "in": "query",
            "description": "Filter by statuses",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filter by statuses"
            }
          },
          {
            "name": "priorityIds",
            "in": "query",
            "description": "Filter by priorities",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/PRIORITY_TYPES"
              },
              "description": "Filter by priorities"
            }
          },
          {
            "name": "typeOfWorkIds",
            "in": "query",
            "description": "Filter by types of work",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Filter by types of work"
            }
          },
          {
            "name": "createdDatetimeFrom",
            "in": "query",
            "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "createdDatetimeTo",
            "in": "query",
            "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "completedDatetimeFrom",
            "in": "query",
            "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "completedDatetimeTo",
            "in": "query",
            "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "assetOrLocationId",
            "in": "query",
            "description": "Filter by asset or location ID",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Filter by asset or location ID",
              "format": "int32"
            }
          },
          {
            "name": "lastId",
            "in": "query",
            "description": "Last work order ID - for sync",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Last work order ID - for sync",
              "format": "int32"
            }
          },
          {
            "name": "modifiedDatetimeFrom",
            "in": "query",
            "description": "Filter by modification date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by modification date - date from <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "modifiedDatetimeTo",
            "in": "query",
            "description": "Filter by modification date - date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "schema": {
              "type": "string",
              "description": "Filter by modification date - date to <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
              "format": "date-time"
            }
          },
          {
            "name": "workGroup",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/WORK_GROUPS"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found orders list with pagination data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkOrderPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "WorkOrders"
        ],
        "summary": "Create new work order",
        "description": "Create new work order for asset or location, with defined priority, failure code or custom external failure code (defined in QRmaint app).",
        "requestBody": {
          "description": "New work order body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created work order ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad order error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/work-orders/{workOrderId}": {
      "patch": {
        "tags": [
          "WorkOrders"
        ],
        "summary": "Update work order",
        "description": "Update selected fields of the work order. Only the fields included in the request body are modified — other fields remain unchanged. To clear a specific field, use null.",
        "parameters": [
          {
            "name": "workOrderId",
            "in": "path",
            "description": "Work order ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Work order ID",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Updated work order body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedWorkOrderParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedWorkOrderParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatedWorkOrderParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns updated work order ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/work-orders/{workOrderId}/assets": {
      "put": {
        "tags": [
          "WorkOrders"
        ],
        "summary": "Assign assets to work order",
        "description": "Assign an asset, production line, production area, or location to the work order.",
        "parameters": [
          {
            "name": "workOrderId",
            "in": "path",
            "description": "Work order ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Work order ID",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Object with assets ids and assets external ids list",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderAssetsOrLocationsAssignmentParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderAssetsOrLocationsAssignmentParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderAssetsOrLocationsAssignmentParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns updated work order ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/work-orders/{workOrderId}/users": {
      "put": {
        "tags": [
          "WorkOrders"
        ],
        "summary": "Assign users to work order",
        "description": "Assign users to work order",
        "parameters": [
          {
            "name": "workOrderId",
            "in": "path",
            "description": "Work order ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Work order ID",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Object with users ids list",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderUsersAssignmentParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderUsersAssignmentParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderUsersAssignmentParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns updated work order ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/work-orders/{workOrderId}/teams": {
      "put": {
        "tags": [
          "WorkOrders"
        ],
        "summary": "Assign teams to work order",
        "description": "Assign teams to work order",
        "parameters": [
          {
            "name": "workOrderId",
            "in": "path",
            "description": "Work order ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Work order ID",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Object with teams ids list",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderTeamsAssignmentParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderTeamsAssignmentParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderTeamsAssignmentParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns updated work order ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/work-orders/{workOrderId}/shifts": {
      "put": {
        "tags": [
          "WorkOrders"
        ],
        "summary": "Assign shifts to work order",
        "description": "Assign shifts to work order",
        "parameters": [
          {
            "name": "workOrderId",
            "in": "path",
            "description": "Work order ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Work order ID",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Object with shifts ids list",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderShiftsAssignmentParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderShiftsAssignmentParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderShiftsAssignmentParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns updated work order ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/work-requests": {
      "post": {
        "tags": [
          "WorkRequests"
        ],
        "summary": "Create new work request",
        "description": "Create new work request for asset or location, with defined priority, failure code or custom external failure code (defined in QRmaint app).",
        "requestBody": {
          "description": "New work request body payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkRequestParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkRequestParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WorkRequestParams"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns created work request ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedObjectResponsePayload"
                }
              }
            }
          },
          "400": {
            "description": "Returns bad request error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "404": {
            "description": "Returns not found error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "WorkRequests"
        ],
        "summary": "Get work requests",
        "description": "Get a list of work requests. Records can be limited, paginated and filtered.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Query for filtering work requests by subject, description or number",
            "schema": {
              "type": "string",
              "description": "Query for filtering work requests by subject, description or number"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Page number",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "Maximum number of records on single page",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Maximum number of records on single page",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found requests list with pagination data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkRequestPaginatedPayloadResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    },
    "/v1/work-requests/{id}": {
      "get": {
        "tags": [
          "WorkRequests"
        ],
        "summary": "Get work request by ID",
        "description": "Get work request by work request ID.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Work request ID",
            "required": true,
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "description": "Work request ID",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns found work request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkRequestResponsePayload"
                }
              }
            }
          },
          "500": {
            "description": "Returns server error info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          },
          "401": {
            "description": "Returns unauthorize error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseErrorPayload"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ASSET_TYPES": {
        "enum": [
          "ASSET",
          "LOCATION",
          "PRODUCTION_AREA",
          "PRODUCTION_LINE"
        ],
        "type": "string"
      },
      "ATTACHMENT_TYPE_GROUP": {
        "enum": [
          "IMAGE",
          "VIDEO",
          "INTERACTIVE_PLAN_FILE",
          "OTHER"
        ],
        "type": "string"
      },
      "AddPartSupplierParams": {
        "type": "object",
        "properties": {
          "partNumber": {
            "type": "string",
            "nullable": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "id": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "partNumber": "supplier part number",
          "isDefault": false
        }
      },
      "AndonCall": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "callTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "callTypeName": {
            "type": "string",
            "nullable": true
          },
          "callTypeColor": {
            "type": "string",
            "nullable": true
          },
          "teamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assetId": {
            "type": "integer",
            "format": "int32"
          },
          "parentAssetId": {
            "type": "integer",
            "format": "int32"
          },
          "assetExternalId": {
            "type": "string",
            "nullable": true
          },
          "parentAssetExternalId": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "createdUserId": {
            "type": "integer",
            "format": "int32"
          },
          "createdDatetime": {
            "type": "string",
            "format": "date-time"
          },
          "completedUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "completedDatetime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modifiedDatetime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "teamName": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "remarks": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "durationTimeInSeconds": {
            "type": "integer",
            "description": "Duration in seconds between created datetime and completed datetime (for completed calls), current time (for active calls), or modified datetime (for cancelled calls). For a human-readable format of completed calls, use CompletedDuration.",
            "format": "int32"
          },
          "completedDurationTimeInSeconds": {
            "type": "string",
            "nullable": true,
            "readOnly": true,
            "deprecated": true
          },
          "completedDuration": {
            "type": "string",
            "description": "Human-readable duration between created and completed datetime (e.g. '3h 15min', '45s'). Null when call is not completed.",
            "nullable": true,
            "readOnly": true
          },
          "assignedUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assignedDatetime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "assetName": {
            "type": "string",
            "nullable": true
          },
          "assetPath": {
            "type": "string",
            "nullable": true
          },
          "callStatusName": {
            "type": "string",
            "nullable": true
          },
          "assignedUserFullName": {
            "type": "string",
            "nullable": true
          },
          "completedUserFullName": {
            "type": "string",
            "nullable": true
          },
          "andonPanelUserFullName": {
            "type": "string",
            "nullable": true
          },
          "isCancelled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "AndonCallPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AndonCall"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "AndonCallPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/AndonCallPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Asset": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "parentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "parentExternalId": {
            "type": "string",
            "nullable": true
          },
          "parentName": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32"
          },
          "createdDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedUserId": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserId": {
            "type": "integer",
            "format": "int32"
          },
          "manufacturerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "manufacturerName": {
            "type": "string",
            "nullable": true
          },
          "model": {
            "type": "string",
            "nullable": true
          },
          "internalNumber": {
            "type": "string",
            "nullable": true
          },
          "serialNumber": {
            "type": "string",
            "nullable": true
          },
          "assetTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "deprecated": true
          },
          "assetTypeName": {
            "type": "string",
            "nullable": true,
            "deprecated": true
          },
          "typeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "nullable": true
          },
          "isPublicRequest": {
            "type": "boolean",
            "nullable": true
          },
          "criticalityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "criticalityName": {
            "type": "string",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "costAccountName": {
            "type": "string",
            "nullable": true
          },
          "vendorId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "vendorName": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "productionDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "installationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "warrantyDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "initPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "nullable": true
          },
          "isParentAddress": {
            "type": "boolean",
            "nullable": true
          },
          "addressId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "nullable": true
          },
          "addressState": {
            "type": "string",
            "nullable": true
          },
          "addressZip": {
            "type": "string",
            "nullable": true
          },
          "addressCountry": {
            "type": "string",
            "nullable": true
          },
          "addressLatitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "addressLongitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryItem"
            },
            "description": "A list of tags assigned to the asset. See Tags section.",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "description": "A list of attachment assigned to the asset. See Attachments section.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "externalId": "EID1234",
          "number": "EQ-1234",
          "name": "name",
          "description": "description",
          "additionalInfo": "additional info",
          "clientId": 1234,
          "parentId": 1234,
          "parentExternalId": "EXTID1234",
          "parentName": "parent asset name",
          "URL": "https://api.qrmaint.com/1234/xyz",
          "createdDatetime": "2020-01-01T01:00:00+00:00",
          "modifiedDatetime": "2020-12-10T01:00:00+00:00",
          "modifiedUserId": 1234,
          "createdUserId": 1234,
          "manufacturerId": 1234,
          "manufacturerName": "manufacturer name",
          "model": "model",
          "internalNumber": "internal number",
          "serialNumber": "serial number",
          "typeId": 1234,
          "typeName": "type name",
          "isPublicRequest": false,
          "criticalityId": 1234,
          "criticalityName": "criticality name",
          "costAccountId": 1234,
          "costAccountName": "cost account name",
          "vendorId": 1234,
          "vendorName": "vendor name",
          "statusId": 1234,
          "statusName": "status name",
          "productionDate": "2020-01-01T01:00:00+00:00",
          "installationDate": "2020-01-01T01:00:00+00:00",
          "warrantyDate": "2020-01-01T01:00:00+00:00",
          "initPrice": 1234,
          "isParentAddress": false,
          "addressId": 1234,
          "address": "street 1",
          "addressCity": "city",
          "addressState": "state",
          "addressZip": "00-000",
          "addressCountry": "country",
          "addressLatitude": 52.2297,
          "addressLongitude": 21.0122,
          "tags": [
            {
              "id": 1234,
              "name": "tag name 1"
            },
            {
              "id": 5678,
              "name": "tag name 2"
            }
          ],
          "attachments": [
            {
              "id": 1234,
              "fileName": "document.pdf",
              "size": 1024000,
              "type": "application/pdf",
              "typeGroup": "OTHER",
              "createdDatetime": "2024-11-24T12:00:00Z"
            },
            {
              "id": 5678,
              "fileName": "image.jpg",
              "size": 2048000,
              "type": "image/jpeg",
              "typeGroup": "IMAGE",
              "createdDatetime": "2024-11-24T13:00:00Z"
            }
          ]
        }
      },
      "AssetDictionaryItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "assetTypeId": {
            "type": "integer",
            "format": "int32",
            "deprecated": true
          },
          "resourceType": {
            "$ref": "#/components/schemas/ASSET_TYPES"
          },
          "typeId": {
            "type": "integer",
            "format": "int32"
          },
          "typeName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AssetPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Asset"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "AssetPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/AssetPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AssetParams": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Asset name"
          },
          "locatedAtId": {
            "type": "integer",
            "description": "Parent asset id",
            "format": "int32",
            "nullable": true
          },
          "locatedAtExternalId": {
            "type": "string",
            "description": "Parent asset external id",
            "nullable": true
          },
          "manufacturerId": {
            "type": "integer",
            "description": "Manufacturer id",
            "format": "int32",
            "nullable": true
          },
          "model": {
            "type": "string",
            "description": "Model",
            "nullable": true
          },
          "internalNumber": {
            "type": "string",
            "description": "Internal Number",
            "nullable": true
          },
          "serialNumber": {
            "type": "string",
            "description": "Serial Number",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "description": "Type id",
            "format": "int32",
            "nullable": true
          },
          "isPublicRequest": {
            "type": "boolean",
            "description": "Public request"
          },
          "criticalityId": {
            "type": "integer",
            "description": "Criticality id",
            "format": "int32",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "description": "Cost account id",
            "format": "int32",
            "nullable": true
          },
          "vendorId": {
            "type": "integer",
            "description": "Vendor id",
            "format": "int32",
            "nullable": true
          },
          "productionDate": {
            "type": "string",
            "description": "Production date",
            "format": "date-time",
            "nullable": true
          },
          "installationDate": {
            "type": "string",
            "description": "Installation date",
            "format": "date-time",
            "nullable": true
          },
          "warrantyDate": {
            "type": "string",
            "description": "Warranty date",
            "format": "date-time",
            "nullable": true
          },
          "initPrice": {
            "type": "number",
            "description": "Initital price",
            "format": "double",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "External asset id",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "description": "Asset additional info",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "Asset status id (default 217 - Operational)",
            "format": "int32",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "Asset address",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "description": "Asset address city",
            "nullable": true
          },
          "addressState": {
            "type": "string",
            "description": "Asset address state",
            "nullable": true
          },
          "addressZip": {
            "type": "string",
            "description": "Asset address zip",
            "nullable": true
          },
          "addressCountry": {
            "type": "string",
            "description": "Asset address country",
            "nullable": true
          },
          "addressLatitude": {
            "type": "number",
            "description": "Asset address latitude",
            "format": "double",
            "nullable": true
          },
          "addressLongitude": {
            "type": "number",
            "description": "Asset address longitude",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AssetPlannedProductionTime": {
        "type": "object",
        "properties": {
          "plannedProductionTimeInSeconds": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "AssetPlannedProductionTimeResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/AssetPlannedProductionTime"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AssetResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/Asset"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Attachment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "typeGroup": {
            "$ref": "#/components/schemas/ATTACHMENT_TYPE_GROUP"
          },
          "createdDatetime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "fileName": "document.pdf",
          "size": 1024000,
          "type": "application/pdf",
          "typeGroup": "OTHER",
          "createdDatetime": "2024-11-24T12:00:00Z"
        }
      },
      "AttachmentDownloadUrlResponse": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "nullable": true
          },
          "expiresAt": {
            "type": "string",
            "description": "The date and time when the download URL expires, in ISO 8601 format. Expires in 5 minutes from the request time.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "example": {
          "url": "https://qrmaint.attachments.s3.eu-central-1.amazonaws.com/...",
          "expiresAt": "2024-11-24T13:00:00Z"
        }
      },
      "AttachmentDownloadUrlResponseResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/AttachmentDownloadUrlResponse"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AttachmentPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "AttachmentPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/AttachmentPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AttachmentResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/Attachment"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CreatedObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "CreatedObjectResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/CreatedObject"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DICTIONARY_ITEMS_TYPES": {
        "enum": [
          "TYPE_OF_WORK",
          "PART_TYPE",
          "EQUIPMENT_TYPE",
          "EQUIPMENT_STATUS",
          "COST_ACCOUNT",
          "INVENTORY_DOCUMENT_TYPES",
          "MEASUREMENT_UNITS_FOR_READING_AND_MEASUREMENT",
          "LOCATION_TYPE",
          "MEASUREMENT_UNITS_FOR_QUANTITY",
          "MANUFACTURER",
          "WORK_STATUS",
          "TYPE_OF_SERVICE",
          "PURCHASE_REQUEST_PURPOSE",
          "STOCK_MOVEMENT_TYPES",
          "PURCHASE_REQUEST_TYPE",
          "PURCHASE_REQUEST_SERVICE_TYPE",
          "PURCHASE_REQUEST_STATUS",
          "CRITICALITY"
        ],
        "type": "string"
      },
      "DOWNTIME_STATUS": {
        "enum": [
          "PLANNED",
          "UNPLANNED"
        ],
        "type": "string"
      },
      "DictionariesItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "readonly": {
            "type": "boolean"
          },
          "parentId": {
            "type": "integer",
            "format": "int32"
          },
          "externalId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DictionariesItemPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionariesItem"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "DictionariesItemPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/DictionariesItemPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DictionariesItemParams": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DictionariesRootParent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isExtendable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "DictionariesRootParentPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionariesRootParent"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "DictionariesRootParentPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/DictionariesRootParentPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DictionaryItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DictionaryItemPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryItem"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "DictionaryItemPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/DictionaryItemPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Downtime": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "assetId": {
            "type": "integer",
            "format": "int32"
          },
          "assetExternalId": {
            "type": "string",
            "nullable": true
          },
          "parentAssetId": {
            "type": "integer",
            "format": "int32"
          },
          "parentAssetExternalId": {
            "type": "string",
            "nullable": true
          },
          "assetName": {
            "type": "string",
            "nullable": true
          },
          "assetNumber": {
            "type": "string",
            "nullable": true
          },
          "workId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/DOWNTIME_STATUS"
          },
          "isActive": {
            "type": "boolean"
          },
          "startDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "durationHours": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "durationMinutes": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "durationSeconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "totalDurationInSeconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "remarks": {
            "type": "string",
            "nullable": true
          },
          "createdUserName": {
            "type": "string",
            "nullable": true
          },
          "createdUserId": {
            "type": "integer",
            "format": "int32"
          },
          "createdDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "failureCode": {
            "type": "string",
            "nullable": true
          },
          "externalFailureCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DowntimePaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Downtime"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "DowntimePaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/DowntimePaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DowntimeParams": {
        "required": [
          "startDatetime",
          "status"
        ],
        "type": "object",
        "properties": {
          "assetId": {
            "type": "integer",
            "description": "Asset ID",
            "format": "int32"
          },
          "assetExternalId": {
            "type": "string",
            "description": "Asset external ID",
            "nullable": true
          },
          "startDatetime": {
            "type": "string",
            "description": "Downtime start date <br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - timezone, eg. 2022-02-10,  2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><b>Time without a time zone is interpreted as UTC!</b>",
            "format": "date-time"
          },
          "durationInSeconds": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Downtime duration in seconds <br/><i>OPTIONAL - with DurationInSeconds downtime will be set as ENDED, without DurationInSeconds downtime will be set as ACTIVE</i>",
            "format": "int32",
            "nullable": true
          },
          "workId": {
            "type": "integer",
            "description": "Work ID",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/DOWNTIME_STATUS"
          },
          "remarks": {
            "type": "string",
            "description": "Downtime remarks",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DowntimeResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/Downtime"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmptyPayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "type": "boolean",
            "nullable": true
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmptyPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/EmptyPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FailureCode": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "externalFailureCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "name": "name",
          "externalFailureCode": "external failure code"
        }
      },
      "FailureCodePaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FailureCode"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "FailureCodePaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/FailureCodePaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ID_TYPES": {
        "enum": [
          "ID",
          "EXTERNAL_ID"
        ],
        "type": "string"
      },
      "InventoryDocument": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "workId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "invoiceNumber": {
            "type": "string",
            "nullable": true
          },
          "documentTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "documentTypeName": {
            "type": "string",
            "nullable": true
          },
          "documentDate": {
            "type": "string",
            "format": "date-time"
          },
          "supplierId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "supplierName": {
            "type": "string",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "currencyRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "currencyRateDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "warehouseId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "warehouseName": {
            "type": "string",
            "nullable": true
          },
          "warehouseExternalId": {
            "type": "string",
            "nullable": true
          },
          "transferWarehouseId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "transferWarehouseName": {
            "type": "string",
            "nullable": true
          },
          "transferWarehouseExternalId": {
            "type": "string",
            "nullable": true
          },
          "documentTotalPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "costAccountName": {
            "type": "string",
            "nullable": true
          },
          "costAccountExternalId": {
            "type": "string",
            "nullable": true
          },
          "remarks": {
            "type": "string",
            "nullable": true
          },
          "createdUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUserName": {
            "type": "string",
            "nullable": true
          },
          "createdDatetime": {
            "type": "string",
            "format": "date-time"
          },
          "purchaseRequestId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "purchaseRequestExternalNumber": {
            "type": "string",
            "nullable": true
          },
          "purchaseOrderExternalNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "workId": 1234,
          "number": "number",
          "invoiceNumber": "invoice number",
          "documentTypeId": "ADD",
          "documentTypeName": "document type name",
          "documentDate": "2020-01-01T01:00:00+00:00",
          "supplierId": 1234,
          "supplierName": "supplier name",
          "currencyCode": "EUR",
          "currencyRate": 12.34,
          "currencyRateDate": 1234,
          "warehouseId": 1234,
          "warehouseName": "warehouse name",
          "warehouseExternalId": "WH-EXT-001",
          "transferWarehouseId": 1234,
          "transferWarehouseName": "transfer warehouse name",
          "transferWarehouseExternalId": "WH-EXT-002",
          "documentTotalPrice": 12.34,
          "costAccountId": 1234,
          "costAccountName": "cost account name",
          "costAccountExternalId": "CA-EXT-001",
          "remarks": "remarks",
          "createdUserId": 1234,
          "createdUserName": "created user name",
          "purchaseRequestId": 1234,
          "purchaseRequestExternalNumber": "external pr number",
          "purchaseOrderExternalNumber": "external po number"
        }
      },
      "InventoryDocumentItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "partId": {
            "type": "integer",
            "format": "int32"
          },
          "partExternalId": {
            "type": "string",
            "nullable": true
          },
          "partName": {
            "type": "string",
            "nullable": true
          },
          "partNumber": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "unitPrice": {
            "type": "number",
            "format": "double"
          },
          "unitOfMeasureId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "nullable": true
          },
          "unitOfMeasureExternalId": {
            "type": "string",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "purchaseRequestId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "purchaseRequestExternalNumber": {
            "type": "string",
            "nullable": true
          },
          "purchaseOrderExternalNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "partId": 1234,
          "partExternalId": "EXT1234",
          "partName": "part name",
          "partNumber": "part number",
          "quantity": 12.34,
          "unitPrice": 12.34,
          "unitOfMeasureId": 1234,
          "unitOfMeasureName": "unit of measure name",
          "unitOfMeasureExternalId": "UOM-EXT-001",
          "currencyCode": "EUR",
          "purchaseRequestId": 1234,
          "purchaseRequestExternalNumber": "external pr number",
          "purchaseOrderExternalNumber": "external po number"
        }
      },
      "InventoryDocumentItemPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InventoryDocumentItem"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "InventoryDocumentItemPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/InventoryDocumentItemPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InventoryDocumentPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InventoryDocument"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "InventoryDocumentPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/InventoryDocumentPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InventoryDocumentParams": {
        "required": [
          "documentDate",
          "documentTypeId",
          "warehouseIdOrWarehouseExternalId"
        ],
        "type": "object",
        "properties": {
          "documentTypeId": {
            "$ref": "#/components/schemas/NEW_INVENTORY_DOCUMENT_TYPE"
          },
          "documentDate": {
            "type": "string",
            "format": "date-time"
          },
          "invoiceNumber": {
            "type": "string",
            "nullable": true
          },
          "supplierId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "currencyCode": {
            "maxLength": 3,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "currencyRate": {
            "multipleOf": 0.000001,
            "maximum": 999999.999999,
            "minimum": 0,
            "exclusiveMinimum": true,
            "type": "number",
            "description": "Currency rate. Must be greater than 0 and have at most 6 decimal places. Extra digits are rejected, not rounded.",
            "format": "double",
            "nullable": true
          },
          "currencyRateDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "warehouseId": {
            "type": "integer",
            "description": "Warehouse internal id. Required if warehouseExternalId is not provided. If both are provided, warehouseId takes precedence.",
            "format": "int32",
            "nullable": true
          },
          "warehouseExternalId": {
            "type": "string",
            "description": "Warehouse external id. Required if warehouseId is not provided. If both are provided, warehouseId takes precedence.",
            "nullable": true
          },
          "transferWarehouseId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "transferWarehouseExternalId": {
            "type": "string",
            "description": "Transfer warehouse external id. Used as an alternative to TransferWarehouseId. If TransferWarehouseId is also provided, TransferWarehouseId takes precedence.",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "costAccountExternalId": {
            "type": "string",
            "description": "Cost account external id. Used as an alternative to CostAccountId. If CostAccountId is also provided, CostAccountId takes precedence.",
            "nullable": true
          },
          "remarks": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "documentTypeId": "ADD",
          "documentDate": "2020-01-01",
          "invoiceNumber": "invoice number",
          "supplierId": 1234,
          "currencyCode": "EUR",
          "currencyRate": 12.34,
          "currencyRateDate": 1234,
          "warehouseId": 1234,
          "warehouseExternalId": "WH-EXT-001",
          "transferWarehouseId": 1234,
          "transferWarehouseExternalId": "WH-EXT-002",
          "costAccountId": 1234,
          "costAccountExternalId": "CA-EXT-001",
          "remarks": "remarks"
        }
      },
      "InventoryStockAdjustingParams": {
        "required": [
          "inventoryStockItemsList"
        ],
        "type": "object",
        "properties": {
          "inventoryStockItemsList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InventoryStockItem"
            }
          }
        },
        "additionalProperties": false
      },
      "InventoryStockItem": {
        "required": [
          "inventoryId",
          "partId",
          "quantity",
          "unitPrice"
        ],
        "type": "object",
        "properties": {
          "inventoryId": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "partId": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "format": "double"
          },
          "minimumQuantity": {
            "minimum": 0,
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "maximumQuantity": {
            "minimum": 0,
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "storagePlace": {
            "type": "string",
            "nullable": true,
            "deprecated": true
          },
          "storagePlaceId": {
            "minimum": 0,
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "unitPrice": {
            "minimum": 0,
            "type": "number",
            "format": "double"
          },
          "uniPrice": {
            "minimum": 0,
            "type": "number",
            "format": "double",
            "nullable": true,
            "readOnly": true,
            "writeOnly": true
          }
        },
        "additionalProperties": false
      },
      "InventoryStockLog": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "actionDate": {
            "type": "string",
            "format": "date-time"
          },
          "inventoryStockItemUnitPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "stockItemId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inventoryName": {
            "type": "string",
            "nullable": true
          },
          "inventoryActionName": {
            "type": "string",
            "nullable": true
          },
          "inventoryActionId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdDatetime": {
            "type": "string",
            "format": "date-time"
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "partId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "partExternalId": {
            "type": "string",
            "nullable": true
          },
          "partName": {
            "type": "string",
            "nullable": true
          },
          "workId": {
            "type": "integer",
            "format": "int32"
          },
          "workNumber": {
            "type": "string",
            "nullable": true
          },
          "createdByFullName": {
            "type": "string",
            "nullable": true
          },
          "receivedByFullName": {
            "type": "string",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "nullable": true
          },
          "changeValue": {
            "type": "string",
            "nullable": true
          },
          "documentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "documentNumber": {
            "type": "string",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "costAccountName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "actionDate": "2021-12-10T10:00:00+00:00",
          "inventoryStockItemUnitPrice": 123.4,
          "stockItemId": 1234,
          "inventoryName": "inventory name",
          "inventoryActionName": "inventory action name",
          "inventoryActionId": 1234,
          "createdDatetime": "2021-12-10T10:00:00+00:00",
          "quantity": 1234,
          "partId": 1234,
          "partExternalId": "EXT1234",
          "partName": "part name",
          "workId": 1234,
          "workNumber": "WO-1234",
          "createdByFullName": "created by full name",
          "receivedByFullName": "received by full name",
          "changeValue": "+123.4",
          "unitOfMeasureName": "unit of measure name",
          "documentId": 1234,
          "documentNumber": "document number"
        }
      },
      "InventoryStockLogPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InventoryStockLog"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "InventoryStockLogPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/InventoryStockLogPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Location": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "nullable": true
          },
          "parentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "locatedAtId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "parentExternalId": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32"
          },
          "createdDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedUserId": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserId": {
            "type": "integer",
            "format": "int32"
          },
          "assetTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "deprecated": true
          },
          "assetTypeName": {
            "type": "string",
            "nullable": true,
            "deprecated": true
          },
          "typeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "description": "Cost account id",
            "format": "int32",
            "nullable": true
          },
          "costAccountName": {
            "type": "string",
            "description": "Cost account name (client language)",
            "nullable": true
          },
          "isParentAddress": {
            "type": "boolean",
            "nullable": true
          },
          "isPublicRequest": {
            "type": "boolean",
            "nullable": true
          },
          "addressId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "nullable": true
          },
          "addressState": {
            "type": "string",
            "nullable": true
          },
          "addressZip": {
            "type": "string",
            "nullable": true
          },
          "addressCountry": {
            "type": "string",
            "nullable": true
          },
          "addressLatitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "addressLongitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "description": "A list of attachment objects assigned to the location. See Attachments section.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 123,
          "externalId": "EXTID1234",
          "number": "FA-1234",
          "name": "name",
          "additionalInfo": "additional info",
          "clientId": 1234,
          "parentId": 1234,
          "locatedAtId": 1234,
          "parentExternalId": "EXTID5678",
          "createdDatetime": "2020-01-01T01:00:00+00:00",
          "modifiedDatetime": "2020-12-10T01:00:00+00:00",
          "modifiedUserId": 1234,
          "createdUserId": 1234,
          "typeId": 1234,
          "typeName": "type name",
          "costAccountId": 1234,
          "costAccountName": "cost account name",
          "isPublicRequest": false,
          "isParentAddress": false,
          "addressId": 1234,
          "address": "street 1",
          "addressCity": "city",
          "addressState": "state",
          "addressZip": "00-000",
          "addressCountry": "country",
          "addressLatitude": 52.2297,
          "addressLongitude": 21.0122,
          "attachments": [
            {
              "id": 1234,
              "fileName": "document.pdf",
              "size": 1024000,
              "type": "application/pdf",
              "typeGroup": "OTHER",
              "createdDatetime": "2024-11-24T12:00:00Z"
            }
          ]
        }
      },
      "LocationPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Location"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "LocationPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/LocationPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LocationParams": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Asset name"
          },
          "locatedAtId": {
            "type": "integer",
            "description": "Parent asset id",
            "format": "int32",
            "nullable": true
          },
          "locatedAtExternalId": {
            "type": "string",
            "description": "Parent asset external id",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "description": "Type id",
            "format": "int32",
            "nullable": true
          },
          "isPublicRequest": {
            "type": "boolean",
            "description": "Public request"
          },
          "isParentAddress": {
            "type": "boolean",
            "description": "Set parent address as location address",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "Location address",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "description": "Location address city",
            "nullable": true
          },
          "addressState": {
            "type": "string",
            "description": "Location address state",
            "nullable": true
          },
          "addressZip": {
            "type": "string",
            "description": "Location address zip",
            "nullable": true
          },
          "addressCountry": {
            "type": "string",
            "description": "Location address country",
            "nullable": true
          },
          "addressLatitude": {
            "type": "number",
            "description": "Location address latitude",
            "format": "double",
            "nullable": true
          },
          "addressLongitude": {
            "type": "number",
            "description": "Location longitude",
            "format": "double",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "External asset id",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "description": "Location additional info",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "description": "Cost account id",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LocationResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/Location"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Meter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "assetId": {
            "type": "integer",
            "format": "int32"
          },
          "assetExternalId": {
            "type": "string",
            "nullable": true
          },
          "assetName": {
            "type": "string",
            "nullable": true
          },
          "unitOfMeasureId": {
            "type": "integer",
            "format": "int32"
          },
          "unitOfMeasureName": {
            "type": "string",
            "nullable": true
          },
          "unitOfMeasureExternalId": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32"
          },
          "createdDatetime": {
            "type": "string",
            "format": "date-time"
          },
          "modifiedDatetime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdUserId": {
            "type": "integer",
            "format": "int32"
          },
          "modifiedUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "readingMode": {
            "type": "integer",
            "description": "0 = ExactValue, 1 = Increase. Always serialized as integer.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "MeterCreateParams": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "assetId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Internal id of an asset, location, production line or production area. Required if AssetExternalId is not provided. If both are provided, they must refer to the same record.",
            "format": "int32",
            "nullable": true
          },
          "assetExternalId": {
            "type": "string",
            "description": "External id of an asset, location, production line or production area. Required if AssetId is not provided. If both are provided, they must refer to the same record.",
            "nullable": true
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Meter name"
          },
          "unitOfMeasureId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unit of measure internal id. Required if UnitOfMeasureExternalId is not provided. If both are provided, they must refer to the same unit.",
            "format": "int32",
            "nullable": true
          },
          "unitOfMeasureExternalId": {
            "type": "string",
            "description": "Unit of measure external id. Required if UnitOfMeasureId is not provided. If both are provided, they must refer to the same unit.",
            "nullable": true
          },
          "readingMode": {
            "type": "integer",
            "description": "Meter reading mode as integer. 0 = ExactValue (store submitted value). 1 = Increase (add submitted value to last reading). Omitted defaults to 0. Unknown values are rejected.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "name": "Runtime hours",
          "assetId": 1234,
          "assetExternalId": "ASSET-EXT-001",
          "unitOfMeasureId": 5678,
          "unitOfMeasureExternalId": "UOM-EXT-001",
          "readingMode": 0
        }
      },
      "MeterPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Meter"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "MeterPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/MeterPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MeterReading": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "meterId": {
            "type": "integer",
            "format": "int32"
          },
          "assetId": {
            "type": "integer",
            "format": "int32"
          },
          "assetExternalId": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "number",
            "format": "double"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "nullable": true
          },
          "unitOfMeasureId": {
            "type": "integer",
            "format": "int32"
          },
          "unitOfMeasureExternalId": {
            "type": "string",
            "nullable": true
          },
          "changeFromPreviousReading": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "dateSubmitted": {
            "type": "string",
            "format": "date-time"
          },
          "clientId": {
            "type": "integer",
            "format": "int32"
          },
          "createdDatetime": {
            "type": "string",
            "format": "date-time"
          },
          "modifiedUserId": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "MeterReadingPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MeterReading"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "MeterReadingPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/MeterReadingPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MeterReadingParams": {
        "required": [
          "value"
        ],
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "description": "Submitted reading. Stored as-is when the meter readingMode is 0. Added to the last absolute reading when readingMode is 1. Must fit numeric(24,8): -9999999999999999.99999999 to 9999999999999999.99999999. The API never expects the client to send readingMode here.",
            "format": "double"
          },
          "dateSubmitted": {
            "type": "string",
            "description": "Optional; null = now()",
            "format": "date-time",
            "nullable": true
          },
          "description": {
            "maxLength": 250,
            "type": "string",
            "description": "Optional reading description. Omitted or null leaves it empty. Maximum 250 characters (varchar(250)).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Body POST odczytu — jednostka i tryb zawsze z metra, nie z requestu."
      },
      "MeterReadingResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/MeterReading"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MeterResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/Meter"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NEW_INVENTORY_DOCUMENT_TYPE": {
        "enum": [
          "ADD",
          "GET",
          "CORRECTION",
          "MOVEMENT"
        ],
        "type": "string"
      },
      "NewInventoryDocumentItemParams": {
        "required": [
          "quantity",
          "unitPrice"
        ],
        "type": "object",
        "properties": {
          "partId": {
            "type": "integer",
            "description": "Part internal id. Required if partExternalId is not provided. If both are provided, partId takes precedence.",
            "format": "int32",
            "nullable": true
          },
          "partExternalId": {
            "type": "string",
            "description": "Part external id. Required if partId is not provided. If both are provided, partId takes precedence.",
            "nullable": true
          },
          "quantity": {
            "multipleOf": 0.0001,
            "maximum": 999999999,
            "minimum": 0,
            "type": "number",
            "description": "Quantity. At most 4 decimal places. Extra digits are rejected, not rounded.",
            "format": "double",
            "nullable": true
          },
          "unitPrice": {
            "multipleOf": 0.01,
            "maximum": 999999999999.99,
            "minimum": 0,
            "type": "number",
            "description": "Unit price. At most 2 decimal places. Extra digits are rejected, not rounded.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "partId": 1234,
          "partExternalId": "EXT1234",
          "quantity": 12.34,
          "unitPrice": 12.34
        }
      },
      "NewPurchaseRequestItemParams": {
        "required": [
          "quantity"
        ],
        "type": "object",
        "properties": {
          "partId": {
            "type": "integer",
            "description": "Part ID. Allowed only for type 59357. Use either partId or partExternalId.",
            "format": "int32",
            "nullable": true
          },
          "partExternalId": {
            "type": "string",
            "description": "Part external ID. Allowed only for type 59357. Use either partId or partExternalId.",
            "nullable": true
          },
          "quantity": {
            "maximum": 999999999,
            "minimum": 1,
            "type": "integer",
            "description": "Requested quantity. Whole number from 1 to 999999999.",
            "format": "int32"
          },
          "unitAmount": {
            "multipleOf": 0.01,
            "maximum": 999999999999.99,
            "minimum": 0,
            "type": "number",
            "description": "Unit amount. At most 2 decimal places. Extra digits are rejected, not rounded.",
            "format": "double",
            "nullable": true
          },
          "unitOfMeasureId": {
            "type": "integer",
            "description": "Unit of measure ID. Allowed only for type 59359 (other). For type 59357 it is copied from the part and cannot be sent. Use either unitOfMeasureId or unitOfMeasureExternalId.",
            "format": "int32",
            "nullable": true
          },
          "unitOfMeasureExternalId": {
            "type": "string",
            "description": "Unit of measure external ID. Allowed only for type 59359 (other). For type 59357 it is copied from the part and cannot be sent. Use either unitOfMeasureId or unitOfMeasureExternalId.",
            "nullable": true
          },
          "currencyCode": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string",
            "description": "ISO 4217 currency code. Copied from the part when omitted. When different from the client system currency, currencyRate is required.",
            "nullable": true
          },
          "supplierId": {
            "type": "integer",
            "description": "Supplier ID. Use either supplierId or supplierExternalId.",
            "format": "int32",
            "nullable": true
          },
          "supplierExternalId": {
            "type": "string",
            "description": "Supplier external ID. Use either supplierId or supplierExternalId.",
            "nullable": true
          },
          "serviceTypeId": {
            "type": "integer",
            "description": "Service type ID. Allowed only for type 59358 (service). Use either serviceTypeId or serviceTypeExternalId.",
            "format": "int32",
            "nullable": true
          },
          "serviceTypeExternalId": {
            "type": "string",
            "description": "Service type external ID. Allowed only for type 59358 (service). Use either serviceTypeId or serviceTypeExternalId.",
            "nullable": true
          },
          "serviceDescription": {
            "type": "string",
            "description": "Service description. Required for type 59358 (service). Not allowed for other types.",
            "nullable": true
          },
          "otherPRDescription": {
            "type": "string",
            "description": "Other purchase request description. Required for type 59359 (other). Not allowed for other types.",
            "nullable": true
          },
          "assetId": {
            "type": "integer",
            "description": "Asset ID. Use either assetId or assetExternalId.",
            "format": "int32",
            "nullable": true
          },
          "assetExternalId": {
            "type": "string",
            "description": "Asset external ID. Use either assetId or assetExternalId.",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "description": "Cost account ID. Use either costAccountId or costAccountExternalId.",
            "format": "int32",
            "nullable": true
          },
          "costAccountExternalId": {
            "type": "string",
            "description": "Cost account external ID. Use either costAccountId or costAccountExternalId.",
            "nullable": true
          },
          "currencyRate": {
            "multipleOf": 0.000001,
            "maximum": 999999.999999,
            "minimum": 0,
            "exclusiveMinimum": true,
            "type": "number",
            "description": "Currency rate. Must be greater than 0 and have at most 6 decimal places. Extra digits are rejected, not rounded. Required when currencyCode differs from the client system currency.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NewPurchaseRequestParams": {
        "required": [
          "reason",
          "typeId"
        ],
        "type": "object",
        "properties": {
          "typeId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Purchase request type ID",
            "format": "int32"
          },
          "statusId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Purchase request status ID. Defaults to 59518 (waiting for approval). Use either statusId or statusExternalId.",
            "format": "int32",
            "nullable": true
          },
          "statusExternalId": {
            "type": "string",
            "description": "Purchase request status external ID. Use either statusId or statusExternalId.",
            "nullable": true
          },
          "reason": {
            "minLength": 1,
            "type": "string",
            "description": "Purchase request reason"
          },
          "dueDate": {
            "type": "string",
            "description": "Due date in ISO8601 format",
            "format": "date-time",
            "nullable": true
          },
          "relatedWorkId": {
            "type": "integer",
            "description": "Related work ID",
            "format": "int32",
            "nullable": true
          },
          "isCritical": {
            "type": "boolean",
            "description": "Whether the request is critical"
          },
          "isSelfPurchase": {
            "type": "boolean",
            "description": "Whether the purchase is handled using the requester's own supplier"
          },
          "plannedDeliveryDate": {
            "type": "string",
            "description": "Planned delivery date in ISO8601 format",
            "format": "date-time",
            "nullable": true
          },
          "remarks": {
            "type": "string",
            "description": "Remarks",
            "nullable": true
          },
          "costPeriodId": {
            "type": "integer",
            "description": "Cost period ID. Use either costPeriodId or costPeriodExternalId (MM.YYYY).",
            "format": "int32",
            "nullable": true
          },
          "costPeriodExternalId": {
            "type": "string",
            "description": "Cost period external ID in MM.YYYY format. Use either costPeriodId or costPeriodExternalId.",
            "nullable": true
          },
          "purchaseOrderExternalNumber": {
            "type": "string",
            "description": "Purchase order external number",
            "nullable": true
          },
          "purchaseRequestExternalNumber": {
            "type": "string",
            "description": "Purchase request external number",
            "nullable": true
          },
          "assignedUserId": {
            "type": "integer",
            "description": "Assigned user ID",
            "format": "int32",
            "nullable": true
          },
          "assignedTeamId": {
            "type": "integer",
            "description": "Assigned team ID",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PRIORITY_TYPES": {
        "enum": [
          "LOW",
          "MEDIUM",
          "HIGH"
        ],
        "type": "string"
      },
      "Part": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "unitOfMeasureId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "nullable": true
          },
          "unitOfMeasureExternalId": {
            "type": "string",
            "nullable": true
          },
          "manufacturerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "manufacturerName": {
            "type": "string",
            "nullable": true
          },
          "manufacturerExternalId": {
            "type": "string",
            "nullable": true
          },
          "manufacturerPartNumber": {
            "type": "string",
            "nullable": true
          },
          "preferredSupplierId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "preferredSupplierName": {
            "type": "string",
            "nullable": true
          },
          "supplierPartNumber": {
            "type": "string",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32"
          },
          "barCode": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "nullable": true
          },
          "isCritical": {
            "type": "boolean"
          },
          "createdDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedUserId": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserId": {
            "type": "integer",
            "format": "int32"
          },
          "suppliers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartSupplierSimple"
            },
            "description": "A list of part suppliers.",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "description": "A list of attachment objects assigned to the part. See Attachments section.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryItem"
            },
            "description": "A list of tags assigned to the part.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "name": "part name",
          "number": "PR-1234",
          "unitOfMeasureId": 1234,
          "unitOfMeasureName": "unit of measure name",
          "unitOfMeasureExternalId": "UOM-EXT-001",
          "manufacturerId": 1234,
          "manufacturerName": "manufacturer name",
          "manufacturerExternalId": "MFG-EXT-001",
          "manufacturerPartNumber": "manufacturer part number",
          "preferredSupplierId": 1234,
          "preferredSupplierName": "preferred supplier name",
          "supplierPartNumber": "1234",
          "additionalInfo": "additional info",
          "clientId": 1234,
          "barCode": "1234",
          "isActive": false,
          "externalId": "EXID1234",
          "typeId": 1234,
          "typeName": "type name",
          "isCritical": false,
          "createdDatetime": "2020-12-10T01:00:00+00:00",
          "modifiedDatetime": "2020-12-10T01:00:00+00:00",
          "modifiedUserId": 1234,
          "createdUserId": 1234,
          "suppliers": [
            {
              "id": 1,
              "name": "supplier name",
              "partNumber": "supplier part number"
            },
            {
              "id": 2,
              "name": "another supplier",
              "partNumber": "another part number"
            }
          ],
          "tags": [
            {
              "id": 1234,
              "name": "tag name 1"
            },
            {
              "id": 5678,
              "name": "tag name 2"
            }
          ],
          "attachments": [
            {
              "id": 1234,
              "fileName": "document.pdf",
              "size": 1024000,
              "type": "application/pdf",
              "typeGroup": "OTHER",
              "createdDatetime": "2024-11-24T12:00:00Z"
            },
            {
              "id": 5678,
              "fileName": "image.jpg",
              "size": 2048000,
              "type": "image/jpeg",
              "typeGroup": "IMAGE",
              "createdDatetime": "2024-11-24T13:00:00Z"
            }
          ]
        }
      },
      "PartPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Part"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "PartPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/PartPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PartParams": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Part name"
          },
          "manufacturerId": {
            "type": "integer",
            "description": "Manufacturer id",
            "format": "int32",
            "nullable": true
          },
          "manufacturerExternalId": {
            "type": "string",
            "description": "Manufacturer external id. Used as an alternative to ManufacturerId. If ManufacturerId is also provided, ManufacturerId takes precedence.",
            "nullable": true
          },
          "manufacturerPartNumber": {
            "type": "string",
            "description": "Manufacturer part number",
            "nullable": true
          },
          "barCode": {
            "type": "string",
            "description": "Bar code",
            "nullable": true
          },
          "unitOfMeasureId": {
            "type": "integer",
            "description": "Unit of measure internal id. Required if UnitOfMeasureExternalId is not provided. If both are provided, UnitOfMeasureId takes precedence.",
            "format": "int32",
            "nullable": true
          },
          "unitOfMeasureExternalId": {
            "type": "string",
            "description": "Unit of measure external id. Required if UnitOfMeasureId is not provided. If both are provided, UnitOfMeasureId takes precedence.",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "description": "Type id",
            "format": "int32",
            "nullable": true
          },
          "isCritical": {
            "type": "boolean",
            "description": "Is critical"
          },
          "isActive": {
            "type": "boolean",
            "description": "Is active"
          },
          "externalId": {
            "type": "string",
            "description": "External asset id",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "description": "Asset additional info",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "name": "part name",
          "manufacturerId": 1234,
          "manufacturerExternalId": "MFG-EXT-001",
          "manufacturerPartNumber": "HF-123456",
          "barCode": "1234567890123",
          "unitOfMeasureId": 1234,
          "unitOfMeasureExternalId": "UOM-EXT-001",
          "typeId": 1234,
          "isCritical": false,
          "isActive": true,
          "externalId": "EXID1234",
          "additionalInfo": "additional info"
        }
      },
      "PartResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/Part"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PartSupplier": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "partNumber": {
            "type": "string",
            "nullable": true
          },
          "isDefault": {
            "type": "boolean",
            "nullable": true
          },
          "createdDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time",
            "nullable": true
          },
          "modifiedUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdUserId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "name": "supplier name",
          "partNumber": "supplier part number",
          "isDefault": true,
          "createdDatetime": "2020-12-10T01:00:00+00:00",
          "modifiedDatetime": "2020-12-10T01:00:00+00:00",
          "modifiedUserId": 1234,
          "createdUserId": 1234
        }
      },
      "PartSupplierPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartSupplier"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "PartSupplierPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/PartSupplierPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PartSupplierSimple": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "partNumber": {
            "type": "string",
            "nullable": true
          },
          "isDefault": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProductionArea": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "nullable": true
          },
          "parentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "locatedAtId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "parentExternalId": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32"
          },
          "createdDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedUserId": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserId": {
            "type": "integer",
            "format": "int32"
          },
          "isParentAddress": {
            "type": "boolean",
            "nullable": true
          },
          "isPublicRequest": {
            "type": "boolean",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "description": "Cost account id",
            "format": "int32",
            "nullable": true
          },
          "costAccountName": {
            "type": "string",
            "description": "Cost account name (client language)",
            "nullable": true
          },
          "addressId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "nullable": true
          },
          "addressState": {
            "type": "string",
            "nullable": true
          },
          "addressZip": {
            "type": "string",
            "nullable": true
          },
          "addressCountry": {
            "type": "string",
            "nullable": true
          },
          "addressLatitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "addressLongitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "description": "A list of attachment objects assigned to the production area. See Attachments section.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryItem"
            },
            "description": "A list of tags assigned to the production area.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 123,
          "externalId": "EXTID1234",
          "number": "FA-1234",
          "name": "name",
          "additionalInfo": "additional info",
          "clientId": 1234,
          "parentId": 1234,
          "locatedAtId": 1234,
          "parentExternalId": "EXTID5678",
          "createdDatetime": "2020-01-01T01:00:00+00:00",
          "modifiedDatetime": "2020-12-10T01:00:00+00:00",
          "modifiedUserId": 1234,
          "createdUserId": 1234,
          "isPublicRequest": false,
          "isParentAddress": false,
          "costAccountId": 1234,
          "costAccountName": "cost account name",
          "addressId": 1234,
          "address": "street 1",
          "addressCity": "city",
          "addressState": "state",
          "addressZip": "00-000",
          "addressCountry": "country",
          "addressLatitude": 52.2297,
          "addressLongitude": 21.0122,
          "tags": [
            {
              "id": 1234,
              "name": "tag name 1"
            },
            {
              "id": 5678,
              "name": "tag name 2"
            }
          ],
          "attachments": [
            {
              "id": 1234,
              "fileName": "document.pdf",
              "size": 1024000,
              "type": "application/pdf",
              "typeGroup": "OTHER",
              "createdDatetime": "2024-11-24T12:00:00Z"
            },
            {
              "id": 5678,
              "fileName": "image.jpg",
              "size": 2048000,
              "type": "image/jpeg",
              "typeGroup": "IMAGE",
              "createdDatetime": "2024-11-24T13:00:00Z"
            }
          ]
        }
      },
      "ProductionAreaPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductionArea"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ProductionAreaPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/ProductionAreaPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProductionAreaParams": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Production area name"
          },
          "locatedAtId": {
            "type": "integer",
            "description": "Parent asset id (Location or Production Area)",
            "format": "int32",
            "nullable": true
          },
          "locatedAtExternalId": {
            "type": "string",
            "description": "Parent asset external id (Location or Production Area)",
            "nullable": true
          },
          "isPublicRequest": {
            "type": "boolean",
            "description": "Public request"
          },
          "isParentAddress": {
            "type": "boolean",
            "description": "Set parent address as production area address",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "Production area address",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "description": "Production area address city",
            "nullable": true
          },
          "addressState": {
            "type": "string",
            "description": "Production area address state",
            "nullable": true
          },
          "addressZip": {
            "type": "string",
            "description": "Production area address zip",
            "nullable": true
          },
          "addressCountry": {
            "type": "string",
            "description": "Production area address country",
            "nullable": true
          },
          "addressLatitude": {
            "type": "number",
            "description": "Production area address latitude",
            "format": "double",
            "nullable": true
          },
          "addressLongitude": {
            "type": "number",
            "description": "Production area longitude",
            "format": "double",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "External production area id",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "description": "Production area additional info",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "description": "Cost account id",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProductionAreaResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/ProductionArea"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProductionLine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "nullable": true
          },
          "parentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "parentExternalId": {
            "type": "string",
            "nullable": true
          },
          "parentName": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32"
          },
          "createdDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedUserId": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserId": {
            "type": "integer",
            "format": "int32"
          },
          "isPublicRequest": {
            "type": "boolean",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "costAccountName": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryItem"
            },
            "description": "Tags assigned to the production line.",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "description": "Attachments (e.g. photos). See Attachments section.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 123,
          "externalId": "EXTID1234",
          "number": "FA-1234",
          "name": "name",
          "description": "description",
          "additionalInfo": "additional info",
          "clientId": 1234,
          "parentId": 1234,
          "parentExternalId": "EXTID5678",
          "parentName": "parent name",
          "URL": "https://app.qrmaint.com/out/1234/xyz",
          "createdDatetime": "2020-01-01T01:00:00+00:00",
          "modifiedDatetime": "2020-12-10T01:00:00+00:00",
          "modifiedUserId": 1234,
          "createdUserId": 1234,
          "isPublicRequest": false,
          "costAccountId": 1234,
          "costAccountName": "cost account name",
          "statusId": 1234,
          "statusName": "status name",
          "tags": [
            {
              "id": 1234,
              "name": "tag name 1"
            },
            {
              "id": 5678,
              "name": "tag name 2"
            }
          ],
          "attachments": [
            {
              "id": 1234,
              "fileName": "document.pdf",
              "size": 1024000,
              "type": "application/pdf",
              "typeGroup": "OTHER",
              "createdDatetime": "2024-11-24T12:00:00Z"
            },
            {
              "id": 5678,
              "fileName": "image.jpg",
              "size": 2048000,
              "type": "image/jpeg",
              "typeGroup": "IMAGE",
              "createdDatetime": "2024-11-24T13:00:00Z"
            }
          ]
        }
      },
      "ProductionLinePaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductionLine"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ProductionLinePaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/ProductionLinePaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProductionLineParams": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Production line name"
          },
          "locatedAtId": {
            "type": "integer",
            "description": "Parent asset or location id (located at)",
            "format": "int32",
            "nullable": true
          },
          "locatedAtExternalId": {
            "type": "string",
            "description": "Parent asset or location external id",
            "nullable": true
          },
          "isPublicRequest": {
            "type": "boolean",
            "description": "Public request"
          },
          "additionalInfo": {
            "type": "string",
            "description": "Additional info",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "External id",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "description": "Cost account id",
            "format": "int32",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "Status id (default 217 - Operational)",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProductionLineResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/ProductionLine"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PurchaseRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdDatetime": {
            "type": "string",
            "format": "date-time"
          },
          "modifiedDatetime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdDatetimeByMonth": {
            "type": "string",
            "nullable": true
          },
          "createdUserName": {
            "type": "string",
            "nullable": true
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "statusExternalId": {
            "type": "string",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isCritical": {
            "type": "boolean"
          },
          "plannedDeliveryDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "costPeriodYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "costPeriodMonth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "costPeriodId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assignedUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assignedUserName": {
            "type": "string",
            "nullable": true
          },
          "assignedTeamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assignedTeamName": {
            "type": "string",
            "nullable": true
          },
          "purposeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "purposeExternalId": {
            "type": "string",
            "nullable": true
          },
          "purchaseRequestExternalNumber": {
            "type": "string",
            "nullable": true
          },
          "purchaseOrderExternalNumber": {
            "type": "string",
            "nullable": true
          },
          "remarks": {
            "type": "string",
            "nullable": true
          },
          "isSelfPurchase": {
            "type": "boolean",
            "nullable": true
          },
          "purposeName": {
            "type": "string",
            "nullable": true
          },
          "relatedWorkNumber": {
            "type": "string",
            "nullable": true
          },
          "relatedWorkId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PurchaseRequestItem"
            },
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "number": "PR-1234",
          "typeId": 1234,
          "typeName": "purchase request type name",
          "createdDatetime": "2020-01-01T01:00:00+00:00",
          "modifiedDatetime": "2020-12-10T10:00:00+00:00",
          "createdDatetimeByMonth": "01.2020",
          "createdUserName": "created user name",
          "statusId": 1234,
          "statusExternalId": "STATUS-EXT-001",
          "statusName": "status name",
          "reason": "reason",
          "dueDate": "2020-01-01T01:00:00+00:00",
          "isCritical": true,
          "plannedDeliveryDate": "2020-01-01T01:00:00+00:00",
          "costPeriodYear": 2024,
          "costPeriodMonth": 1,
          "costPeriodId": 1,
          "assignedUserId": 1234,
          "assignedUserName": "assigned user name",
          "assignedTeamId": 1234,
          "assignedTeamName": "assigned team name",
          "purposeId": 1234,
          "purposeExternalId": "PURPOSE-EXT-001",
          "purposeName": "purpose name",
          "purchaseRequestExternalNumber": "external pr number",
          "purchaseOrderExternalNumber": "external po number",
          "remarks": "remarks",
          "isSelfPurchase": false,
          "relatedWorkId": 1234,
          "relatedWorkNumber": "related work number",
          "attachments": [
            {
              "id": 1234,
              "fileName": "document.pdf",
              "size": 1024000,
              "type": "application/pdf",
              "typeGroup": "OTHER",
              "createdDatetime": "2024-11-24T12:00:00Z"
            },
            {
              "id": 5678,
              "fileName": "image.jpg",
              "size": 2048000,
              "type": "image/jpeg",
              "typeGroup": "IMAGE",
              "createdDatetime": "2024-11-24T13:00:00Z"
            }
          ],
          "items": [
            {
              "id": 1234,
              "quantity": 10,
              "currencyCode": "EUR",
              "currencyRate": 4.32,
              "unitAmount": 123.45,
              "totalAmount": 1234.5,
              "unitOfMeasureId": 1234,
              "unitOfMeasureName": "unit of measure name",
              "unitOfMeasureExternalId": "UOM-EXT-001",
              "costAccountId": 1234,
              "costAccountName": "cost account name",
              "costAccountExternalId": "CA-EXT-001",
              "serviceTypeId": 1234,
              "serviceTypeName": "service type name",
              "serviceTypeExternalId": "ST-EXT-001",
              "supplierId": 1234,
              "supplierName": "supplier name",
              "supplierExternalId": "SUP-EXT-001",
              "assetId": 1234,
              "assetName": "asset name",
              "assetExternalId": "EXT-ASSET-001",
              "partId": 1234,
              "partExternalId": "EXT1234",
              "partName": "part name",
              "partNumber": "part number",
              "isNotExistingPart": false,
              "notExistingPartName": "non-existing part name",
              "notExistingPartInfo": "non-existing part info",
              "serviceDescription": "service description",
              "otherPRDescription": "other pr description"
            },
            {
              "id": 5678,
              "quantity": 5,
              "currencyCode": "EUR",
              "currencyRate": 4.32,
              "unitAmount": 67.89,
              "totalAmount": 339.45,
              "unitOfMeasureId": 5678,
              "unitOfMeasureName": "unit of measure name",
              "unitOfMeasureExternalId": "UOM-EXT-002",
              "costAccountId": 5678,
              "costAccountName": "cost account name",
              "costAccountExternalId": "CA-EXT-002",
              "serviceTypeId": 5678,
              "serviceTypeName": "service type name",
              "serviceTypeExternalId": "ST-EXT-002",
              "supplierId": 5678,
              "supplierName": "supplier name",
              "supplierExternalId": "SUP-EXT-002",
              "assetId": 5678,
              "assetName": "asset name",
              "assetExternalId": "EXT-ASSET-002",
              "partId": 5678,
              "partExternalId": "EXT5678",
              "partName": "part name",
              "partNumber": "part number",
              "isNotExistingPart": false,
              "notExistingPartName": "non-existing part name",
              "notExistingPartInfo": "non-existing part info",
              "serviceDescription": "service description",
              "otherPRDescription": "other pr description"
            }
          ]
        }
      },
      "PurchaseRequestItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "currencyRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "unitAmount": {
            "type": "number",
            "format": "double"
          },
          "totalAmount": {
            "type": "number",
            "format": "double"
          },
          "unitOfMeasureId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "nullable": true
          },
          "unitOfMeasureExternalId": {
            "type": "string",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "costAccountName": {
            "type": "string",
            "nullable": true
          },
          "costAccountExternalId": {
            "type": "string",
            "nullable": true
          },
          "serviceTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "serviceTypeName": {
            "type": "string",
            "nullable": true
          },
          "serviceTypeExternalId": {
            "type": "string",
            "nullable": true
          },
          "supplierId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "supplierName": {
            "type": "string",
            "nullable": true
          },
          "supplierExternalId": {
            "type": "string",
            "nullable": true
          },
          "assetId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "assetName": {
            "type": "string",
            "nullable": true
          },
          "assetExternalId": {
            "type": "string",
            "nullable": true
          },
          "partId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "partExternalId": {
            "type": "string",
            "nullable": true
          },
          "partName": {
            "type": "string",
            "nullable": true
          },
          "partNumber": {
            "type": "string",
            "nullable": true
          },
          "isNotExistingPart": {
            "type": "boolean",
            "nullable": true
          },
          "notExistingPartName": {
            "type": "string",
            "nullable": true
          },
          "notExistingPartInfo": {
            "type": "string",
            "nullable": true
          },
          "serviceDescription": {
            "type": "string",
            "nullable": true
          },
          "otherPRDescription": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "quantity": 10,
          "currencyCode": "EUR",
          "currencyRate": 4.32,
          "unitAmount": 123.45,
          "totalAmount": 1234.5,
          "unitOfMeasureId": 1234,
          "unitOfMeasureName": "unit of measure name",
          "unitOfMeasureExternalId": "UOM-EXT-001",
          "costAccountId": 1234,
          "costAccountName": "cost account name",
          "costAccountExternalId": "CA-EXT-001",
          "serviceTypeId": 1234,
          "serviceTypeName": "service type name",
          "serviceTypeExternalId": "ST-EXT-001",
          "supplierId": 1234,
          "supplierName": "supplier name",
          "supplierExternalId": "SUP-EXT-001",
          "assetId": 1234,
          "assetName": "asset name",
          "assetExternalId": "EXT-ASSET-001",
          "partId": 1234,
          "partName": "part name",
          "partNumber": "part number",
          "isNotExistingPart": false,
          "notExistingPartName": "non-existing part name",
          "notExistingPartInfo": "non-existing part info",
          "serviceDescription": "service description",
          "otherPRDescription": "other pr description"
        }
      },
      "PurchaseRequestPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PurchaseRequest"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "PurchaseRequestPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/PurchaseRequestPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PurchaseRequestResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/PurchaseRequest"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ResponseErrorPayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": "Undefined error",
            "nullable": true
          },
          "payload": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "status": {
            "type": "string",
            "default": "ERROR",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Shift": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "name": "Shift name",
          "startTime": "06:00",
          "endTime": "14:00"
        }
      },
      "ShiftPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Shift"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ShiftPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/ShiftPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Stock": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "partId": {
            "type": "integer",
            "format": "int32"
          },
          "partExternalId": {
            "type": "string",
            "nullable": true
          },
          "partName": {
            "type": "string",
            "nullable": true
          },
          "warehouseId": {
            "type": "integer",
            "format": "int32"
          },
          "warehouseName": {
            "type": "string",
            "nullable": true
          },
          "warehouseExternalId": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "minimumQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "reservedQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "maximumQuantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "storagePlaceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "storagePlaceName": {
            "type": "string",
            "nullable": true
          },
          "storagePlacePath": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "partId": 1234,
          "partExternalId": "EXT1234",
          "partName": "part name",
          "warehouseId": 1234,
          "warehouseName": "warehouse name",
          "warehouseExternalId": "EXT1234",
          "storagePlaceId": 1234,
          "storagePlaceName": "storage place name",
          "storagePlacePath": "storage place name",
          "quantity": 123.4,
          "minimumQuantity": 5,
          "reservedQuantity": 0,
          "maximumQuantity": 500
        }
      },
      "StockAdjustingParams": {
        "required": [
          "stockItemsList"
        ],
        "type": "object",
        "properties": {
          "stockItemsList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockItem"
            }
          }
        },
        "additionalProperties": false,
        "example": {
          "stockItemsList": [
            {
              "warehouseId": 1234,
              "partId": 5678,
              "quantity": 150,
              "minimumQuantity": 5,
              "maximumQuantity": 500,
              "storagePlaceId": null,
              "unitPrice": 42.15
            }
          ]
        }
      },
      "StockItem": {
        "required": [
          "maximumQuantity",
          "minimumQuantity",
          "partId",
          "quantity",
          "unitPrice",
          "warehouseId"
        ],
        "type": "object",
        "properties": {
          "warehouseId": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "partId": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "quantity": {
            "multipleOf": 0.0001,
            "maximum": 999999999,
            "minimum": 0,
            "type": "number",
            "description": "At most 4 decimal places. Extra digits are rejected, not rounded.",
            "format": "double"
          },
          "minimumQuantity": {
            "multipleOf": 0.0001,
            "maximum": 999999999,
            "minimum": 0,
            "type": "number",
            "description": "At most 4 decimal places. Extra digits are rejected, not rounded.",
            "format": "double"
          },
          "maximumQuantity": {
            "multipleOf": 0.0001,
            "maximum": 999999999,
            "minimum": 0,
            "type": "number",
            "description": "At most 4 decimal places. Extra digits are rejected, not rounded.",
            "format": "double"
          },
          "storagePlaceId": {
            "minimum": 0,
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "unitPrice": {
            "multipleOf": 0.01,
            "maximum": 999999999999.99,
            "minimum": 0,
            "type": "number",
            "description": "At most 2 decimal places. Extra digits are rejected, not rounded.",
            "format": "double"
          },
          "uniPrice": {
            "minimum": 0,
            "type": "number",
            "format": "double",
            "nullable": true,
            "readOnly": true,
            "writeOnly": true
          }
        },
        "additionalProperties": false,
        "example": {
          "warehouseId": 1234,
          "partId": 5678,
          "quantity": 150,
          "minimumQuantity": 5,
          "maximumQuantity": 500,
          "storagePlaceId": null,
          "unitPrice": 42.15
        }
      },
      "StockLog": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "stockMovementDatetime": {
            "type": "string",
            "format": "date-time"
          },
          "stockMovementTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "stockMovementTypeName": {
            "type": "string",
            "nullable": true
          },
          "unitPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "warehouseName": {
            "type": "string",
            "nullable": true
          },
          "warehouseId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "warehouseExternalId": {
            "type": "string",
            "nullable": true
          },
          "createdDatetime": {
            "type": "string",
            "format": "date-time"
          },
          "partId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "partExternalId": {
            "type": "string",
            "nullable": true
          },
          "partName": {
            "type": "string",
            "nullable": true
          },
          "workId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workNumber": {
            "type": "string",
            "nullable": true
          },
          "createdByFullName": {
            "type": "string",
            "nullable": true
          },
          "receivedByFullName": {
            "type": "string",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "nullable": true
          },
          "unitOfMeasureId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "unitOfMeasureExternalId": {
            "type": "string",
            "nullable": true
          },
          "changeValue": {
            "type": "number",
            "description": "Value in the system currency",
            "format": "double",
            "nullable": true
          },
          "inventoryDocumentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inventoryDocumentNumber": {
            "type": "string",
            "nullable": true
          },
          "inventoryDocumentDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "inventoryDocumentTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inventoryDocumentTypeName": {
            "type": "string",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "costAccountExternalId": {
            "type": "string",
            "nullable": true
          },
          "costAccountName": {
            "type": "string",
            "nullable": true
          },
          "partRelatedAssetId": {
            "type": "integer",
            "description": "Related asset ID for which the part was used (Part used for)",
            "format": "int32",
            "nullable": true
          },
          "partRelatedAssetName": {
            "type": "string",
            "description": "Related asset name for which the part was used (Part used for)",
            "nullable": true
          },
          "partRelatedAssetExternalId": {
            "type": "string",
            "description": "Related asset external ID for which the part was used (Part used for)",
            "nullable": true
          },
          "purchaseRequestId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "purchaseRequestExternalNumber": {
            "type": "string",
            "nullable": true
          },
          "purchaseOrderExternalNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "stockMovementDatetime": "2021-12-10T10:00:00+00:00",
          "stockMovementTypeId": 1234,
          "stockMovementTypeName": "stock movement type name",
          "unitPrice": 123.4,
          "warehouseName": "warehouse name",
          "warehouseId": 1234,
          "createdDatetime": "2021-12-10T10:00:00+00:00",
          "partId": 1234,
          "partName": "part name",
          "partExternalId": "EXT1234",
          "workId": 1234,
          "workNumber": "WO-1234",
          "createdByFullName": "created by full name",
          "receivedByFullName": "received by full name",
          "changeValue": 123.4,
          "unitOfMeasureId": 1234,
          "unitOfMeasureName": "unit of measure name",
          "inventoryDocumentId": 1234,
          "inventoryDocumentNumber": "document number",
          "inventoryDocumentDate": "2021-12-10",
          "inventoryDocumentTypeId": 1234,
          "inventoryDocumentTypeName": "inventory document type name",
          "partRelatedAssetId": 1234,
          "partRelatedAssetName": "asset name",
          "partRelatedAssetExternalId": "EXT-ASSET-1234",
          "purchaseRequestId": 1234,
          "purchaseRequestExternalNumber": "external pr number",
          "purchaseOrderExternalNumber": "external po number"
        }
      },
      "StockLogPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockLog"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "StockLogPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/StockLogPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StockPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Stock"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "StockPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/StockPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StoragePlace": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "warehouseId": {
            "type": "integer",
            "format": "int32"
          },
          "parentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "warehouseId": 1234,
          "parentId": 1234,
          "externalId": "EXTID1234",
          "number": "SP-1234",
          "name": "storage place name"
        }
      },
      "StoragePlacePaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StoragePlace"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "StoragePlacePaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/StoragePlacePaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StoragePlaceParams": {
        "required": [
          "name",
          "warehouseId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Storage place name"
          },
          "warehouseId": {
            "type": "integer",
            "description": "Warehouse id",
            "format": "int32"
          },
          "parentId": {
            "type": "integer",
            "description": "Parent storage place id",
            "format": "int32",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "External id",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SyncStockQuantitiesParams": {
        "required": [
          "stockItemsList"
        ],
        "type": "object",
        "properties": {
          "stockItemsList": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SyncStockQuantityItem"
            }
          }
        },
        "additionalProperties": false,
        "example": {
          "stockItemsList": [
            {
              "partId": 1234,
              "partExternalId": "EXT1234",
              "warehouseId": 1234,
              "warehouseExternalId": "EXT1234",
              "quantity": 150,
              "unitPrice": 42.15
            }
          ]
        }
      },
      "SyncStockQuantityInvalidItem": {
        "type": "object",
        "properties": {
          "item": {
            "$ref": "#/components/schemas/SyncStockQuantityItem"
          },
          "reason": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SyncStockQuantityInvalidItemsResponsePayload": {
        "type": "object",
        "properties": {
          "invalidItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SyncStockQuantityInvalidItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SyncStockQuantityInvalidItemsResponsePayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/SyncStockQuantityInvalidItemsResponsePayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SyncStockQuantityItem": {
        "required": [
          "quantity",
          "unitPrice"
        ],
        "type": "object",
        "properties": {
          "partId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Part ID (use either partId or partExternalId)",
            "format": "int32",
            "nullable": true
          },
          "partExternalId": {
            "type": "string",
            "description": "Part external ID (use either partId or partExternalId)",
            "nullable": true
          },
          "warehouseId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Warehouse ID (use either warehouseId or warehouseExternalId)",
            "format": "int32",
            "nullable": true
          },
          "warehouseExternalId": {
            "type": "string",
            "description": "Warehouse external ID (use either warehouseId or warehouseExternalId)",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "Quantity to set (overwrites current stock level)",
            "format": "double"
          },
          "unitPrice": {
            "minimum": 0,
            "type": "number",
            "description": "Unit price",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "example": {
          "partId": 1234,
          "partExternalId": "EXT1234",
          "warehouseId": 1234,
          "warehouseExternalId": "EXT1234",
          "quantity": 150,
          "unitPrice": 42.15
        }
      },
      "TAG_TYPES": {
        "enum": [
          "WORK",
          "EQUIPMENT",
          "VENDOR",
          "PART",
          "PRODUCTION_AREA",
          "ATTACHMENT",
          "PRODUCTION_LINE"
        ],
        "type": "string"
      },
      "TEAM_TYPES": {
        "enum": [
          "WORK_HANDLING",
          "ANDON_CALL_HANDLING"
        ],
        "type": "string"
      },
      "Tag": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "resourceType": {
            "$ref": "#/components/schemas/TAG_TYPES"
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "name": "Tag name",
          "resourceType": "RESOURCE_TYPE"
        }
      },
      "TagPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tag"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "TagPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/TagPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Team": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/TEAM_TYPES"
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "name": "Team name"
        }
      },
      "TeamPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Team"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "TeamPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/TeamPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdatePartSupplierParams": {
        "type": "object",
        "properties": {
          "partNumber": {
            "type": "string",
            "nullable": true
          },
          "isDefault": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "example": {
          "partNumber": "supplier part number",
          "isDefault": false
        }
      },
      "UpdatedAssetParams": {
        "type": "object",
        "properties": {
          "locatedAtId": {
            "type": "integer",
            "description": "Parent asset id",
            "format": "int32",
            "nullable": true
          },
          "locatedAtExternalId": {
            "type": "string",
            "description": "Parent asset external id",
            "nullable": true
          },
          "manufacturerId": {
            "type": "integer",
            "description": "Manufacturer id",
            "format": "int32",
            "nullable": true
          },
          "model": {
            "type": "string",
            "description": "Model",
            "nullable": true
          },
          "internalNumber": {
            "type": "string",
            "description": "Internal Number",
            "nullable": true
          },
          "serialNumber": {
            "type": "string",
            "description": "Serial Number",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "description": "Type id",
            "format": "int32",
            "nullable": true
          },
          "isPublicRequest": {
            "type": "boolean",
            "description": "Public request"
          },
          "criticalityId": {
            "type": "integer",
            "description": "Criticality id",
            "format": "int32",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "description": "Cost account id",
            "format": "int32",
            "nullable": true
          },
          "vendorId": {
            "type": "integer",
            "description": "Vendor id",
            "format": "int32",
            "nullable": true
          },
          "productionDate": {
            "type": "string",
            "description": "Production date",
            "format": "date-time",
            "nullable": true
          },
          "installationDate": {
            "type": "string",
            "description": "Installation date",
            "format": "date-time",
            "nullable": true
          },
          "warrantyDate": {
            "type": "string",
            "description": "Warranty date",
            "format": "date-time",
            "nullable": true
          },
          "initPrice": {
            "type": "number",
            "description": "Initital price",
            "format": "double",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "External asset id",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "description": "Asset additional info",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "Asset status id (default 217 - Operational)",
            "format": "int32",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "Asset address",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "description": "Asset address city",
            "nullable": true
          },
          "addressState": {
            "type": "string",
            "description": "Asset address state",
            "nullable": true
          },
          "addressZip": {
            "type": "string",
            "description": "Asset address zip",
            "nullable": true
          },
          "addressCountry": {
            "type": "string",
            "description": "Asset address country",
            "nullable": true
          },
          "addressLatitude": {
            "type": "number",
            "description": "Asset address latitude",
            "format": "double",
            "nullable": true
          },
          "addressLongitude": {
            "type": "number",
            "description": "Asset address longitude",
            "format": "double",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Asset name",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdatedInventoryDocumentItemParams": {
        "type": "object",
        "properties": {
          "quantity": {
            "multipleOf": 0.0001,
            "maximum": 999999999,
            "minimum": 0,
            "type": "number",
            "description": "Quantity. At most 4 decimal places. Extra digits are rejected, not rounded.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "quantity": 12.34
        }
      },
      "UpdatedLocationParams": {
        "type": "object",
        "properties": {
          "locatedAtId": {
            "type": "integer",
            "description": "Parent asset id",
            "format": "int32",
            "nullable": true
          },
          "locatedAtExternalId": {
            "type": "string",
            "description": "Parent asset external id",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "description": "Type id",
            "format": "int32",
            "nullable": true
          },
          "isPublicRequest": {
            "type": "boolean",
            "description": "Public request"
          },
          "isParentAddress": {
            "type": "boolean",
            "description": "Set parent address as location address",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "Location address",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "description": "Location address city",
            "nullable": true
          },
          "addressState": {
            "type": "string",
            "description": "Location address state",
            "nullable": true
          },
          "addressZip": {
            "type": "string",
            "description": "Location address zip",
            "nullable": true
          },
          "addressCountry": {
            "type": "string",
            "description": "Location address country",
            "nullable": true
          },
          "addressLatitude": {
            "type": "number",
            "description": "Location address latitude",
            "format": "double",
            "nullable": true
          },
          "addressLongitude": {
            "type": "number",
            "description": "Location longitude",
            "format": "double",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "External asset id",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "description": "Location additional info",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "description": "Cost account id",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Asset name",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdatedMeterParams": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Meter name. If provided, cannot be null.",
            "nullable": true
          },
          "unitOfMeasureId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unit of measure internal id. If provided, cannot be null. Use either unitOfMeasureId or unitOfMeasureExternalId.",
            "format": "int32",
            "nullable": true
          },
          "unitOfMeasureExternalId": {
            "type": "string",
            "description": "Unit of measure external id. If provided, cannot be null. Use either unitOfMeasureId or unitOfMeasureExternalId. Resolved to internal id before save.",
            "nullable": true
          },
          "readingMode": {
            "type": "integer",
            "description": "Meter reading mode as integer. 0 = ExactValue, 1 = Increase. If provided, cannot be null. Unknown values are rejected.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "name": "Runtime hours",
          "unitOfMeasureId": 5678,
          "unitOfMeasureExternalId": "UOM-EXT-001",
          "readingMode": 1
        }
      },
      "UpdatedObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "UpdatedObjectResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/UpdatedObject"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdatedPartParams": {
        "type": "object",
        "properties": {
          "manufacturerId": {
            "type": "integer",
            "description": "Manufacturer id",
            "format": "int32",
            "nullable": true
          },
          "manufacturerExternalId": {
            "type": "string",
            "description": "Manufacturer external id. Used as an alternative to ManufacturerId. If ManufacturerId is also provided, ManufacturerId takes precedence.",
            "nullable": true
          },
          "manufacturerPartNumber": {
            "type": "string",
            "description": "Manufacturer part number",
            "nullable": true
          },
          "barCode": {
            "type": "string",
            "description": "Bar code",
            "nullable": true
          },
          "unitOfMeasureId": {
            "type": "integer",
            "description": "Unit of measure internal id. Required if UnitOfMeasureExternalId is not provided. If both are provided, UnitOfMeasureId takes precedence.",
            "format": "int32",
            "nullable": true
          },
          "unitOfMeasureExternalId": {
            "type": "string",
            "description": "Unit of measure external id. Required if UnitOfMeasureId is not provided. If both are provided, UnitOfMeasureId takes precedence.",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "description": "Type id",
            "format": "int32",
            "nullable": true
          },
          "isCritical": {
            "type": "boolean",
            "description": "Is critical"
          },
          "isActive": {
            "type": "boolean",
            "description": "Is active"
          },
          "externalId": {
            "type": "string",
            "description": "External asset id",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "description": "Asset additional info",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Part name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "name": "part name",
          "manufacturerId": 1234,
          "manufacturerExternalId": "MFG-EXT-001",
          "manufacturerPartNumber": "HF-123456",
          "barCode": "1234567890123",
          "unitOfMeasureId": 1234,
          "unitOfMeasureExternalId": "UOM-EXT-001",
          "typeId": 1234,
          "isCritical": false,
          "isActive": true,
          "externalId": "EXID1234",
          "additionalInfo": "additional info"
        }
      },
      "UpdatedProductionAreaParams": {
        "type": "object",
        "properties": {
          "locatedAtId": {
            "type": "integer",
            "description": "Parent asset id (Location or Production Area)",
            "format": "int32",
            "nullable": true
          },
          "locatedAtExternalId": {
            "type": "string",
            "description": "Parent asset external id (Location or Production Area)",
            "nullable": true
          },
          "isPublicRequest": {
            "type": "boolean",
            "description": "Public request"
          },
          "isParentAddress": {
            "type": "boolean",
            "description": "Set parent address as production area address",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "Production area address",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "description": "Production area address city",
            "nullable": true
          },
          "addressState": {
            "type": "string",
            "description": "Production area address state",
            "nullable": true
          },
          "addressZip": {
            "type": "string",
            "description": "Production area address zip",
            "nullable": true
          },
          "addressCountry": {
            "type": "string",
            "description": "Production area address country",
            "nullable": true
          },
          "addressLatitude": {
            "type": "number",
            "description": "Production area address latitude",
            "format": "double",
            "nullable": true
          },
          "addressLongitude": {
            "type": "number",
            "description": "Production area longitude",
            "format": "double",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "External production area id",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "description": "Production area additional info",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "description": "Cost account id",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Production area name",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdatedProductionLineParams": {
        "type": "object",
        "properties": {
          "locatedAtId": {
            "type": "integer",
            "description": "Parent asset or location id (located at)",
            "format": "int32",
            "nullable": true
          },
          "locatedAtExternalId": {
            "type": "string",
            "description": "Parent asset or location external id",
            "nullable": true
          },
          "isPublicRequest": {
            "type": "boolean",
            "description": "Public request"
          },
          "additionalInfo": {
            "type": "string",
            "description": "Additional info",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "External id",
            "nullable": true
          },
          "costAccountId": {
            "type": "integer",
            "description": "Cost account id",
            "format": "int32",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "Status id (default 217 - Operational)",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Production line name",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdatedPurchaseRequestParams": {
        "type": "object",
        "properties": {
          "typeId": {
            "type": "integer",
            "description": "Purchase request type ID",
            "format": "int32",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "Purchase request status ID - if provided, cannot be null. Use either statusId or statusExternalId.",
            "format": "int32",
            "nullable": true
          },
          "statusExternalId": {
            "type": "string",
            "description": "Purchase request status external ID - if provided, cannot be null. Use either statusId or statusExternalId.",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "description": "Purchase request reason",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "Due date - ISO8601 format (e.g., 2024-12-31, 2024-12-31T23:59:59, 2024-12-31T15:19:21+01:00)",
            "format": "date-time",
            "nullable": true
          },
          "isCritical": {
            "type": "boolean",
            "description": "Is critical- if provided, cannot be null",
            "nullable": true
          },
          "plannedDeliveryDate": {
            "type": "string",
            "description": "Planned delivery date - ISO8601 format (e.g., 2024-12-31, 2024-12-31T23:59:59, 2024-12-31T15:19:21+01:00)",
            "format": "date-time",
            "nullable": true
          },
          "assignedUserId": {
            "type": "integer",
            "description": "Assigned user ID",
            "format": "int32",
            "nullable": true
          },
          "assignedTeamId": {
            "type": "integer",
            "description": "Assigned team ID",
            "format": "int32",
            "nullable": true
          },
          "purchaseRequestExternalNumber": {
            "type": "string",
            "description": "Purchase request external number",
            "nullable": true
          },
          "purchaseOrderExternalNumber": {
            "type": "string",
            "description": "Purchase order external number",
            "nullable": true
          },
          "remarks": {
            "type": "string",
            "description": "Remarks",
            "nullable": true
          },
          "isSelfPurchase": {
            "type": "boolean",
            "description": "Is self purchase - if provided, cannot be null",
            "nullable": true
          },
          "relatedWorkId": {
            "type": "integer",
            "description": "Related work ID",
            "format": "int32",
            "nullable": true
          },
          "costPeriodId": {
            "type": "integer",
            "description": "Cost period ID. Use either costPeriodId or costPeriodExternalId (MM.YYYY).",
            "format": "int32",
            "nullable": true
          },
          "costPeriodExternalId": {
            "type": "string",
            "description": "Cost period external ID in MM.YYYY format. Use either costPeriodId or costPeriodExternalId.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdatedStockParams": {
        "type": "object",
        "properties": {
          "minimumQuantity": {
            "multipleOf": 0.0001,
            "maximum": 999999999,
            "minimum": 0,
            "type": "number",
            "description": "Minimum quantity. At most 4 decimal places. Extra digits are rejected, not rounded.",
            "format": "double",
            "nullable": true
          },
          "maximumQuantity": {
            "multipleOf": 0.0001,
            "maximum": 999999999,
            "minimum": 0,
            "type": "number",
            "description": "Maximum quantity. At most 4 decimal places. Extra digits are rejected, not rounded.",
            "format": "double",
            "nullable": true
          },
          "storagePlaceId": {
            "minimum": 0,
            "type": "integer",
            "description": "Storage place ID",
            "format": "int32",
            "nullable": true
          },
          "storagePlaceText": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "description": "Storage place text",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "minimumQuantity": 5,
          "maximumQuantity": 500,
          "storagePlaceId": null,
          "storagePlaceText": null
        }
      },
      "UpdatedStoragePlaceParams": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Storage place name",
            "nullable": true
          },
          "warehouseId": {
            "type": "integer",
            "description": "Warehouse id",
            "format": "int32",
            "nullable": true
          },
          "parentId": {
            "type": "integer",
            "description": "Parent storage place id",
            "format": "int32",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "External id",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdatedVendorParams": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Vendor name",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Vendor email",
            "nullable": true
          },
          "serviceEmail": {
            "type": "string",
            "description": "Vendor service email",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Vendor phone",
            "nullable": true
          },
          "servicePhone": {
            "type": "string",
            "description": "Vendor service phone",
            "nullable": true
          },
          "servicePhonePrefix": {
            "maxLength": 6,
            "type": "string",
            "description": "Vendor service phone prefix",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "description": "Vendor additional informations",
            "nullable": true
          },
          "typeOfServiceId": {
            "type": "integer",
            "description": "Type of service id",
            "format": "int32",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "Vendor address informations",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "description": "Vendor address city",
            "nullable": true
          },
          "addressCountry": {
            "type": "string",
            "description": "Vendor address country",
            "nullable": true
          },
          "addressZip": {
            "type": "string",
            "description": "Vendor address zip code",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdatedWorkOrderParams": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "description": "The subject of the work order.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the work order.",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/PRIORITY_TYPES"
          },
          "typeOfWorkId": {
            "type": "integer",
            "description": "The type of work order. See Dictionaries section.",
            "format": "int32",
            "nullable": true
          },
          "failureCodeId": {
            "type": "integer",
            "description": "The client failure code ID. Used as default if ExternalFailureCode is also provided. See FailureCodes section.",
            "format": "int32",
            "nullable": true
          },
          "externalFailureCode": {
            "type": "string",
            "description": "The client custom failure code. See FailureCodes section.",
            "nullable": true
          },
          "completedDatetime": {
            "type": "string",
            "description": "The completion date and time in ISO8601 format.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "completedUserId": {
            "type": "integer",
            "description": "The user ID who completed the work order. See Users section.",
            "format": "int32",
            "nullable": true
          },
          "technicalRemarks": {
            "maxLength": 2500,
            "type": "string",
            "description": "Technical remarks for the work order. Maximum 2500 characters.",
            "nullable": true
          },
          "nonPublic": {
            "type": "boolean",
            "description": "Set to true if the work order should be hidden from the requester, even if they have access to work orders.",
            "nullable": true
          },
          "problemId": {
            "type": "integer",
            "description": "The problem ID associated with the work order. See Dictionaries section.",
            "format": "int32",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "The status ID of the work order. See Dictionaries section.",
            "format": "int32",
            "nullable": true
          },
          "vendorId": {
            "type": "integer",
            "description": "The vendor ID associated with the work order. See Vendors/Suppliers section.",
            "format": "int32",
            "nullable": true
          },
          "allDay": {
            "type": "boolean",
            "description": "Set to true if the work order is for the entire day. Default false. If true, the time in fields DueDateFrom and DueDateTo will be ignored.",
            "nullable": true
          },
          "dueDateFrom": {
            "type": "string",
            "description": "The start date and time for the work order in ISO8601 format. If AllDay is true, the time will be ignored.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "dueDateTo": {
            "type": "string",
            "description": "The end date/time for the work order in ISO8601 format. If AllDay is true, the time will be ignored.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "totalDurationSeconds": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "The total duration of the work order in seconds.",
            "format": "int32",
            "nullable": true
          },
          "influenceOnProductionCycleTime": {
            "type": "boolean",
            "description": "Set to true if the work order affects the production cycle time.",
            "nullable": true
          },
          "estimatedTotalTimeSeconds": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "The estimated total time for the work order in seconds.",
            "format": "int32",
            "nullable": true
          },
          "assetShutdownRequired": {
            "type": "boolean",
            "description": "Set to true if asset shutdown is required for this work order.",
            "nullable": true
          },
          "allowDuplicateForFailureCodeId": {
            "type": "boolean",
            "description": "Set to false to prevent creating more than one work request for a specific asset and failure code combination.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "User": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "fullName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "roleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "roleName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "fullName": "User full name",
          "email": "name.surname@example.com",
          "roleId": 1234,
          "roleName": "Role name"
        }
      },
      "UserPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/User"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "UserPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/UserPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Vendor": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "serviceEmail": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "servicePhone": {
            "type": "string",
            "nullable": true
          },
          "servicePhonePrefix": {
            "type": "string",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "nullable": true
          },
          "typeOfServiceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "typeOfServiceName": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "nullable": true
          },
          "addressZip": {
            "type": "string",
            "nullable": true
          },
          "addressCountry": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "VendorParams": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Vendor name"
          },
          "email": {
            "type": "string",
            "description": "Vendor email",
            "nullable": true
          },
          "serviceEmail": {
            "type": "string",
            "description": "Vendor service email",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Vendor phone",
            "nullable": true
          },
          "servicePhone": {
            "type": "string",
            "description": "Vendor service phone",
            "nullable": true
          },
          "servicePhonePrefix": {
            "maxLength": 6,
            "type": "string",
            "description": "Vendor service phone prefix",
            "nullable": true
          },
          "additionalInfo": {
            "type": "string",
            "description": "Vendor additional informations",
            "nullable": true
          },
          "typeOfServiceId": {
            "type": "integer",
            "description": "Type of service id",
            "format": "int32",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "Vendor address informations",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "description": "Vendor address city",
            "nullable": true
          },
          "addressCountry": {
            "type": "string",
            "description": "Vendor address country",
            "nullable": true
          },
          "addressZip": {
            "type": "string",
            "description": "Vendor address zip code",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "VendorResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/Vendor"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WORK_GROUPS": {
        "enum": [
          "REQUESTS_ONLY",
          "PREVENTIVE_ONLY",
          "REACTIVE_ONLY"
        ],
        "type": "string"
      },
      "WorkOrder": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the work order.",
            "format": "int32"
          },
          "number": {
            "type": "string",
            "description": "The work order number.",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "description": "The subject of the work order.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the work order.",
            "nullable": true
          },
          "createdDatetime": {
            "type": "string",
            "description": "The date and time when the work order was created.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time"
          },
          "createdUserId": {
            "type": "integer",
            "description": "The user ID who created the work order. See Users section.",
            "format": "int32"
          },
          "createdUserName": {
            "type": "string",
            "description": "The name of the user who created the work order.",
            "nullable": true
          },
          "createdUserEmail": {
            "type": "string",
            "description": "The email address of the user who created the work order.",
            "nullable": true
          },
          "createdUserPhoneNumber": {
            "type": "string",
            "description": "The phone number of the user who created the work order.",
            "nullable": true
          },
          "completedDatetime": {
            "type": "string",
            "description": "The date and time when the work order was completed.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "completedUserId": {
            "type": "integer",
            "description": "The user ID who completed the work order. See Users section.",
            "format": "int32",
            "nullable": true
          },
          "completedUserName": {
            "type": "string",
            "description": "The name of the user who completed the work order.",
            "nullable": true
          },
          "modifiedDatetime": {
            "type": "string",
            "description": "The date and time when the work order was last modified.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time"
          },
          "modifiedUserId": {
            "type": "integer",
            "description": "The user ID who last modified the work order. See Users section.",
            "format": "int32",
            "nullable": true
          },
          "modifiedUserName": {
            "type": "string",
            "description": "The name of the user who last modified the work order.",
            "nullable": true
          },
          "technicalRemarks": {
            "type": "string",
            "description": "Technical remarks for the work order. Maximum 2500 characters.",
            "nullable": true
          },
          "nonPublic": {
            "type": "boolean",
            "description": "If true, the work order is hidden from the requester, even if they normally have access to work orders."
          },
          "priority": {
            "$ref": "#/components/schemas/PRIORITY_TYPES"
          },
          "problemId": {
            "type": "integer",
            "description": "The problem ID associated with the work order. See Dictionaries section.",
            "format": "int32",
            "nullable": true
          },
          "problemName": {
            "type": "string",
            "description": "The name of the problem associated with the work order.",
            "nullable": true
          },
          "failureCodeId": {
            "type": "integer",
            "description": "The failure code ID associated with the work order. See FailureCodes section.",
            "format": "int32",
            "nullable": true
          },
          "externalFailureCode": {
            "type": "string",
            "description": "The external failure code associated with the work order. See FailureCodes section.",
            "nullable": true
          },
          "failureCodeName": {
            "type": "string",
            "description": "The name of the failure code associated with the work order.",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "The status ID of the work order. See Dictionaries section.",
            "format": "int32",
            "nullable": true
          },
          "statusName": {
            "type": "string",
            "description": "The name of the status associated with the work order.",
            "nullable": true
          },
          "typeOfWorkId": {
            "type": "integer",
            "description": "The type of work ID associated with the work order. See Dictionaries section.",
            "format": "int32",
            "nullable": true
          },
          "typeOfWorkName": {
            "type": "string",
            "description": "The name of the type of work associated with the work order.",
            "nullable": true
          },
          "customerId": {
            "type": "integer",
            "description": "The customer ID associated with the work order.",
            "format": "int32",
            "nullable": true
          },
          "customerName": {
            "type": "string",
            "description": "The name of the customer associated with the work order.",
            "nullable": true
          },
          "vendorId": {
            "type": "integer",
            "description": "The vendor ID associated with the work order. See Vendors/Suppliers section.",
            "format": "int32",
            "nullable": true
          },
          "vendorName": {
            "type": "string",
            "description": "The name of the vendor associated with the work order.",
            "nullable": true
          },
          "isVendorConfirmEmailSend": {
            "type": "boolean",
            "description": "True if the vendor confirmation email was sent."
          },
          "vendorRequestSentDatetime": {
            "type": "string",
            "description": "The date and time when the vendor request was sent.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "vendorConfirmDatetime": {
            "type": "string",
            "description": "The date and time when the vendor confirmed the request.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "vendorCompletedDatetime": {
            "type": "string",
            "description": "The date and time when the vendor completed the work order.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "allDay": {
            "type": "boolean",
            "description": "True if the work order is for the entire day. If true, the time in fields DueDateFrom and DueDateTo will be ignored"
          },
          "dueDateFrom": {
            "type": "string",
            "description": "The start date and time for the work order in ISO8601 format. If AllDay is true, the time will be ignored.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "nullable": true
          },
          "dueDateTo": {
            "type": "string",
            "description": "The end date and time for the work order in ISO8601 format. If AllDay is true, the time will be ignored.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "nullable": true
          },
          "totalDurationSeconds": {
            "type": "integer",
            "description": "The total duration of the work order in seconds.",
            "format": "int32",
            "nullable": true
          },
          "downtimeId": {
            "type": "integer",
            "description": "The asset downtime ID associated with the work order. See Downtimes section.",
            "format": "int32",
            "nullable": true
          },
          "downtimeDurationSeconds": {
            "type": "integer",
            "description": "The duration of the asset downtime in seconds.",
            "format": "int32",
            "nullable": true
          },
          "downtimeStartDatetime": {
            "type": "string",
            "description": "The start date and time of the asset downtime.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "isDowntimeEnd": {
            "type": "boolean",
            "description": "True if the asset downtime has ended."
          },
          "assetReleaseToWorkUserId": {
            "type": "integer",
            "description": "The user ID who released the asset to work. See Users section.",
            "format": "int32",
            "nullable": true
          },
          "assetReleaseToWorkUserName": {
            "type": "string",
            "description": "The name of the user who released the asset to work.",
            "nullable": true
          },
          "assetReleaseToWorkDateTime": {
            "type": "string",
            "description": "The date and time when the asset was released to work.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "isCleanRequired": {
            "type": "boolean",
            "description": "True if cleaning is required after the work order status changes to completed or closed.",
            "nullable": true
          },
          "cleanRequestConfirmDatetime": {
            "type": "string",
            "description": "The date and time when the cleaning request was confirmed.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "cleanRequestConfirmUserId": {
            "type": "integer",
            "description": "The user ID who confirmed the cleaning request. See Users section.",
            "format": "int32",
            "nullable": true
          },
          "cleanRequestConfirmUserName": {
            "type": "string",
            "description": "The name of the user who confirmed the cleaning request.",
            "nullable": true
          },
          "cleanConfirmDatetime": {
            "type": "string",
            "description": "The date and time when the cleaning was confirmed.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "cleanConfirmUserId": {
            "type": "integer",
            "description": "The user ID who confirmed the cleaning. See Users section.",
            "format": "int32",
            "nullable": true
          },
          "cleanConfirmUserName": {
            "type": "string",
            "description": "The name of the user who confirmed the cleaning.",
            "nullable": true
          },
          "checklistWarning": {
            "type": "boolean",
            "description": "True if the checklist for the work order has not been fully completed."
          },
          "isPreventiveWork": {
            "type": "boolean",
            "description": "True if the task belongs to the preventive group."
          },
          "influenceOnProductionCycleTime": {
            "type": "boolean",
            "description": "True if the work order affects the production cycle time."
          },
          "estimatedTotalTimeSeconds": {
            "type": "integer",
            "description": "The estimated total time for the work order in seconds.",
            "format": "int32",
            "nullable": true
          },
          "assetShutdownRequired": {
            "type": "boolean",
            "description": "True if asset shutdown is required for this work order."
          },
          "assignedAssetsOrLocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetDictionaryItem"
            },
            "description": "A list of asset or location objects associated with the work order. See Assets and Locations section.",
            "nullable": true
          },
          "assignedUsers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryItem"
            },
            "description": "A list of user objects assigned to the work order. See Users section.",
            "nullable": true
          },
          "assignedTeams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryItem"
            },
            "description": "A list of team objects assigned to the work order. See Teams section.",
            "nullable": true
          },
          "assignedShifts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryItem"
            },
            "description": "A list of shift objects assigned to the work order. See Shifts section.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryItem"
            },
            "description": "A list of tag objects assigned to the work order. See Tags section.",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "description": "A list of attachment objects assigned to the work order. See Attachments section.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "clientId": 1234,
          "number": "WO-1234",
          "subject": "order subject",
          "description": "order description",
          "createdDatetime": "2021-12-10T10:00:00+00:00",
          "modifiedDatetime": "2021-12-10T10:00:00+00:00",
          "createdUserId": 1234,
          "createdUserName": "order created user name",
          "createdUserEmail": "order created user email",
          "createdUserPhoneNumber": "order created user phone number",
          "completedDatetime": "2021-12-10T10:00:00+00:00",
          "completedUserId": 1234,
          "completedUserName": "order completed user name",
          "technicalRemarks": "order technical remarks",
          "nonPublic": false,
          "priority": "LOW",
          "problemId": 1234,
          "problemName": "order problem name",
          "failureCodeId": 1234,
          "failureCodeName": "order failure code name",
          "statusId": 1234,
          "statusName": "order status name",
          "typeOfWorkId": 1234,
          "typeOfWorkName": "order type of work name",
          "customerId": 1234,
          "customerName": "order customer name",
          "vendorId": 1234,
          "vendorName": "order vendor name",
          "isVendorConfirmEmailSend": false,
          "vendorRequestSentDatetime": "2021-12-10T10:00:00+00:00",
          "vendorConfirmDatetime": "2021-12-10T10:00:00+00:00",
          "vendorCompletedDatetime": "2021-12-10T10:00:00+00:00",
          "allDay": false,
          "dueDateFrom": "2021-12-10T10:00:00+00:00",
          "dueDateTo": "2021-12-10T10:00:00+00:00",
          "totalDurationSeconds": 1234,
          "downtimeId": 1234,
          "downtimeDurationSeconds": 1234,
          "downtimeStartDatetime": "2021-12-10T10:00:00+00:00",
          "isDowntimeEnd": false,
          "assetReleaseToWorkUserId": 1234,
          "assetReleaseToWorkUserName": "order asset release to work user name",
          "assetReleaseToWorkDateTime": "2021-12-10T10:00:00+00:00",
          "isCleanRequired": false,
          "cleanRequestConfirmDatetime": "2021-12-10T10:00:00+00:00",
          "cleanRequestConfirmUserId": 1234,
          "cleanRequestConfirmUserName": "order clean request confirm user name",
          "cleanConfirmDatetime": "2021-12-10T10:00:00+00:00",
          "cleanConfirmUserId": 1234,
          "cleanConfirmUserName": "order clean confirm user name",
          "checklistWarning": false,
          "isPreventiveWork": false,
          "influenceOnProductionCycleTime": false,
          "estimatedTotalTimeSeconds": 1234,
          "assetShutdownRequired": false,
          "assignedAssetsOrLocations": [
            {
              "id": 1234,
              "name": "test asset name 1",
              "number": "EQ-1234",
              "externalId": "extId1234",
              "typeId": "1234",
              "typeName": "type name",
              "resourceType": "RESURCE_TYPE"
            },
            {
              "id": 5678,
              "name": "test asset name 1",
              "number": "EQ-5678",
              "externalId": "extId5678",
              "typeId": "5678",
              "typeName": "type name",
              "resourceType": "RESOURCE_TYPE"
            }
          ],
          "assignedUsers": [
            {
              "id": 1234,
              "name": "test user name 1"
            },
            {
              "id": 5678,
              "name": "test user name 2"
            }
          ],
          "assignedTeams": [
            {
              "id": 1234,
              "name": "test team name 1"
            },
            {
              "id": 5678,
              "name": "test team name 2"
            }
          ],
          "assignedShifts": [
            {
              "id": 1234,
              "name": "test shift name 1"
            },
            {
              "id": 5678,
              "name": "test shift name 2"
            }
          ],
          "tags": [
            {
              "id": 1234,
              "name": "tag name 1"
            },
            {
              "id": 5678,
              "name": "tag name 2"
            }
          ],
          "attachments": [
            {
              "id": 1234,
              "fileName": "document.pdf",
              "size": 1024000,
              "type": "application/pdf",
              "typeGroup": "OTHER",
              "createdDatetime": "2024-11-24T12:00:00Z"
            },
            {
              "id": 5678,
              "fileName": "image.jpg",
              "size": 2048000,
              "type": "image/jpeg",
              "typeGroup": "IMAGE",
              "createdDatetime": "2024-11-24T13:00:00Z"
            }
          ]
        }
      },
      "WorkOrderAssetsOrLocationsAssignmentParams": {
        "type": "object",
        "properties": {
          "assetsOrLocationsIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "assetsOrLocationsExternalIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkOrderPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkOrder"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "WorkOrderPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/WorkOrderPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkOrderParams": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "description": "The subject of the work order.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the work order.",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/PRIORITY_TYPES"
          },
          "failureCodeId": {
            "type": "integer",
            "description": "The client failure code ID. Used as default if ExternalFailureCode is also provided. See FailureCodes section.",
            "format": "int32",
            "nullable": true
          },
          "externalFailureCode": {
            "type": "string",
            "description": "The client custom failure code. See FailureCodes section.",
            "nullable": true
          },
          "assetOrLocationId": {
            "type": "integer",
            "description": "The asset or location ID. See Assets and Location section.",
            "format": "int32",
            "nullable": true,
            "deprecated": true
          },
          "assetOrLocationExternalId": {
            "type": "string",
            "description": "The custom asset or location external ID. See Assets and Location section.",
            "nullable": true,
            "deprecated": true
          },
          "isBreakdown": {
            "type": "boolean",
            "description": "Set to true to register asset downtime. Downtime is registered only if: 1. Only one ID is sent in AssetOrLocationIds/AssetOrLocationExternalIds, 2. The asset does not have active downtime.",
            "nullable": true,
            "deprecated": true
          },
          "typeOfWorkId": {
            "type": "integer",
            "description": "If IsBreakdown is true, TypeOfWorkId is set automatically to BREAKDOWN (ID = 2298). See Dictionaries section.",
            "format": "int32",
            "nullable": true
          },
          "allowDuplicateForFailureCodeId": {
            "type": "boolean",
            "description": "Set to false to prevent creating more than one work request for a specific asset and failure code combination.",
            "nullable": true
          },
          "completedDatetime": {
            "type": "string",
            "description": "The completion date and time in ISO8601 format.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "completedUserId": {
            "type": "integer",
            "description": "The user ID who completed the work order. See Users section.",
            "format": "int32",
            "nullable": true
          },
          "technicalRemarks": {
            "maxLength": 2500,
            "type": "string",
            "description": "Technical remarks for the work order. Maximum 2500 characters.",
            "nullable": true
          },
          "nonPublic": {
            "type": "boolean",
            "description": "Set to true if the work order should be hidden from the requester, even if they have access to work orders. Default is false.",
            "nullable": true
          },
          "problemId": {
            "type": "integer",
            "description": "The problem ID associated with the work order. See Dictionaries section.",
            "format": "int32",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "The status ID of the work order. Default is OPEN (id=690). See Dictionaries section.",
            "format": "int32",
            "nullable": true
          },
          "vendorId": {
            "type": "integer",
            "description": "The vendor ID associated with the work order. See Vendors/Suppliers section.",
            "format": "int32",
            "nullable": true
          },
          "allDay": {
            "type": "boolean",
            "description": "Set to true if the work order is for the entire day. Default false. If true, the time in fields DueDateFrom and DueDateTo will be ignored.",
            "nullable": true
          },
          "dueDateFrom": {
            "type": "string",
            "description": "The start date/time for the work order in ISO8601 format. If AllDay is true, the time will be ignored.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "dueDateTo": {
            "type": "string",
            "description": "The end date/time for the work order in ISO8601 format. If AllDay is true, the time will be ignored.<br/><i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i><br/><strong>Time without a time zone is interpreted as UTC!</strong>",
            "format": "date-time",
            "nullable": true
          },
          "totalDurationSeconds": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "The total duration of the work order in seconds.",
            "format": "int32",
            "nullable": true
          },
          "influenceOnProductionCycleTime": {
            "type": "boolean",
            "description": "Set to true if the work order affects the production cycle time. Default false",
            "nullable": true
          },
          "estimatedTotalTimeSeconds": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "The estimated total time for the work order in seconds.",
            "format": "int32",
            "nullable": true
          },
          "assetShutdownRequired": {
            "type": "boolean",
            "description": "Set to true if asset shutdown is required for this work order. Default false",
            "nullable": true
          },
          "assetsOrLocationsIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "A list of asset or location IDs associated with the work order. See Assets and Locations section.",
            "nullable": true
          },
          "assetsOrLocationsExternalIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of asset or location external IDs associated with the work order. See Assets and Locations section.",
            "nullable": true
          },
          "usersIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "A list of user IDs assigned to the work order. See Users section.",
            "nullable": true
          },
          "teamsIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "A list of team IDs assigned to the work order. See Teams section.",
            "nullable": true
          },
          "shiftsIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "A list of shift IDs assigned to the work order. See Shifts section.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkOrderResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/WorkOrder"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkOrderShiftsAssignmentParams": {
        "type": "object",
        "properties": {
          "shiftsIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkOrderTeamsAssignmentParams": {
        "type": "object",
        "properties": {
          "teamsIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkOrderUsersAssignmentParams": {
        "type": "object",
        "properties": {
          "usersIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "clientId": {
            "type": "integer",
            "format": "int32"
          },
          "createdDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedDatetime": {
            "type": "string",
            "description": "<i>ISO8601 format YYYY-MM-DDThh:mm:ssZ, T - time separator, Z - time zone, eg. 2022-02-10, 2022-02-10T12:00:00, 2022-02-10T15:19:21+01:00</i>",
            "format": "date-time"
          },
          "modifiedUserId": {
            "type": "integer",
            "format": "int32"
          },
          "createdUserId": {
            "type": "integer",
            "format": "int32"
          },
          "failureCodeId": {
            "type": "integer",
            "format": "int32"
          },
          "failureCodeName": {
            "type": "string",
            "nullable": true
          },
          "externalFailureCode": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/PRIORITY_TYPES"
          },
          "assignedAssetsOrLocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetDictionaryItem"
            },
            "description": "A list of asset or location objects associated with the work request. See Assets and Locations section.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DictionaryItem"
            },
            "description": "A list of tag objects assigned to the work request. See Tags section.",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            },
            "description": "A list of attachment objects assigned to the work request. See Attachments section.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "id": 1234,
          "clientId": 1234,
          "subject": "subject",
          "description": "description",
          "number": "RQ-1234",
          "createdDatetime": "2021-12-10T10:00:00+00:00",
          "modifiedDatetime": "2021-12-10T10:00:00+00:00",
          "modifiedUserId": 1234,
          "createdUserId": 1234,
          "failureCodeId": 1234,
          "failureCodeName": "failure code name",
          "externalFailureCode": "EXTID1234",
          "priority": "LOW",
          "statusId": 1234,
          "statusName": "status name",
          "assignedAssetsOrLocations": [
            {
              "id": 1234,
              "name": "asset name",
              "number": "EQ-1234",
              "externalId": "extId1234",
              "typeId": "1234",
              "typeName": "type name",
              "resourceType": "RESOURCE_TYPE"
            }
          ],
          "tags": [
            {
              "id": 1234,
              "name": "tag name"
            }
          ]
        }
      },
      "WorkRequestPaginatedPayload": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkRequest"
            },
            "nullable": true
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "allRecordsCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "WorkRequestPaginatedPayloadResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/WorkRequestPaginatedPayload"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkRequestParams": {
        "required": [
          "priority",
          "subject"
        ],
        "type": "object",
        "properties": {
          "subject": {
            "minLength": 1,
            "type": "string",
            "description": "Work request name"
          },
          "description": {
            "type": "string",
            "description": "Work request description",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/PRIORITY_TYPES"
          },
          "failureCodeId": {
            "type": "integer",
            "description": "Client failure code ID (checkout FailureCodes section). Used as default when ExternalFailureCode provided too",
            "format": "int32",
            "nullable": true
          },
          "externalFailureCode": {
            "type": "string",
            "description": "Client custom failure code (checkout FailureCodes section). Must be defined in QRmaint app",
            "nullable": true
          },
          "assetOrLocationId": {
            "type": "integer",
            "description": "Clinet asset or location ID (checkout Assets and Location section). Must be defined in QRmaint app",
            "format": "int32",
            "nullable": true
          },
          "assetOrLocationExternalId": {
            "type": "string",
            "description": "Client custom asset or location ID. Must be defined in QRmaint app",
            "nullable": true
          },
          "isBreakdown": {
            "type": "boolean",
            "description": "Send true if work request should register asset downtime",
            "nullable": true
          },
          "allowDuplicateForFailureCodeId": {
            "type": "boolean",
            "description": "Send false if you want to block the creation of more than one work request for a specific asset in combination with a specific failure code",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "example": {
          "subject": "subject",
          "description": "description",
          "priority": "LOW",
          "assetOrLocationId": 1234,
          "assetOrLocationExternalId": "EXTID1234",
          "isBreakdown": false,
          "failureCodeId": 1234,
          "externalFailureCode": "EXTID1234"
        }
      },
      "WorkRequestResponsePayload": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "default": null,
            "nullable": true
          },
          "payload": {
            "$ref": "#/components/schemas/WorkRequest"
          },
          "status": {
            "type": "string",
            "default": "SUCCESS",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "apiKey",
        "description": "QRmaint API use JWT Authorization header with the Bearer scheme. \r\n                                To authorize request add <strong>\"Authorization\"</strong> header with token created in \r\n                                <a href='https://app.qrmaint.com/#/system/external-api'>QRmaint app settings section</a> to request headers section.\r\n                                Request authorization header should looks like: <strong>\"Authorization: Bearer {token}\"</strong>",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "Bearer": [ ]
    }
  ]
}