{
  "openapi" : "3.1.0",
  "info" : {
    "title" : "WMS Server API",
    "description" : "Warehouse Management System API",
    "version" : "1.0.0"
  },
  "externalDocs" : {
    "url" : "/"
  },
  "servers" : [ ],
  "tags" : [ {
    "name" : "PDT operations",
    "description" : "Signed operations performed on a terminal device"
  }, {
    "name" : "PDT sync",
    "description" : "Working-set change feed of offline PDTs"
  }, {
    "name" : "Data Migration",
    "description" : "Background data migration progress, read service-to-service by the pool operator"
  }, {
    "name" : "Health",
    "description" : "Health check endpoints"
  }, {
    "name" : "Scheduled Tasks",
    "description" : "Recurring task configuration and run history"
  }, {
    "name" : "Party",
    "description" : "Party (customer/supplier) management"
  }, {
    "name" : "Analytics - Warehouse Counters",
    "description" : "Warehouse counters for operational dashboards"
  }, {
    "name" : "Analytics - Productivity",
    "description" : "Productivity and throughput rollups"
  }, {
    "name" : "Analytics - Dashboard",
    "description" : "User dashboard layout persistence"
  }, {
    "name" : "Analytics - Online",
    "description" : "Online presence: current count, live stream, and concurrency chart"
  }, {
    "name" : "Analytics - Fulfillment",
    "description" : "Fulfillment & SLA two-line series (inbound/outbound, snapshot)"
  }, {
    "name" : "Analytics - Actionable Lists",
    "description" : "Actionable lists: expiring lots, etc."
  }, {
    "name" : "Analytics - Settings",
    "description" : "Per-tenant analytics enablement and cleanup"
  }, {
    "name" : "Inbound - Orders",
    "description" : "Inbound order management"
  }, {
    "name" : "Container circulation entries",
    "description" : "Documents that turn packaging stock into returnable containers"
  }, {
    "name" : "Container opening balances",
    "description" : "Documents that record who held which returnable containers at start-up"
  }, {
    "name" : "Container decommissions",
    "description" : "Documents that take tenant-owned returnable containers out of circulation"
  }, {
    "name" : "Container debt settlements",
    "description" : "Documents that close container debts without a physical return"
  }, {
    "name" : "Container debt reports",
    "description" : "Open container debts and the register history of one container"
  }, {
    "name" : "IAM - Authentication",
    "description" : "Authentication and session management"
  }, {
    "name" : "IAM - Users",
    "description" : "User management"
  }, {
    "name" : "IAM - User Groups",
    "description" : "User group management and warehouse access control"
  }, {
    "name" : "IAM - Tenants",
    "description" : "Tenant management"
  }, {
    "name" : "IAM - Profiles",
    "description" : "User profile management"
  }, {
    "name" : "Topology - Warehouses",
    "description" : "Warehouse management"
  }, {
    "name" : "Topology - Locations",
    "description" : "Location management"
  }, {
    "name" : "Topology - WorkAreas",
    "description" : "Work area management"
  }, {
    "name" : "Topology - StorageAreas",
    "description" : "Storage area management"
  }, {
    "name" : "Topology - LocationSizes",
    "description" : "Location size templates"
  }, {
    "name" : "Integrations - ExternalSystems",
    "description" : "External system configuration management"
  }, {
    "name" : "Integrations - ExternalReferences",
    "description" : "External reference conflict resolution and ownership workflows"
  }, {
    "name" : "Integrations - Import",
    "description" : "Inbound reference-data import workflows"
  }, {
    "name" : "Integrations - StockBalances",
    "description" : "Point-in-time stock-balance export for reconciliation with external ledgers"
  }, {
    "name" : "Catalog - Products",
    "description" : "Product catalog management"
  }, {
    "name" : "Catalog - ProductFeatures",
    "description" : "Product feature management"
  }, {
    "name" : "Catalog - ProductCategories",
    "description" : "Product category management"
  }, {
    "name" : "Catalog - UOM",
    "description" : "Units of measure management"
  }, {
    "name" : "Catalog - KSPOVO",
    "description" : "KSPOVO classifier management"
  }, {
    "name" : "Catalog - Barcodes",
    "description" : "Barcode management"
  }, {
    "name" : "Catalog - Pack Types",
    "description" : "Pack type management"
  }, {
    "name" : "Catalog - Pack Type Sets",
    "description" : "Pack type set management"
  }, {
    "name" : "Catalog - Product Sets",
    "description" : "Product set management"
  }, {
    "name" : "Catalog - Pack Type Handling Groups",
    "description" : "Pack type handling group management"
  }, {
    "name" : "Catalog - Product Handling Groups",
    "description" : "Product handling group management"
  }, {
    "name" : "Inventory - Lots",
    "description" : "Inventory lot management"
  }, {
    "name" : "Inventory - Placement Rules",
    "description" : "Placement rules management"
  }, {
    "name" : "Inventory - Container Types",
    "description" : "Container type definitions and management"
  }, {
    "name" : "Inventory - Relocations",
    "description" : "Relocation operations for moving goods within warehouse"
  }, {
    "name" : "Inventory - Opening Balances",
    "description" : "Opening balance documents that seed initial warehouse stock"
  }, {
    "name" : "Inventory - Location States",
    "description" : "Location state and blocking management"
  }, {
    "name" : "Inventory - Stock Ledger",
    "description" : "Stock ledger endpoints: current balances, point-in-time (as-of) balances, raw ledger entries, turnover-balance sheet (оборотно-сальдова), and flat period movements"
  }, {
    "name" : "Outbound - Warehouse Picking Policies",
    "description" : "Warehouse-level picking policy configuration"
  }, {
    "name" : "Outbound - Outbound Location Settings",
    "description" : "Outbound-owned location settings for unplanned picking restrictions"
  }, {
    "name" : "Outbound - Picking Stock Settings",
    "description" : "Min/max stock settings for picking cells"
  }, {
    "name" : "Outbound - Wave Picking Policies",
    "description" : "Wave picking policy configuration"
  }, {
    "name" : "Outbound - Waves",
    "description" : "Wave management for order grouping"
  }, {
    "name" : "Outbound - Outbound Orders",
    "description" : "Outbound order management"
  }, {
    "name" : "Outbound - Planning Queue",
    "description" : "Shipment priority queue for warehouses that do not use waves"
  }, {
    "name" : "Outbound - Pickings",
    "description" : "Picking document management"
  }, {
    "name" : "Attributes",
    "description" : "Attribute module management"
  }, {
    "name" : "Attributes - Definitions",
    "description" : "Attribute definitions"
  } ],
  "paths" : {
    "/api/health/live" : {
      "get" : {
        "tags" : [ "Health" ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/health/ready" : {
      "get" : {
        "tags" : [ "Health" ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/health/dbhost/{dbHostCode}" : {
      "get" : {
        "tags" : [ "Health" ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/version" : {
      "get" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/auth" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Authenticate user",
        "description" : "\nAuthenticates a user with email and tenant code, returning access and refresh tokens.\n\n## Method\nPOST /auth\n\n## Headers\n- `X-Tenant-Code`: **REQUIRED**. The tenant code for the authentication.\n\n## Request Body\n- `email`: User email address (required)\n\n## Response\nReturns SessionInfoDto containing:\n- `sessionId`: Session identifier\n- `user`: User information including roles and profile\n\n## Authentication\nPublic endpoint. No authentication required.\n\n## Rate Limiting\nThis endpoint is rate-limited to prevent brute force attacks.\n\n## Errors\n- 401 if credentials are invalid\n- 404 if user or tenant not found\n",
        "parameters" : [ {
          "name" : "WMS-Tenant-Code",
          "in" : "header",
          "description" : "Tenant code for authentication",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Authentication credentials",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.AuthenticationRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Authentication challenge returned",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.AuthChallengeDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/verify/otp" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Verify OTP code",
        "description" : "\nVerifies the OTP code sent to user's email.\n\n## Method\nPOST /auth/verify/otp\n\n## Request Body\n- `authSessionId`: Auth session ID from start auth response\n- `code`: 6-digit OTP code from email\n\n## Response\nAn empty object. The outcome of the sign-in — tokens, a TOTP step, or for an OAuth sign-in the\nredirect to the application — is delivered once by `/auth/check/{id}` or `/auth/sse/{id}`.\n\n## Authentication\nPublic endpoint. No authentication required.\nRequires verification session cookie set during authentication start.\n\n## Rate Limiting\nThis endpoint is rate-limited.\n\n## Errors\n- 400 if OTP is invalid\n- 410 if OTP is expired or already used\n- 423 if too many failed attempts\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "OTP verification request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.VerifyOtpRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "OTP verified successfully",
            "headers" : { }
          },
          "400" : {
            "description" : "Invalid OTP or session",
            "headers" : { }
          },
          "410" : {
            "description" : "OTP expired or already used",
            "headers" : { }
          },
          "423" : {
            "description" : "Too many attempts, session locked",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/verify/link" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Verify magic link token",
        "description" : "\nVerifies the magic link token from authentication email.\n\n## Method\nPOST /auth/verify/link\n\n## Request Body\n- `authSessionId`: Auth session ID\n- `token`: Magic link token from email URL\n\n## Response\nAn empty object. The outcome of the sign-in — tokens, a TOTP step, or for an OAuth sign-in the\nredirect to the application — is delivered once by `/auth/check/{id}` or `/auth/sse/{id}`.\n\n## Authentication\nPublic endpoint. No authentication required.\n\n## Rate Limiting\nThis endpoint is rate-limited.\n\n## Errors\n- 400 if token is invalid\n- 410 if token is expired or already used\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Magic link verification request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.VerifyLinkRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Link verified successfully",
            "headers" : { }
          },
          "400" : {
            "description" : "Invalid link token",
            "headers" : { }
          },
          "410" : {
            "description" : "Link expired or already used",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/refresh" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Refresh access token",
        "description" : "\nObtains a new access token using a valid refresh token.\n\n## Method\nPOST /auth/refresh\n\n## Request Body\n- `refreshToken`: Valid refresh token obtained from authentication\n\n## Response\nReturns RefreshResponseDto with refreshed session information:\n- Updated session details\n- User information\n\n## Authentication\nPublic endpoint. No authentication required.\n\n## Rate Limiting\nThis endpoint is rate-limited.\n\n## Errors\n- 401 if refresh token is invalid or expired\n- 400 if request body is malformed\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Refresh token",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.RefreshTokenDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New tokens generated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.RefreshResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/technical/jwt" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Issue technical access JWT",
        "description" : "\nIssues a short-lived JWT for a technical user using a long-lived technical token.\n\n## Method\nPOST /auth/technical/jwt\n\n## Headers\n- `Authorization`: **REQUIRED**. Bearer long-lived technical token.\n- `WMS-Tenant-Code`: **REQUIRED**. Tenant code that must match the token tenant.\n\n## Response\nReturns TechnicalJwtIssueResponseDto:\n- `accessToken`: short-lived JWT\n- `expiresAt`: token expiration timestamp\n\n## Authentication\nDedicated technical flow. Only long-lived technical tokens are accepted.\n\n## Rate Limiting\nThis endpoint is rate-limited.\n\n## Errors\n- 401 if the token is missing, invalid, or not a live token of the requested tenant\n- 403 if the tenant code names no tenant\n",
        "parameters" : [ {
          "name" : "Authorization",
          "in" : "header",
          "description" : "Bearer long-lived technical token",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-Tenant-Code",
          "in" : "header",
          "description" : "Tenant code",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Technical JWT issued",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.TechnicalJwtIssueResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/password/login" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Password login (step 1)",
        "description" : "\nAuthenticates a user with email + password within a tenant and returns the next pre-auth step.\n\n## Method\nPOST /auth/password/login\n\n## Headers\n- `X-Tenant-Code`: **REQUIRED**. The tenant code.\n- `WMS-Device-ID` / `WMS-Platform` / `WMS-App-Mode`: **REQUIRED** device session headers.\n\n## Response\nPasswordAuthResponseDto. `state` drives the next step: PASSWORD_RESET, TOTP_ENROLL, TOTP_CHALLENGE,\nor AUTHENTICATED (carries access/refresh tokens + user). Non-terminal states carry `preAuthHandle`.\nA DEMO tenant never routes to TOTP_ENROLL or TOTP_CHALLENGE: the password alone signs in.\n\n## Authentication\nPublic endpoint. No authentication required.\n\n## Errors\n- 401 if email/password is invalid\n- 403 if password access is disabled or the account is blocked\n- 429 if locked after too many failed attempts\n",
        "parameters" : [ {
          "name" : "WMS-Tenant-Code",
          "in" : "header",
          "description" : "Tenant code for authentication",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-Device-Trust",
          "in" : "header",
          "description" : "Secret of a remembered device; skips the TOTP challenge",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Email + password",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.PasswordLoginRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.PasswordAuthResponseDto"
                }
              }
            }
          },
          "401" : {
            "description" : "Invalid email or password",
            "headers" : { }
          },
          "403" : {
            "description" : "Password access disabled or account blocked",
            "headers" : { }
          },
          "429" : {
            "description" : "Locked after too many failed attempts",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/password/change" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Forced password change",
        "description" : "\nChanges the password during the forced PASSWORD_RESET step, then re-evaluates the next step.\n\n## Method\nPOST /auth/password/change\n\n## Request Body\n- `currentPassword`, `newPassword`, `preAuthHandle`\n\n## Response\nPasswordAuthResponseDto with the next `state` (may be AUTHENTICATED with tokens).\n\n## Errors\n- 400 if the new password fails the complexity policy\n- 401 if the current password is wrong or the handle is invalid\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Current + new password and the pre-auth handle",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.PasswordChangeRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.PasswordAuthResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "New password fails the complexity policy",
            "headers" : { }
          },
          "401" : {
            "description" : "Wrong current password or invalid handle",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/2fa/enroll/start" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Start 2FA enrollment",
        "description" : "\nGenerates a TOTP secret for the TOTP_ENROLL step and returns the provisioning URI + secret.\n\n## Method\nPOST /auth/2fa/enroll/start\n\n## Request Body\n- `preAuthHandle`\n\n## Response\nPasswordAuthResponseDto with `state=TOTP_ENROLL`, `otpauthUri`, `secret`, and a rotated `preAuthHandle`.\n\n## Errors\n- 401 if the handle is invalid or expired\n- 409 if not in the enrollment step\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "The current pre-auth handle",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.EnrollStartRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.PasswordAuthResponseDto"
                }
              }
            }
          },
          "401" : {
            "description" : "Invalid or expired handle",
            "headers" : { }
          },
          "409" : {
            "description" : "Not in the enrollment step",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/2fa/enroll/confirm" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Confirm 2FA enrollment",
        "description" : "\nVerifies the first authenticator code, persists the enrollment, and completes authentication.\n\n## Method\nPOST /auth/2fa/enroll/confirm\n\n## Request Body\n- `code`, `preAuthHandle`\n\n## Response\nPasswordAuthResponseDto with `state=AUTHENTICATED` (access/refresh tokens + user).\n\n## Errors\n- 401 if the code or handle is invalid\n- 409 if enrollment was not started\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Authenticator code + the pre-auth handle",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.EnrollConfirmRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.PasswordAuthResponseDto"
                }
              }
            }
          },
          "401" : {
            "description" : "Invalid code or handle",
            "headers" : { }
          },
          "409" : {
            "description" : "Enrollment was not started",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/2fa/verify" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Verify 2FA challenge",
        "description" : "\nAnswers the TOTP_CHALLENGE step and, on success, completes authentication.\n\n## Method\nPOST /auth/2fa/verify\n\n## Request Body\n- `code`, `preAuthHandle`\n\n## Response\nPasswordAuthResponseDto with `state=AUTHENTICATED` (tokens + user). On a wrong code the response is\n401 and its body carries the rotated `preAuthHandle` to use on the next attempt.\n\n## Errors\n- 401 on a wrong code (body carries the rotated handle)\n- 429 if locked after too many failed attempts\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Authenticator code + the pre-auth handle",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.TotpVerifyRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.PasswordAuthResponseDto"
                }
              }
            }
          },
          "401" : {
            "description" : "Invalid code; body carries the rotated handle",
            "headers" : { }
          },
          "429" : {
            "description" : "Locked after too many failed attempts",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/2fa/recovery-request" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Ask the tenant's admins to reset 2FA",
        "description" : "\nFor a user at the TOTP_CHALLENGE step who has no access to the authenticator: emails every live\nOWNER/ADMIN of the tenant, except the requester, asking to reset the user's 2FA. Nothing is reset\nautomatically, and the handle stays valid for a code.\n\nThe TOTP_CHALLENGE response names the user's `role`; the client offers this request to USER and ADMIN\nand shows the owner's recovery path to OWNER.\n\n## Method\nPOST /auth/2fa/recovery-request\n\n## Headers\n- `WMS-Device-ID`, `WMS-Platform`, `WMS-App-Mode`: **REQUIRED**, as on the other pre-auth steps.\n\n## Request Body\n- `preAuthHandle`: the handle of the TOTP_CHALLENGE step\n\n## Response\n200 with `status`:\n- `SENT` — the admins were emailed\n- `ALREADY_SENT` — a request was sent within the last 24 hours; nobody is emailed again\n- `NO_ADMINS` — the tenant has no other live admin; follow the owner's recovery path\n- `NOT_APPLICABLE` — the user is the owner, whose 2FA the tenant's admins cannot reset\n\n## Errors\n- 400 if a device header is missing or invalid\n- 401 if the handle is missing, expired or bound to another device\n- 409 if the handle is not at the TOTP_CHALLENGE step\n\n## Rate Limiting\nThis endpoint is rate-limited to prevent abuse.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "The pre-auth handle of the TOTP_CHALLENGE step",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.TotpRecoveryRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "How the request ended: SENT, ALREADY_SENT, NO_ADMINS or NOT_APPLICABLE",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.TotpRecoveryResponseDto"
                }
              }
            }
          },
          "401" : {
            "description" : "The handle is missing, expired or bound to another device",
            "headers" : { }
          },
          "409" : {
            "description" : "The handle is not at the TOTP_CHALLENGE step",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/forgot-password" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Request a password reset",
        "description" : "\nStarts the enumeration-safe forgot-password flow. For an eligible account a one-time link to set a new\npassword is mailed, valid for 15 minutes; the current password keeps working until the link is used.\nAn unknown email, disabled password access, a blocked account or a repeated request within a minute\nis indistinguishable from success.\n\n## Method\nPOST /auth/forgot-password\n\n## Headers\n- `X-Tenant-Code`: **REQUIRED**. The tenant code.\n\n## Request Body\n- `email`: the account email\n\n## Response\nAlways 204 — the response never reveals whether the account exists or is eligible.\n\n## Authentication\nPublic endpoint. No authentication required.\n\n## Rate Limiting\nThis endpoint is rate-limited to prevent abuse.\n",
        "parameters" : [ {
          "name" : "WMS-Tenant-Code",
          "in" : "header",
          "description" : "Tenant code for the account",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Email of the account to reset",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.ForgotPasswordRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "204" : {
            "description" : "Request accepted (always, regardless of account state)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/password/set" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Set a password from a one-time link",
        "description" : "\nRedeems the one-time token a set-password or reset letter carries in its URL fragment and stores the\nnew password. The token works once, and the current password keeps working until this call succeeds.\nRedeeming a reset link ends every session of the account. No session is issued: the caller signs in\nafterwards and passes 2FA as usual.\n\n## Method\nPOST /auth/password/set\n\n## Headers\n- `WMS-Tenant-Code`: **REQUIRED**. The company code from the link's `tenant` query parameter; it routes the request to the pod that serves the company.\n\n## Request Body\n- `token`: the token from the link's fragment\n- `newPassword`: 8+ characters with an uppercase letter and a digit\n\n## Response\n204 on success; 400 when the password fails the policy (the link stays valid); 410 when the token is\nunknown, spent, expired, belongs to another company, or no longer matches the account; 421 when this pod\ndoes not serve the company and 503 when its database cannot be opened right now, both before the link\nis spent, so a retry can still use it.\n",
        "parameters" : [ {
          "name" : "WMS-Tenant-Code",
          "in" : "header",
          "description" : "The company code from the link's `tenant` query parameter",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "The token from the link's fragment and the new password",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.SetPasswordRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "204" : {
            "description" : "Password set",
            "headers" : { }
          },
          "400" : {
            "description" : "New password fails the complexity policy",
            "headers" : { }
          },
          "410" : {
            "description" : "The link is unknown, spent, expired or no longer matches the account",
            "headers" : { }
          },
          "421" : {
            "description" : "The company is not served by this pod; the link is not spent",
            "headers" : { }
          },
          "503" : {
            "description" : "The company's database cannot be opened right now; the link is not spent",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/session/takeover" : {
      "post" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Confirm a session takeover",
        "description" : "\nAnswers the SESSION_TAKEOVER step: ends every other session of the user and completes authentication\non this device.\n\n## Method\nPOST /auth/session/takeover\n\n## Headers\n- `WMS-Device-ID`, `WMS-Platform`, `WMS-App-Mode`, `WMS-Tenant-Code`: **REQUIRED**, those of the device the\n  ticket was issued to.\n\n## Request Body\n- `ticket`: the one-time ticket of the SESSION_TAKEOVER step\n\n## Response\nPasswordAuthResponseDto with `state=AUTHENTICATED` (tokens + user). The next request of a displaced\ndevice is answered 401 `SESSION_TAKEN_OVER`.\n\n## Errors\n- 401 `TAKEOVER_TICKET_INVALID` if the ticket is unknown, expired, already used, or presented from another device\n- 403 if the account is disabled or the licence is blocked\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "The ticket of a SESSION_TAKEOVER step",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.SessionTakeoverRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.PasswordAuthResponseDto"
                }
              }
            }
          },
          "401" : {
            "description" : "TAKEOVER_TICKET_INVALID: unknown, expired, used, or another device",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/check/{id}" : {
      "get" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Check authentication status",
        "description" : "\nChecks the authentication status of the current user.\n\n## Method\nGET /auth/check/{id}\n\n## Path Parameters\n- `id`: User ID to check\n\n## Response\nThe auth session status. Once the session is accepted the first check issues `accessToken`,\n`refreshToken` and `user`; for a user who owes a second factor it issues no tokens and returns\n`state` (`TOTP_CHALLENGE` or `TOTP_ENROLL`) with `preAuthHandle`, to be answered on\n`/auth/2fa/verify` or `/auth/2fa/enroll/*` with the same device id.\nFor a session started from the OAuth connect page that owes no second factor, the first check issues\nno tokens: it returns `status = COMPLETED` and `redirectUri` with the authorization code. An unknown,\nused or expired OAuth request answers 400 `OAUTH_REQUEST_INVALID`.\n\n## Authentication\nRequires authentication.\n\n## Errors\n- 401 if not authenticated\n- 404 if user not found\n- 400 OAUTH_REQUEST_INVALID if the OAuth request is invalid or expired\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "User ID to check",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Authentication status",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/auth/sse/{id}" : {
      "get" : {
        "tags" : [ "IAM - Authentication" ],
        "summary" : "Subscribe to auth session status via SSE",
        "description" : "\nEstablishes an SSE connection to receive real-time auth session status updates.\n\n## Method\nGET /auth/sse/{id}\n\n## Headers\n- `WMS-Tenant-Code`: **REQUIRED**. The tenant code for the authentication.\n\n## Path Parameters\n- `id`: Auth session ID from the start auth response\n\n## Headers (device)\nThe device headers of `/auth/check` are required too: the stream checks the session as that device.\n\n## Response\nSSE stream of CheckResponseDto, the same answer `/auth/check` gives:\n- `status`: Current session status (PENDING, ACCEPTED, COMPLETED, EXPIRED, LOCKED)\n- `accessToken`, `refreshToken`, `user`: issued once, by the first check of an accepted session\n- `state`, `preAuthHandle`: instead of tokens, for a user who owes a second factor (`TOTP_CHALLENGE`\n  or `TOTP_ENROLL`); answer it on `/auth/2fa/verify` or `/auth/2fa/enroll/*` with the same device id.\n  The handle is handed out once — whichever of the stream or `/auth/check` checks first gets it.\n- `redirectUri`: instead of tokens, for an OAuth sign-in that owes no second factor; the page follows it\n\n## Behavior\n1. Upon connection, the server sends the current session state immediately\n2. When the session status changes (e.g., after OTP/link verification), the server pushes an update\n3. The connection automatically closes on terminal statuses (COMPLETED, EXPIRED, LOCKED)\n\n## Authentication\nPublic endpoint. No authentication required.\n\n## Errors\n- 400 if session ID is invalid\n- error event OAUTH_REQUEST_INVALID if the OAuth request is invalid or expired\n- Connection terminates on terminal session status\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Auth session ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of CheckResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.CheckResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/sse/me" : {
      "get" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Stream my own profile via SSE",
        "description" : "Server-Sent Events stream of the caller's own user record. Self-only: the target is the authenticated caller, with no id parameter.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of the caller's own user details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/sse/me/email/{id}" : {
      "get" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Stream email-change session status",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.EmailChangeStatusResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/sse" : {
      "get" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Get users stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof users for the current tenant. The endpoint streams paginated user data as it\nchanges in the database.\n\n## Usage\n1. Optionally stage filters using POST /api/v1/iam/users/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /api/v1/iam/users/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<UserDto>\ncontaining the current page of users matching the filters and pagination.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Only returns users for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /users/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of user pages",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.user.dto.UserHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/sse/count" : {
      "get" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Get users count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof users matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /api/v1/iam/users/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /api/v1/iam/users/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Only counts users for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /users/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of user count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/sse/{id}" : {
      "get" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Get single user via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific user by its ID.\n\n## Usage\nConnect to this SSE endpoint with the user ID in the path parameter.\nReceive continuous updates as the user data changes.\n\n## Path Parameters\n- `id`: UUID of the user\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized UserDto\ncontaining the full user details.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Only returns users for the authenticated user's tenant.\n\n## Errors\n- Returns error event if user ID is missing or invalid\n- Returns null events if user is deleted or not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the user",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of user details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/sse/filters" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Filter configuration",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}" : {
      "get" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Get user by ID",
        "description" : "\nReturns full details of a single user.\n\n## Method\nGET /api/v1/iam/users/{id}\n\n## Path Parameters\n- `id`: UUID of the user\n\n## Response\nUserDto containing the full user details including roles and profile information.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Users can access their own data;\nOWNER and ADMIN can access any user in their tenant.\n\n## Errors\n- 404 if the user is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the user",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "User details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Delete user (soft delete)",
        "description" : "\nPerforms a soft delete of a user using optimistic locking.\n\n## Method\nDELETE /api/v1/iam/users/{id}\n\n## Path Parameters\n- `id`: UUID of the user\n\n## Query Parameters\n- `version`: Short value of the current entity version for optimistic locking\n\n## Response\nEmpty response on success.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 404 if the user is not found\n- 409 if version conflict (concurrent modification)\n- 400 if trying to delete the last admin user\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the user",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current entity version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "User deleted successfully",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users" : {
      "put" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Update user",
        "description" : "\nUpdates an existing user with optimistic locking.\n\n## Method\nPUT /api/v1/iam/users/{id}\n\n## Path Parameters\n- `id`: UUID of the user\n\n## Request Body\nUserDto with updated information and current version for optimistic locking.\n\n## Response\nUserDto with the updated user details and incremented version.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Users can update their own data;\nOWNER and ADMIN can update any user in their tenant.\n\n## Errors\n- 404 if the user is not found\n- 409 if version conflict (concurrent modification)\n- 400 if validation fails\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Updated user data",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated user",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Create new user",
        "description" : "\nCreates a new user in the system.\n\n## Method\nPOST /api/v1/iam/users\n\n## Request Body\nUserDto with user information including:\n- `type`: User type (`HUMAN` or `TECHNICAL`, optional; defaults to `HUMAN`)\n- `email`: Required for `HUMAN`, optional for `TECHNICAL`\n- `technicalCode`: Required for `TECHNICAL`, must be lowercase slug-like\n- `firstName`: User first name (required)\n- `lastName`: User last name (required)\n- `profileId`: Profile ID for role assignment (required)\n- Additional optional fields\n\n## Response\nUserDto with the created user details including generated ID.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 400 if validation fails\n- 409 if user with email already exists in tenant\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "User data",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created user",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/search" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Search users",
        "description" : "\nReturns a paginated list of users filtered by optional criteria.\nOptimized for list views. Use query parameters for pagination and sorting.\n\n## Method\nPOST /api/v1/iam/users/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns Page<UserDto> with items and pagination metadata.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role. Only returns users for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of users",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.user.dto.UserHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/new" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Get new user template",
        "description" : "\nReturns a new user template with default values for creating a new user.\n\n## Method\nPOST /api/v1/iam/users/new\n\n## Response\nUserDto with default values that can be used as a template for creating a new user.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New user template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/copy/{id}" : {
      "get" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Copy user",
        "description" : "\nCreates a copy of an existing user as a template for creating a new user.\nThe copy includes profile and role settings but generates a new ID.\n\n## Method\nGET /api/v1/iam/users/copy/{id}\n\n## Path Parameters\n- `id`: UUID of the user to copy\n\n## Response\nUserDto with copied data but new ID and cleared sensitive fields (like email).\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 404 if the source user is not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the user to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied user template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/badge" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Issue new badge token",
        "description" : "\nGenerates a new random badge token for the specified user and returns its QR payload.\nPrevious token, if any, will be invalidated.\n\n## Method\nPOST /api/v1/iam/users/{id}/badge\n\n## Path Parameters\n- `id`: UUID of the user\n\n## Response\nBadgeTokenResponseDto containing the QR payload and creation timestamp.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "User ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Issued badge token",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.BadgeTokenResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Revoke badge token",
        "description" : "\nRevokes the current badge token for the specified user.\nThe user will no longer be able to log in using the revoked badge.\n\n## Method\nDELETE /api/v1/iam/users/{id}/badge\n\n## Path Parameters\n- `id`: UUID of the user\n\n## Response\nEmpty response on success.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "User ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "204" : {
            "description" : "Badge token revoked",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/reset-2fa" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Reset a user's 2FA",
        "description" : "\nClears the user's 2FA enrollment, ends all of the user's sessions and forgets their trusted devices.\nWith mandatory 2FA the user re-enrolls on the next login.\n\n## Method\nPOST /api/v1/iam/users/{id}/reset-2fa\n\n## Path Parameters\n- `id`: UUID of the user\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "User ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "204" : {
            "description" : "2FA enrollment cleared",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/reset-password" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Reset a user's password",
        "description" : "\nMails the user a one-time link to set a new password, valid for 15 minutes. Nothing about the user\nchanges until the link is used: the current password keeps working. Refused with 403 while the user's\npassword sign-in is off.\n\n## Method\nPOST /api/v1/iam/users/{id}/reset-password\n\n## Path Parameters\n- `id`: UUID of the user\n\n## Response\n204 with no body.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "User ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "204" : {
            "description" : "A one-time link to set a new password was mailed to the user",
            "headers" : { }
          },
          "403" : {
            "description" : "The user's password sign-in is off",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/password-access" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Toggle a user's password access",
        "description" : "\nEnables or disables password sign-in for the user. The email-code login method is unaffected.\n\nEnabling it for a user who has never had a password mails a one-time link, valid for 48 hours, on which\nthe user sets their own password; nobody else ever sees it. Re-enabling a user who has a password and\ndisabling both keep the stored password and mail the user a notice.\n\n## Method\nPOST /api/v1/iam/users/{id}/password-access\n\n## Path Parameters\n- `id`: UUID of the user\n\n## Request Body\n- `enabled`: whether password sign-in is allowed\n\n## Response\n204 with no body.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "User ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Whether password sign-in is enabled",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.PasswordAccessRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "204" : {
            "description" : "Password sign-in updated; the user is mailed a set-password link on the first enable",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/status" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Toggle a user's enabled state",
        "description" : "\nEnables or disables a user account. Disabling a TECHNICAL user frees its integration seat; enabling\none consumes a seat (400 with a `ValidationErrorResponse` when the tenant has no free technical seat).\nThe tenant OWNER cannot be toggled, and a caller cannot toggle their own account.\n\n## Method\nPOST /api/v1/iam/users/{id}/status\n\n## Path Parameters\n- `id`: UUID of the user\n\n## Request Body\n- `enabled`: whether the user account is active\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 403 if the target is the OWNER or the caller themselves\n- 404 if the user does not exist\n- 400 (ValidationErrorResponse) when enabling a technical user with no free technical seat\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "User ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Whether the user account is enabled",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserStatusRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "204" : {
            "description" : "User enabled state updated",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/access-groups" : {
      "put" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Replace user's group memberships",
        "description" : "\nReplaces the complete set of group memberships for a user with optimistic locking.\nThe endpoint calculates which groups to add and remove, and updates group versions\nto trigger optimistic locking on affected groups.\n\n## Method\nPUT /api/v1/iam/users/{id}/groups\n\n## Path Parameters\n- `id`: UUID of the user\n\n## Request Body\nReplaceAccessGroupsRequestDto containing:\n- `groupIds`: Set of AccessGroupId representing the new complete set of groups\n\n## Response\nEmpty response on success.\n\n## Behavior\n1. Fetches current group memberships for the user\n2. Calculates groups to add (new - current) and remove (current - new)\n3. Fetches versions of all affected groups\n4. Updates memberships and bumps versions on affected groups\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 409 if version conflict occurs on any affected group\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the user",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          }
        } ],
        "requestBody" : {
          "description" : "New set of group IDs for the user",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.ReplaceAccessGroupsRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Groups replaced successfully",
            "headers" : { }
          },
          "409" : {
            "description" : "Version conflict during optimistic locking",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/technical-tokens" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Issue technical user token",
        "description" : "\nIssues a new long-lived opaque token for a technical user.\nThe raw token value is returned once and is never stored in plaintext.\n\n## Method\nPOST /api/v1/iam/users/{id}/technical-tokens\n\n## Path Parameters\n- `id`: UUID of technical user\n\n## Request Body\nTechnicalUserTokenIssueRequestDto with expiration timestamp and optional description.\n\n## Response\nTechnicalUserTokenIssueResponseDto with one-time raw token and token metadata.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "User ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.TechnicalUserTokenIssueRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Technical token issued",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.TechnicalUserTokenIssueResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/technical-tokens/search" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Search technical user tokens",
        "description" : "\nSearches technical user tokens with pageable and optional filters.\nServer always applies userId filter from path and merges it with request filters.\n\n## Method\nPOST /api/v1/iam/users/{id}/technical-tokens/search\n\n## Path Parameters\n- `id`: UUID of technical user\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction\n\n## Request Body\nOptional FilterRequest for additional filtering.\n\n## Response\nPage<TechnicalUserTokenResponseDto>.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "User ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of technical tokens",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.auth.dto.TechnicalUserTokenResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/technical-tokens/{tokenId}" : {
      "delete" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Revoke technical user token",
        "description" : "\nRevokes a specific technical user token by id.\n\n## Method\nDELETE /api/v1/iam/users/{id}/technical-tokens/{tokenId}?version={version}\n\n## Path Parameters\n- `id`: UUID of technical user\n- `tokenId`: Token identifier\n\n## Query Parameters\n- `version`: optimistic-lock version\n\n## Response\nEmpty response on success.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "User ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "tokenId",
          "in" : "path",
          "description" : "Technical token ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Optimistic-lock version",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "204" : {
            "description" : "Technical token revoked",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/sessions" : {
      "get" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "List a user's active sessions",
        "description" : "\nSupport/admin endpoint: lists the live sessions of another user in the caller's tenant.\n\n## Method\nGET /api/v1/iam/users/{userId}/sessions\n\n## Path Parameters\n- `userId`: UUID of the target user.\n\n## Response\nList of ActiveSessionDto (no entry is flagged `current`).\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the target user",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of the user's active sessions",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.ActiveSessionDto"
                  },
                  "title" : "List<ActiveSessionDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/sessions/{familyId}" : {
      "delete" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Terminate a user's session",
        "description" : "\nSupport/admin endpoint: terminates one session of another user in the caller's tenant.\n\n## Method\nDELETE /api/v1/iam/users/{userId}/sessions/{familyId}\n\n## Path Parameters\n- `userId`: UUID of the target user.\n- `familyId`: UUID of the session (refresh-token family) to terminate.\n\n## Response\n- 204 No Content when the session existed and was terminated.\n- 404 Not Found when the session does not belong to the target user or is already gone.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the target user",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "familyId",
          "in" : "path",
          "description" : "UUID of the session (refresh-token family) to terminate",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "204" : {
            "description" : "Session terminated",
            "headers" : { }
          },
          "404" : {
            "description" : "Session not found for the target user",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/trusted-devices" : {
      "get" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "List a user's remembered devices",
        "description" : "\nAdmin endpoint: lists the remembered devices of a user in the caller's tenant.\n\n## Method\nGET /api/v1/iam/users/{userId}/trusted-devices\n\n## Path Parameters\n- `userId`: UUID of the target user.\n\n## Response\nList of TrustedDeviceDto (no entry is flagged `current`).\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the target user",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "The user's remembered devices",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.TrustedDeviceDto"
                  },
                  "title" : "List<TrustedDeviceDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Forget all remembered devices of a user",
        "description" : "\nAdmin endpoint: forgets every remembered device of a user. The owner's devices may be changed only by the owner.\n\n## Method\nDELETE /api/v1/iam/users/{userId}/trusted-devices\n\n## Path Parameters\n- `userId`: UUID of the target user.\n\n## Response\n- 204 No Content.\n- 403 Forbidden when the target is the owner and the caller is not.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the target user",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "204" : {
            "description" : "Every remembered device of the user forgotten",
            "headers" : { }
          },
          "403" : {
            "description" : "The target is the owner and the caller is not",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/{id}/trusted-devices/{recordId}" : {
      "delete" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Forget one remembered device of a user",
        "description" : "\nAdmin endpoint: forgets one remembered device of a user. The owner's devices may be changed only by the owner.\n\n## Method\nDELETE /api/v1/iam/users/{userId}/trusted-devices/{recordId}\n\n## Path Parameters\n- `userId`: UUID of the target user.\n- `recordId`: id of the remembered-device record.\n\n## Response\n- 204 No Content when the device was forgotten.\n- 403 Forbidden when the target is the owner and the caller is not.\n- 404 Not Found when the record does not belong to the user.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the target user",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "recordId",
          "in" : "path",
          "description" : "Id of the remembered-device record",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "204" : {
            "description" : "Device forgotten",
            "headers" : { }
          },
          "403" : {
            "description" : "The target is the owner and the caller is not",
            "headers" : { }
          },
          "404" : {
            "description" : "No such record of the user",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/me" : {
      "put" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Update my own profile",
        "description" : "Updates the caller's own name, interface language, and data language. All other fields are admin-controlled. Optimistic-locking version required.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Editable own-profile fields",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserSelfUpdateDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated own profile",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/me/password" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Change my password",
        "description" : "Verifies the current password and sets a new one (subject to the password policy). 401 on wrong current password, 400 on a weak new password.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Current + new password",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.SelfPasswordChangeRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "204" : {
            "description" : "Password changed",
            "headers" : { }
          },
          "400" : {
            "description" : "New password fails the policy",
            "headers" : { }
          },
          "401" : {
            "description" : "Wrong current password",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/me/reset-2fa" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Reset my 2FA",
        "description" : "Password-confirmed reset of the caller's 2FA enrollment. Ends all of the caller's sessions, this one included, and forgets their trusted devices. The next login re-enrolls when 2FA is mandatory. 401 on wrong password.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Current password to confirm the reset",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.SelfResetTotpRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "204" : {
            "description" : "2FA enrollment cleared",
            "headers" : { }
          },
          "401" : {
            "description" : "Wrong password",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/me/password-access" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Toggle my password sign-in",
        "description" : "Enables or disables password sign-in for the caller. The first enable on an account with no password mails the caller a one-time link to set it.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Whether password sign-in is enabled",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.PasswordAccessRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "204" : {
            "description" : "Password sign-in updated; the user is mailed a set-password link on the first enable",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/me/sessions" : {
      "get" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "List my active sessions",
        "description" : "\nReturns the caller's own live (non-idle) sessions, one per device/login. The caller's current\nsession is flagged with `current = true`. Ephemeral — no historical sessions are returned.\n\n## Method\nGET /api/v1/iam/users/me/sessions\n\n## Response\nList of ActiveSessionDto.\n\n## Authentication\nRequires a valid user bearer token (any role — self-only).\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "List of the caller's active sessions",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.ActiveSessionDto"
                  },
                  "title" : "List<ActiveSessionDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/me/sessions/{familyId}" : {
      "delete" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Terminate one of my sessions",
        "description" : "\nTerminates one of the caller's own sessions, identified by its refresh-token family id.\n\n## Method\nDELETE /api/v1/iam/users/me/sessions/{familyId}\n\n## Path Parameters\n- `familyId`: UUID of the session (refresh-token family) to terminate.\n\n## Response\n- 204 No Content when the session existed and was terminated.\n- 404 Not Found when the session does not belong to the caller or is already gone.\n\n## Authentication\nRequires a valid user bearer token (any role — self-only).\n",
        "parameters" : [ {
          "name" : "familyId",
          "in" : "path",
          "description" : "UUID of the session (refresh-token family) to terminate",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "204" : {
            "description" : "Session terminated",
            "headers" : { }
          },
          "404" : {
            "description" : "Session not found or not the caller's",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/me/email" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Start a self-service email change",
        "description" : "Sends a code + deeplink to the new address; the change applies only after confirmation.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "The new email address",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.EmailChangeStartRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.EmailChangeChallengeDto"
                }
              }
            }
          },
          "409" : {
            "description" : "A NAMED seat still locked to the current email",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/me/email/confirm" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Confirm an email change with the code",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.EmailChangeConfirmRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Email change confirmed",
            "headers" : { }
          },
          "400" : {
            "description" : "Invalid code or session",
            "headers" : { }
          },
          "410" : {
            "description" : "Code expired or already used",
            "headers" : { }
          },
          "423" : {
            "description" : "Too many attempts",
            "headers" : { }
          },
          "409" : {
            "description" : "Email already in use, or a NAMED seat still locked to the current one",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/me/trusted-devices" : {
      "get" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "List my remembered devices",
        "description" : "\nReturns the caller's remembered devices that still skip the TOTP challenge. The device sending the\nrequest (its `WMS-Device-ID`) is flagged with `current = true`. Expired devices are not returned.\n\n## Method\nGET /api/v1/iam/users/me/trusted-devices\n\n## Response\nList of TrustedDeviceDto.\n\n## Authentication\nRequires a valid user bearer token (any role — self-only).\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "The caller's remembered devices",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.TrustedDeviceDto"
                  },
                  "title" : "List<TrustedDeviceDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Forget all my remembered devices",
        "description" : "\nForgets every remembered device of the caller.\n\n## Method\nDELETE /api/v1/iam/users/me/trusted-devices\n\n## Response\n204 No Content.\n\n## Authentication\nRequires a valid user bearer token (any role — self-only).\n",
        "parameters" : [ ],
        "responses" : {
          "204" : {
            "description" : "Every remembered device forgotten",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/me/trusted-devices/{recordId}" : {
      "delete" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Forget one of my remembered devices",
        "description" : "\nForgets one of the caller's remembered devices: its next sign-in asks for the TOTP code again.\n\n## Method\nDELETE /api/v1/iam/users/me/trusted-devices/{recordId}\n\n## Path Parameters\n- `recordId`: id of the remembered-device record.\n\n## Response\n- 204 No Content when the device was forgotten.\n- 404 Not Found when the record does not belong to the caller.\n\n## Authentication\nRequires a valid user bearer token (any role — self-only).\n",
        "parameters" : [ {
          "name" : "recordId",
          "in" : "path",
          "description" : "Id of the remembered-device record",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "204" : {
            "description" : "Device forgotten",
            "headers" : { }
          },
          "404" : {
            "description" : "No such record of the caller",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/email/verify-link" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Confirm an email change with the deeplink token",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.EmailChangeVerifyLinkRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Email change confirmed",
            "headers" : { }
          },
          "400" : {
            "description" : "Invalid token or session",
            "headers" : { }
          },
          "410" : {
            "description" : "Link expired or already used",
            "headers" : { }
          },
          "409" : {
            "description" : "Email already in use",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/light" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Get lightweight user data",
        "description" : "\nReturns lightweight user data for efficient client-side synchronization.\nGiven a list of IDs and versions, returns only those records that are deleted or have version mismatches.\n\n## Method\nPOST /api/v1/iam/users/light\n\n## Request Body\nList<IdVersionDto> containing the IDs and versions to check. Maximum 100 items.\n\n## Response\nList<UserLightDto> containing only records that need to be updated on the client.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 400 if more than 100 items are provided\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of IDs and versions to check (max 100)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of users that need updating",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserLightDto"
                  },
                  "title" : "List<UserLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/users/minimal/search" : {
      "post" : {
        "tags" : [ "IAM - Users" ],
        "summary" : "Minimal user search",
        "description" : "\nReturns a minimal list of users for autocomplete and selection purposes.\nReturns only essential fields (ID, name, email) for improved performance.\n\n## Method\nPOST /api/v1/iam/users/minimal/search\n\n## Query Parameters\n- `limit`: Maximum number of results to return (optional, default varies)\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria.\n\n## Response\nList of minimal user objects with ID, name, and email only.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Rate Limiting\nThis endpoint has relaxed rate limiting (LIGHT_RATE_LIMIT) for better UX in autocomplete scenarios.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of results (default 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of minimal user objects",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/access-groups/sse" : {
      "get" : {
        "tags" : [ "IAM - User Groups" ],
        "summary" : "Get access groups stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof access groups for the current tenant. The endpoint streams paginated access group data as it\nchanges in the database.\n\n## Usage\n1. Optionally stage filters using POST /api/v1/iam/access-groups/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /api/v1/iam/access-groups/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<AccessGroupHeaderResponseDto>\ncontaining the current page of access groups matching the filters and pagination.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role. Only returns access groups for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'name,asc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /access-groups/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<AccessGroupHeaderResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/access-groups/sse/count" : {
      "get" : {
        "tags" : [ "IAM - User Groups" ],
        "summary" : "Get access groups count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof access groups matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /api/v1/iam/access-groups/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /api/v1/iam/access-groups/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role. Only counts access groups for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /access-groups/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count as Long",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/access-groups/sse/{id}" : {
      "get" : {
        "tags" : [ "IAM - User Groups" ],
        "summary" : "Get single access group via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific access group by its ID.\n\n## Usage\nConnect to this SSE endpoint with the access group ID in the path parameter.\nReceive continuous updates as the access group data changes.\n\n## Path Parameters\n- `id`: UUID of the access group\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized AccessGroupResponseDto\ncontaining the full access group details including members and warehouse assignments.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role. Only returns access groups for the authenticated user's tenant.\n\n## Errors\n- Returns error event if access group ID is missing or invalid\n- Returns null events if access group is deleted or not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the access group",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.AccessGroupId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of AccessGroupResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/access-groups/sse/filters" : {
      "post" : {
        "tags" : [ "IAM - User Groups" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Filters to stage for SSE requests",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/access-groups/search" : {
      "post" : {
        "tags" : [ "IAM - User Groups" ],
        "summary" : "Search access groups",
        "description" : "\nReturns a paginated list of access groups filtered by optional criteria.\nOptimized for list views. Use query parameters for pagination and sorting.\n\n## Method\nPOST /api/v1/iam/access-groups/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"name,asc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns Page<AccessGroupHeaderResponseDto> with items and pagination metadata.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role. Only returns access groups for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'name,asc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of access group headers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/access-groups/{id}" : {
      "get" : {
        "tags" : [ "IAM - User Groups" ],
        "summary" : "Get access group by ID",
        "description" : "\nReturns full details of a single access group including members and warehouse assignments.\n\n## Method\nGET /api/v1/iam/access-groups/{id}\n\n## Path Parameters\n- `id`: UUID of the access group\n\n## Response\nAccessGroupResponseDto containing the full access group details including members and warehouse assignments.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 404 if the access group is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the access group",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.AccessGroupId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Access group details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "IAM - User Groups" ],
        "summary" : "Delete access group (soft delete)",
        "description" : "\nPerforms a soft delete of a access group using optimistic locking.\n\n## Method\nDELETE /api/v1/iam/access-groups/{id}\n\n## Path Parameters\n- `id`: UUID of the access group\n\n## Query Parameters\n- `version`: Short value of the current entity version for optimistic locking\n\n## Response\nEmpty response on success.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 404 if the access group is not found\n- 409 if version conflict (concurrent modification)\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the access group",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.AccessGroupId"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Access group deleted successfully",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/access-groups/new" : {
      "post" : {
        "tags" : [ "IAM - User Groups" ],
        "summary" : "Get new access group template",
        "description" : "\nReturns a new access group template with default values for creating a new group.\n\n## Method\nGET /api/v1/iam/access-groups/new\n\n## Response\nAccessGroupResponseDto with default values that can be used as a template for creating a new access group.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New access group template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/access-groups" : {
      "put" : {
        "tags" : [ "IAM - User Groups" ],
        "summary" : "Update access group",
        "description" : "\nUpdates an existing access group with optimistic locking.\nMembers and warehouse assignments are replaced entirely (not merged).\n\n## Method\nPUT /api/v1/iam/access-groups\n\n## Request Body\nAccessGroupIncomeDto with updated information including:\n- `id`: Access group ID (required)\n- `name`: Updated name (required)\n- `description`: Updated description (optional)\n- `profileId`: Profile ID linked to the access group (required)\n- `members`: Complete list of user IDs (replaces existing)\n- `warehouseAssignments`: Complete list of warehouse IDs (replaces existing)\n- `version`: Current version for optimistic locking (required)\n\n## Response\nAccessGroupResponseDto with the updated access group details and incremented version.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 404 if the access group is not found\n- 409 if version conflict (concurrent modification)\n- 400 if validation fails\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Updated access group data",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated access group",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "IAM - User Groups" ],
        "summary" : "Create new access group",
        "description" : "\nCreates a new access group in the system with members and warehouse assignments.\n\n## Method\nPOST /api/v1/iam/access-groups\n\n## Request Body\nAccessGroupIncomeDto with access group information including:\n- `name`: Group name (required)\n- `description`: Group description (optional)\n- `profileId`: Profile ID linked to the access group (required)\n- `members`: List of user IDs to add to the group\n- `warehouseAssignments`: List of warehouse IDs accessible to group members\n\n## Response\nAccessGroupResponseDto with the created access group details including generated ID.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 400 if validation fails (empty name, invalid IDs, exceeds limits)\n- 409 if access group with name already exists in tenant\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Access group data",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created access group",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/access-groups/light" : {
      "post" : {
        "tags" : [ "IAM - User Groups" ],
        "summary" : "Get lightweight access group data",
        "description" : "\nReturns lightweight access group data for efficient client-side synchronization.\nGiven a list of IDs and versions, returns only those records that are deleted or have version mismatches.\n\n## Method\nPOST /api/v1/iam/access-groups/light\n\n## Request Body\nList<IdVersionDto> containing the IDs and versions to check. Maximum 100 items.\n\n## Response\nList<AccessGroupLightDto> containing only records that need to be updated on the client.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 400 if more than 100 items are provided\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of IDs and versions to check (max 100 items)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight access group data for synchronization",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupLightDto"
                  },
                  "title" : "List<AccessGroupLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/access-groups/minimal/search" : {
      "post" : {
        "tags" : [ "IAM - User Groups" ],
        "summary" : "Minimal access group search",
        "description" : "\nReturns a minimal list of access groups for autocomplete and selection purposes.\nReturns only essential fields (ID, name) for improved performance.\n\n## Method\nPOST /api/v1/iam/access-groups/minimal/search\n\n## Query Parameters\n- `limit`: Maximum number of results to return (optional, default varies)\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria.\n\n## Response\nList of minimal access group objects with ID and name only.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Rate Limiting\nThis endpoint has relaxed rate limiting (LIGHT_RATE_LIMIT) for better UX in autocomplete scenarios.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of results",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal access group data for autocomplete",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/profiles/sse" : {
      "get" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "SSE: Get all profiles (live updates)",
        "description" : "\nReturns a live SSE stream of paginated profiles for the current tenant.\nEmits updates whenever profile data changes.\n\n## Method\nGET /api/v1/iam/profiles/sse\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"name,asc\")\n\n## Headers\n- `X-SSE-Request-Id`: Optional ID of staged filters from POST /api/v1/iam/profiles/sse/filters\n\n## Response\nSSE stream emitting Page<ProfileHeaderResponseDto> on each change (without permissions).\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'name,asc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /profiles/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ProfileHeaderResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.profile.dto.ProfileHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/profiles/sse/count" : {
      "get" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "SSE: Get profiles count (live updates)",
        "description" : "\nReturns a live SSE stream of profile count for the current tenant.\nEmits updates whenever the count changes.\n\n## Method\nGET /api/v1/iam/profiles/sse/count\n\n## Headers\n- `X-SSE-Request-Id`: Optional ID of staged filters from POST /api/v1/iam/profiles/sse/filters\n\n## Response\nSSE stream emitting Long count value on each change.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /profiles/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/profiles/sse/{id}" : {
      "get" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "SSE: Get profile by ID (live updates)",
        "description" : "\nReturns a live SSE stream of a single profile for the current tenant.\nEmits updates whenever the profile data changes.\n\n## Method\nGET /api/v1/iam/profiles/sse/{id}\n\n## Path Parameters\n- `id`: UUID of the profile\n\n## Response\nSSE stream emitting ProfileFullResponseDto on each change.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 400 if ID format is invalid\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the profile",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of ProfileFullResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.ProfileFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/profiles/sse/filters" : {
      "post" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStages filter criteria for subsequent SSE requests.\nReturns an ID that should be passed in the X-SSE-Request-Id header.\n\n## Method\nPOST /api/v1/iam/profiles/sse/filters\n\n## Request Body\nOptional FilterRequest JSON with field-specific filter criteria.\n\n## Response\nString UUID of the staged filters.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Usage\n1. POST filters to this endpoint\n2. Use returned ID in X-SSE-Request-Id header for SSE requests\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/profiles" : {
      "get" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "Get all profiles",
        "description" : "\nReturns a paginated list of profiles for the current tenant.\nProfiles define sets of permissions and roles that can be assigned to users.\n\n## Method\nGET /api/v1/iam/profiles\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"name,asc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria.\n\n## Response\nReturns Page<ProfileHeaderResponseDto> with items and pagination metadata (without permissions).\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'name,asc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of profiles",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.profile.dto.ProfileHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "Update profile",
        "description" : "\nUpdates an existing profile with optimistic locking.\n\n## Method\nPUT /api/v1/iam/profiles/{id}\n\n## Path Parameters\n- `id`: UUID of the profile\n\n## Request Body\nProfileIncomeDto with updated information and current version for optimistic locking.\n\n## Response\nProfileFullResponseDto with the updated profile details and incremented version.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 404 if the profile is not found\n- 409 if version conflict (concurrent modification)\n- 400 if validation fails or trying to remove critical permissions from system profiles\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Updated profile data",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.ProfileIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated profile",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.ProfileFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "Create new profile",
        "description" : "\nCreates a new profile with specified permissions and settings.\n\n## Method\nPOST /api/v1/iam/profiles\n\n## Request Body\nProfileIncomeDto with profile information including:\n- `name`: Profile name (required)\n- `rights`: List of right keys granted to the profile\n- `warehouseAccessRestricted`: Whether the profile's warehouse access is restricted by group\n\n## Response\nProfileFullResponseDto with the created profile details including generated ID.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 400 if validation fails\n- 409 if profile with the same name already exists in tenant\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Profile data",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.ProfileIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created profile",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.ProfileFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/profiles/{id}" : {
      "get" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "Get profile by ID",
        "description" : "\nReturns full details of a single profile including all permissions and settings.\n\n## Method\nGET /api/v1/iam/profiles/{id}\n\n## Path Parameters\n- `id`: UUID of the profile\n\n## Response\nProfileFullResponseDto containing the full profile details including:\n- Profile name and description\n- Assigned permissions and roles\n- Associated settings\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 404 if the profile is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the profile",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Profile details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.ProfileFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "Delete profile (soft delete)",
        "description" : "\nPerforms a soft delete of a profile using optimistic locking.\n\n## Method\nDELETE /api/v1/iam/profiles/{id}\n\n## Path Parameters\n- `id`: UUID of the profile\n\n## Query Parameters\n- `version`: Short value of the current entity version for optimistic locking\n\n## Response\nEmpty response on success.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 404 if the profile is not found\n- 409 if version conflict (concurrent modification)\n- 400 if trying to delete a profile that is still assigned to users\n- 400 if trying to delete system-required profiles\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the profile",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current entity version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Profile deleted successfully",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/profiles/new" : {
      "post" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "Get new profile template",
        "description" : "\nReturns a profile template with default values and all available protected tables with empty permissions.\nUse this endpoint to get a pre-filled template when creating a new profile.\n\n## Method\nPOST /api/v1/iam/profiles/new\n\n## Response\nProfileFullResponseDto containing:\n- Generated UUID for the profile\n- Empty name\n- No rights and an empty permission matrix\n- Version 0\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New profile template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.ProfileFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/profiles/rights-catalog" : {
      "get" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "Get the rights catalog",
        "description" : "\nReturns the full catalog of functional rights available to profiles, grouped by area and\nlocalized to the caller's language. Use this to render the rights picker in the profile editor.\n\n## Method\nGET /api/v1/iam/profiles/rights-catalog\n\n## Response\nRightsCatalogResponseDto containing:\n- `areas`: rights grouped by area, each with a localized title\n- each right's localized title/description, its parent key (if it is a child right) and the\n  table grants it materializes\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Rights catalog",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.RightsCatalogResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/profiles/light" : {
      "post" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "Get lightweight profile data",
        "description" : "\nReturns lightweight profile data for given IDs and versions.\nReturns only records that are deleted or have version mismatch.\nUsed for efficient client-side data synchronization.\n\n## Method\nPOST /api/v1/iam/profiles/light\n\n## Request Body\nList of IdVersionDto objects containing:\n- `id`: UUID of the profile\n- `version`: Current version on client (optional)\n\n## Response\nList of ProfileLightDto containing only records that need updates:\n- Deleted records (name empty, deleted=true)\n- Records with version mismatch\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 400 if more than 100 items are requested\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of id/version pairs to check",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "List of profiles that need updates",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.ProfileLightDto"
                  },
                  "title" : "List<ProfileLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/profiles/minimal/search" : {
      "post" : {
        "tags" : [ "IAM - Profiles" ],
        "summary" : "Search profiles (minimal data)",
        "description" : "\nReturns minimal profile data matching filter criteria.\nUsed for search/autocomplete endpoints.\n\n## Method\nPOST /api/v1/iam/profiles/minimal/search\n\n## Query Parameters\n- `limit`: Maximum number of results (default 51, max 51)\n\n## Request Body (optional)\nFilterRequest JSON with field-specific filter criteria.\n\n## Response\nList of IdNamePreviewDto containing:\n- `id`: UUID of the profile\n- `name`: Profile name\n- `previewUrl`: Always null for profiles\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Errors\n- 400 if limit exceeds 51\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of results (default 51, max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of minimal profile data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/tenants/storage-usage" : {
      "get" : {
        "tags" : [ "IAM - Tenants" ],
        "summary" : "Get tenant storage usage",
        "description" : "\nReturns storage usage information for the current tenant.\nIncludes aggregate total size and a breakdown over the largest tables.\n\n## Method\nGET /api/v1/iam/tenants/storage-usage\n\n## Response\nTenantStorageUsageResponseDto containing:\n- `totalSizeBytes`: Size of the tenant's database in bytes, indexes and internal overhead included\n- `updatedAt`: Timestamp of the last storage usage update\n- `details`: The largest tables, each measured whole. A slice of the database rather than a\n  partition of it, so the entries do not sum to `totalSizeBytes`\n\n## Authentication\nRequires tenant-level authentication (OWNER or ADMIN role).\nTenant is determined from the request context (token/header).\n\n## Note\nData is read from cached storage usage tables.\nFor manual refresh, use the system scheduler or platform admin endpoint.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Tenant storage usage details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.TenantStorageUsageResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/tenants/license" : {
      "get" : {
        "tags" : [ "IAM - Tenants" ],
        "summary" : "Get tenant license overview",
        "description" : "\nReturns the aggregated license state and usage analytics for the current tenant:\nderived status, validity/grace windows, and used/limit/percent for every licensed\nposition (named seats, technical seats, concurrent seats, storage, MCP calls/month).\n\n## Method\nGET /api/v1/iam/tenants/license\n\n## Response\nTenantLicenseOverviewDto. All timestamps are epoch milliseconds. License fields are\nnull when there is no current license (status = NONE); usage rows are still returned\nwith null limits where the entitlement is not provisioned. Percent values are floored\nand not capped at 100 (over-cap shows e.g. 120).\n\n## Authentication\nRequires tenant-level authentication (OWNER or ADMIN role). Callable with an\nentitlement=EXCEEDED access token so an over-cap admin can inspect why access is restricted.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Aggregated license overview for the current tenant",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.TenantLicenseOverviewDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/tenants/license/history/search" : {
      "post" : {
        "tags" : [ "IAM - Tenants" ],
        "summary" : "Search tenant license history",
        "description" : "\nReturns the append-only list of issued license periods for the current tenant,\nproxied from the entitlements server. Values are effective per period.\n\n## Method\nPOST /api/v1/iam/tenants/license/history/search\n\n## Query Parameters\n- `page`: Page index (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (repeatable). Sortable fields: validFrom (default desc),\n  validUntil, createdAt.\n\n## Response\nPage<LicenseHistoryItemDto>. An empty page is returned when the tenant has no\nentitlements linkage or the entitlements server does not know the tenant.\n\n## Errors\n- 502 if the entitlements server is unreachable, times out, fails, or rejects the s2s API key.\n\n## Authentication\nRequires tenant-level authentication (OWNER or ADMIN role). Callable with an\nentitlement=EXCEEDED access token.\n",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "description" : "Page index (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'validFrom,desc'. Repeatable.",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Page of issued license periods",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseHistoryItemDto"
                }
              }
            }
          },
          "502" : {
            "description" : "Entitlements server unreachable, failed, or rejected the s2s API key",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/tenants/sla/summary" : {
      "get" : {
        "tags" : [ "IAM - Tenants" ],
        "summary" : "Get account SLA summary",
        "description" : "\nReturns the measured availability of the caller's account, proxied from the entitlements server:\nthe running UTC month (state PRELIMINARY, live) and the twelve before it (DRAFT or FINAL), oldest\nfirst, plus the public aliases of the pools the account's tenants sit on. Months without a report\nare absent. The account is the one the caller's tenant is placed under; it cannot be chosen.\n\n## Method\nGET /api/v1/iam/tenants/sla/summary\n\n## Response\nAccountSlaSummaryDto. `uptimePct` is a decimal string rounded down to three places.\n\n## Errors\n- 404 if the entitlements server does not know the account.\n- 502 if the entitlements server is unreachable, times out, fails, or rejects the s2s API key.\n\n## Authentication\nRequires tenant-level authentication (OWNER or ADMIN role).\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "The account's SLA months, oldest first",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.AccountSlaSummaryDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Entitlements does not know the tenant's account",
            "headers" : { }
          },
          "502" : {
            "description" : "Entitlements server unreachable, failed, or rejected the s2s API key",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/tenants/sla/incidents" : {
      "get" : {
        "tags" : [ "IAM - Tenants" ],
        "summary" : "List account SLA incidents of a month",
        "description" : "\nReturns the incidents that touched the caller's account in one UTC month, in their public wording,\nwith the downtime they caused and the excluded stretches with their offer clause 10.2 ground.\nProxied from the entitlements server. A month without a report is an empty list.\n\n## Method\nGET /api/v1/iam/tenants/sla/incidents?month=YYYY-MM\n\n## Errors\n- 400 if `month` is missing or not YYYY-MM.\n- 404 if the entitlements server does not know the account.\n- 502 if the entitlements server is unreachable, times out, fails, or rejects the s2s API key.\n\n## Authentication\nRequires tenant-level authentication (OWNER or ADMIN role).\n",
        "parameters" : [ {
          "name" : "month",
          "in" : "query",
          "description" : "UTC month, YYYY-MM",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Incidents that touched the account in the month",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.SlaIncidentDto"
                  },
                  "title" : "List<SlaIncidentDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "`month` is missing or not YYYY-MM",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Entitlements does not know the tenant's account",
            "headers" : { }
          },
          "502" : {
            "description" : "Entitlements server unreachable, failed, or rejected the s2s API key",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/tenants/maintenance/upcoming" : {
      "get" : {
        "tags" : [ "IAM - Tenants" ],
        "summary" : "List upcoming maintenance of the tenant",
        "description" : "\nReturns the maintenance plans announced to the caller's tenant that have not ended yet, soonest\nfirst, for the maintenance banner. Proxied from the entitlements server. Times are instants; `zone`\nis the tenant's IANA time zone to render them in.\n\n## Method\nGET /api/v1/iam/tenants/maintenance/upcoming\n\n## Response\nList<UpcomingMaintenanceDto>. An empty list when nothing is announced, and also when the\nentitlements server cannot be reached: the banner is simply not shown.\n\n## Authentication\nRequires tenant-level authentication (any role).\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Announced maintenance that has not ended, soonest first",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.UpcomingMaintenanceDto"
                  },
                  "title" : "List<UpcomingMaintenanceDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/settings" : {
      "get" : {
        "tags" : [ "IAM - Settings" ],
        "summary" : "Get settings",
        "description" : "\nReturns settings.\n\n## Method\nGET /api/v1/iam/settings\n\n## Response\nSettingsResponseDto containing supported data languages as objects (`code`, `name`), system language code and\n`returnableContainersEnabled` (tenant-wide returnable container accounting; `false` until enabled).\n\n## Authentication\nRequires tenant-level authentication (OWNER, ADMIN or USER role).\nTenant is resolved from the request context.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Current settings",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.settings.dto.SettingsResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "IAM - Settings" ],
        "summary" : "Upsert settings",
        "description" : "\nCreates or updates settings for the current tenant.\n\n## Method\nPUT /api/v1/iam/settings\n\n## Request Body\nSettingsIncomeDto with supported data languages as objects (`code`, `name`), optional system language code and\noptional `returnableContainersEnabled`. An omitted `returnableContainersEnabled` keeps the stored value.\n\n## Response\nSettingsResponseDto with persisted data and version.\n\n## Authentication\nRequires tenant-level authentication (OWNER or ADMIN role).\nTenant is resolved from the request context.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Settings payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.settings.dto.SettingsIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Upserted settings",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.settings.dto.SettingsResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/devices/sse" : {
      "get" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Get terminal devices stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof terminal devices for the current tenant. The endpoint streams paginated device data as it\nchanges in the database.\n\n## Usage\n1. Optionally stage filters using POST /api/v1/iam/terminal/devices/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /api/v1/iam/terminal/devices/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<TerminalDeviceDto>\ncontaining the current page of devices matching the filters and pagination.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role. Only returns devices for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /terminal/devices/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of terminal device pages",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/devices/sse/count" : {
      "get" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Get terminal devices count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof terminal devices matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /api/v1/iam/terminal/devices/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /api/v1/iam/terminal/devices/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role. Only counts devices for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /terminal/devices/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of terminal devices count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/devices/sse/{id}" : {
      "get" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Get single terminal device via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific terminal device by its UUID.\n\n## Usage\nConnect to this SSE endpoint with the terminal device UUID in the path parameter.\nReceive continuous updates as the device data changes.\n\n## Path Parameters\n- `id`: UUID of the terminal device\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized TerminalDeviceDto\ncontaining the full device details.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role. Only returns devices for the authenticated user's tenant.\n\n## Errors\n- Returns error event if UUID is missing or invalid\n- Returns null events if device is not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Internal ID of the terminal device",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.iam.TerminalDeviceId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of terminal device details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/devices/sse/filters" : {
      "post" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Stage filters for terminal device SSE requests",
        "description" : "\nStores filter configuration for subsequent terminal device SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Filter configuration",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/heartbeat" : {
      "post" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Terminal device heartbeat",
        "description" : "Records device activity and updates presence status",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.api.http.terminal.device.HeartbeatRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Heartbeat recorded; the body is the device's offline state, empty when the device is not active",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.DeviceOfflineStateDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/pair/start" : {
      "post" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Start terminal pairing",
        "description" : "Creates a new pairing session and returns QR payload for terminal",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.PairingStartResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/pair/confirm" : {
      "post" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Confirm terminal pairing",
        "description" : "Admin confirms pairing using 6-digit code from terminal",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.PairingStatusDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/devices/search" : {
      "post" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Search terminal devices",
        "description" : "Returns a paginated list of terminal devices with optional filtering",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Page of devices",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/devices/{id}" : {
      "get" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Get terminal device by ID",
        "description" : "Returns terminal device details by its internal ID",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Internal ID of the terminal device",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.iam.TerminalDeviceId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Device details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Device not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "patch" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Update terminal device name",
        "description" : "Updates the custom name of a terminal device",
        "parameters" : [ {
          "name" : "uuid",
          "in" : "path",
          "description" : "UUID of the terminal device",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/java.util.UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.DeviceUpdateRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated device details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Device not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/devices/by-device-uuid/{deviceUuid}" : {
      "get" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Get terminal device by UUID",
        "description" : "Returns terminal device details by its device UUID",
        "parameters" : [ {
          "name" : "deviceUuid",
          "in" : "path",
          "description" : "Device UUID of the terminal device",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/java.util.UUID"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Device details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Device not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/devices/{id}/offline" : {
      "put" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Set offline mode of a terminal device",
        "description" : "Switches offline work on or off for a device and sets its limit and breaker thresholds. Switching on checks the device's application version and the tenant's offline quota.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Internal ID of the terminal device",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.iam.TerminalDeviceId"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.DeviceOfflineSettingsRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated device details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceDto"
                }
              }
            }
          },
          "400" : {
            "description" : "A setting is out of range or the data language is not supported",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Device not found",
            "headers" : { }
          },
          "409" : {
            "description" : "OFFLINE_QUOTA_EXCEEDED (every offline licence slot is taken), OFFLINE_APP_VERSION_UNSUPPORTED (the device's application is too old) or DEVICE_NOT_ACTIVE (switching on a revoked or blocked device)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.OfflineDeviceNotActiveDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/devices/{id}/revoke" : {
      "post" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Revoke terminal device",
        "description" : "Revokes a terminal device, preventing further access",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Internal ID of the terminal device",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.iam.TerminalDeviceId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Device revoked successfully",
            "headers" : { }
          },
          "404" : {
            "description" : "Device not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/pair/sse/{id}" : {
      "get" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Pairing status SSE",
        "description" : "Subscription for pairing status changes",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the pairing session",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.iam.PairingSessionId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of PairingStatusEventDto",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/pair/claim" : {
      "post" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Claim terminal pairing",
        "description" : "Terminal claims a pairing session using QR code info",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.PairingClaimResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/login/start" : {
      "post" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Start terminal login",
        "description" : "Validates badge and returns a challenge for the terminal to sign",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalLoginStartResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid badge or device",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/login/finish" : {
      "post" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Finish terminal login",
        "description" : "Verifies signature and issues JWT tokens. A retry with the same WMS-Idempotency-Key and a valid signature over the same challenge answers the first attempt's outcome; a success is the same session with fresh tokens (WMS-Idempotency-Replayed is set).",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalLoginFinishResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Login refused; the body names the code: LOGIN_SESSION_EXPIRED, SIGNATURE_INVALID, DEVICE_NOT_REGISTERED_IN_TENANT, DEVICE_REVOKED_OR_BLOCKED, SEAT_LIMIT_EXCEEDED, ACCOUNT_DISABLED, or SESSION_ENDED (a retry whose session has since ended)",
            "headers" : { }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalSessionTakeoverRequiredDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/login/takeover" : {
      "post" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Confirm a terminal session takeover",
        "description" : "Ends every other session of the badge holder and signs in on this terminal with the ticket of a 409 finish",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalLoginFinishResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Login refused; the message is the TerminalLoginErrorDto name: DEVICE_REVOKED_OR_BLOCKED, DEVICE_NOT_REGISTERED_IN_TENANT, SEAT_LIMIT_EXCEEDED or ACCOUNT_DISABLED",
            "headers" : { }
          },
          "401" : {
            "description" : "TAKEOVER_TICKET_INVALID",
            "headers" : { }
          },
          "403" : {
            "description" : "LICENSE_INACTIVE",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/terminal/login/abandon" : {
      "post" : {
        "tags" : [ "IAM - Terminals" ],
        "summary" : "Close a terminal login session by its idempotency key",
        "description" : "For a terminal whose login/finish timed out and which will not use the session it opened. The device signs 'wms-terminal-login-abandon:{deviceUuid}:{loginIdempotencyKey}'. When the key opened a session of that device and the signature verifies, the session ends and its seat is freed; a later login/finish retry answers SESSION_ENDED. Any other request changes nothing, and the answer is 204 either way so it never shows whether a key exists.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalLoginAbandonRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "204" : {
            "description" : "Accepted; the session is closed only if the request proved the device",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/access-scope/tables" : {
      "get" : {
        "tags" : [ "IAM - Access Scopes" ],
        "summary" : "Get accessible tables for current user",
        "description" : "\nRetrieves the list of protected tables the current user has access to.\n\n## Method\nGET /access-scope/tables\n\n## Query Parameters\n- `warehouseId`: Optional warehouse ID to filter access scope\n\n## Behavior\n1. If user has ADMIN or OWNER role: returns null permissions (full access)\n2. If no warehouseId provided: returns combined permissions from all user's access groups\n3. If warehouseId provided:\n   - Includes tables from groups with unrestricted profiles (warehouse_access_restricted=false)\n   - Includes tables from restricted groups that have this warehouse assignment\n4. Permissions are combined using OR logic across access groups\n\n## Response\nReturns AccessScopeTablesResponseDto:\n- `permissions`: List of table permissions, or null if user has full access\n- `tenantOptions`: Tenant-wide options that switch functional areas on or off, returned for every user\n  - `returnableContainersEnabled`: returnable container accounting is enabled for the tenant\n\n## Authentication\nRequires JWT authentication.\n\n## Errors\n- 401 if not authenticated\n",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "query",
          "description" : "Optional warehouse ID to filter access scope",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of accessible tables",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.accessscope.dto.AccessScopeTablesResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/audit-logs/{table}/{recordId}" : {
      "get" : {
        "tags" : [ "IAM - Audit Logs" ],
        "summary" : "Get audit logs by table and record ID",
        "description" : "\nReturns a paginated list of audit log records for a specific table and record ID.\n\n## Method\nGET /api/v1/iam/audit-logs/{table}/{recordId}\n\n## Path Parameters\n- `table`: Table name stored in audit log (for example: users, profiles, access_groups)\n- `recordId`: String representation of the audited record identifier\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (for example: changedAt,desc)\n\n## Response\nReturns Page<AuditLogHeaderResponseDto>. The header DTO does not include `data`.\n`operation` is INSERT, UPDATE, DELETE or BASELINE. A BASELINE row is the state of the record at the\nretention boundary: every earlier row was deleted when its retention term ran out, and the baseline\nhas no responsibleUser or transactionComment. Rows come newest first, so a baseline is the last\nrow, and the row before it shows its change against it.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n",
        "parameters" : [ {
          "name" : "table",
          "in" : "path",
          "description" : "Table name from audit_log.table_name",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "recordId",
          "in" : "path",
          "description" : "Record identifier from audit_log.record_id",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'changedAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Page of audit log header records",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.auditlog.dto.AuditLogHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/audit-logs/{table}/{recordId}/count" : {
      "get" : {
        "tags" : [ "IAM - Audit Logs" ],
        "summary" : "Get audit logs count by table and record ID",
        "description" : "\nReturns count of audit log records for a specific table and record ID.\n\n## Method\nGET /api/v1/iam/audit-logs/{table}/{recordId}/count\n\n## Path Parameters\n- `table`: Table name stored in audit log (for example: users, profiles, access_groups)\n- `recordId`: String representation of the audited record identifier\n\n## Response\nReturns Long count value. A BASELINE row counts as one record.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n",
        "parameters" : [ {
          "name" : "table",
          "in" : "path",
          "description" : "Table name from audit_log.table_name",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "recordId",
          "in" : "path",
          "description" : "Record identifier from audit_log.record_id",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Count of matching audit log records",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/audit-logs/{id}" : {
      "get" : {
        "tags" : [ "IAM - Audit Logs" ],
        "summary" : "Get audit log by ID",
        "description" : "\nReturns a single audit log record by audit log identifier.\n\n## Method\nGET /api/v1/iam/audit-logs/{id}\n\n## Path Parameters\n- `id`: Numeric audit log ID\n\n## Response\nReturns AuditLogFullResponseDto. The full DTO includes `data` as a JSON string.\nFor `operation` = BASELINE, `data` is the state of the record at the retention boundary, and\nresponsibleUser and transactionComment are null.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 404 if the audit log record is not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Audit log identifier",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "AuditLogId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Single audit log record",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auditlog.dto.AuditLogFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/audit-config" : {
      "get" : {
        "tags" : [ "IAM - Audit Config" ],
        "summary" : "Get tenant audit configuration",
        "description" : "\nReturns the merged audit configuration for the current tenant: every registered\nauditable table joined with the tenant's subscription (if any). Tables without\na subscription are returned with `enabled = false, retentionDays = null`.\n\n## Method\nGET /api/v1/iam/audit-config\n\n## Response\nAuditTenantConfigListResponseDto with one item per catalog table (sorted by tableName), and\n`maxRetentionDays` — the term (3 years) that applies to an item whose `retentionDays` is null and\nthe upper bound a tenant may set.\n\n## Authentication\nRequires tenant-level authentication (OWNER or ADMIN role).\nTenant is resolved from the request context.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Merged per-tenant audit configuration",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auditconfig.dto.AuditTenantConfigListResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "IAM - Audit Config" ],
        "summary" : "Update tenant audit configuration",
        "description" : "\nApplies the provided list of items to the current tenant's audit configuration.\n\nPer-item rules:\n- `enabled == true` or non-null `retentionDays` → upsert the per-tenant subscription.\n- otherwise → delete the per-tenant subscription if it exists.\n\nTables omitted from the payload are left untouched. The expected client flow is\nto echo back the full list returned from `GET` with the user's modifications, so\nto clear all subscriptions send the full catalog with every item at the default\nstate (`enabled = false, retentionDays = null`).\n\n`retentionDays` is the per-tenant term, 1..`maxRetentionDays`, after which the\nnightly `cleanupAuditLogRetention` task deletes a table's `audit_log` records\nphysically. It can only shorten the platform maximum; when null, the maximum\napplies. Disabling audit (`enabled=false`) does not delete past records in\n`audit_log`.\n\n## Method\nPUT /api/v1/iam/audit-config\n\n## Request Body\nAuditTenantConfigUpdateRequestDto with a list of items (`tableName`, `enabled`, `retentionDays`).\n\n## Response\nAuditTenantConfigListResponseDto with the updated merged configuration.\n\n## Authentication\nRequires tenant-level authentication (OWNER or ADMIN role).\nTenant is resolved from the request context.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of desired audit-config entries for the current tenant",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auditconfig.dto.AuditTenantConfigUpdateRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated merged per-tenant audit configuration",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auditconfig.dto.AuditTenantConfigListResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/iam/auth/logout" : {
      "post" : {
        "tags" : [ "IAM - Sessions" ],
        "summary" : "Log out the current session",
        "description" : "\nTerminates the caller's own active session: revokes its refresh-token family and frees its seat.\n\n## Method\nPOST /api/v1/iam/auth/logout\n\n## Response\n- 204 No Content on success (or when the caller holds no interactive session).\n\n## Authentication\nRequires a valid user bearer token.\n",
        "parameters" : [ ],
        "responses" : {
          "204" : {
            "description" : "Logged out",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/kspovo/units" : {
      "get" : {
        "tags" : [ "Catalog - KSPOVO" ],
        "summary" : "Get KSPOVO classifier units",
        "description" : "\nReturns a list of all available units from the KSPOVO (Ukrainian State Classifier\nof Units of Measurement) classifier.\n\nKSPOVO is the official Ukrainian classifier used for standardizing units of measure\nin official documentation, statistics, and commerce.\n\n## Method\nGET /kspovo/units\n\n## Response\nReturns a list of KSPOVO unit definitions containing:\n- KSPOVO code (unique identifier in the classifier)\n- Unit name\n- Abbreviation/symbol\n- Description and additional attributes\n\n## Use Cases\n- Validate units of measure against official KSPOVO classifier\n- Populate dropdowns with official unit definitions\n- Ensure compliance with Ukrainian regulatory standards\n- Support multi-language unit names and descriptions\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Caching\nThis endpoint returns relatively static data that changes infrequently.\nConsider implementing client-side caching for optimal performance.\n\n## Notes\n- Data is synchronized with official KSPOVO classifier\n- Units are read-only from the classifier perspective\n- Custom units can be created separately in the system\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "KSPOVO classifier units",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "type" : "object",
                    "title" : "Any"
                  },
                  "title" : "List<Any>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/units-of-measure/sse" : {
      "get" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Get units of measure stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof units of measure for the current tenant. The endpoint streams paginated unit records\nas they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /units-of-measure/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /units-of-measure/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<UnitOfMeasureResponseDto>\ncontaining the current page of units matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns units for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/units-of-measure/sse/count" : {
      "get" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Get units of measure count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof units of measure matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /units-of-measure/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /units-of-measure/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts units for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/units-of-measure/sse/{id}" : {
      "get" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Get single unit of measure via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific unit of measure by its ID.\n\n## Usage\nConnect to this SSE endpoint with the unit ID in the path parameter.\nReceive continuous updates as the unit data changes.\n\n## Path Parameters\n- `id`: UUID of the unit of measure\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized UnitOfMeasureResponseDto\ncontaining the full unit details.\n\n## Authentication\nRequires authentication. Only returns units for the authenticated user's tenant.\n\n## Errors\n- Returns error event if unit ID is missing or invalid\n- Returns null events if unit is deleted or not found\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/units-of-measure/sse/filters" : {
      "post" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged filter ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/units-of-measure/search" : {
      "post" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Search units of measure",
        "description" : "\nReturns a paginated list of units of measure filtered by optional criteria.\nOptimized for list views. Use query parameters for pagination and sorting.\n\n## Method\nPOST /units-of-measure/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns Page<UnitOfMeasureResponseDto> with items and pagination metadata.\n\n## Authentication\nRequires authentication. Only returns units for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of units of measure",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/units-of-measure/{id}" : {
      "get" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Get unit of measure by ID",
        "description" : "\nReturns full details of a single unit of measure record.\n\n## Method\nGET /units-of-measure/{id}\n\n## Path Parameters\n- `id`: UUID of the unit of measure\n\n## Response\nUnitOfMeasureResponseDto containing the full unit details.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if the unit is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the unit of measure",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Unit of measure details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureResponseFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Unit of measure not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Delete unit of measure (soft delete)",
        "description" : "\nSoft deletes a unit of measure record with optimistic locking.\n\n## Method\nDELETE /units-of-measure/{id}?version={version}\n\n## Path Parameters\n- `id`: UUID of the unit to delete\n\n## Query Parameters\n- `version`: Current version for optimistic locking\n\n## Response\nEmpty response on success.\n\n## Business Logic\n- Performs soft delete, marking the unit as deleted\n- Releases associated product relationships\n- Version must match current version for the delete to succeed\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if unit not found\n- 409 if version mismatch (Conflict)\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the unit of measure",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Unit of measure deleted",
            "headers" : { }
          },
          "409" : {
            "description" : "Conflict - version mismatch",
            "headers" : { }
          },
          "404" : {
            "description" : "Unit of measure not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/units-of-measure/new" : {
      "post" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Get new unit of measure template",
        "description" : "\nReturns a template for creating a new unit of measure document with default values.\n\n## Method\nGET /units-of-measure/new\n\n## Response\nUnitOfMeasureIncomeDto with default values:\n- Empty unit fields\n- Default configuration\n\n## Usage\nUse this endpoint to get a pre-filled template when creating new units of measure\nin the UI. The response can be modified and submitted to the create endpoint.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Unit of measure template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/units-of-measure/copy/{id}" : {
      "get" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Copy unit of measure",
        "description" : "\nReturns a preview copy of an existing unit of measure with reset technical fields.\nDoes not save to database.\n\n## Method\nGET /units-of-measure/copy/{id}\n\n## Path Parameters\n- `id`: UUID of the unit to copy\n\n## Response\nUnitOfMeasureResponseDto containing copy preview data (`id = nil`, `version = 0`).\n\n## Business Rules\n- Unit name is prefixed with `Copy of`\n- Unit data is returned as preview and can be edited before create\n- No persistence side effects during copy request\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if source unit not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the unit to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Unit of measure copy preview",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureResponseFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Source unit not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/units-of-measure" : {
      "put" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Update unit of measure",
        "description" : "\nUpdates an existing unit of measure record.\n\n## Method\nPUT /units-of-measure\n\n## Request Body\nUnitOfMeasureIncomeDto describing the unit to update. ID must be present in the body.\n\n## Response\nUnitOfMeasureResponseDto with the updated unit details.\n\n## Business Rules\n- Unit name and abbreviation uniqueness is validated\n- Optimistic locking using version for concurrent update protection\n- Product associations are maintained\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if unit not found\n- 409 Conflict if uniqueness is violated or version mismatch\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Unit of measure updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureResponseFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or version mismatch",
            "headers" : { }
          },
          "404" : {
            "description" : "Unit of measure not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Create unit of measure",
        "description" : "\nCreates a new unit of measure record.\n\n## Method\nPOST /units-of-measure\n\n## Request Body\nUnitOfMeasureIncomeDto describing the unit to create.\n\n## Response\nUnitOfMeasureResponseDto with the created unit details.\n\n## Business Rules\n- Unit name must be unique within the tenant\n- Unit abbreviation (symbol) must be unique within the tenant\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 409 Conflict if unit name or abbreviation uniqueness is violated\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Unit of measure created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureResponseFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or validation error",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/units-of-measure/light" : {
      "post" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Get lightweight units of measure list",
        "description" : "\nReturns a lightweight list of all units of measure with minimal data.\nOptimized for loading into memory for client-side filtering and selection.\n\n## Method\nGET /units-of-measure/light\n\n## Response\nReturns List<UnitOfMeasureLightDto> with minimal unit data for all units.\n\n## Authentication\nRequires authentication. Only returns units for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Lightweight units of measure list",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureLightDto"
                  },
                  "title" : "List<UnitsOfMeasureLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/units-of-measure/minimal/search" : {
      "post" : {
        "tags" : [ "Catalog - UOM" ],
        "summary" : "Minimal search units of measure (autocomplete)",
        "description" : "\nReturns a lightweight list of units of measure filtered by optional criteria.\nOptimized for autocomplete and dropdowns. Returns minimal data projections.\n\n## Method\nPOST /units-of-measure/minimal/search\n\n## Query Parameters\n- `limit`: Maximum number of items to return (default 51, max 51)\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria.\n\n## Response\nReturns List<UnitOfMeasureLightDto> with minimal unit data.\n\n## Authentication\nRequires authentication. Only returns units for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal list of units of measure",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/sse" : {
      "get" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Get products stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof products for the current tenant. The endpoint streams paginated product records\nas they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /products/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /products/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<ProductResponseHeaderDto>\ncontaining the current page of products matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns products for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockLocationId",
          "in" : "query",
          "description" : "Stock scope: cell, loose stock only",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        }, {
          "name" : "stockContainerId",
          "in" : "query",
          "description" : "Stock scope: container",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          }
        }, {
          "name" : "stockProductFeatureId",
          "in" : "query",
          "description" : "Stock scope: product feature",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "stockLotId",
          "in" : "query",
          "description" : "Stock scope: lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/sse/count" : {
      "get" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Get products count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof products matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /products/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /products/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts products for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockLocationId",
          "in" : "query",
          "description" : "Stock scope: cell, loose stock only",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        }, {
          "name" : "stockContainerId",
          "in" : "query",
          "description" : "Stock scope: container",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          }
        }, {
          "name" : "stockProductFeatureId",
          "in" : "query",
          "description" : "Stock scope: product feature",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "stockLotId",
          "in" : "query",
          "description" : "Stock scope: lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/sse/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Get single product via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific product by its ID.\n\n## Usage\nConnect to this SSE endpoint with the product ID in the path parameter.\nReceive continuous updates as the product data changes.\n\n## Path Parameters\n- `id`: UUID of the product\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized ProductResponseFullDto\ncontaining the product details for stream updates.\n\n## Authentication\nRequires authentication. Only returns products for the authenticated user's tenant.\n\n## Errors\n- Returns error event if product ID is missing or invalid\n- Returns null events if product is deleted or not found\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/sse/filters" : {
      "post" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged filter ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/sse/request" : {
      "post" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Stage a product listing request",
        "description" : "\nStages filters together with protocol options (requested fields and compression) for\nsubsequent SSE requests, and returns the request id plus what the server negotiated.\n\n## Usage Flow\n1. POST your listing request as JSON to this endpoint\n2. Receive a stagedRequestId and the negotiated protocol options in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a ProductListingRequestDto JSON structure with an optional filter, requested\nfields, and advertised compression schemes.\n\n## Response\nReturns ProductListingStageResponseDto with the staged request id and the negotiated\nfields/compression.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductListingRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged listing request",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductListingStageResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/search" : {
      "post" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Search products",
        "description" : "\nReturns a paginated list of products filtered by optional criteria.\nOptimized for list views. Use query parameters for pagination and sorting.\n\n## Method\nPOST /products/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns Page<ProductResponseHeaderDto> with items and pagination metadata.\n\n## Authentication\nRequires authentication. Only returns products for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockLocationId",
          "in" : "query",
          "description" : "Stock scope: cell, loose stock only",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        }, {
          "name" : "stockContainerId",
          "in" : "query",
          "description" : "Stock scope: container",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          }
        }, {
          "name" : "stockProductFeatureId",
          "in" : "query",
          "description" : "Stock scope: product feature",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "stockLotId",
          "in" : "query",
          "description" : "Stock scope: lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of products",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.product.dto.ProductResponseHeaderDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Get product by ID",
        "description" : "\nReturns full details of a single product record.\n\n## Method\nGET /products/{id}\n\n## Path Parameters\n- `id`: UUID of the product\n\n## Response\nProductResponseFullDto containing the full product details.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if the product is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Product ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Product details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductResponseFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Product not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Delete product (soft delete)",
        "description" : "\nSoft deletes a product record with optimistic locking.\n\n## Method\nDELETE /products/{id}?version={version}\n\n## Path Parameters\n- `id`: UUID of the product to delete\n\n## Query Parameters\n- `version`: Current version for optimistic locking\n\n## Response\nEmpty response on success.\n\n## Business Logic\n- Performs soft delete, marking the product as deleted\n- Releases associated references and features\n- Version must match current version for the delete to succeed\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if product not found\n- 409 if version mismatch (Conflict)\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the product",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Product deleted",
            "headers" : { }
          },
          "409" : {
            "description" : "Conflict - version mismatch",
            "headers" : { }
          },
          "404" : {
            "description" : "Product not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/new" : {
      "post" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Get new product template",
        "description" : "\nReturns a template for creating a new product document with default values.\n\n## Method\nGET /products/new\n\n## Response\nProductIncomeDto with default values:\n- Empty product fields\n- No features\n- No default values set\n\n## Usage\nUse this endpoint to get a pre-filled template when creating new products\nin the UI. The response can be modified and submitted to the create endpoint.\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Product template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductResponseHeaderDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/copy/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Copy product",
        "description" : "\nReturns a preview copy of an existing product with reset technical fields.\nDoes not save to database.\n\n## Method\nGET /products/copy/{id}\n\n## Path Parameters\n- `id`: UUID of the product to copy\n\n## Response\nProductResponseFullDto containing copy preview data (`id = null`, `version = 0`).\n\n## Business Rules\n- Product name is prefixed with `Copy of`\n- Product data is returned as preview and can be edited before create\n- No persistence side effects during copy request\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if source product not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the product to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Product copy preview",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductResponseFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Source product not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products" : {
      "put" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Update product",
        "description" : "\nUpdates an existing product record.\n\n## Method\nPUT /products\n\n## Request Body\nProductIncomeDto describing the product to update. ID must be present in the body.\n\n## Response\nProductResponseFullDto with the updated product details.\n\n## Business Rules\n- Product name and code uniqueness is validated\n- Optimistic locking using version for concurrent update protection\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if product not found\n- 409 Conflict if uniqueness is violated or version mismatch\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Product updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductResponseFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or version mismatch",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Product not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Create product",
        "description" : "\nCreates a new product record.\n\n## Method\nPOST /products\n\n## Request Body\nProductIncomeDto describing the product to create.\n\n## Response\nProductResponseFullDto with the created product details.\n\n## Business Rules\n- Product name must be unique within the tenant\n- Product code (SKU) must be unique within the tenant\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 409 Conflict if product name or code uniqueness is violated\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Product created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductResponseFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/attributes" : {
      "get" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Get product attribute definitions",
        "description" : "\nReturns reduced attribute definitions for products without pagination.\nOnly non-deleted attribute items are returned.\n\n## Method\nGET /products/attributes\n\n## Query Parameters\n- `productCategoryId`: Optional UUID of the product category.\n  - When provided, returns shared + category-assigned product attributes.\n  - When omitted, returns only shared product attributes.\n- `anyCategory`: Optional, `false` by default.\n  - When `true`, returns shared product attributes + those assigned to products by any product category:\n    the set the inventory count filter offers for `product.attributes.<identifier>` conditions.\n\n## Response\nList<AttributeDto> with fields: id, name, identifier, type, values, deleted.\n\n## Errors\n- 400 Bad Request: `anyCategory=true` together with `productCategoryId`\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ {
          "name" : "productCategoryId",
          "in" : "query",
          "description" : "Product category ID (UUID), mutually exclusive with anyCategory=true",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "anyCategory",
          "in" : "query",
          "description" : "List the attributes bound to products through any product category",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Attribute definitions for products",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.attribute.dto.AttributeDto"
                  },
                  "title" : "List<AttributeDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid query parameters",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/{id}/product-sets" : {
      "get" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Get product set IDs by product ID",
        "description" : "\nReturns all ProductSet IDs that contain the specified product.\n\n## Method\nGET /products/{id}/product-sets\n\n## Path Parameters\n- `id`: UUID of the product\n\n## Response\nList<ProductSetId> with all matching product set IDs.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Product set IDs for product",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductSetId"
                  },
                  "title" : "List<ProductSetId>"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "patch" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Patch product-set membership for product",
        "description" : "\nApplies atomic membership changes for a product across multiple ProductSets.\n\n## Method\nPATCH /products/{id}/product-sets\n\n## Path Parameters\n- `id`: UUID of the product\n\n## Request Body\n- `addProductSetIds`: ProductSet IDs where product must be added\n- `removeProductSetIds`: ProductSet IDs where product must be removed\n\n## Business Rules\n- Operation is atomic (all-or-nothing)\n- ProductSet IDs present in both add and remove lists are ignored\n- All referenced ProductSets are loaded before mutation\n- Deleted ProductSets are allowed for membership updates\n\n## Response\nUpdated List<ProductSetId> for the product after successful mutation.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductSetMembershipPatchIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated product set IDs for product",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductSetId"
                  },
                  "title" : "List<ProductSetId>"
                }
              }
            }
          },
          "404" : {
            "description" : "Product set not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/light" : {
      "post" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Get lightweight products list",
        "description" : "\nReturns a lightweight list of all products with minimal data.\nOptimized for loading into memory for client-side filtering and selection.\n\n## Method\nGET /products/light\n\n## Response\nReturns List<ProductLightDto> with minimal product data for all products.\n\n## Authentication\nRequires authentication. Only returns products for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Lightweight products list",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductLightDto"
                  },
                  "title" : "List<ProductLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/products/minimal/search" : {
      "post" : {
        "tags" : [ "Catalog - Products" ],
        "summary" : "Minimal search products (autocomplete)",
        "description" : "\nReturns a lightweight list of products filtered by optional criteria.\nOptimized for autocomplete and dropdowns. Returns minimal data projections.\n\n## Method\nPOST /products/minimal/search\n\n## Query Parameters\n- `limit`: Maximum number of items to return (default 51, max 51)\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria.\n\n## Response\nReturns List<ProductLightDto> with minimal product data.\n\n## Authentication\nRequires authentication. Only returns products for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal list of products",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/categories/sse" : {
      "get" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Get product categories stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof product categories for the current tenant. The endpoint streams paginated category records\nas they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /categories/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /categories/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<ProductCategoryHeaderDto>\ncontaining the current page of categories matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns categories for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/categories/sse/count" : {
      "get" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Get product categories count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof product categories matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /categories/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /categories/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts categories for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/categories/sse/{id}" : {
      "get" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Get single product category via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific product category by its ID.\n\n## Usage\nConnect to this SSE endpoint with the category ID in the path parameter.\nReceive continuous updates as the category data changes.\n\n## Path Parameters\n- `id`: UUID of the product category\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized ProductCategoryFullDto\ncontaining the full category details including hierarchy information.\n\n## Authentication\nRequires authentication. Only returns categories for the authenticated user's tenant.\n\n## Errors\n- Returns error event if category ID is missing or invalid\n- Returns null events if category is deleted or not found\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/categories/sse/filters" : {
      "post" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged filter ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/categories/search" : {
      "post" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Search product categories",
        "description" : "\nReturns a paginated list of product categories filtered by optional criteria.\nOptimized for list views. Use query parameters for pagination and sorting.\n\n## Method\nPOST /categories/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns Page<ProductCategoryHeaderDto> with items and pagination metadata.\n\n## Authentication\nRequires authentication. Only returns categories for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of product categories",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryHeaderDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/categories/{id}" : {
      "get" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Get product category by ID",
        "description" : "\nReturns full details of a single product category record.\n\n## Method\nGET /categories/{id}\n\n## Path Parameters\n- `id`: UUID of the product category\n\n## Response\nProductCategoryFullDto containing the full category details including parent/child relationships.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if the category is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the product category",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Product category details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Product category not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Delete product category (soft delete)",
        "description" : "\nSoft deletes a product category record with optimistic locking.\n\n## Method\nDELETE /categories/{id}?version={version}\n\n## Path Parameters\n- `id`: UUID of the category to delete\n\n## Query Parameters\n- `version`: Current version for optimistic locking\n\n## Response\nEmpty response on success.\n\n## Business Logic\n- Performs soft delete, marking the category as deleted\n- Releases associated references and child categories\n- Version must match current version for the delete to succeed\n- Cannot delete categories that have active children unless cascade delete is enabled\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if category not found\n- 409 if version mismatch (Conflict)\n- 409 if category has dependent children\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the product category",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Product category deleted",
            "headers" : { }
          },
          "409" : {
            "description" : "Conflict - version mismatch or has dependent children",
            "headers" : { }
          },
          "404" : {
            "description" : "Product category not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/categories/new" : {
      "post" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Get new product category template",
        "description" : "\nReturns a template for creating a new product category document with default values.\n\n## Method\nPOST /categories/new\n\n## Request Body\nProductCategoryParametersDto containing:\n- `groupId`: Optional parent group ID for hierarchical categorization\n- `isGroup`: Boolean indicating if this category is a group (parent) category\n\n## Response\nProductCategoryIncomeDto with default values:\n- Inherits parent group properties if groupId is provided\n- Empty category fields\n\n## Usage\nUse this endpoint to get a pre-filled template when creating new categories\nin the UI. The response can be modified and submitted to the create endpoint.\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Product category template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryIncomeDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/categories/copy/{id}" : {
      "get" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Copy product category",
        "description" : "\nReturns a preview copy of an existing product category with reset technical fields.\nDoes not save to database.\n\n## Method\nGET /categories/copy/{id}\n\n## Path Parameters\n- `id`: UUID of the category to copy\n\n## Response\nProductCategoryFullDto containing copy preview data (`id = null`, `version = 0`).\n\n## Business Rules\n- Category name is prefixed with `Copy of`\n- Assignment collections are reset for preview payload\n- No persistence side effects during copy request\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if source category not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the category to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Product category copy preview",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Source category not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/categories" : {
      "put" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Update product category",
        "description" : "\nUpdates an existing product category record.\n\n## Method\nPUT /categories\n\n## Request Body\nProductCategoryIncomeDto describing the category to update. ID must be present in the body.\n\n## Response\nProductCategoryFullDto with the updated category details.\n\n## Business Rules\n- Category name uniqueness is validated\n- Optimistic locking using version for concurrent update protection\n- Parent-child relationships can be modified\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if category not found\n- 409 Conflict if uniqueness is violated or version mismatch\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Product category updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or version mismatch",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Product category not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Create product category",
        "description" : "\nCreates a new product category record.\n\n## Method\nPOST /categories\n\n## Request Body\nProductCategoryIncomeDto describing the category to create.\n\n## Response\nProductCategoryFullDto with the created category details.\n\n## Business Rules\n- Category name must be unique within the tenant\n- Category can have a parent group for hierarchical organization\n- Groups can contain other categories as children\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 409 Conflict if category name uniqueness is violated\n- 404 if parent group ID is invalid\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Product category created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/categories/light" : {
      "post" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Get lightweight product categories list",
        "description" : "\nReturns a lightweight list of all product categories with minimal data.\nOptimized for loading into memory for client-side filtering and selection.\n\n## Method\nGET /categories/light\n\n## Response\nReturns List<ProductCategoryLightDto> with minimal category data for all categories.\n\n## Authentication\nRequires authentication. Only returns categories for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Lightweight categories list",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryLightDto"
                  },
                  "title" : "List<ProductCategoryLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/categories/minimal/search" : {
      "post" : {
        "tags" : [ "Catalog - ProductCategories" ],
        "summary" : "Minimal search product categories (autocomplete)",
        "description" : "\nReturns a lightweight list of product categories filtered by optional criteria.\nOptimized for autocomplete and dropdowns. Returns minimal data projections.\n\n## Method\nPOST /categories/minimal/search\n\n## Query Parameters\n- `limit`: Maximum number of items to return (default 51, max 51)\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria.\n\n## Response\nReturns List<ProductCategoryLightDto> with minimal category data.\n\n## Authentication\nRequires authentication. Only returns categories for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal list of product categories",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-features/sse" : {
      "get" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Get product features stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof product features for the current tenant. The endpoint streams paginated feature records\nas they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /product-features/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /product-features/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<ProductFeatureResponseDto>\ncontaining the current page of features matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns features for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockLocationId",
          "in" : "query",
          "description" : "Stock scope: cell, loose stock only",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        }, {
          "name" : "stockContainerId",
          "in" : "query",
          "description" : "Stock scope: container",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          }
        }, {
          "name" : "stockProductId",
          "in" : "query",
          "description" : "Stock scope: product; without it this list returns no stock",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "stockLotId",
          "in" : "query",
          "description" : "Stock scope: lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          }
        }, {
          "name" : "stockPackTypeId",
          "in" : "query",
          "description" : "Stock scope: pack type, counted in its own units; without it and without stockLoose every pack type counts in base units",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          }
        }, {
          "name" : "stockLoose",
          "in" : "query",
          "description" : "Stock scope: loose stock only, in base units; not with stockPackTypeId",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-features/sse/count" : {
      "get" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Get product features count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof product features matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /product-features/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /product-features/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts features for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockLocationId",
          "in" : "query",
          "description" : "Stock scope: cell, loose stock only",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        }, {
          "name" : "stockContainerId",
          "in" : "query",
          "description" : "Stock scope: container",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          }
        }, {
          "name" : "stockProductId",
          "in" : "query",
          "description" : "Stock scope: product; without it this list returns no stock",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "stockLotId",
          "in" : "query",
          "description" : "Stock scope: lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          }
        }, {
          "name" : "stockPackTypeId",
          "in" : "query",
          "description" : "Stock scope: pack type, counted in its own units; without it and without stockLoose every pack type counts in base units",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          }
        }, {
          "name" : "stockLoose",
          "in" : "query",
          "description" : "Stock scope: loose stock only, in base units; not with stockPackTypeId",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-features/sse/{id}" : {
      "get" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Get single product feature via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific product feature by its ID.\n\n## Usage\nConnect to this SSE endpoint with the feature ID in the path parameter.\nReceive continuous updates as the feature data changes.\n\n## Path Parameters\n- `id`: UUID of the product feature\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized ProductFeatureResponseDto\ncontaining the full feature details.\n\n## Authentication\nRequires authentication. Only returns features for the authenticated user's tenant.\n\n## Errors\n- Returns error event if feature ID is missing or invalid\n- Returns null events if feature is deleted or not found\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-features/sse/filters" : {
      "post" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged filter ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-features/search" : {
      "post" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Search product features",
        "description" : "\nReturns a paginated list of product features filtered by optional criteria.\nOptimized for list views. Use query parameters for pagination and sorting.\n\n## Method\nPOST /product-features/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns Page<ProductFeatureResponseDto> with items and pagination metadata.\n\n## Authentication\nRequires authentication. Only returns features for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockLocationId",
          "in" : "query",
          "description" : "Stock scope: cell, loose stock only",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        }, {
          "name" : "stockContainerId",
          "in" : "query",
          "description" : "Stock scope: container",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          }
        }, {
          "name" : "stockProductId",
          "in" : "query",
          "description" : "Stock scope: product; without it this list returns no stock",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "stockLotId",
          "in" : "query",
          "description" : "Stock scope: lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          }
        }, {
          "name" : "stockPackTypeId",
          "in" : "query",
          "description" : "Stock scope: pack type, counted in its own units; without it and without stockLoose every pack type counts in base units",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          }
        }, {
          "name" : "stockLoose",
          "in" : "query",
          "description" : "Stock scope: loose stock only, in base units; not with stockPackTypeId",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of product features",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-features/{id}" : {
      "get" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Get product feature by ID",
        "description" : "\nReturns full details of a single product feature record.\n\n## Method\nGET /product-features/{id}\n\n## Path Parameters\n- `id`: UUID of the product feature\n\n## Response\nProductFeatureResponseDto containing the full feature details.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if the feature is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the product feature",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Product feature details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureResponseFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Product feature not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Delete product feature (soft delete)",
        "description" : "\nSoft deletes a product feature record with optimistic locking.\n\n## Method\nDELETE /product-features/{id}?version={version}\n\n## Path Parameters\n- `id`: UUID of the feature to delete\n\n## Query Parameters\n- `version`: Current version for optimistic locking\n\n## Response\nEmpty response on success.\n\n## Business Logic\n- Performs soft delete, marking the feature as deleted\n- Releases associated product relationships\n- Version must match current version for the delete to succeed\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if feature not found\n- 409 if version mismatch (Conflict)\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the product feature",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Product feature deleted",
            "headers" : { }
          },
          "409" : {
            "description" : "Conflict - version mismatch",
            "headers" : { }
          },
          "404" : {
            "description" : "Product feature not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-features/new" : {
      "post" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Get new product feature template",
        "description" : "\nReturns a template for creating a new product feature document with default values.\n\n## Method\nGET /product-features/new\n\n## Response\nProductFeatureIncomeDto with default values:\n- Empty feature fields\n- Default configuration\n\n## Usage\nUse this endpoint to get a pre-filled template when creating new features\nin the UI. The response can be modified and submitted to the create endpoint.\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Product feature template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureIncomeDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-features/copy/{id}" : {
      "get" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Copy product feature",
        "description" : "\nReturns a preview copy of an existing product feature with reset technical fields.\nDoes not save to database.\n\n## Method\nGET /product-features/copy/{id}\n\n## Path Parameters\n- `id`: UUID of the feature to copy\n\n## Response\nProductFeatureResponseDto containing copy preview data (`id = nil`, `version = 0`).\n\n## Business Rules\n- Feature name is prefixed with `Copy of`\n- Feature data is returned as preview and can be edited before create\n- No persistence side effects during copy request\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if source feature not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the feature to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Product feature copy preview",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureResponseFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Source feature not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-features" : {
      "put" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Update product feature",
        "description" : "\nUpdates an existing product feature record.\n\n## Method\nPUT /product-features\n\n## Request Body\nProductFeatureIncomeDto describing the feature to update. ID must be present in the body.\n\n## Response\nProductFeatureResponseDto with the updated feature details.\n\n## Business Rules\n- Feature name uniqueness is validated\n- Optimistic locking using version for concurrent update protection\n- Product associations are maintained\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if feature not found\n- 409 Conflict if uniqueness is violated or version mismatch\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Product feature updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureResponseFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or version mismatch",
            "headers" : { }
          },
          "404" : {
            "description" : "Product feature not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Create product feature",
        "description" : "\nCreates a new product feature record.\n\n## Method\nPOST /product-features\n\n## Request Body\nProductFeatureIncomeDto describing the feature to create.\n\n## Response\nProductFeatureResponseDto with the created feature details.\n\n## Business Rules\n- Feature name must be unique within the tenant\n- Feature can be assigned to multiple products\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 409 Conflict if feature name uniqueness is violated\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Product feature created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureResponseFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or validation error",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-features/attributes" : {
      "get" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Get product feature attribute definitions",
        "description" : "\nReturns reduced attribute definitions for product features without pagination.\nOnly non-deleted attribute items are returned.\n\n## Method\nGET /product-features/attributes\n\n## Response\nList<AttributeDto> with fields: id, name, identifier, type, values, deleted.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Attribute definitions for product features",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.attribute.dto.AttributeDto"
                  },
                  "title" : "List<AttributeDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-features/light" : {
      "post" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Get lightweight product features list",
        "description" : "\nReturns a lightweight list of all product features with minimal data.\nOptimized for loading into memory for client-side filtering and selection.\n\n## Method\nGET /product-features/light\n\n## Response\nReturns List<ProductFeatureLightDto> with minimal feature data for all features.\n\n## Authentication\nRequires authentication. Only returns features for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Lightweight features list",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureLightDto"
                  },
                  "title" : "List<ProductFeatureLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-features/minimal/search" : {
      "post" : {
        "tags" : [ "Catalog - ProductFeatures" ],
        "summary" : "Minimal search product features (autocomplete)",
        "description" : "\nReturns a lightweight list of product features filtered by optional criteria.\nOptimized for autocomplete and dropdowns. Returns minimal data projections.\n\n## Method\nPOST /product-features/minimal/search\n\n## Query Parameters\n- `limit`: Maximum number of items to return (default 51, max 51)\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria.\n\n## Response\nReturns List<ProductFeatureLightDto> with minimal feature data.\n\n## Authentication\nRequires authentication. Only returns features for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal list of product features",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/sse" : {
      "get" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Get barcodes stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof barcodes for the current tenant. The endpoint streams paginated barcode records\nas they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /barcodes/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /barcodes/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<BarcodeResponseDto>\ncontaining the current page of barcodes matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns barcodes for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/sse/count" : {
      "get" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Get barcodes count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof barcodes matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /barcodes/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /barcodes/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts barcodes for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/sse/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Get single barcode via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific barcode by its ID.\n\n## Usage\nConnect to this SSE endpoint with the barcode ID in the path parameter.\nReceive continuous updates as the barcode data changes.\n\n## Path Parameters\n- `id`: Long ID of the barcode\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized BarcodeResponseDto\ncontaining the full barcode details.\n\n## Authentication\nRequires authentication. Only returns barcodes for the authenticated user's tenant.\n\n## Errors\n- Returns error event if barcode ID is missing or invalid\n- Returns null events if barcode is deleted or not found\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/sse/filters" : {
      "post" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged filter ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/search" : {
      "post" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Search barcodes",
        "description" : "\nReturns a paginated list of barcodes filtered by optional criteria.\nOptimized for list views. Use query parameters for pagination and sorting.\n\n## Method\nPOST /barcodes/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns Page<BarcodeResponseDto> with items and pagination metadata.\n\n## Authentication\nRequires authentication. Only returns barcodes for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of barcodes",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Get barcode by ID",
        "description" : "\nReturns full details of a single barcode record.\n\n## Method\nGET /barcodes/{id}\n\n## Path Parameters\n- `id`: Long ID of the barcode\n\n## Response\nBarcodeResponseDto containing the full barcode details.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if the barcode is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the barcode",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Barcode details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Barcode not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Delete barcode (hard delete)",
        "description" : "\nPerforms a hard delete of a barcode record.\nUnlike other entities, barcodes are permanently removed.\n\n## Method\nDELETE /barcodes/{id}\n\n## Path Parameters\n- `id`: Long ID of the barcode\n\n## Response\nEmpty response on success (or true/false depending on implementation, here boolean).\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the barcode",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Barcode deleted successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "boolean",
                  "title" : "Boolean"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/copy/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Copy barcode",
        "description" : "\nReturns a preview copy of an existing barcode with reset technical fields.\nDoes not save to database.\n\n## Method\nGET /barcodes/copy/{id}\n\n## Path Parameters\n- `id`: Long ID of the barcode to copy\n\n## Response\nBarcodeResponseDto containing copy preview data (`id = null`).\n\n## Business Rules\n- Barcode value and linked references are copied as-is\n- Preview payload can be edited before create\n- No persistence side effects during copy request\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if source barcode not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the barcode to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Barcode copy preview",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Source barcode not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes" : {
      "put" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Update barcode",
        "description" : "\nUpdates an existing barcode record.\n\n## Method\nPUT /barcodes\n\n## Request Body\nBarcodeIncomeDto describing the barcode to update. ID must be present.\n\n## Response\nBarcodeResponseDto with the updated barcode details.\n\n## Business Rules\n- Barcode uniqueness might be enforced based on tenant policy.\n- The product, feature, lot and pack type must exist and not be deleted; the feature and the lot must\n  belong to the barcode's product.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 400 Bad Request: a reference is missing or deleted, or the feature or lot belongs to another\n  product; the error `path` names the field\n- 404 if barcode not found\n- 409 Conflict if uniqueness is violated (and enforced)\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Barcode update payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated barcode details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Barcode not found",
            "headers" : { }
          },
          "409" : {
            "description" : "Barcode already exists",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Create barcode",
        "description" : "\nCreates a new barcode record.\n\n## Method\nPOST /barcodes\n\n## Request Body\nBarcodeIncomeDto describing the barcode to create.\n\n## Response\nBarcodeResponseDto with the created barcode details.\n\n## Business Rules\n- Barcode uniqueness might be enforced based on tenant policy.\n- The product, feature, lot and pack type must exist and not be deleted; the feature and the lot must\n  belong to the barcode's product.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 400 Bad Request: a reference is missing or deleted, or the feature or lot belongs to another\n  product; the error `path` names the field\n- 409 Conflict if uniqueness is violated (and enforced)\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Barcode creation payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created barcode details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Barcode already exists",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/lookup" : {
      "post" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Resolve scanned barcode",
        "description" : "\nResolves a scanned barcode string into product analytics combinations and quantities.\nSupports direct barcode matching and quantity-embedded barcode parsing (via configured regex).\n\n## Method\nPOST /barcodes/lookup\n\n## Request Body\nBarcodeResolveRequestDto containing the scanned barcode value.\n\n## Response\nBarcodeResolveResultDto containing a list of resolved items (product, analytics, quantity).\nCan return multiple items if uniqueness is not enforced and multiple matches exist.\nReturns empty list if not found.\n\n## Quantity Field Logic\nThe `quantity` field in resolved items follows these rules:\n- **null** - for direct barcode matches (barcode does not encode quantity)\n- **numeric value** - for quantity-embedded barcodes: the amount decoded by the regex, i.e. `quantity.quantityFrac` when the\n  `quantityFrac` group is present, otherwise the whole `quantity` group. The product's unit of measure does not\n  affect the decoded value.\n\n## Owner Fields\n`ownerCode` is the `owner` group of the barcode pattern that matched, and `ownerId` the live owner holding that\ncode; both are null for a direct or GS1 match. A non-null `ownerCode` with a null `ownerId` names no owner.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Barcode lookup payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResolveRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Resolved barcode items",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResolveResultDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/owner/lookup" : {
      "post" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Resolve a scanned owner label",
        "description" : "\nReads an owner code from a scanned owner label with the barcode policy's `ownerCodePattern` and returns the live\nowner holding it.\n\n## Method\nPOST /barcodes/owner/lookup\n\n## Request Body\nBarcodeResolveRequestDto with the scanned `barcodeValue`.\n\n## Response\nBarcodeOwnerLookupResultDto: `owner` with `id`, `name` and `code`, or null when the policy has no owner-code\ntemplate, the scan does not match it, or no live owner holds the code.\n\n## Authentication\nRequires authentication and tenant membership. The owner is read regardless of the caller's party rights.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Scanned owner label",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResolveRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "The owner the label names, if any",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeOwnerLookupResultDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/find-by-criteria" : {
      "post" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Find barcodes by (productId, productFeatureId?, lotId?, packTypeId?)",
        "description" : "\nResolves a batch of (productId, productFeatureId?, lotId?, packTypeId?) tuples to barcodes\nvia strict NULL=NULL matching. The response carries only barcodes that matched — criteria\nwithout a match are simply absent. Duplicate input items collapse server-side.\n\n## Method\nPOST /barcodes/find-by-criteria\n\n## Request Body\nBarcodeFindByCriteriaRequestDto with `items: List<BarcodeCriterionDto>`. Non-empty;\ndeduplicated server-side; limit 1000 unique entries.\n\n## Response\nBarcodeFindByCriteriaResponseDto with `matches: List<BarcodeResponseDto>` — a flat list of the\nbarcodes that resolved (smallest id when alias rows share an analytics tuple). Each barcode\nalready carries the `productId`, `productFeatureId`, `lotId`, `packTypeId` fields, so callers\ncan correlate each match back to its input criterion without an explicit echo.\n\n## Matching Semantics\nA null criterion field matches only barcode rows where that column IS NULL; a non-null\nvalue matches rows equal to that value (`IS NOT DISTINCT FROM` semantics).\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 400 if `items` is empty or contains more than 1000 unique entries.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of (productId, productFeatureId?, lotId?, packTypeId?) tuples; non-empty, deduplicated server-side, max 1000 unique entries.",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeFindByCriteriaRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Flat list of matching barcodes (smallest id under strict NULL=NULL match). Criteria with no match are absent; analytics fields on each barcode let the client correlate back to its input criterion.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeFindByCriteriaResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/gs1/ai-dictionary" : {
      "get" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Get the built-in GS1 application identifier dictionary",
        "description" : "\nReturns every GS1 application identifier (AI) the server can parse, with its name in the caller's language.\nThe list is the same for every tenant; the barcode policy screen offers it when mapping AIs to lot fields.\n\n## Method\nGET /barcodes/gs1/ai-dictionary\n\n## Response\nGs1AiDictionaryResponseDto with `items`, ordered by AI:\n- `ai` — the AI code; a measure AI ends in `n` (e.g. `310n`), its fourth digit being the count of implied decimals\n- `name` — localized name\n- `format` — `NUMERIC`, `ALPHANUMERIC`, `DATE` (YYMMDD), `DATE_TIME` (YYMMDDHHMM) or `DECIMAL`\n- `maxLength` / `fixedLength` — value length without the AI code\n- `builtInTarget` — set for the AIs with fixed meaning that cannot be mapped: `CONTAINER_CODE` (00),\n  `PRODUCT` (01, 02), `QUANTITY` (30, 37), `NET_WEIGHT` (310n)\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "GS1 application identifiers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1AiDictionaryResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/gs1/parse" : {
      "post" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Parse one scanned GS1 barcode into product, quantity and lot",
        "description" : "\nReads one scanned barcode as a GS1 element string and applies the tenant's GS1 mapping. Nothing is written:\na pallet label spreads over two or three barcodes, and the client merges their results into one label draft.\n\n## Method\nPOST /barcodes/gs1/parse\n\n## Request\n- `barcodeValue` — the scan as the scanner sent it: behind `]C1` / `]d2` / `]Q3`, with GS (ASCII 29) between\n  fields, or in the bracketed `(01)…(10)…` form; required, at most 255 characters\n- `productId` — optional; the product another barcode of the same label already gave. It lets a barcode\n  without a GTIN check its lot attributes and find its lot. The barcode's own GTIN wins over it.\n\n## Response\nGs1ParseResponseDto:\n- `isGs1` — `false` when GS1 is off in the barcode policy or the scan is not GS1; every other field is then empty\n- `elements` — each parsed AI with its localized `name`, `raw` text, `value` (ISO date or date-time, plain\n  decimal, or the text) and `target`: a built-in one, the mapped one with its `attributeIdentifier`, or none\n- `product` — found by the barcode's GTIN (02 before 01): exactly as a GTIN-14, else without leading zeros as\n  EAN-13, UPC-A or EAN-8; empty when nothing or more than one product and pack carries it\n- `quantity` — in the product's base unit, only with a product found by the barcode's GTIN: the net weight\n  (310n) converted from kilograms for a product counted by weight, else the count (37, else 30) times the pack\n  size when the GTIN names a pack, else the count itself\n- `packQuantity` — the count of packs when the GTIN names a pack\n- `containerCode` — the SSCC (00)\n- `lot` — `name`, `manufacturedAt`, `expiryAt` and `attributes` from the mapping, the earlier mapping row\n  winning a field. Attributes are encoded as `lots/resolve` accepts them and limited to those the product's\n  category carries; without a product they are only checked to be bound to lots.\n- `lotId` — the one live lot of the product with this number, when the product's category keeps lots\n- `warnings` — `code`, the `ai` it concerns and a localized `message`: `UNKNOWN_AI`, `CHECK_DIGIT`,\n  `INVALID_VALUE`, `MISSING_SEPARATOR`, `GTIN_NOT_FOUND`, `AMBIGUOUS_GTIN`, `ATTRIBUTE_NOT_APPLICABLE`,\n  `LOT_AMBIGUOUS`. The first four drop part of the barcode and also carry `value` (the dropped text, GS shown\n  as a space), `name` (the AI's dictionary name, absent for an unknown AI) and `elementIndex` (how many\n  `elements` precede the dropped text); their `message` names the AI and the value\n\n## Errors\n- 400 Bad Request: `barcodeValue` is blank or longer than 255 characters.\n\n## Authentication\nRequires authentication and tenant membership. Reads products, pack types, lots and lot attributes with the\ncaller's own rights; the receipt and inventory count rights grant every one of them.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Scanned barcode and, optionally, the label's product",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ParseRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "The barcode read as GS1",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ParseResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Blank or overlong barcode",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/policy" : {
      "get" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Get tenant barcode policy",
        "description" : "\nReturns the barcode configuration policy for the current tenant.\nIncludes settings for uniqueness enforcement and quantity-embedded barcode parsing.\n\n## Method\nGET /barcodes/policy\n\n## Response\nBarcodePolicyResponseDto containing policy details. A tenant that has never saved a policy gets the default one\n(uniqueness not enforced, no quantity-embedded barcode regexps, GS1 off with no mappings) reported with `version` 0 and\n`updatedAt` null.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Barcode policy details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodePolicyResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Update tenant barcode policy",
        "description" : "\nCreates or updates the barcode configuration policy for the current tenant.\n\n## Quantity-Embedded Barcode Settings (barcodePatterns)\nThis parameter lets the system recognize barcodes that carry an amount and extract both the lookup code and that amount\nwhile scanning. It applies to any product — weight goods and piece goods alike; the product's unit of measure is never\nconsulted.\n\nRegular expressions MUST contain two named groups, with an optional third:\n1. `(?<code>...)` — part of the barcode that will be used to search for the product in the database.\n2. `(?<quantity>...)` — integer part of the encoded amount.\n3. `(?<quantityFrac>...)` — optional; the fractional part of the encoded amount. When present the amount is\n   `quantity.quantityFrac`; when absent the amount is the whole `quantity`. Product unit of measure does NOT affect\n   scaling — the regex format defines the decimal split.\n\nOptionally, an entry MAY start with a `#Title#` prefix (max 40 characters, terminated by the second `#`) naming the\npattern for the UI. The prefix is stripped before the expression is compiled; entries without it are plain regular\nexpressions.\n\n### Examples:\n1. **Weight, 2 integer + 3 fractional digits (28XXXXXYYZZZQ)**, where 28 is the prefix, XXXXX is the product code (5 digits), YY is the integer part, ZZZ is the fractional part:\n   `^28(?<code>\\d{5})(?<quantity>\\d{2})(?<quantityFrac>\\d{3})\\d$`\n   - When scanning `2812345007500`:\n     - `code` = `12345`\n     - `quantity` = `0.750`\n\n2. **Piece, 5 digits with no fractional part (29XXXXXYYYYYZ)**:\n   `^29(?<code>\\d{5})(?<quantity>\\d{5})\\d$`\n   - When scanning `2954321007500`:\n     - `code` = `54321`\n     - `quantity` = `750`\n\n3. **Custom Format (WF-XXXX-QQQQ)**:\n   `^WF-(?<code>\\d{4})-(?<quantity>\\d{4})$`\n\n## GS1 Settings (gs1Enabled, gs1Mappings)\n`gs1Enabled` turns GS1 parsing on. `gs1Mappings` is an ordered list of `{ai, target, attributeIdentifier?}` telling\nwhere the value of each AI goes; when several AIs map to one lot field, the earlier row wins. `ai` is a key of\n`GET /barcodes/gs1/ai-dictionary` (a measure AI as `311n`). `target` is one of `LOT_NUMBER`, `LOT_MANUFACTURED_AT`,\n`LOT_EXPIRY_AT`, `LOT_ATTRIBUTE` (then `attributeIdentifier` names a lot attribute) or `IGNORE`. AIs with a built-in\nmeaning (00, 01, 02, 30, 37, 310n) cannot be mapped.\n\nA value must fit its target: a date AI goes to a lot date or a DATE attribute; a numeric AI to the lot number or a\nNUMBER or STRING attribute; a measure AI to a NUMBER or STRING attribute; any other AI to the lot number or a STRING\nattribute. The attribute must be bound to lots, unconditionally or through at least one product category.\n\nLeave either GS1 field out (or send `null`) to keep its stored value.\n\n## Owner-Code Template (ownerCodePattern, ownerCodeFormat)\nAn owner label carries the code of the owner (`code` of a party with `owner = true`). `ownerCodePattern` reads it:\na regular expression with a `(?<code>...)` group, matched against the whole scan, e.g. `^OWN-(?<code>\\d{3})$`.\n`ownerCodeFormat` prints it: `{0}` stands for the code, exactly once, e.g. `OWN-{0}` prints `OWN-001` for `001`.\nThe two are set together. Leave a field out (or send `null`) to keep its stored value; send it blank to clear it.\n\nSaving checks every live owner with a code: the pattern must read the code back from the label the format prints\nfor it, and no container type's code pattern may recognize that label. Saving a container type's code pattern and\nan owner's code checks the same, so an owner label is never read as a container code.\n\nA composite barcode carries the owner too when a `barcodePatterns` entry has an `(?<owner>...)` group holding the\nowner code: `POST /barcodes/lookup` then returns it in `ownerCode` and the owner in `ownerId`.\n\n## Method\nPUT /barcodes/policy\n\n## Request Body\n`BarcodePolicyIncomeDto` with updated settings. Always specify the current `version` for optimistic locking control.\n\n## Authorization\nRequires authorization and tenant membership.\n\n## Errors\n- 400 Bad Request: a mapping row breaks a rule above; the error `path` is `gs1Mappings[i].ai`, `.target` or\n  `.attributeIdentifier` and the message names the row.\n- 400 Bad Request: the owner-code template breaks a rule above; the error `path` is `ownerCodePattern` or\n  `ownerCodeFormat` and the message names the owner and the label.\n- 409 Conflict: if the `version` does not match the current version in the database.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Barcode policy payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodePolicyIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated barcode policy",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodePolicyResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Optimistic locking conflict",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/policy/owner-code/check" : {
      "post" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Try an owner-code template on a sample label",
        "description" : "\nApplies an unsaved owner-code template to a sample label so the barcode policy screen can show what it reads.\nNothing is written.\n\n## Method\nPOST /barcodes/policy/owner-code/check\n\n## Request Body\nOwnerCodeTemplateCheckRequestDto: `ownerCodePattern`, `ownerCodeFormat` and `sample`, all required.\n\n## Response\nOwnerCodeTemplateCheckResponseDto:\n- `code` — what the pattern reads from the sample; null when it does not match\n- `label` — what the format prints for that code\n- `owner` — the live owner holding the code, or null\n- `conflicts` — container types whose code pattern also recognizes the sample\n\n## Errors\n- 400 Bad Request: a field is blank, or the template breaks a rule of `PUT /barcodes/policy`.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Owner-code template and a sample label",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.OwnerCodeTemplateCheckRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "What the template reads from the sample",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.OwnerCodeTemplateCheckResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/barcodes/minimal/search" : {
      "post" : {
        "tags" : [ "Catalog - Barcodes" ],
        "summary" : "Minimal search barcodes (autocomplete)",
        "description" : "\nReturns a lightweight list of barcodes filtered by optional criteria.\nOptimized for autocomplete and dropdowns. Returns minimal data projections.\n\n## Method\nPOST /barcodes/minimal/search\n\n## Query Parameters\n- `limit`: Maximum number of items to return (default 51, max 51)\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria.\n\n## Response\nReturns List<BarcodeLightDto> with minimal barcode data.\n\n## Authentication\nRequires authentication. Only returns barcodes for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal list of barcodes",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeLightDto"
                  },
                  "title" : "List<BarcodeLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-types/sse" : {
      "get" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Get pack types stream via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time updates of pack types for the current tenant.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-types/sse/count" : {
      "get" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Get pack types count via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time count of pack types matching the specified filters.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-types/sse/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Get single pack type via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time updates for a specific pack type by its ID.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-types/sse/filters" : {
      "post" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "Stores filter configuration for subsequent SSE requests.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-types/search" : {
      "post" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Search pack types",
        "description" : "Search and retrieve paginated list of pack types with optional filtering and sorting.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of pack types",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-types/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Get pack type by ID",
        "description" : "Retrieve a single pack type by its unique identifier.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Pack Type ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Pack type details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeResponseFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Pack type not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Delete pack type",
        "description" : "Soft delete a pack type by marking it as deleted. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Pack Type ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Version number for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Pack type soft deleted",
            "headers" : { }
          },
          "409" : {
            "description" : "Version mismatch",
            "headers" : { }
          },
          "404" : {
            "description" : "Pack type not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-types/new" : {
      "post" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Get new pack type template",
        "description" : "Retrieve a new pack type template with default values pre-populated for the specified owner.",
        "parameters" : [ {
          "name" : "productId",
          "in" : "query",
          "description" : "Product ID (UUID) for a product-owned pack type",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "packTypeSetId",
          "in" : "query",
          "description" : "Pack type set ID (UUID) for a shared-set-owned pack type",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "childPackTypeId",
          "in" : "query",
          "description" : "Optional child pack type ID (UUID)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "New pack type template with default values",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-types/copy/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Copy existing pack type",
        "description" : "Create a copy of an existing pack type with a new ID and reset version.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Pack Type ID (UUID) to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied pack type with new ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeResponseFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Source pack type not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-types" : {
      "put" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Update existing pack type",
        "description" : "Update an existing pack type with the provided data. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Pack type data with ID and version",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Pack type updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeResponseFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - version mismatch or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Pack type not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Create new pack type",
        "description" : "Create a new pack type with the provided data. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Pack type created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeResponseFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-types/light" : {
      "post" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Get lightweight pack type data",
        "description" : "Retrieve lightweight pack type data for multiple pack types by their IDs and versions.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of pack type ID-version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight pack type data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeLightDto"
                  },
                  "title" : "List<PackTypeLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-types/minimal/search" : {
      "post" : {
        "tags" : [ "Catalog - Pack Types" ],
        "summary" : "Search pack types (minimal data)",
        "description" : "Search pack types and retrieve minimal data (ID and name only) for UI elements like autocomplete dropdowns.",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal pack type data (ID and name only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-sets/sse" : {
      "get" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Get pack type sets stream via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time updates of pack type sets for the current tenant.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-sets/sse/count" : {
      "get" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Get pack type sets count via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time count of pack type sets matching the specified filters.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-sets/sse/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Get single pack type set via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time updates for a specific pack type set by its ID.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-sets/sse/filters" : {
      "post" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Stage filters for pack type set SSE requests",
        "description" : "Stores filter configuration for subsequent pack type set SSE requests.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-sets/search" : {
      "post" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Search pack type sets",
        "description" : "Search and retrieve paginated list of pack type sets with optional filtering and sorting.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of pack type sets",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-sets/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Get pack type set by ID",
        "description" : "Retrieve a single pack type set by its unique identifier.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Pack type set found",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Pack type set not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Delete pack type set",
        "description" : "Soft delete a pack type set by marking it as deleted. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Pack type set deleted",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-sets/new" : {
      "post" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Get new pack type set template",
        "description" : "Retrieve a new pack type set template with default values.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New pack type set template with default values",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-sets/copy/{id}" : {
      "post" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Copy existing pack type set",
        "description" : "Create a copy of an existing pack type set with a new ID and reset version.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Copied pack type set template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-sets" : {
      "put" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Update existing pack type set",
        "description" : "Update an existing pack type set with the provided data. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Pack type set data with ID and version",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Pack type set updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - version mismatch or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Pack type set not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Create new pack type set",
        "description" : "Create a new pack type set with the provided data. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Pack type set created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-sets/light" : {
      "post" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Get lightweight pack type set data",
        "description" : "Retrieve lightweight pack type set data for multiple pack type sets by their IDs and versions.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight pack type set data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetLightDto"
                  },
                  "title" : "List<PackTypeSetLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-sets/minimal/search" : {
      "post" : {
        "tags" : [ "Catalog - Pack Type Sets" ],
        "summary" : "Search pack type sets (minimal data)",
        "description" : "Search pack type sets and retrieve minimal data (ID and name only) for UI elements like autocomplete dropdowns.",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal pack type set data (ID and name only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-sets/sse" : {
      "get" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Get product sets stream via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time updates of product sets for the current tenant.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-sets/sse/count" : {
      "get" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Get product sets count via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time count of product sets matching the specified filters.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-sets/sse/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Get single product set via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time updates for a specific product set by its ID.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-sets/sse/filters" : {
      "post" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Stage filters for product set SSE requests",
        "description" : "Stores filter configuration for subsequent product set SSE requests.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-sets/search" : {
      "post" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Search product sets",
        "description" : "Search and retrieve paginated list of product sets with optional filtering and sorting.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of product sets",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetHeaderDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-sets/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Get product set by ID",
        "description" : "Retrieve a single product set by its unique identifier.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Product set found",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Product set not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Delete product set",
        "description" : "Soft delete a product set by marking it as deleted. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Product set deleted",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-sets/new" : {
      "post" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Get new product set template",
        "description" : "Retrieve a new product set template with default values.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New product set template with default values",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-sets/copy/{id}" : {
      "post" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Copy existing product set",
        "description" : "Create a copy of an existing product set with a new ID and reset version.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Copied product set template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-sets" : {
      "put" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Update existing product set",
        "description" : "Update an existing product set with the provided data. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Product set data with ID and version",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Product set updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - version mismatch or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Product set not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Create new product set",
        "description" : "Create a new product set with the provided data. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Product set created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-sets/{id}/products/{productId}/exists" : {
      "get" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Check product membership in product set",
        "description" : "Checks whether a product belongs to the specified product set and returns true or false.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Membership check result",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "boolean",
                  "title" : "Boolean"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-sets/light" : {
      "post" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Get lightweight product set data",
        "description" : "Retrieve lightweight product set data for multiple product sets by their IDs and versions.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight product set data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetLightDto"
                  },
                  "title" : "List<ProductSetLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-sets/minimal/search" : {
      "post" : {
        "tags" : [ "Catalog - Product Sets" ],
        "summary" : "Search product sets (minimal data)",
        "description" : "Search product sets and retrieve minimal data (ID and name only) for UI elements like autocomplete dropdowns.",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal product set data (ID and name only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-handling-groups/sse" : {
      "get" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Get product handling groups stream via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time updates of product handling groups for the current tenant.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-handling-groups/sse/count" : {
      "get" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Get product handling groups count via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time count of product handling groups matching the specified filters.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-handling-groups/sse/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Get single product handling group via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time updates for a specific product handling group by its ID.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-handling-groups/sse/filters" : {
      "post" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Stage filters for product handling group SSE requests",
        "description" : "Stores filter configuration for subsequent product handling group SSE requests.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-handling-groups/search" : {
      "post" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Search product handling groups",
        "description" : "Search and retrieve paginated list of product handling groups with optional filtering and sorting.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of product handling groups",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-handling-groups/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Get product handling group by ID",
        "description" : "Retrieve a single product handling group by its unique identifier.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Product handling group found",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Product handling group not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Delete product handling group",
        "description" : "Soft delete a product handling group by marking it as deleted. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Product handling group deleted",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-handling-groups/new" : {
      "get" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Get new product handling group template",
        "description" : "Retrieve a new product handling group template with default values.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New product handling group template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-handling-groups/copy/{id}" : {
      "post" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Copy existing product handling group",
        "description" : "Create a copy of an existing product handling group with a new ID and reset version.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Product handling group copy preview",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-handling-groups" : {
      "put" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Update existing product handling group",
        "description" : "Update an existing product handling group with the provided data. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Product handling group data with ID and version",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Product handling group updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - version mismatch or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Product handling group not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Create new product handling group",
        "description" : "Create a new product handling group with the provided data. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Product handling group created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-handling-groups/light" : {
      "post" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Get lightweight product handling group data",
        "description" : "Retrieve lightweight product handling group data for multiple product handling groups by their IDs and versions.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight product handling group data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupLightDto"
                  },
                  "title" : "List<ProductHandlingGroupLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/product-handling-groups/minimal/search" : {
      "post" : {
        "tags" : [ "Catalog - Product Handling Groups" ],
        "summary" : "Search product handling groups (minimal data)",
        "description" : "Search product handling groups and retrieve minimal data (ID and name only) for UI elements like autocomplete dropdowns.",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal product handling group data (ID and name only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-handling-groups/sse" : {
      "get" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Get pack type handling groups stream via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time updates of pack type handling groups for the current tenant.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-handling-groups/sse/count" : {
      "get" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Get pack type handling groups count via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time count of pack type handling groups matching the specified filters.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-handling-groups/sse/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Get single pack type handling group via SSE",
        "description" : "Establishes a Server-Sent Events (SSE) connection to receive real-time updates for a specific pack type handling group by its ID.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-handling-groups/sse/filters" : {
      "post" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Stage filters for pack type handling group SSE requests",
        "description" : "Stores filter configuration for subsequent pack type handling group SSE requests.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-handling-groups/search" : {
      "post" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Search pack type handling groups",
        "description" : "Search and retrieve paginated list of pack type handling groups with optional filtering and sorting.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of pack type handling groups",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-handling-groups/{id}" : {
      "get" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Get pack type handling group by ID",
        "description" : "Retrieve a single pack type handling group by its unique identifier.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Pack type handling group found",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Pack type handling group not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Delete pack type handling group",
        "description" : "Soft delete a pack type handling group by marking it as deleted. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Pack type handling group deleted",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-handling-groups/new" : {
      "get" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Get new pack type handling group template",
        "description" : "Retrieve a new pack type handling group template with default values.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New pack type handling group template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-handling-groups/copy/{id}" : {
      "post" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Copy existing pack type handling group",
        "description" : "Create a copy of an existing pack type handling group with a new ID and reset version.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Pack type handling group copy preview",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-handling-groups" : {
      "put" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Update existing pack type handling group",
        "description" : "Update an existing pack type handling group with the provided data. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Pack type handling group data with ID and version",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Pack type handling group updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - version mismatch or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Pack type handling group not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Create new pack type handling group",
        "description" : "Create a new pack type handling group with the provided data. Requires `WMS-Idempotency-Key` request header.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Pack type handling group created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-handling-groups/light" : {
      "post" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Get lightweight pack type handling group data",
        "description" : "Retrieve lightweight pack type handling group data for multiple pack type handling groups by their IDs and versions.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight pack type handling group data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupLightDto"
                  },
                  "title" : "List<PackTypeHandlingGroupLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/catalog/pack-type-handling-groups/minimal/search" : {
      "post" : {
        "tags" : [ "Catalog - Pack Type Handling Groups" ],
        "summary" : "Search pack type handling groups (minimal data)",
        "description" : "Search pack type handling groups and retrieve minimal data (ID and name only) for UI elements like autocomplete dropdowns.",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal pack type handling group data (ID and name only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/warehouses/sse" : {
      "get" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Get warehouses stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates of warehouses for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /warehouses/sse/filters.\n2. Connect to this SSE endpoint with pagination and stagedRequestId parameters.\n3. Receive continuous updates as data changes in the system.\n\n## Query Parameters\n- `position`: Position (0-based, default: 0)\n- `size`: Number of items per page (default: 20)\n- `sort`: Sort criteria in the format `property,asc|desc`\n- `stagedRequestId`: ID of the filters staged via POST /warehouses/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<WarehouseDto>.\n\n## Authentication\nRequires a valid user session. Only returns warehouses belonging to the user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /warehouses/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<WarehouseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/warehouses/sse/count" : {
      "get" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Get warehouses count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive the real-time count of warehouses matching the filters.\n\n## Query Parameters\n- `stagedRequestId`: ID of the filters staged via POST /warehouses/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with the current count as a Long value.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /warehouses/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of warehouses count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/warehouses/sse/{id}" : {
      "get" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Get single warehouse via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates for a specific warehouse.\n\n## Path Parameters\n- `id`: UUID of the warehouse\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized WarehouseDto.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the warehouse",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of WarehouseResponseFullDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/warehouses/sse/filters" : {
      "post" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration temporarily to be used in subsequent SSE requests.\n\n## Request Body\nJSON filter criteria (FilterRequest).\n\n## Response\nReturns a unique string ID (stagedRequestId) to be used in SSE query parameters.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "JSON filter criteria",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/warehouses/search" : {
      "post" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Search warehouses",
        "description" : "\nReturns a paginated list of warehouses filtered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based, default: 0)\n- `size`: Number of items per page (default: 20)\n- `sort`: Sort criteria in the format `property,asc|desc` (e.g., `name,asc`)\n\n## Request Body\nOptional FilterRequest for filtering results.\n\n## Response\nA Page object containing a list of WarehouseDto objects and pagination metadata.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Search filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of warehouses",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/warehouses/{id}" : {
      "get" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Get warehouse by ID",
        "description" : "\nReturns full warehouse details by its unique identifier.\n\n## Path Parameters\n- `id`: UUID of the warehouse\n\n## Response\nWarehouseDto containing complete information about the warehouse.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the warehouse",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Warehouse details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Delete warehouse (soft delete)",
        "description" : "\nSoft deletes a warehouse from the system. The record remains in the database but is marked as deleted.\n\n## Path Parameters\n- `id`: UUID of the warehouse to delete\n\n## Query Parameters\n- `version`: Current version of the warehouse for optimistic locking\n\n## Response\nReturns success indication if the operation was completed.\n\n## Error Handling\nReturns 409 Conflict if there is a version mismatch.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Deleted success indication",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/warehouses/new" : {
      "post" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Create new warehouse template",
        "description" : "\nCreates a new warehouse template with default values.\nThis template can be modified and then saved using the POST /warehouses endpoint.\n\n## Response\nReturns a WarehouseDto with initialized default values but no ID (not yet persisted).\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New warehouse template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/warehouses/copy/{id}" : {
      "get" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Copy existing warehouse",
        "description" : "\nCreates a copy of an existing warehouse. The copied warehouse will have:\n- No ID (id = null)\n- Version = 0\n- Name prefixed with \"Copy of\"\n\nThe copied warehouse is not saved automatically and must be saved using the POST /warehouses endpoint.\n\n## Path Parameters\n- `id`: UUID of the warehouse to copy\n\n## Response\nReturns a WarehouseDto representing the copied warehouse template.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Warehouse ID to copy (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied warehouse template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/warehouses" : {
      "put" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Update existing warehouse",
        "description" : "\nUpdates the details of an existing warehouse.\n\n## Request Body\nWarehouseIncomeDto with updated data. Must include the `id` and current `version` for optimistic locking.\n\n## Response\nReturns the updated WarehouseDto with an incremented version number.\n\n## Error Handling\n- Returns 404 Not Found if the warehouse does not exist.\n- Returns 409 Conflict if there is a version mismatch (optimistic locking conflict).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse data for update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated warehouse",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Create new warehouse",
        "description" : "\nCreates a new warehouse in the system.\n\n## Request Body\nWarehouseIncomeDto containing the warehouse details.\n\n## Response\nReturns the created WarehouseDto, including its assigned ID and initial version.\n\n## Error Handling\nReturns 409 Conflict if a warehouse with the same name already exists for the tenant.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse data for creation",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created warehouse",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/warehouses/{id}/pack-accounting-mode" : {
      "put" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Switch the warehouse's pack accounting mode",
        "description" : "\nSwitches the warehouse between `STOCK_CONTROL` (stock may be kept in pack types) and `REFERENCE`\n(a pack only converts the entered quantity; stock is always in the base unit).\nThis is the only way to change the mode; `PUT /warehouses` and the reference import leave it as is.\n\n## Request Body\n`mode` to switch to and the warehouse's current `version`.\n\n## Response\nThe warehouse. A request for the mode the warehouse already has returns it unchanged.\n\n## Error Handling\n- 403 without `topology.warehouses.manage`; 404 if the warehouse does not exist.\n- 409 `VERSION_CONFLICT` on a version mismatch.\n- 409 `PACK_STOCK_PRESENT` — switching to `REFERENCE` while the warehouse holds pack stock the transition helper can convert;\n  the message lists what else holds packs.\n- 409 `PACK_DOCUMENTS_OPEN` — switching to `REFERENCE` while only reserved or picked pack stock, or open counts with\n  pack facts, remain.\n- 409 `PACK_MODE_SWITCH_BUSY` — stock operations on the warehouse did not finish within 5 seconds; nothing changed.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Target mode and the warehouse's current version",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehousePackAccountingModeChangeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "The warehouse in the requested mode",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseResponseFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "VERSION_CONFLICT, PACK_STOCK_PRESENT, PACK_DOCUMENTS_OPEN or PACK_MODE_SWITCH_BUSY",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/warehouses/light" : {
      "post" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Get light warehouse DTOs",
        "description" : "\nReturns light warehouse DTOs for a list of ID+version pairs.\nOnly returns warehouses that have changed (version mismatch) or were deleted.\nMaximum 100 items per request.\n\n## Request Body\nList of IdVersionDto objects containing:\n- `id`: Warehouse UUID\n- `version`: Expected version (optional)\n\n## Response\nList of WarehouseLightDto containing only changed or deleted items.\n\n## Validation\nThrows 400 Bad Request if more than 100 items are requested.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID+version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of light warehouse DTOs",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseLightDto"
                  },
                  "title" : "List<WarehouseLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/warehouses/minimal/search" : {
      "post" : {
        "tags" : [ "Topology - Warehouses" ],
        "summary" : "Search minimal warehouse data",
        "description" : "\nReturns minimal warehouse data (ID and name only) filtered by optional criteria.\nUseful for autocomplete and selection lists.\n\n## Query Parameters\n- `limit`: Maximum number of results (default: 51, maximum: 51)\n\n## Request Body\nOptional FilterRequest for filtering results.\n\n## Response\nList of IdNamePreviewDto objects containing id and name.\n\n## Validation\nThrows 400 Bad Request if limit exceeds 51.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of results",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "Search filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of minimal warehouse details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/work-areas/sse" : {
      "get" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Get work areas stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates of work areas for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /work-areas/sse/filters.\n2. Connect to this SSE endpoint with pagination and stagedRequestId parameters.\n3. Receive continuous updates as data changes in the system.\n\n## Query Parameters\n- `position`: Position (0-based, default: 0)\n- `size`: Number of items per page (default: 20)\n- `sort`: Sort criteria in the format `property,asc|desc`\n- `stagedRequestId`: ID of the filters staged via POST /work-areas/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<WorkAreaDto>.\n\n## Authentication\nRequires a valid user session. Only returns work areas belonging to the user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /work-areas/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<WorkAreaDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/work-areas/sse/count" : {
      "get" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Get work areas count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive the real-time count of work areas matching the filters.\n\n## Query Parameters\n- `stagedRequestId`: ID of the filters staged via POST /work-areas/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with the current count as a Long value.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /work-areas/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of work areas count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/work-areas/sse/{id}" : {
      "get" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Get single work area via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates for a specific work area.\n\n## Path Parameters\n- `id`: UUID of the work area\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized WorkAreaDto.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the work area",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of WorkAreaResponseFullDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/work-areas/sse/filters" : {
      "post" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration temporarily to be used in subsequent SSE requests.\n\n## Request Body\nJSON filter criteria (FilterRequest).\n\n## Response\nReturns a unique string ID (stagedRequestId) to be used in SSE query parameters.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "JSON filter criteria",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/work-areas/search" : {
      "post" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Search work areas",
        "description" : "\nReturns a paginated list of work areas filtered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based, default: 0)\n- `size`: Number of items per page (default: 20)\n- `sort`: Sort criteria in the format `property,asc|desc` (e.g., `name,asc`)\n\n## Request Body\nOptional FilterRequest for filtering results.\n\n## Response\nA Page object containing a list of WorkAreaDto objects and pagination metadata.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Search filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of work areas",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/work-areas/{id}" : {
      "get" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Get work area by ID",
        "description" : "\nReturns full work area details by its unique identifier.\n\n## Path Parameters\n- `id`: UUID of the work area\n\n## Response\nWorkAreaDto containing complete information about the work area.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Work area ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Work area details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Delete work area (soft delete)",
        "description" : "\nSoft deletes a work area from the system. The record remains in the database but is marked as deleted.\n\n## Path Parameters\n- `id`: UUID of the work area to delete\n\n## Query Parameters\n- `version`: Current version of the work area for optimistic locking\n\n## Response\nReturns success indication if the operation was completed.\n\n## Error Handling\nReturns 409 Conflict if there is a version mismatch.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Work area ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Deleted success indication",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/work-areas/new" : {
      "post" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Create new work area template",
        "description" : "\nCreates a new work area template with default values.\nThis template can be modified and then saved using the POST /work-areas endpoint.\n\n## Request Body\nWarehouseParametersDto specifying the ID of the warehouse where the work area will be created.\n\n## Response\nReturns a WorkAreaDto with initialized default values but no ID (not yet persisted).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Parameters for new work area template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New work area template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/work-areas/copy/{id}" : {
      "get" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Copy existing work area",
        "description" : "\nCreates a copy of an existing work area. The copied work area will have:\n- No ID (id = null)\n- Version = 0\n- Name prefixed with \"Copy of\"\n\nThe copied work area is not saved automatically and must be saved using the POST /work-areas endpoint.\n\n## Path Parameters\n- `id`: UUID of the work area to copy\n\n## Response\nReturns a WorkAreaDto representing the copied work area template.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Work area ID to copy (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied work area template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/work-areas" : {
      "put" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Update existing work area",
        "description" : "\nUpdates the details of an existing work area.\n\n## Request Body\nWorkAreaIncomeDto with updated data. Must include the `id` and current `version` for optimistic locking.\n\n## Response\nReturns the updated WorkAreaDto with an incremented version number.\n\n## Error Handling\n- Returns 404 Not Found if the work area does not exist.\n- Returns 409 Conflict if there is a version mismatch (optimistic locking conflict).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Work area data for update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated work area",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Create new work area",
        "description" : "\nCreates a new work area in the system.\n\n## Request Body\nWorkAreaIncomeDto containing the work area details.\n\n## Response\nReturns the created WorkAreaDto, including its assigned ID and initial version.\n\n## Error Handling\nReturns 409 Conflict if a work area with the same name already exists in the warehouse.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Work area data for creation",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created work area",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/work-areas/light" : {
      "post" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Get light work area DTOs",
        "description" : "\nReturns light work area DTOs for a list of ID+version pairs.\nOnly returns work areas that have changed (version mismatch) or were deleted.\nMaximum 100 items per request.\n\n## Request Body\nList of IdVersionDto objects containing:\n- `id`: Work area UUID\n- `version`: Expected version (optional)\n\n## Response\nList of WorkAreaLightDto containing only changed or deleted items.\n\n## Validation\nThrows 400 Bad Request if more than 100 items are requested.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID+version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of light work area DTOs",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaLightDto"
                  },
                  "title" : "List<WorkAreaLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/work-areas/minimal/search" : {
      "post" : {
        "tags" : [ "Topology - WorkAreas" ],
        "summary" : "Search minimal work area data",
        "description" : "\nReturns minimal work area data (ID and name only) filtered by optional criteria.\nUseful for autocomplete and selection lists.\n\n## Query Parameters\n- `limit`: Maximum number of results (default: 51, maximum: 51)\n\n## Request Body\nOptional FilterRequest for filtering results.\n\n## Response\nList of IdNamePreviewDto objects containing id and name.\n\n## Validation\nThrows 400 Bad Request if limit exceeds 51.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of results",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "Search filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of minimal work area details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/storage-areas/sse" : {
      "get" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Get storage areas stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates of storage areas for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /storage-areas/sse/filters.\n2. Connect to this SSE endpoint with pagination and stagedRequestId parameters.\n3. Receive continuous updates as data changes in the system.\n\n## Query Parameters\n- `position`: Position (0-based, default: 0)\n- `size`: Number of items per page (default: 20)\n- `sort`: Sort criteria in the format `property,asc|desc`\n- `stagedRequestId`: ID of the filters staged via POST /storage-areas/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<StorageAreaDto>.\n\n## Authentication\nRequires a valid user session. Only returns storage areas belonging to the user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /storage-areas/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<StorageAreaDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/storage-areas/sse/count" : {
      "get" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Get storage areas count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive the real-time count of storage areas matching the filters.\n\n## Query Parameters\n- `stagedRequestId`: ID of the filters staged via POST /storage-areas/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with the current count as a Long value.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /storage-areas/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of storage areas count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/storage-areas/sse/{id}" : {
      "get" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Get single storage area via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates for a specific storage area.\n\n## Path Parameters\n- `id`: UUID of the storage area\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized StorageAreaDto.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the storage area",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of StorageAreaResponseFullDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/storage-areas/sse/filters" : {
      "post" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration temporarily to be used in subsequent SSE requests.\n\n## Request Body\nJSON filter criteria (FilterRequest).\n\n## Response\nReturns a unique string ID (stagedRequestId) to be used in SSE query parameters.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "JSON filter criteria",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/storage-areas/search" : {
      "post" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Search storage areas",
        "description" : "\nReturns a paginated list of storage areas filtered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based, default: 0)\n- `size`: Number of items per page (default: 20)\n- `sort`: Sort criteria in the format `property,asc|desc` (e.g., `name,asc`)\n\n## Request Body\nOptional FilterRequest for filtering results.\n\n## Response\nA Page object containing a list of StorageAreaDto objects and pagination metadata.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Search filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of storage areas",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/storage-areas/{id}" : {
      "get" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Get storage area by ID",
        "description" : "\nReturns full storage area details by its unique identifier.\n\n## Path Parameters\n- `id`: UUID of the storage area\n\n## Response\nStorageAreaDto containing complete information about the storage area.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Storage area ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Storage area details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Delete storage area (soft delete)",
        "description" : "\nSoft deletes a storage area from the system. The record remains in the database but is marked as deleted.\n\n## Path Parameters\n- `id`: UUID of the storage area to delete\n\n## Query Parameters\n- `version`: Current version of the storage area for optimistic locking\n\n## Response\nReturns success indication if the operation was completed.\n\n## Error Handling\nReturns 409 Conflict if there is a version mismatch.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Storage area ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Deleted success indication",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/storage-areas/new" : {
      "post" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Create new storage area template",
        "description" : "\nCreates a new storage area template with default values.\nThis template can be modified and then saved using the POST /storage-areas endpoint.\n\n## Request Body\nWarehouseParametersDto specifying the ID of the warehouse where the storage area will be created.\n\n## Response\nReturns a StorageAreaDto with initialized default values but no ID (not yet persisted).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Parameters for new storage area template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New storage area template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/storage-areas/copy/{id}" : {
      "get" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Copy existing storage area",
        "description" : "\nCreates a copy of an existing storage area. The copied storage area will have:\n- No ID (id = null)\n- Version = 0\n- Name prefixed with \"Copy of\"\n\nThe copied storage area is not saved automatically and must be saved using the POST /storage-areas endpoint.\n\n## Path Parameters\n- `id`: UUID of the storage area to copy\n\n## Response\nReturns a StorageAreaDto representing the copied storage area template.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Storage area ID to copy (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied storage area template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/storage-areas" : {
      "put" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Update existing storage area",
        "description" : "\nUpdates the details of an existing storage area.\n\n## Request Body\nStorageAreaIncomeDto with updated data. Must include the `id` and current `version` for optimistic locking.\n\n## Response\nReturns the updated StorageAreaDto with an incremented version number.\n\n## Error Handling\n- Returns 404 Not Found if the storage area does not exist.\n- Returns 409 Conflict if there is a version mismatch (optimistic locking conflict).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Storage area data for update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated storage area",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Create new storage area",
        "description" : "\nCreates a new storage area in the system.\n\n## Request Body\nStorageAreaIncomeDto containing the storage area details.\n\n## Response\nReturns the created StorageAreaDto, including its assigned ID and initial version.\n\n## Error Handling\nReturns 409 Conflict if a storage area with the same name already exists in the warehouse.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Storage area data for creation",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created storage area",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/storage-areas/light" : {
      "post" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Get light storage area DTOs",
        "description" : "\nReturns light storage area DTOs for a list of ID+version pairs.\nOnly returns storage areas that have changed (version mismatch) or were deleted.\nMaximum 100 items per request.\n\n## Request Body\nList of IdVersionDto objects containing:\n- `id`: Storage area UUID\n- `version`: Expected version (optional)\n\n## Response\nList of StorageAreaLightDto containing only changed or deleted items.\n\n## Validation\nThrows 400 Bad Request if more than 100 items are requested.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID+version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of light storage area DTOs",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaLightDto"
                  },
                  "title" : "List<StorageAreaLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/storage-areas/minimal/search" : {
      "post" : {
        "tags" : [ "Topology - StorageAreas" ],
        "summary" : "Search minimal storage area data",
        "description" : "\nReturns minimal storage area data (ID and name only) filtered by optional criteria.\nUseful for autocomplete and selection lists.\n\n## Query Parameters\n- `limit`: Maximum number of results (default: 51, maximum: 51)\n\n## Request Body\nOptional FilterRequest for filtering results.\n\n## Response\nList of IdNamePreviewDto objects containing id and name.\n\n## Validation\nThrows 400 Bad Request if limit exceeds 51.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of results",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "Search filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of minimal storage area details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/location-sizes/sse" : {
      "get" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Get location sizes stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates of location sizes for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /location-sizes/sse/filters.\n2. Connect to this SSE endpoint with pagination and stagedRequestId parameters.\n3. Receive continuous updates as data changes in the system.\n\n## Query Parameters\n- `position`: Position (0-based, default: 0)\n- `size`: Number of items per page (default: 20)\n- `sort`: Sort criteria in the format `property,asc|desc`\n- `stagedRequestId`: ID of the filters staged via POST /location-sizes/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<LocationSizeDto>.\n\n## Authentication\nRequires a valid user session. Only returns location sizes belonging to the user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /location-sizes/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<LocationSizeDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/location-sizes/sse/count" : {
      "get" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Get location sizes count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive the real-time count of location sizes matching the filters.\n\n## Query Parameters\n- `stagedRequestId`: ID of the filters staged via POST /location-sizes/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with the current count as a Long value.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /location-sizes/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of location sizes count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/location-sizes/sse/{id}" : {
      "get" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Get single location size via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates for a specific location size.\n\n## Path Parameters\n- `id`: UUID of the location size\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized LocationSizeDto.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the location size",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of LocationSizeResponseFullDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/location-sizes/sse/filters" : {
      "post" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration temporarily to be used in subsequent SSE requests.\n\n## Request Body\nJSON filter criteria (FilterRequest).\n\n## Response\nReturns a unique string ID (stagedRequestId) to be used in SSE query parameters.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "JSON filter criteria",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/location-sizes/search" : {
      "post" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Search location sizes",
        "description" : "\nReturns a paginated list of location sizes filtered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based, default: 0)\n- `size`: Number of items per page (default: 20)\n- `sort`: Sort criteria in the format `property,asc|desc` (e.g., `name,asc`)\n\n## Request Body\nOptional FilterRequest for filtering results.\n\n## Response\nA Page object containing a list of LocationSizeDto objects and pagination metadata.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Search filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of location sizes",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/location-sizes/{id}" : {
      "get" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Get location size by ID",
        "description" : "\nReturns full location size details by its unique identifier.\n\n## Path Parameters\n- `id`: UUID of the location size\n\n## Response\nLocationSizeDto containing complete information about the location size.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Location size ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Location size details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Delete location size (soft delete)",
        "description" : "\nSoft deletes a location size from the system. The record remains in the database but is marked as deleted.\n\n## Path Parameters\n- `id`: UUID of the location size to delete\n\n## Query Parameters\n- `version`: Current version of the location size for optimistic locking\n\n## Response\nReturns success indication if the operation was completed.\n\n## Error Handling\nReturns 409 Conflict if there is a version mismatch.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Location size ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Deleted success indication",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/location-sizes/new" : {
      "post" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Create new location size template",
        "description" : "\nCreates a new location size template with default values.\nThis template can be modified and then saved using the POST /location-sizes endpoint.\n\n## Response\nReturns a LocationSizeDto with initialized default values but no ID (not yet persisted).\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New location size template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/location-sizes/copy/{id}" : {
      "get" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Copy existing location size",
        "description" : "\nCreates a copy of an existing location size. The copied location size will have:\n- No ID (id = null)\n- Version = 0\n- Name prefixed with \"Copy of\"\n\nThe copied location size is not saved automatically and must be saved using the POST /location-sizes endpoint.\n\n## Path Parameters\n- `id`: UUID of the location size to copy\n\n## Response\nReturns a LocationSizeDto representing the copied location size template.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Location size ID to copy (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied location size template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/location-sizes" : {
      "put" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Update existing location size",
        "description" : "\nUpdates the details of an existing location size.\n\n## Request Body\nLocationSizeIncomeDto with updated data. Must include the `id` and current `version` for optimistic locking.\n\n## Response\nReturns the updated LocationSizeDto with an incremented version number.\n\n## Error Handling\n- Returns 404 Not Found if the location size does not exist.\n- Returns 409 Conflict if there is a version mismatch (optimistic locking conflict).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Location size data for update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated location size",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Create new location size",
        "description" : "\nCreates a new location size in the system.\n\n## Request Body\nLocationSizeIncomeDto containing the location size details.\n\n## Response\nReturns the created LocationSizeDto, including its assigned ID and initial version.\n\n## Error Handling\nReturns 409 Conflict if a location size with the same name already exists for the tenant.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Location size data for creation",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created location size",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/location-sizes/light" : {
      "post" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Get light location size DTOs",
        "description" : "\nReturns light location size DTOs for a list of ID+version pairs.\nOnly returns location sizes that have changed (version mismatch) or were deleted.\nMaximum 100 items per request.\n\n## Request Body\nList of IdVersionDto objects containing:\n- `id`: Location size UUID\n- `version`: Expected version (optional)\n\n## Response\nList of LocationSizeLightDto containing only changed or deleted items.\n\n## Validation\nThrows 400 Bad Request if more than 100 items are requested.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID+version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of light location size DTOs",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeLightDto"
                  },
                  "title" : "List<LocationSizeLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/location-sizes/minimal/search" : {
      "post" : {
        "tags" : [ "Topology - LocationSizes" ],
        "summary" : "Search minimal location size data",
        "description" : "\nReturns minimal location size data (ID and name only) filtered by optional criteria.\nUseful for autocomplete and selection lists.\n\n## Query Parameters\n- `limit`: Maximum number of results (default: 51, maximum: 51)\n\n## Request Body\nOptional FilterRequest for filtering results.\n\n## Response\nList of IdNamePreviewDto objects containing id and name.\n\n## Validation\nThrows 400 Bad Request if limit exceeds 51.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of results",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "Search filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of minimal location size details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/sse" : {
      "get" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Get locations stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates of locations for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /locations/sse/filters.\n2. Connect to this SSE endpoint with pagination and stagedRequestId parameters.\n3. Receive continuous updates as data changes in the system.\n\n## Query Parameters\n- `position`: Position (0-based, default: 0)\n- `size`: Number of items per page (default: 20)\n- `sort`: Sort criteria in the format `property,asc|desc`\n- `stagedRequestId`: ID of the filters staged via POST /locations/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<LocationHeaderDto>.\n\n## Authentication\nRequires a valid user session. Only returns locations belonging to the user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockProductId",
          "in" : "query",
          "description" : "Stock scope: product; without it this list returns no stock",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "stockProductFeatureId",
          "in" : "query",
          "description" : "Stock scope: product feature",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "stockLotId",
          "in" : "query",
          "description" : "Stock scope: lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          }
        }, {
          "name" : "stockPackTypeId",
          "in" : "query",
          "description" : "Stock scope: pack type; without it only loose stock counts",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /locations/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<LocationHeaderDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.location.dto.LocationHeaderDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/sse/count" : {
      "get" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Get locations count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive the real-time count of locations matching the filters.\n\n## Query Parameters\n- `stagedRequestId`: ID of the filters staged via POST /locations/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with the current count as a Long value.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /locations/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockProductId",
          "in" : "query",
          "description" : "Stock scope: product; without it this list returns no stock",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "stockProductFeatureId",
          "in" : "query",
          "description" : "Stock scope: product feature",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "stockLotId",
          "in" : "query",
          "description" : "Stock scope: lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          }
        }, {
          "name" : "stockPackTypeId",
          "in" : "query",
          "description" : "Stock scope: pack type; without it only loose stock counts",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of locations count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/sse/{id}" : {
      "get" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Get single location via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates for a specific location.\n\n## Path Parameters\n- `id`: UUID of the location\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized LocationFullDto.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the location",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of LocationWithStateDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.api.location.dto.LocationWithStateDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/sse/filters" : {
      "post" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration temporarily to be used in subsequent SSE requests.\n\n## Request Body\nJSON filter criteria (FilterRequest).\n\n## Response\nReturns a unique string ID (stagedRequestId) to be used in SSE query parameters.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "JSON filter criteria",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/search" : {
      "post" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Search locations",
        "description" : "\nReturns a paginated list of locations filtered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based, default: 0)\n- `size`: Number of items per page (default: 20)\n- `sort`: Sort criteria in the format `property,asc|desc` (e.g., `name,asc`)\n\n## Request Body\nOptional FilterRequest for filtering results by warehouse, type, status, or other fields.\n\n## Response\nA Page object containing a list of LocationHeaderDto objects and pagination metadata.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockProductId",
          "in" : "query",
          "description" : "Stock scope: product; without it this list returns no stock",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "stockProductFeatureId",
          "in" : "query",
          "description" : "Stock scope: product feature",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "stockLotId",
          "in" : "query",
          "description" : "Stock scope: lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          }
        }, {
          "name" : "stockPackTypeId",
          "in" : "query",
          "description" : "Stock scope: pack type; without it only loose stock counts",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "requestBody" : {
          "description" : "Search filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of locations",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.location.dto.LocationHeaderDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/{id}" : {
      "get" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Get location by ID",
        "description" : "\nReturns full location details by its unique identifier.\n\n## Path Parameters\n- `id`: UUID of the location\n\n## Response\nLocationFullDto containing complete information about the location, including warehouse and parent group details.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Location ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Location details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Delete location (soft delete)",
        "description" : "\nSoft deletes a location from the system. The record remains in the database but is marked as deleted.\n\n## Path Parameters\n- `id`: UUID of the location to delete\n\n## Query Parameters\n- `version`: Current version of the location for optimistic locking\n\n## Response\nReturns success indication if the operation was completed.\n\n## Error Handling\nReturns 409 Conflict if there is a version mismatch.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Location ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Deleted success indication",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/by-code" : {
      "post" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Get location by code",
        "description" : "\nReturns full location details by its code within a specific warehouse.\n\n## Request Body\n- `warehouseId`: UUID of the warehouse\n- `code`: Location code\n\n## Response\nLocationFullDto containing complete information about the location.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Location lookup parameters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationByCodeRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Location details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/new" : {
      "post" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Create new location template",
        "description" : "\nCreates a new location template with default values based on the provided parameters.\nThis template can be modified and then saved using the POST /locations endpoint.\n\n## Request Body\nLocationParametersDto specifying:\n- `warehouseId`: ID of the warehouse where the location will be created\n- `groupId`: Optional parent group ID\n- `isGroup`: Whether the new location should be a group or an item\n\n## Response\nReturns a LocationFullDto with initialized default values but no ID (not yet persisted).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Parameters for new location template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New location template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/copy/{id}" : {
      "get" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Copy existing location",
        "description" : "\nCreates a copy of an existing location. The copied location will have:\n- No ID (id = null)\n- Version = 0\n- Name prefixed with \"Copy of\"\n\nThe copied location is not saved automatically and must be saved using the POST /locations endpoint.\n\n## Path Parameters\n- `id`: UUID of the location to copy\n\n## Response\nReturns a LocationFullDto representing the copied location template.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Location ID to copy (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied location template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations" : {
      "put" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Update existing location",
        "description" : "\nUpdates the details of an existing location.\n\n## Request Body\nLocationIncomeDto with updated data. Must include the `id` and current `version` for optimistic locking.\n\n## Response\nReturns the updated LocationFullDto with an incremented version number.\n\n## Error Handling\n- Returns 404 Not Found if the location does not exist.\n- Returns 409 Conflict if there is a version mismatch (optimistic locking conflict).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Location data for update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated location",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Create new location",
        "description" : "\nCreates a new location in the system.\n\n## Request Body\nLocationIncomeDto containing the location's details.\n\n## Response\nReturns the created LocationFullDto, including its assigned ID and initial version.\n\n## Error Handling\nReturns 409 Conflict if a location with the same address already exists in the warehouse.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Location data for creation",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created location",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/generator" : {
      "post" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Bulk-generate warehouse locations from a wizard request",
        "description" : "\nGenerates up to 50 000 Location rows (groups + cells) in a single transaction from a constructor\ndescription plus a default-cell template.\n\n## Modes\n- `updateExisting = false` (insert-only): first address collision rolls back the batch and returns 409.\n- `updateExisting = true` (upsert): collisions update only the fields whose enable toggle is ON in\n  the template; soft-deleted matches are reactivated.\n\n## Address constructor\nFive independently-toggleable segments — section, line, rack, level, position — with NUMERIC,\nALPHABETIC (latin or cyrillic), and ALPHANUMERIC (letter-major) types. Hard cap 3 characters per\nsegment. Optional zero-padding via `fixedLength`.\n\n## Group toggles\nSECTION, LINE, RACK, LEVEL (no POSITION — positions are always leaves). Disabled middle levels\ncollapse: children attach to the nearest enabled ancestor group.\n\n## Excluded from the wizard\n`autogeneratePlacement`, `receiverId`, `receiverLocationId`, nomenclature-group restrictions (SEP).\n\n## Response\n- 200 OK + LocationGeneratorResponseDto on success.\n- 409 Conflict + LocationGeneratorErrorDto when insert-only mode hits collisions.\n- 422 Unprocessable Entity when the planned row count exceeds 50 000.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Generator wizard payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationGeneratorRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Generated location summary",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationGeneratorResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Address collision in insert-only mode",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationGeneratorErrorDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/export" : {
      "post" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Export locations to Excel",
        "description" : "\nReturns the filtered locations of one warehouse as a protected Excel workbook.\n\nThe workbook carries a header block with the warehouse, the export timestamp and the applied filter,\ndropdowns backed by a hidden reference sheet, and typed cell constraints. Address columns are locked;\n`id` and `version` travel in hidden columns and are used to detect concurrent modification on import.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse, group level and list filter",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationExportRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Excel workbook with the filtered locations",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "type" : "integer",
                    "maximum" : 127,
                    "minimum" : -128,
                    "title" : "Byte"
                  },
                  "title" : "Array<Byte>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/import/preview" : {
      "post" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Preview an edited location workbook",
        "description" : "\nCompares an uploaded workbook against the current database state and returns the differences.\n\nWrites nothing. Rows are matched by address within the warehouse recorded in the workbook metadata:\nan unmatched address is NEW, a matched one is UPDATED or UNCHANGED, and a row that fails validation\nis INVALID and cannot be applied.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Edited Excel workbook, multipart/form-data",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "type" : "integer",
                  "maximum" : 127,
                  "minimum" : -128,
                  "title" : "Byte"
                },
                "title" : "Array<Byte>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Comparison against the current database state; nothing is written",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationImportPreviewDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/import/apply" : {
      "post" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Apply a previewed location import",
        "description" : "\nPersists the confirmed rows in a single transaction.\n\nEvery row carries the version seen during preview. If any stored version has moved on, the whole\nrequest fails with 409 and the full list of conflicting addresses, having written nothing.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Rows confirmed in the preview",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationImportApplyDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Counts of created and updated locations",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationImportApplyResultDto"
                }
              }
            }
          },
          "409" : {
            "description" : "At least one row was modified concurrently; nothing was written",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationImportConflictResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/light" : {
      "post" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Get light location DTOs",
        "description" : "\nReturns light location DTOs for a list of ID+version pairs.\nOnly returns locations that have changed (version mismatch) or were deleted.\nMaximum 100 items per request.\n\n## Request Body\nList of IdVersionDto objects containing:\n- `id`: Location UUID\n- `version`: Expected version (optional)\n\n## Response\nList of LocationLightDto containing only changed or deleted items.\n\n## Validation\nThrows 400 Bad Request if more than 100 items are requested.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID+version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of light location DTOs",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationLightDto"
                  },
                  "title" : "List<LocationLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/topology/locations/minimal/search" : {
      "post" : {
        "tags" : [ "Topology - Locations" ],
        "summary" : "Search minimal location data",
        "description" : "\nReturns minimal location data (ID and name only) filtered by optional criteria.\nUseful for autocomplete and selection lists.\n\n## Query Parameters\n- `limit`: Maximum number of results (default: 51, maximum: 51)\n\n## Request Body\nOptional FilterRequest for filtering results.\n\n## Response\nList of IdNamePreviewDto objects containing id and name.\n\n## Validation\nThrows 400 Bad Request if limit exceeds 51.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of results",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "Search filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of minimal location details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots/sse" : {
      "get" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Get lots stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof lots for the current tenant. The endpoint streams paginated lot records\nas they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /lots/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /lots/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<LotResponseDto>\ncontaining the current page of lots matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns lots for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockLocationId",
          "in" : "query",
          "description" : "Stock scope: cell, loose stock only",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        }, {
          "name" : "stockContainerId",
          "in" : "query",
          "description" : "Stock scope: container",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          }
        }, {
          "name" : "stockProductId",
          "in" : "query",
          "description" : "Stock scope: product",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "stockProductFeatureId",
          "in" : "query",
          "description" : "Stock scope: product feature",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "stockPackTypeId",
          "in" : "query",
          "description" : "Stock scope: pack type, counted in its own units; without it and without stockLoose every pack type counts in base units",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          }
        }, {
          "name" : "stockLoose",
          "in" : "query",
          "description" : "Stock scope: loose stock only, in base units; not with stockPackTypeId",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Get lots count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof lots matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /lots/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /lots/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts lots for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockLocationId",
          "in" : "query",
          "description" : "Stock scope: cell, loose stock only",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        }, {
          "name" : "stockContainerId",
          "in" : "query",
          "description" : "Stock scope: container",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          }
        }, {
          "name" : "stockProductId",
          "in" : "query",
          "description" : "Stock scope: product",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "stockProductFeatureId",
          "in" : "query",
          "description" : "Stock scope: product feature",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "stockPackTypeId",
          "in" : "query",
          "description" : "Stock scope: pack type, counted in its own units; without it and without stockLoose every pack type counts in base units",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          }
        }, {
          "name" : "stockLoose",
          "in" : "query",
          "description" : "Stock scope: loose stock only, in base units; not with stockPackTypeId",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots/sse/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Get single lot via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific lot by its ID.\n\n## Usage\nConnect to this SSE endpoint with the lot ID in the path parameter.\nReceive continuous updates as the lot data changes.\n\n## Path Parameters\n- `id`: UUID of the lot\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized LotResponseDto\ncontaining the full lot details.\n\n## Authentication\nRequires authentication. Only returns lots for the authenticated user's tenant.\n\n## Errors\n- Returns error event if lot ID is missing or invalid\n- Returns null events if lot is deleted or not found\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots/search" : {
      "post" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Search lots",
        "description" : "\nSearch and retrieve paginated list of lots with optional filtering and sorting.\n\n## Query Parameters\n- `position`: Position (0-based, default: 0)\n- `size`: Page size (default: 20)\n- `sort`: Sort criteria in format \"field,direction\" (e.g., \"name,asc\")\n\n## Request Body\nOptional FilterRequest JSON with field-specific filter criteria.\n\n## Response\nReturns Page<LotResponseDto> with paginated lot data including:\n- content: List of lot records\n- totalElements: Total number of records matching criteria\n- totalPages: Total number of pages\n- pageNumber: Current page number\n- pageSize: Items per page\n\n## Authentication\nRequires authentication. Only returns lots for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockLocationId",
          "in" : "query",
          "description" : "Stock scope: cell, loose stock only",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        }, {
          "name" : "stockContainerId",
          "in" : "query",
          "description" : "Stock scope: container",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          }
        }, {
          "name" : "stockProductId",
          "in" : "query",
          "description" : "Stock scope: product",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "stockProductFeatureId",
          "in" : "query",
          "description" : "Stock scope: product feature",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "stockPackTypeId",
          "in" : "query",
          "description" : "Stock scope: pack type, counted in its own units; without it and without stockLoose every pack type counts in base units",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          }
        }, {
          "name" : "stockLoose",
          "in" : "query",
          "description" : "Stock scope: loose stock only, in base units; not with stockPackTypeId",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of lots",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.lot.dto.LotResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Get lot by ID",
        "description" : "\nRetrieve a single lot by its unique identifier.\n\n## Path Parameters\n- `id`: UUID of the lot\n\n## Response\nReturns LotResponseDto with complete lot details.\n\n## Errors\n- 404 Not Found: Lot does not exist or belongs to a different tenant\n\n## Authentication\nRequires authentication. Only returns lots for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Lot ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Lot details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotResponseFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Lot not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Delete lot",
        "description" : "\nSoft delete a lot by marking it as deleted.\n\n## Path Parameters\n- `id`: UUID of the lot\n\n## Query Parameters\n- `version`: Current version number for optimistic locking\n\n## Behavior\nThe lot is soft deleted (marked as deleted) rather than permanently removed\nfrom the database.\n\n## Errors\n- 404 Not Found: Lot does not exist\n- 409 Conflict: Version mismatch\n\n## Authentication\nRequires authentication. Only deletes lots in the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Lot ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Version number for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Lot soft deleted",
            "headers" : { }
          },
          "409" : {
            "description" : "Version mismatch",
            "headers" : { }
          },
          "404" : {
            "description" : "Lot not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots/new" : {
      "post" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Get new lot template",
        "description" : "\nRetrieve a new lot template with default values pre-populated for the specified product.\n\n## Query Parameters\n- `productId`: UUID of the product for which to create a new lot\n\n## Response\nReturns LotResponseDto with default values that can be modified and submitted to the create endpoint.\n\n## Use Case\nThis endpoint is typically called before creating a new lot to get appropriate\ndefault values based on the product configuration.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ {
          "name" : "productId",
          "in" : "query",
          "description" : "Product ID (UUID) for the new lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "New lot template with default values",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots/copy/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Copy existing lot",
        "description" : "\nCreate a copy of an existing lot with a new ID and reset version.\n\n## Path Parameters\n- `id`: UUID of the lot to copy\n\n## Response\nReturns LotResponseDto with copied data and new ID.\n\n## Behavior\n- Generates new UUID for the copied lot\n- Resets version to 0\n- Preserves all other lot properties\n\n## Errors\n- 404 Not Found: Source lot does not exist or belongs to a different tenant\n\n## Authentication\nRequires authentication. Only copies lots from the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Lot ID (UUID) to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied lot with new ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotResponseFullDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Source lot not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots" : {
      "put" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Update existing lot",
        "description" : "\nUpdate an existing lot with the provided data.\n\n## Request Body\nLotIncomeDto with lot details including ID and current version.\n\n## Response\nReturns LotResponseDto with the updated lot and incremented version.\n\n## Optimistic Locking\nThe version field is used for optimistic locking. If the provided version\ndoes not match the current version in the database, the update will fail\nwith a 409 Conflict error.\n\n## Errors\n- 404 Not Found: Lot does not exist\n- 409 Conflict: Version mismatch or validation error\n\n## Authentication\nRequires authentication. Only updates lots in the authenticated user's tenant.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Lot data with ID and version",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lot updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotResponseFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - version mismatch or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Lot not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Create new lot",
        "description" : "\nCreate a new lot with the provided data.\n\n## Request Body\nLotIncomeDto with lot details (ID should be null or omitted).\n\n## Response\nReturns LotResponseDto with the created lot including generated ID and version.\n\n## Validation\n- Product must exist\n- Lot number must be unique within the product\n- All required fields must be provided\n\n## Errors\n- 409 Conflict: Uniqueness constraint violation or validation error\n\n## Authentication\nRequires authentication. Creates lot in the authenticated user's tenant.\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Lot created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotResponseFullDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots/resolve" : {
      "post" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Resolve a lot from label data",
        "description" : "\nFinds the product's live lot with this number (trimmed) and compares it with the label.\nA product whose category does not track lots is refused with 409 `LOT_NOT_TRACKED`.\n\n- No lot: creates one from the label. Right `inventory.lots.create_in_operations`. Under a FEFO policy at the warehouse a label without `expiryAt` is refused with 400 on `expiryAt`.\n- Empty lot fields: filled at once (`ADD`, `applied = true`). Right `inventory.lots.update_in_operations`.\n- Differing fields: listed as `REPLACE`, written only by a second call that names them in `replace` and carries `expectedVersion`.\n- `inventory.lots.manage` covers both rights. Without the update right nothing is written and `canUpdate` is false.\n- Several live lots with the number: 200 with `lot = null` and the lots in `candidates`; nothing is written.\n- `lotId`: compare the label with that live lot instead of searching by number; it must be of the product and carry the number, else 400 on `lotId`.\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotResolveRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "The lot the label resolved to with its differences, or `candidates` when several live lots share the number",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotResolveResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Malformed request, attribute values of the wrong type, a new FEFO lot without `expiryAt`, or a `lotId` that is not a live lot of the product with the number",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Creating or replacing needs an operational lot right",
            "headers" : { }
          },
          "409" : {
            "description" : "VERSION_CONFLICT: the lot changed since it was shown; LOT_NOT_TRACKED: the category keeps no lots",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots/attributes" : {
      "get" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Get lot attribute definitions",
        "description" : "\nResolve effective attribute definitions for lots by optional product category context.\nDeleted attributes are never returned.\n\n## Query Parameters\n- `productCategoryId`: Optional UUID of the product category.\n  - When provided, returns shared + category-assigned lot attributes.\n  - When omitted, returns only shared lot attributes.\n- `anyCategory`: Optional, `false` by default.\n  - When `true`, returns shared lot attributes + those assigned to lots by any product category:\n    the set a GS1 mapping row of the barcode policy accepts.\n\n## Response\nReturns List<AttributeDto> with lightweight attribute metadata for lot forms.\n\n## Errors\n- 400 Bad Request: `anyCategory=true` together with `productCategoryId`\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ {
          "name" : "productCategoryId",
          "in" : "query",
          "description" : "Product category ID (UUID), mutually exclusive with anyCategory=true",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "anyCategory",
          "in" : "query",
          "description" : "List the attributes bound to lots through any product category",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Attribute definitions for lots",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.attribute.dto.AttributeDto"
                  },
                  "title" : "List<AttributeDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid query parameters",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots/light" : {
      "post" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Get lightweight lot data",
        "description" : "\nRetrieve lightweight lot data for multiple lots by their IDs and versions.\n\n## Request Body\nList of IdVersionDto with lot IDs and versions.\n\n## Response\nReturns List<LotLightDto> with minimal lot data suitable for dropdowns,\nreferences, and other UI elements that don't require full lot details.\n\n## Use Case\nThis endpoint is optimized for performance when only basic lot information\nis needed, such as in select lists or reference displays.\n\n## Authentication\nRequires authentication. Only returns lots from the authenticated user's tenant.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of lot ID-version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight lot data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotLightDto"
                  },
                  "title" : "List<LotLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lots/minimal/search" : {
      "post" : {
        "tags" : [ "Inventory - Lots" ],
        "summary" : "Search lots (minimal data)",
        "description" : "\nSearch lots and retrieve minimal data (ID and name only) for UI elements\nlike autocomplete dropdowns.\n\n## Query Parameters\n- `limit`: Maximum number of results (max: 51, default: 51)\n\n## Request Body\nOptional FilterRequest JSON with field-specific filter criteria.\n\n## Response\nReturns List<IdNamePreviewDto> with ID and name for each matching lot.\n\n## Use Case\nThis endpoint is highly optimized for autocomplete and typeahead functionality\nwhere only ID and name are needed.\n\n## Authentication\nRequires authentication. Only returns lots from the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal lot data (ID and name only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/placement-rules/sse" : {
      "get" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Stream placement rules via SSE",
        "description" : "Streams paginated placement rules for the tenant.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/placement-rules/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Stream placement rule count via SSE",
        "description" : "Streams placement rule count for the tenant.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/placement-rules/sse/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Stream placement rule by ID via SSE",
        "description" : "Streams one placement rule by ID.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/placement-rules/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Stage filters for placement rule SSE",
        "description" : "Stores filters and returns staged request ID.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/placement-rules/search" : {
      "post" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Search placement rules",
        "description" : "Returns paginated placement rules with optional filters.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/placement-rules/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Get placement rule by ID",
        "description" : "Returns one placement rule by identifier.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Delete placement rule",
        "description" : "Soft deletes a placement rule by ID and version.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Placement rule deleted",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/placement-rules/new" : {
      "get" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Get new placement rule template",
        "description" : "Returns a draft placement rule with default values.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "query",
          "description" : "Warehouse to put on the template",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        } ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleIncomeDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/placement-rules/copy/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Copy placement rule",
        "description" : "Returns a draft created from an existing placement rule.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/placement-rules" : {
      "put" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Update placement rule",
        "description" : "Updates an existing placement rule.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Create placement rule",
        "description" : "Creates a placement rule.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/placement-rules/light" : {
      "post" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Get placement rules light payload",
        "description" : "Returns lightweight placement rule records by IDs.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleLightDto"
                  },
                  "title" : "List<PlacementRuleLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/placement-rules/minimal/search" : {
      "post" : {
        "tags" : [ "Inventory - Placement Rules" ],
        "summary" : "Minimal placement rule search",
        "description" : "Returns placement rule identifiers with minimal fields.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/carriers/sse" : {
      "get" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Get carriers stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof carriers for the current tenant.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /carriers/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<CarrierDto>.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /carriers/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<CarrierDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/carriers/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Get carriers count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof carriers matching the specified filters.\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /carriers/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /carriers/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count (Long)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/carriers/sse/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Get single carrier via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific carrier by its ID.\n\n## Path Parameters\n- `id`: UUID of the carrier\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of CarrierDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/carriers/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/carriers/search" : {
      "post" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Search carriers",
        "description" : "Returns a paginated list of carriers filtered by optional criteria.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of carriers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/carriers/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Get carrier by ID",
        "description" : "Returns full carrier details by ID.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Carrier details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Delete carrier (soft delete)",
        "description" : "\nSoft deletes a carrier with optimistic locking by version.\n\n## Path Parameters\n- `id`: UUID of the carrier to delete\n\n## Query Parameters\n- `version`: Current version of the carrier for optimistic locking\n\n## Response\nReturns success indication.\n\n## Error Handling\nReturns error if version mismatch (optimistic locking conflict).\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Carrier deleted",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/carriers/by-code" : {
      "post" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Get carrier by code",
        "description" : "\nReturns full carrier details by its code within a specific warehouse.\n\n## Request Body\n- `warehouseId`: UUID of the warehouse\n- `code`: Carrier code\n\n## Response\nCarrierDto containing complete information about the carrier.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Carrier lookup parameters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierByCodeRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Carrier details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/carriers/new" : {
      "post" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Create new carrier template",
        "description" : "\nCreates a new carrier template with default values.\nThis endpoint returns an unsaved carrier DTO that can be modified and then\nsaved using the POST /carriers endpoint.\n\n## Response\nReturns a CarrierDto with default values and no ID (not yet saved).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Parameters for new carrier template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New carrier template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/carriers/copy/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Copy existing carrier",
        "description" : "\nCreates a copy of an existing carrier. The copied carrier will have:\n- No ID (id = null)\n- Version = 0\n- Name prefixed with \"Copy of\"\n\nThe copied carrier is not saved automatically and must be saved using POST /carriers.\n\n## Path Parameters\n- `id`: UUID of the carrier to copy\n\n## Response\nReturns a CarrierDto representing the copied carrier (not yet saved).\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Carrier ID (UUID) to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied carrier template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Source carrier not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/carriers" : {
      "put" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Update existing carrier",
        "description" : "\nUpdates an existing carrier.\n\n## Request Body\nCarrierIncomeDto with carrier data (must include id and version for optimistic locking).\n\n## Response\nReturns the updated CarrierDto.\n\n## Error Handling\nReturns 409 Conflict if there are validation errors, version mismatch, or the carrier doesn't exist.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Carrier data for update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated carrier",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Create new carrier",
        "description" : "\nCreates a new carrier.\n\n## Request Body\nCarrierIncomeDto with carrier data (id should be null or missing).\n\n## Response\nReturns the created CarrierDto.\n\n## Error Handling\nReturns 409 Conflict if there are validation errors or conflicts.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Carrier data for creation",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created carrier",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/carriers/light" : {
      "post" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Get light carrier DTOs",
        "description" : "\nReturns light carrier DTOs for a list of ID+version pairs.\nOnly returns carriers that have changed (version mismatch) or were deleted.\nMaximum 100 items per request.\n\n## Request Body\nList of IdVersionDto objects containing:\n- `id`: Carrier UUID\n- `version`: Expected version (optional)\n\n## Response\nList of CarrierLightDto containing only changed/deleted items.\n\n## Validation\nThrows 400 Bad Request if more than 100 items are requested.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of carrier ID and version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of light carrier DTOs (only changed/deleted)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierLightDto"
                  },
                  "title" : "List<CarrierLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/carriers/minimal/search" : {
      "post" : {
        "tags" : [ "Inventory - Carriers" ],
        "summary" : "Search minimal carrier data",
        "description" : "\nReturns minimal carrier data (ID and name only) filtered by optional criteria.\nUseful for autocomplete and selection lists.\n\n## Query Parameters\n- `limit`: Maximum number of results (default 51, maximum 51)\n\n## Request Body\nOptional FilterRequest for filtering results.\n\n## Response\nList of IdNamePreviewDto containing id and name.\n\n## Validation\nThrows 400 Bad Request if limit exceeds 51.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of results (default 51, max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of minimal carrier data (ID and name)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types/sse" : {
      "get" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Get container types stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof container types for the current tenant.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Get container types count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof container types matching the specified filters for the current tenant.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types/sse/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Get single container type via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific container type by its ID.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types/search" : {
      "post" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Search container types",
        "description" : "\nSearch and retrieve paginated list of container types with optional filtering and sorting.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of container types",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Get container type by ID",
        "description" : "\nRetrieve a single container type by its unique identifier.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Container Type ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Container type details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Container type not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Delete container type",
        "description" : "\nSoft delete a container type by marking it as deleted.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Container Type ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Version number for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Container type soft deleted",
            "headers" : { }
          },
          "409" : {
            "description" : "Version mismatch",
            "headers" : { }
          },
          "404" : {
            "description" : "Container type not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types/new" : {
      "post" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Get new container type template",
        "description" : "\nRetrieve a new container type template with default values pre-populated.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New container type template with default values",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types/copy/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Copy existing container type",
        "description" : "\nCreate a copy of an existing container type with a new ID and reset version.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Container Type ID (UUID) to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied container type with new ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Source container type not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types" : {
      "put" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Update existing container type",
        "description" : "\nUpdate an existing container type with the provided data.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Container type data with ID and version",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Container type updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - version mismatch or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Container type not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Create new container type",
        "description" : "\nCreate a new container type with the provided data.\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Container type created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types/code-pattern/check" : {
      "post" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Check a code pattern against a sample code",
        "description" : "\nEvaluates a code pattern that need not be saved yet against a sample code. Returns whether the pattern matches the\nsample whole, and every other non-deleted container type whose stored pattern also matches it, ordered by number;\nthe type named by containerTypeId is left out. Nothing is written. A pattern that does not compile, or cannot finish\nmatching the sample within the time budget, is rejected on the codePattern field.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "The pattern under test, a sample code and the type under edit",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeCodePatternCheckRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Whether the pattern claims the sample, and the other types that claim it",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeCodePatternCheckResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The pattern does not compile or is too complex, or a value is blank or too long",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types/light" : {
      "post" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Get lightweight container type data",
        "description" : "\nRetrieve lightweight container type data for multiple container types by their IDs and versions.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of container type ID-version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight container type data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeLightDto"
                  },
                  "title" : "List<ContainerTypeLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types/minimal/search" : {
      "post" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Search container types (minimal data)",
        "description" : "\nSearch container types and retrieve minimal data (ID and name only) for UI elements like autocomplete dropdowns.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal container type data (ID and name only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/container-types/by-code" : {
      "get" : {
        "tags" : [ "Inventory - Container Types" ],
        "summary" : "Resolve container types by a scanned code",
        "description" : "\nReturns every non-deleted container type whose code pattern matches the scanned code whole, ordered by number.\nAn empty list means no type claims the code; several entries mean the caller chooses.\n",
        "parameters" : [ {
          "name" : "code",
          "in" : "query",
          "description" : "The scanned container code",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "The container types claiming the code, ordered by number",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "The code is blank or longer than 100 characters",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lot-tracking-policies/sse" : {
      "get" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Get lot tracking policies stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof lot tracking policies for the current tenant. The endpoint streams paginated\npolicies as they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /lot-tracking-policies/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"number,desc\")\n- `stagedRequestId`: ID returned from POST /lot-tracking-policies/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<LotTrackingPolicyDto>\ncontaining the current page of policies matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns policies for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lot-tracking-policies/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Get lot tracking policies count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof lot tracking policies matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /lot-tracking-policies/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /lot-tracking-policies/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts policies for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lot-tracking-policies/sse/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Get single lot tracking policy via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific lot tracking policy by its ID.\n\n## Usage\nConnect to this SSE endpoint with the policy ID in the path parameter.\nReceive continuous updates as the policy data changes.\n\n## Path Parameters\n- `id`: UUID of the lot tracking policy\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized LotTrackingPolicyDto\ncontaining the full policy details.\n\n## Authentication\nRequires authentication. Only returns policies for the authenticated user's tenant.\n\n## Errors\n- Returns error event if policy ID is missing or invalid\n- Returns null events if policy is deleted or not found\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lot-tracking-policies/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lot-tracking-policies/search" : {
      "post" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Search lot tracking policies",
        "description" : "\nReturns a paginated list of lot tracking policies filtered by optional criteria.\nOptimized for list views. Use query parameters for pagination and sorting.\n\n## Method\nPOST /lot-tracking-policies/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"number,desc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns Page<LotTrackingPolicyDto> with items and pagination metadata.\n\n## Authentication\nRequires authentication. Only returns policies for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of lot tracking policies",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lot-tracking-policies/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Get lot tracking policy by ID",
        "description" : "\nReturns full details of a single lot tracking policy.\n\n## Method\nGET /lot-tracking-policies/{id}\n\n## Path Parameters\n- `id`: UUID of the lot tracking policy\n\n## Response\nLotTrackingPolicyDto containing the full policy details.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if the policy is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Lot Tracking Policy ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Lot tracking policy details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Lot tracking policy not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Delete lot tracking policy (soft delete)",
        "description" : "\nPerforms a soft delete of a lot tracking policy using optimistic locking.\n\n## Method\nDELETE /lot-tracking-policies/{id}\n\n## Path Parameters\n- `id`: UUID of the lot tracking policy\n\n## Query Parameters\n- `version`: Short value of the current entity version for optimistic locking\n\n## Response\nEmpty response on success.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Lot Tracking Policy ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Version number for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Lot tracking policy soft deleted",
            "headers" : { }
          },
          "409" : {
            "description" : "Version mismatch",
            "headers" : { }
          },
          "404" : {
            "description" : "Lot tracking policy not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lot-tracking-policies/new" : {
      "post" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Get new lot tracking policy template",
        "description" : "\nReturns a new lot tracking policy template with default values for creating a new policy.\n\n## Method\nPOST /lot-tracking-policies/new\n\n## Response\nLotTrackingPolicyDto with default values that can be used as a template for creating a new policy.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New lot tracking policy template with default values",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lot-tracking-policies/copy/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Copy existing lot tracking policy",
        "description" : "\nCreates a copy of an existing lot tracking policy. The copied policy will have:\n- No ID (id = null)\n- Version = 0\n- Name prefixed with \"Copy of\"\n\nThe copied policy is not saved automatically and must be saved using POST /lot-tracking-policies.\n\n## Path Parameters\n- `id`: UUID of the lot tracking policy to copy\n\n## Response\nReturns a LotTrackingPolicyDto representing the copied policy (not yet saved).\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Lot Tracking Policy ID (UUID) to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied lot tracking policy template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Source lot tracking policy not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lot-tracking-policies" : {
      "put" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Update lot tracking policy",
        "description" : "\nUpdates an existing lot tracking policy from the provided payload and returns the updated policy.\nThe policy data will be validated and normalized according to business rules.\n\n## Method\nPUT /lot-tracking-policies\n\n## Request Body\nLotTrackingPolicyIncomeDto with a non-null ID and version for the policy to update.\n\n## Response\nLotTrackingPolicyDto with the updated policy details.\n\n## Validation Rules\n- FEFO policies: specificationStage forced to AT_PICK_PLANNING, indicators forced to false\n- SERIAL_REFERENCE policies: if indicateOnOutbound=true, specificationStage forced to AT_PICKING\n- STOCK_CONTROL policies: both indicators forced to false\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 409 on conflict (version mismatch)\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Lot tracking policy data with ID and version",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lot tracking policy updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - version mismatch or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Lot tracking policy not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Create lot tracking policy",
        "description" : "\nCreates a new lot tracking policy from the provided payload and returns the full policy details.\nThe policy data will be validated and normalized according to business rules.\n\n## Method\nPOST /lot-tracking-policies\n\n## Request Body\nLotTrackingPolicyIncomeDto describing the policy to create.\n\n## Response\nLotTrackingPolicyDto with the persisted policy details.\n\n## Validation Rules\n- FEFO policies: specificationStage forced to AT_PICK_PLANNING, indicators forced to false\n- SERIAL_REFERENCE policies: if indicateOnOutbound=true, specificationStage forced to AT_PICKING\n- STOCK_CONTROL policies: both indicators forced to false\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 409 on conflict\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Lot tracking policy created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - uniqueness or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lot-tracking-policies/light" : {
      "post" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Get lightweight lot tracking policy data",
        "description" : "\nReturns lightweight lot tracking policy data for efficient client-side synchronization.\nGiven a list of IDs and versions, returns only those records that are deleted or have version mismatches.\n\n## Method\nPOST /lot-tracking-policies/light\n\n## Request Body\nList<IdVersionDto> containing the IDs and versions to check. Maximum 100 items.\n\n## Response\nList<LotTrackingPolicyLightDto> containing only records that need to be updated on the client.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 400 if more than 100 items are provided\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of lot tracking policy ID-version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight lot tracking policy data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyLightDto"
                  },
                  "title" : "List<LotTrackingPolicyLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/lot-tracking-policies/minimal/search" : {
      "post" : {
        "tags" : [ "Inventory - Lot Tracking Policies" ],
        "summary" : "Search lot tracking policies (minimal data)",
        "description" : "\nSearch lot tracking policies and retrieve minimal data (ID and name only) for UI elements like autocomplete dropdowns.\n\n## Method\nPOST /lot-tracking-policies/minimal/search\n\n## Query Parameters\n- `limit`: Maximum number of items (max 51)\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns List<IdNamePreviewDto> containing ID and name of matching policies.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 400 if limit exceeds 51\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal lot tracking policy data (ID and name only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/sse" : {
      "get" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Get containers stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof containers for the current tenant. The endpoint streams paginated container\ndata as they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /containers/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /containers/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<ContainerDto>\ncontaining the current page of containers matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns containers for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockProductId",
          "in" : "query",
          "description" : "Stock scope: product; without it this list returns no stock",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "stockProductFeatureId",
          "in" : "query",
          "description" : "Stock scope: product feature",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "stockLotId",
          "in" : "query",
          "description" : "Stock scope: lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          }
        }, {
          "name" : "stockPackTypeId",
          "in" : "query",
          "description" : "Stock scope: pack type; without it only loose stock counts",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /containers/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ContainerDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Get containers count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof containers matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /containers/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /containers/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts containers for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /containers/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockProductId",
          "in" : "query",
          "description" : "Stock scope: product; without it this list returns no stock",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "stockProductFeatureId",
          "in" : "query",
          "description" : "Stock scope: product feature",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "stockLotId",
          "in" : "query",
          "description" : "Stock scope: lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          }
        }, {
          "name" : "stockPackTypeId",
          "in" : "query",
          "description" : "Stock scope: pack type; without it only loose stock counts",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count (Long)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/sse/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Get single container via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific container by its ID.\n\n## Usage\nConnect to this SSE endpoint with the container ID in the path parameter.\nReceive continuous updates as the container data changes.\n\n## Path Parameters\n- `id`: UUID of the container\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized ContainerDto\ncontaining the full container details.\n\n## Authentication\nRequires authentication. Only returns containers for the authenticated user's tenant.\n\n## Errors\n- Returns error event if container ID is missing or invalid\n- Returns null events if container is deleted or not found\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of ContainerWithStateDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerWithStateDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/in-transit/sse" : {
      "get" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Get containers in transit stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof containers in transit for the current tenant. The endpoint streams paginated\ncontainer data as they change in the database.\n\n## Filter Criteria (applied automatically)\n- Container is closed (status == CLOSED), top-level (parentContainerId == null) and not deleted\n- And one of:\n  - it travels to a target it has not reached yet (targetLocationId != null and locationId != targetLocationId), or\n  - automatic placement found no cell for it (placementFailure != null and targetLocationId == null)\n\nEach row carries targetSource, placementFailure, dominantProductId and lineCount.\n\n## Usage\n1. Optionally stage filters using POST /containers/in-transit/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\"). `locationId.name` and `targetLocationId.name` sort by\n  the current and target location names; rows without a target sort last in ascending order.\n- `stagedRequestId`: ID returned from POST /containers/in-transit/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<ContainerInTransitDto>\ncontaining the current page of containers in transit matching the filters and pagination.\nA sort the list cannot apply closes the stream with a `400` error event.\n\n## Authentication\nRequires authentication. Only returns containers for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /containers/in-transit/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ContainerInTransitDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.container.dto.ContainerWithStateDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/in-transit/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Get containers in transit count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof containers in transit matching the specified filters for the current tenant.\n\n## Filter Criteria (applied automatically)\n- Container is closed (status == CLOSED), top-level (parentContainerId == null) and not deleted\n- And one of:\n  - it travels to a target it has not reached yet (targetLocationId != null and locationId != targetLocationId), or\n  - automatic placement found no cell for it (placementFailure != null and targetLocationId == null)\n\n## Usage\n1. Optionally stage filters using POST /containers/in-transit/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /containers/in-transit/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts containers for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /containers/in-transit/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/in-transit/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Stage filters for in-transit SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests for containers in transit.\nThis endpoint accepts a JSON filter request body and returns a unique ID that can\nbe used with SSE endpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/{id}/movements/sse" : {
      "get" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Get container movements stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof movements for a specific container.\n\n## Path Parameters\n- `id`: UUID of the container to get movements for\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"performedAt,desc\")\n- `stagedRequestId`: ID returned from POST /containers/{id}/movements/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<ContainerMovementDto>\ncontaining the current page of movements matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns movements for containers in the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'performedAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /containers/{id}/movements/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ContainerMovementDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.container.dto.ContainerMovementDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/{id}/movements/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Get container movements count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof movements for a specific container matching the specified filters.\n\n## Path Parameters\n- `id`: UUID of the container to count movements for\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /containers/{id}/movements/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts movements for containers in the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /containers/{id}/movements/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count (Long)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/{id}/movements/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Stage filters for container movements SSE requests",
        "description" : "\nStores filter configuration for subsequent container movements SSE requests.\nThis endpoint accepts a JSON filter request body and returns a unique ID\nthat can be used with SSE endpoints to apply these filters.\n\n## Path Parameters\n- `id`: UUID of the container\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to movements SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored and associated with the user's session.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/search" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Search containers",
        "description" : "Returns a paginated list of containers filtered by optional criteria.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stock",
          "in" : "query",
          "description" : "SHOW returns stockQuantity per row; ONLY also keeps rows with stock above zero",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.extension.StockMode"
          }
        }, {
          "name" : "stockWarehouseId",
          "in" : "query",
          "description" : "Stock scope: warehouse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "stockProductId",
          "in" : "query",
          "description" : "Stock scope: product; without it this list returns no stock",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        }, {
          "name" : "stockProductFeatureId",
          "in" : "query",
          "description" : "Stock scope: product feature",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          }
        }, {
          "name" : "stockLotId",
          "in" : "query",
          "description" : "Stock scope: lot",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          }
        }, {
          "name" : "stockPackTypeId",
          "in" : "query",
          "description" : "Stock scope: pack type; without it only loose stock counts",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          }
        }, {
          "name" : "stockStorageOnly",
          "in" : "query",
          "description" : "Stock scope: loose stock and stock in storage containers only, leaving out picking carts and other working containers",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of containers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/in-transit" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Search containers in transit",
        "description" : "\nReturns a paginated list of containers still to be moved: in transit to a target location, or waiting for a cell placement could not find.\n\n## Filter Criteria (applied automatically)\n- Container is closed (status == CLOSED), top-level (parentContainerId == null) and not deleted\n- And one of:\n  - it travels to a target it has not reached yet (targetLocationId != null and locationId != targetLocationId), or\n  - automatic placement found no cell for it (placementFailure != null and targetLocationId == null)\n\nEach row carries targetSource, placementFailure, dominantProductId and lineCount.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction, e.g. 'createdAt,desc'\n\n## Request Body\nOptional FilterRequest for additional filtering criteria.\n\n## Response\nReturns Page<ContainerInTransitDto> containing:\n- Container metadata (id, number, deleted, createdAt, version)\n- All container fields (code, status, purpose, warehouse, etc.)\n- Current state fields (locationId, carrierId, currentWeight, currentVolume)\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of containers in transit",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.container.dto.ContainerWithStateDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Get container by ID",
        "description" : "Returns full container details by ID.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Container details with current state",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerWithStateDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Delete container (soft delete)",
        "description" : "\nSoft deletes a container with optimistic locking by version.\n\n## Path Parameters\n- `id`: UUID of the container to delete\n\n## Query Parameters\n- `version`: Current version of the container for optimistic locking\n\n## Response\nReturns success indication.\n\n## Error Handling\nReturns error if version mismatch (optimistic locking conflict).\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Container deleted",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/by-code" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Get container by code",
        "description" : "\nReturns full container details by its code within a specific warehouse.\n\n## Request Body\n- `warehouseId`: UUID of the warehouse\n- `code`: Container code (barcode)\n\n## Response\nContainerDto containing complete information about the container.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Container lookup parameters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerByCodeRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Container details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/new" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Create new container template",
        "description" : "\nCreates a new container template with default values for the specified product.\nThis endpoint returns an unsaved container DTO that can be modified and then\nsaved using the POST /containers endpoint.\n\n## Query Parameters\n- `productId`: UUID of the product for which to create the container\n\n## Response\nReturns a ContainerDto with default values and no ID (not yet saved).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Parameters for new container template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New container template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/copy/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Copy existing container",
        "description" : "\nCreates a copy of an existing container. The copied container will have:\n- No ID (id = null)\n- Version = 0\n- Name prefixed with \"Copy of\"\n\nThe copied container is not saved automatically and must be saved using POST /containers.\n\n## Path Parameters\n- `id`: UUID of the container to copy\n\n## Response\nReturns a ContainerDto representing the copied container (not yet saved).\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Copied container template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers" : {
      "put" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Update existing container",
        "description" : "\nUpdates an existing container.\n\n## Request Body\nContainerIncomeDto with container data (must include id and version for optimistic locking).\n\n## Response\nReturns the updated ContainerDto.\n\n## Error Handling\nReturns 409 Conflict if there are validation errors, version mismatch, or the container doesn't exist.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Container data for update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated container",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Create new container",
        "description" : "\nCreates a new container.\n\n## Request Body\nContainerIncomeDto with container data (id should be null or missing).\n\n## Response\nReturns the created ContainerDto.\n\n## Error Handling\nReturns 409 Conflict if there are validation errors or conflicts.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Container data for creation",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created container",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/light" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Get light container DTOs",
        "description" : "\nReturns light container DTOs for a list of ID+version pairs.\nOnly returns containers that have changed (version mismatch) or were deleted.\nMaximum 100 items per request.\n\n## Request Body\nList of IdVersionDto objects containing:\n- `id`: Container UUID\n- `version`: Expected version (optional)\n\n## Response\nList of ContainerLightDto containing only changed/deleted items.\n\n## Validation\nThrows 400 Bad Request if more than 100 items are requested.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of container ID and version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of light container DTOs (only changed/deleted)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerLightDto"
                  },
                  "title" : "List<ContainerLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/info" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Get container info DTOs",
        "description" : "\nReturns container info DTOs for a list of container IDs.\nReturns basic container information including type and packaging references.\n\n## Request Body\nList of ContainerId objects (UUIDs).\n\n## Response\nList of ContainerInfoDto containing:\n- `id`: Container UUID\n- `code`: Container code/name\n- `containerTypeId`: Reference to container type\n- `packagingId`: Reference to packaging product (nullable)\n\n## Use Cases\n- Getting container type and packaging information for multiple containers\n- Loading container references with key relationships\n- Building container selection lists with additional context\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of container IDs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
                },
                "title" : "List<ContainerId>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of container info DTOs",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerInfoDto"
                  },
                  "title" : "List<ContainerInfoDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/minimal/search" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Search minimal container data",
        "description" : "\nReturns minimal container data (ID and name only) filtered by optional criteria.\nUseful for autocomplete and selection lists.\n\n## Query Parameters\n- `limit`: Maximum number of results (default 51, maximum 51)\n\n## Request Body\nOptional FilterRequest for filtering results.\n\n## Response\nList of IdNamePreviewDto containing id and name.\n\n## Validation\nThrows 400 Bad Request if limit exceeds 51.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of results (default 51, max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of minimal container data (ID and name)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/{id}/transfer/to-location" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Transfer container to location",
        "description" : "\nTransfers a container to a specified location.\n\nValidates that:\n- Container exists and is not decommissioned\n- Target location type is allowed for container's purpose\n\nRecords the movement and checks if container arrived at its target location.\n\n## Path Parameters\n- `id`: UUID of the container to transfer\n\n## Request Body\nContainerTransferToLocationDto with:\n- `targetLocationId`: Target location UUID\n- `performedAt`: Timestamp when the transfer was performed\n- `performedById`: User who performed the transfer\n\n## Response\nContainerTransferResult with:\n- `containerId`: ID of transferred container\n- `arrivedAtTarget`: true if container arrived at its target location\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Transfer request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTransferToLocationDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Transfer result",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.port.ContainerTransferResult"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/{id}/transfer/to-carrier" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Transfer container to carrier",
        "description" : "\nTransfers a container to a carrier (cart, forklift, etc.).\n\nValidates that:\n- Container exists and is not decommissioned\n- Carrier exists and is available\n\nRecords the movement and updates container state.\n\n## Path Parameters\n- `id`: UUID of the container to transfer\n\n## Request Body\nContainerTransferToCarrierDto with:\n- `carrierId`: Target carrier UUID\n- `performedAt`: Timestamp when the transfer was performed\n- `performedById`: User who performed the transfer\n\n## Response\nContainerTransferResult with:\n- `containerId`: ID of transferred container\n- `arrivedAtTarget`: always false for carrier transfers\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Transfer request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTransferToCarrierDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Transfer result",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.port.ContainerTransferResult"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/{id}/placement/replan" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Re-plan a container's automatic placement",
        "description" : "\nRuns automatic placement for the container now and returns it as it stands afterwards.\n\n- 200: the container with targetLocationId/targetSource (PLACEMENT) or placementFailure, plus\n  dominantProductId and lineCount. A container placement does not apply to (not closed, not a storage\n  container, already in a STORAGE/PICKING cell, …) is returned with any stale placement target cleared.\n- 404: no container with this id is visible to the caller.\n- 409 CONTAINER_DOCUMENT_TARGET: the container's target was set by a document and is not re-planned.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "The container after the re-plan",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerWithStateDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Unknown container",
            "headers" : { }
          },
          "409" : {
            "description" : "CONTAINER_DOCUMENT_TARGET: the target belongs to a document",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/containers/{id}/movements/search" : {
      "post" : {
        "tags" : [ "Inventory - Containers" ],
        "summary" : "Search container movements",
        "description" : "\nReturns paginated list of movements for a specific container with optional filtering.\n\n## Path Parameters\n- `id`: UUID of the container to get movements for\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"performedAt,desc\")\n\n## Request Body\nOptional FilterRequest for additional filtering criteria (beyond the required containerId filter).\n\n## Response\nPage<ContainerMovementDto> containing movement records with:\n- `id`: Movement ID\n- `containerId`: Container ID\n- `movementType`: Type of movement (CREATED, MOVED, NESTED, UNNESTED, CLOSED, REOPENED)\n- `targetLocationId`: Target location (nullable)\n- `targetContainerId`: Target container for nesting (nullable)\n- `warehouseId`: Warehouse ID\n- `documentType`: Document type (nullable)\n- `documentId`: Document ID (nullable)\n- `performedAt`: Timestamp when movement was performed\n- `performedById`: User who performed the movement\n- `registeredAt`: Timestamp when movement was registered\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'performedAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of container movements",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.container.dto.ContainerMovementDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/sse" : {
      "get" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Get relocations stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof relocations for the current tenant. The endpoint streams paginated relocation\ndata as they change in the database.\n\n## Usage\n1. Stage filters using POST /relocations/sse/filters with JSON body\n2. Connect to this SSE endpoint with pagination parameters and X-SSE-Request-Id header\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /relocations/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<RelocationHeaderResponseDto>\ncontaining the current page of relocations matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns relocations for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /relocations/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<RelocationHeaderResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Get relocations count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof relocations matching the specified filters for the current tenant.\n\n## Usage\n1. Stage filters using POST /relocations/sse/filters with JSON body\n2. Connect to this SSE endpoint with WMS-SSE-Request-Id header\n3. Receive continuous count updates as data changes\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /relocations/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts relocations for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /relocations/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count (Long)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/sse/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Get single relocation via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific relocation by its ID.\n\n## Usage\nConnect to this SSE endpoint with the relocation ID in the path parameter.\nReceive continuous updates as the relocation data changes.\n\n## Path Parameters\n- `id`: UUID of the relocation\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized RelocationFullResponseDto\ncontaining the full relocation details including lines, executions and facts.\n\n## Authentication\nRequires authentication. Only returns relocations for the authenticated user's tenant.\n\n## Errors\n- Returns error event if relocation ID is missing or invalid\n- Returns null events if relocation is deleted or not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the relocation",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/java.util.UUID"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of RelocationFullResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/sse/wave/{waveId}" : {
      "get" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Get relocations by wave ID via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof all relocations associated with a specific wave.\n\n## Usage\nConnect to this SSE endpoint with the wave ID in the path parameter.\nReceive continuous updates as relocations change.\n\n## Path Parameters\n- `waveId`: UUID of the wave\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized List<RelocationHeaderResponseDto>\ncontaining all relocation headers for the specified wave.\n\n## Authentication\nRequires authentication. Only returns relocations for the authenticated user's tenant.\n\n## Notes\n- Returns all relocations without pagination\n- Excludes cancelled and deleted relocations\n",
        "parameters" : [ {
          "name" : "waveId",
          "in" : "path",
          "description" : "UUID of the wave",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/java.util.UUID"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of List<RelocationHeaderResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationHeaderResponseDto"
                  },
                  "title" : "List<RelocationHeaderResponseDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a request ID in the response\n3. Use the request ID in WMS-SSE-Request-Id header when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in cache (5 minutes TTL).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Raw JSON filter request",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/new" : {
      "post" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Get new relocation template",
        "description" : "\nReturns a template for creating a new relocation document with default values.\n\n## Response\nRelocationIncomeDto with default values:\n- Status: DRAFT\n- Document date: Current date\n- Empty lines list\n\n## Usage\nUse this endpoint to get a pre-filled template when creating new relocations\nin the UI. The response can be modified and submitted to the create endpoint.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse to put on the template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New relocation template with default values",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationIncomeDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/search" : {
      "post" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Search relocations",
        "description" : "\nReturns a paginated list of relocations filtered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"date,desc\")\n\n## Request Body\nOptional FilterRequest for filtering results by status, warehouse, date range, etc.\n\n## Response\nPage<RelocationHeaderResponseDto> containing relocation headers.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of relocation headers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Get relocation by ID",
        "description" : "\nReturns full relocation details by ID, including lines, executions and facts.\n\n## Path Parameters\n- `id`: UUID of the relocation\n\n## Response\nRelocationFullResponseDto with complete relocation data.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Relocation ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Full relocation details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationFullResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Relocation not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Update existing relocation",
        "description" : "\nUpdates an existing relocation document.\n\n## Path Parameters\n- `id`: UUID of the relocation to update\n\n## Request Body\nRelocationIncomeDto with updated relocation data (must include version for optimistic locking).\n\n## Response\nReturns the updated RelocationFullResponseDto.\n\n## Error Handling\nReturns 409 Conflict if version mismatch or validation errors.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Relocation ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Updated relocation data",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated relocation",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationFullResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Version mismatch or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Delete relocation (soft delete)",
        "description" : "\nSoft deletes a relocation with optimistic locking.\n\n## Path Parameters\n- `id`: UUID of the relocation to delete\n\n## Query Parameters\n- `version`: Current version for optimistic locking\n\n## Business Logic\n- Only DRAFT and CANCELED relocations can be deleted\n- Releases any remaining reservations and incoming stock\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Relocation ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Relocation deleted successfully",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "patch" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Change relocation status",
        "description" : "\nChanges the status of a relocation document.\n\n## Path Parameters\n- `id`: UUID of the relocation\n\n## Request Body\nChangeRelocationStatusRequestDto containing:\n- `status`: Target status (DRAFT, PLANNED, IN_PROGRESS, PARTIALLY_COMPLETED, COMPLETED, CANCELED)\n- `version`: Current version for optimistic locking\n\n## Status Transitions\n- DRAFT → PLANNED: Creates reservations and incoming stock\n- PLANNED → IN_PROGRESS: Automatic when first fact is registered\n- IN_PROGRESS → COMPLETED: All planned quantities executed\n- IN_PROGRESS → PARTIALLY_COMPLETED: Document closed with unexecuted items\n- Any → CANCELED: Releases all reservations and incoming stock\n\n## Error Handling\nReturns error if invalid status transition or version mismatch.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Relocation ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Status change request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.ChangeRelocationStatusRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Relocation status changed successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationFullResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Validation error or conflict",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations" : {
      "post" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Create new planned relocation",
        "description" : "\nCreates a new planned relocation document.\n\n## Request Body\nRelocationIncomeDto with relocation header and lines data.\n\n## Response\nReturns the created RelocationFullResponseDto.\n\n## Business Logic\n- Creates relocation in DRAFT or PLANNED status\n- When status is PLANNED, creates reservations at source locations\n- When status is PLANNED, creates incoming stock at target locations\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Relocation creation payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created relocation",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationFullResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Validation error or conflict",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/{id}/reversals" : {
      "post" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Reverse an ad-hoc relocation",
        "description" : "\nCreates and posts a new ad-hoc relocation that moves every fact of a posted ad-hoc relocation back:\nsource and target swap, source and target pack types swap. The original stays as it is.\n\nOnly a `COMPLETED` ad-hoc relocation with purpose `STANDARD` or `REVERSAL` can be reversed.\nThe new relocation has purpose `REVERSAL` and the note `Reversal of relocation #<number>`.\n\nStock control applies to the whole document: if the goods are no longer where the original put them,\nthe request fails with every short stock key listed.\n\n## Request Body\n- `version` — the version of the relocation the user saw; a different stored version answers 409.\n\n## Required right\n`inventory.relocations.post` in the relocation's warehouse.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Relocation ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Version of the relocation the user saw",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationReversalRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "The posted reversal",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationFullResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Not found, not reversible, a stock shortage or a target container that no longer accepts goods",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "No relocations.post right in the relocation's warehouse",
            "headers" : { }
          },
          "409" : {
            "description" : "The relocation changed since the user read it",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/{id}/facts" : {
      "post" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Register planned relocation fact",
        "description" : "\nRegisters a fact for an existing planned relocation.\n\n## Path Parameters\n- `id`: UUID of the relocation\n\n## Request Body\nRelocationFactIncomeDto containing:\n- Product, lot, and pack type information\n- Source and target locations/containers\n- Quantities (source pack, target pack, base)\n- Accounting date (executor is taken from authenticated context)\n\n## Business Logic\n- Validates sufficient stock at source location\n- Moves stock from source to target in StockLedger\n- Updates reservations and incoming stock\n- Automatically transitions PLANNED → IN_PROGRESS on first fact\n- Supports repack operations (different source/target pack types)\n- Refuses a fact on a completed, partially completed, cancelled or deleted relocation\n\n## Error Handling\n- Returns `400 Bad Request` with `ValidationErrorResponse` for structural and business validation errors\n- Returns `409 Conflict` only for database conflict/version mismatch\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Relocation ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Planned relocation fact payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationFactIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Registered fact",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationWithFactIdDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "409" : {
            "description" : "Database conflict (optimistic lock/version mismatch)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/adhoc/facts" : {
      "post" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Register ad-hoc relocation fact",
        "description" : "\nRegisters an ad-hoc (unplanned) relocation fact.\n\n## Request Body\nAdhocRelocationFactIncomeDto containing:\n- Warehouse ID\n- Product, lot, and pack type information\n- Source and target locations/containers\n- Quantities (source pack, target pack, base)\n- Accounting date (executor is taken from authenticated context)\n\n## Business Logic\n- Creates or finds existing ad-hoc relocation document for grouping\n- Groups facts by: executor, warehouse, current hour\n- Immediately moves stock from source to target\n- Document status is always COMPLETED\n- Supports repack operations (different source/target pack types)\n\n## Grouping Logic\nIf an ad-hoc relocation document exists for the same executor, warehouse,\nand within the current hour, the fact is added to that document.\nOtherwise, a new ad-hoc relocation document is created.\n\n## Response\nReturns the ID of the created relocation fact.\n\n## Error Handling\n- Returns `400 Bad Request` with `ValidationErrorResponse` for structural and business validation errors\n- Returns `409 Conflict` only for database conflict/version mismatch\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Ad-hoc relocation fact payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.AdhocRelocationFactIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created fact ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "RelocationFactId"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "409" : {
            "description" : "Database conflict (optimistic lock/version mismatch)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/adhoc/facts/search" : {
      "post" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Search ad-hoc relocation facts",
        "description" : "\nReturns ad-hoc relocation facts for a specific warehouse using id-based pagination.\n\n## Method\nPOST /relocations/adhoc/facts/search\n\n## Request Body\nAdhocRelocationFactSearchRequestDto containing:\n- `warehouseId` (required)\n- `afterId` (optional, exclusive cursor)\n- `limit` (required)\n\n## Validation\n- `warehouseId` must not be NIL\n- `limit` must be between 10 and 50\n\n## Pagination\n- Sorted by fact `id` ascending\n- If `afterId` is provided, only facts with `id > afterId` are returned\n- Response includes:\n  - `items`: page items\n  - `hasMore`: whether a next page exists\n  - `nextAfterId`: cursor for the next request (null when `hasMore = false`)\n\n## Filters\n- Returns only ad-hoc facts (`isAdhoc = true`)\n- Excludes facts from deleted relocations\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Ad-hoc relocation fact search payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.AdhocRelocationFactSearchRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Ad-hoc relocation facts page",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.AdhocRelocationFactSearchResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation error",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/light" : {
      "post" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Get lightweight relocation data",
        "description" : "\nReturns lightweight relocation data for efficient client-side synchronization.\nGiven a list of IDs and versions, returns only those records that are deleted or have version mismatches.\n\n## Method\nPOST /relocations/light\n\n## Request Body\nList<IdVersionDto> containing the IDs and versions to check. Maximum 100 items.\n\n## Response\nList<RelocationLightDto> containing only records that need to be updated on the client.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 400 if more than 100 items are provided\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID and version pairs to check for updates (max 100 items)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight relocation data for records that need updates",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationLightDto"
                  },
                  "title" : "List<RelocationLightDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid request (e.g., too many items)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/minimal/search" : {
      "post" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Search minimal relocation records",
        "description" : "\nReturns minimal relocation records (id and document-number label only) for autocomplete/lookup fields.\n\n## Usage\nPOST /relocations/minimal/search\nwith an optional FilterRequest JSON body (e.g. filter by document number and non-deleted).\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal relocation data (id and number label only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/relocations/lot-required" : {
      "post" : {
        "tags" : [ "Inventory - Relocations" ],
        "summary" : "Check if lot is required for relocation",
        "description" : "\nReturns whether a lot must be specified for relocation facts.\nA product category that does not use lots never requires one; only then does the\nwarehouse tracking policy decide.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Lot requirement query",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationLotRequirementRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lot requirement for relocation facts",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationLotRequirementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/sse" : {
      "get" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Get inventory counts stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof inventory counts for the current tenant. The endpoint streams paginated inventory count\nheaders as they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /counts/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /counts/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<InventoryCountHeaderResponseDto>\ncontaining the current page of inventory counts matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns inventory counts for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /counts/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<InventoryCountHeaderResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Get inventory counts count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof inventory counts matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /counts/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /counts/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts inventory counts for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /counts/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/sse/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Get single inventory count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific inventory count by its ID.\n\n## Usage\nConnect to this SSE endpoint with the inventory count ID in the path parameter.\nReceive continuous updates as the inventory count data changes.\n\n## Path Parameters\n- `id`: UUID of the inventory count\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized InventoryCountFullResponseDto\ncontaining the full inventory count details including executions.\n\n## Authentication\nRequires authentication. Only returns inventory counts for the authenticated user's tenant.\n\n## Errors\n- Returns error event if inventory count ID is missing or invalid\n- Returns null events if inventory count is deleted or not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the inventory count",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of InventoryCountFullResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/search" : {
      "post" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Search inventory counts",
        "description" : "\nReturns a paginated list of inventory counts filtered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"date,desc\")\n\n## Request Body\nOptional FilterRequest for filtering results by status, warehouse, date range, etc.\n\n## Response\nPage<InventoryCountHeaderResponseDto> containing inventory count headers.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of inventory count headers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/active" : {
      "get" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Find active inventory count by location or container",
        "description" : "\nLooks up active inventory count documents by scope endpoint.\n\n## Query Parameters\n- `locationId`: UUID of location (optional, mutually exclusive with containerId)\n- `containerId`: UUID of container (optional, mutually exclusive with locationId)\n\nExactly one of `locationId` or `containerId` must be provided.\n\n## Active statuses\n- DRAFT\n- IN_PROGRESS\n\n## Response\nAlways returns HTTP 200 with one of statuses:\n- `NOT_FOUND`: no active documents matched\n- `SINGLE`: exactly one active document matched (`inventoryCountId` is filled)\n- `MULTIPLE`: more than one active document matched\n",
        "parameters" : [ {
          "name" : "locationId",
          "in" : "query",
          "description" : "Location ID (UUID), mutually exclusive with containerId",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "containerId",
          "in" : "query",
          "description" : "Container ID (UUID), mutually exclusive with locationId",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Active inventory count lookup result",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountActiveLookupResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid query parameters",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Get inventory count by ID",
        "description" : "\nReturns full inventory count details by ID, including plan lines, facts, and executions.\n\n## Path Parameters\n- `id`: UUID of the inventory count\n\n## Response\nInventoryCountFullResponseDto with complete inventory count data including:\n- Header information (status, scope, accounting date)\n- Executions (plan/fact comparison with variances)\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Inventory count ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Full inventory count details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountFullResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Inventory count not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Update existing inventory count",
        "description" : "\nUpdates an existing inventory count document.\n\n## Path Parameters\n- `id`: UUID of the inventory count to update\n\n## Request Body\nInventoryCountUpdateDto with updated inventory count data (must include version for optimistic locking).\n\n## Response\nReturns the updated InventoryCountFullResponseDto.\n\n## Error Handling\n- Returns 409 Conflict if version mismatch or validation errors\n- Returns error if document is not in DRAFT status\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Inventory count ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Updated inventory count data",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountUpdateDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated inventory count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountFullResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Version mismatch or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Delete inventory count (soft delete)",
        "description" : "\nSoft deletes an inventory count with optimistic locking.\n\n## Path Parameters\n- `id`: UUID of the inventory count to delete\n\n## Query Parameters\n- `version`: Current version for optimistic locking\n\n## Business Logic\n- Only DRAFT and CANCELLED documents can be deleted\n- Soft delete marks the document as deleted without removing data\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Inventory count ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Inventory count deleted successfully",
            "headers" : { }
          },
          "409" : {
            "description" : "Version mismatch or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/new" : {
      "post" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Get new inventory count template",
        "description" : "\nReturns a new inventory count template with default values for creating a new inventory count.\n\n## Method\nPOST /counts/new\n\n## Response\nInventoryCountFullResponseDto with default values that can be used as a template for creating a new inventory count.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse to put on the template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New inventory count template with default values",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts" : {
      "post" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Create new inventory count",
        "description" : "\nCreates a new inventory count document.\n\n## Request Body\nInventoryCountCreateDto with inventory count header and scope configuration.\n\n## Response\nReturns the created InventoryCountFullResponseDto.\n\n## Business Logic\n- Creates inventory count in DRAFT status\n- Calculates initial plan based on stock ledger balances\n- Scope determines which locations/containers/products are included\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Inventory count creation payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountCreateDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created inventory count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountFullResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Validation error or conflict",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/{id}/status" : {
      "post" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Change inventory count status",
        "description" : "\nChanges the status of an inventory count document.\n\n## Path Parameters\n- `id`: UUID of the inventory count\n\n## Request Body\nInventoryCountStatusChangeDto containing:\n- `targetStatus`: Target status (DRAFT, IN_PROGRESS, ENTERING_RESULTS, COMPLETED, CANCELLED)\n- `version`: Current version for optimistic locking\n\n## Status Transitions\n- DRAFT -> IN_PROGRESS: Starts counting process, recalculates plan\n- IN_PROGRESS -> ENTERING_RESULTS: Requires at least one fact entry\n- ENTERING_RESULTS -> COMPLETED: Posts variances to stock ledger\n- Any -> CANCELLED: Cancels the count, reverses any postings\n\n## Server-Driven Transitions\n- COMPLETED request -> PENDING_CONFIRMATION: auto-routed for ASSISTED/VARIANCE counts when variances exist\n- IN_PROGRESS -> ENTERING_RESULTS: auto-triggered when the first fact is submitted via POST /counts/{id}/facts\n- PENDING_CONFIRMATION -> ENTERING_RESULTS: auto-triggered when a new fact is submitted via POST /counts/{id}/facts (clears the variance flag)\n\n## Error Handling\nReturns error if invalid status transition or version mismatch.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Inventory count ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Status change request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountStatusChangeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Inventory count status changed successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountHeaderResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Validation error or conflict",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/{id}/facts" : {
      "post" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Add fact entry to inventory count",
        "description" : "\nAdds a fact entry (actual count result) to an inventory count.\n\n## Path Parameters\n- `id`: UUID of the inventory count\n\n## Request Body\nInventoryCountFactIncomeDto containing:\n- Product, lot, and feature information\n- Location or container where count was performed\n- Pack type and counted quantities\n- Stock status\n\n## Business Logic\n- Validates fact is within document scope\n- Validates product passes filter if specified\n- Records executor and timestamp\n- Updates execution snapshot\n- Accepted while document is in IN_PROGRESS, ENTERING_RESULTS, or PENDING_CONFIRMATION\n- When accepted in IN_PROGRESS or PENDING_CONFIRMATION, status is automatically advanced to ENTERING_RESULTS; coming from PENDING_CONFIRMATION also clears the stale variance flag. The pinned balance snapshot is preserved in both cases\n\n## Error Handling\nReturns localized error if fact is outside scope or invalid.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Inventory count ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Inventory count fact entry payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountFactIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Fact added successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountFullResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Validation error or conflict",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/{id}/recalculate" : {
      "post" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Recalculate inventory count plan",
        "description" : "\nRecalculates the plan for an inventory count against a specific operational balance snapshot.\n\n## Path Parameters\n- `id`: UUID of the inventory count\n\n## Request Body\nInventoryCountRecalculateDto containing:\n- `balanceSnapshotAt`: Cutoff timestamp (exclusive) for StockLedger `registeredAt`. The plan is\n  aggregated from all ledger movements registered before this moment. Use this to freeze the\n  operational balance at a known point in time.\n- `version`: Current version for optimistic locking\n\n## Business Logic\n- Aggregates StockLedger entries by `registeredAt` (not `accountingDate`) — operational, not accounting, reconciliation.\n- Excludes movements originating from this document.\n- Updates execution snapshot with the new plan and pins the snapshot cutoff on the document.\n\n## Error Handling\n- Returns error if document is in PENDING_CONFIRMATION, COMPLETED, or CANCELLED status.\n- Returns 409 Conflict if version mismatch.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Inventory count ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Recalculation request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountRecalculateDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Plan recalculated successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountFullResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Validation error or conflict",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/light" : {
      "post" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Get lightweight inventory count data",
        "description" : "\nReturns lightweight inventory count data for efficient client-side synchronization.\n\n## Usage\nPOST /counts/light\nwith body: List<IdVersionDto> containing ID and version pairs\n\n## Response\nList<InventoryCountLightDto> containing only records that need to be updated on the client.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID and version pairs to check for updates (max 100 items)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight inventory count data for records that need updates",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountLightDto"
                  },
                  "title" : "List<InventoryCountLightDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid request (e.g., too many items)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/minimal/search" : {
      "post" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Search minimal inventory count records",
        "description" : "\nReturns minimal inventory count records (id and document-number label only) for autocomplete/lookup fields.\n\n## Usage\nPOST /counts/minimal/search\nwith an optional FilterRequest JSON body (e.g. filter by document number and non-deleted).\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal inventory count data (id and number label only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/counts/lot-required" : {
      "post" : {
        "tags" : [ "Inventory - Inventory Counts" ],
        "summary" : "Get lot requirement for inventory count facts",
        "description" : "\nResolves whether lot is required for inventory count facts from the product category's\nlot usage flag and, when it is set, the applicable lot tracking policy for the specified\nwarehouse and product category.\n\n## Request Body\nInventoryCountLotRequirementRequestDto containing:\n- `warehouseId`: Warehouse where count is performed\n- `productCategoryId`: Product category to resolve policy for\n\n## Response\nInventoryCountLotRequirementResponseDto containing:\n- `inputMode`: NOT_TRACKED, OPTIONAL or REQUIRED\n\n## Rules\n- Category does not use lots => NOT_TRACKED (policies are not consulted)\n- FEFO => REQUIRED\n- STOCK_CONTROL => REQUIRED\n- SERIAL_REFERENCE => OPTIONAL\n- No policy => OPTIONAL\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Lot requirement query",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountLotRequirementRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lot requirement for inventory count facts",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountLotRequirementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/opening-balances/sse" : {
      "get" : {
        "tags" : [ "Inventory - Opening Balances" ],
        "summary" : "Stream opening balances",
        "description" : "\nStreams a page of opening balance headers and sends it again whenever a document on it is saved,\nconfirmed, returned to draft or deleted.\n\n## Headers\n- `WMS-SSE-Request-Id`: id returned by POST /opening-balances/sse/filters\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"date,desc\")\n\n## Event Format\nPage<OpeningBalanceResponseDto>\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'date,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /opening-balances/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<OpeningBalanceResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/opening-balances/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Opening Balances" ],
        "summary" : "Stream the opening balance count",
        "description" : "\nStreams the number of opening balances matching the staged filters and sends it again on every change.\n\n## Headers\n- `WMS-SSE-Request-Id`: id returned by POST /opening-balances/sse/filters\n\n## Event Format\nLong\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /opening-balances/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/opening-balances/sse/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Opening Balances" ],
        "summary" : "Stream an opening balance",
        "description" : "\nStreams one opening balance with its lines and sends it again on every change. A deleted document is\nsent once more with `deleted = true`.\n\n## Path Parameters\n- `id`: UUID of the opening balance\n\n## Event Format\nOpeningBalanceResponseDto\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the opening balance",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of OpeningBalanceResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/opening-balances/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Opening Balances" ],
        "summary" : "Stage opening balance filters for SSE",
        "description" : "\nStores a FilterRequest for the opening balance streams and returns its id.\n\n## Usage\nPOST /opening-balances/sse/filters with an optional FilterRequest JSON body, then pass the returned id\nin the `WMS-SSE-Request-Id` header of GET /opening-balances/sse and GET /opening-balances/sse/count.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/opening-balances/search" : {
      "post" : {
        "tags" : [ "Inventory - Opening Balances" ],
        "summary" : "Search opening balances",
        "description" : "\nReturns a paginated list of opening balances filtered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"date,desc\")\n\n## Request Body\nOptional FilterRequest for filtering results by status, warehouse, date range, etc.\n\n## Response\nPage<OpeningBalanceResponseDto> containing opening balance documents.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'date,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of opening balance documents",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/opening-balances/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Opening Balances" ],
        "summary" : "Get opening balance by ID",
        "description" : "\nReturns full opening balance details by ID, including all document lines.\n\n## Path Parameters\n- `id`: UUID of the opening balance\n\n## Response\nOpeningBalanceResponseDto with complete document data including header information and lines.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Opening balance ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Full opening balance details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Opening balance not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inventory - Opening Balances" ],
        "summary" : "Delete opening balance (soft delete)",
        "description" : "\nSoft deletes an opening balance with optimistic locking.\n\n## Path Parameters\n- `id`: UUID of the opening balance to delete\n\n## Query Parameters\n- `version`: Current version for optimistic locking\n\n## Business Logic\n- Soft delete marks the document as deleted without removing data.\n\n## Error Handling\n- Returns 409 Conflict on version mismatch or validation errors.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Opening balance ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Opening balance deleted successfully",
            "headers" : { }
          },
          "409" : {
            "description" : "Version mismatch or validation error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/opening-balances/new" : {
      "post" : {
        "tags" : [ "Inventory - Opening Balances" ],
        "summary" : "Get new opening balance template",
        "description" : "\nReturns a new opening balance template with default values for creating a new document.\n\n## Method\nPOST /opening-balances/new\n\n## Response\nOpeningBalanceResponseDto with default values that can be used as a template for creating a new opening balance.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse to put on the template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New opening balance template with default values",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/opening-balances" : {
      "post" : {
        "tags" : [ "Inventory - Opening Balances" ],
        "summary" : "Save opening balance (create or update)",
        "description" : "\nCreates or updates an opening balance document (idempotent).\n\nThe document status is carried inside the payload, so a single endpoint handles\ncreate, edit, confirm and un-confirm. Provide an `Idempotency-Key` header.\n\n## Request Body\nOpeningBalanceIncomeDto with the document header, status, default location and lines.\n\n## Response\nReturns the saved OpeningBalanceResponseDto.\n\n## Business Logic\n- A DRAFT document is persisted without posting to the stock ledger.\n- A CONFIRMED document validates confirm invariants and posts opening stock to the ledger.\n\n## Error Handling\n- Returns 409 Conflict on version mismatch or validation errors.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Opening balance create/update payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Saved opening balance",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Validation error or conflict",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/opening-balances/light" : {
      "post" : {
        "tags" : [ "Inventory - Opening Balances" ],
        "summary" : "Get lightweight opening balance data",
        "description" : "\nReturns lightweight opening balance data for efficient client-side synchronization.\n\n## Usage\nPOST /opening-balances/light\nwith body: List<IdVersionDto> containing ID and version pairs\n\n## Response\nList of lightweight records containing only entries that need to be updated on the client.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID and version pairs to check for updates (max 100 items)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight opening balance data for records that need updates",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceLightDto"
                  },
                  "title" : "List<OpeningBalanceLightDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid request (e.g., too many items)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/opening-balances/minimal/search" : {
      "post" : {
        "tags" : [ "Inventory - Opening Balances" ],
        "summary" : "Search minimal opening balance records",
        "description" : "\nReturns minimal opening balance records (id and document-number label only) for autocomplete/lookup fields.\n\n## Usage\nPOST /opening-balances/minimal/search\nwith an optional FilterRequest JSON body (e.g. filter by document number and non-deleted).\n\n## Query Parameters\n- `limit`: Maximum number of items to return (max 51)\n\n## Response\nList<IdNamePreviewDto> containing the id and the document-number label.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal opening balance data (id and number label only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/locations/{locationId}/state" : {
      "get" : {
        "tags" : [ "Inventory - Location States" ],
        "summary" : "Get location state",
        "description" : "\nReturns the current state of a location including inventory status and blocking information.\n\n## Path Parameters\n- `locationId`: UUID of the location\n\n## Response\nLocationStateResponseDto containing:\n- Inventory status (COUNT_REQUIRED, COUNT_COMPLETED)\n- Last counted timestamp\n- Blocking type and details\n- Document that changed inventory status\n",
        "parameters" : [ {
          "name" : "locationId",
          "in" : "path",
          "description" : "Location ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Location state details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.location.dto.LocationStateResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Location state not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/locations/{locationId}/state/blocking" : {
      "post" : {
        "tags" : [ "Inventory - Location States" ],
        "summary" : "Set location blocking",
        "description" : "\nSets blocking on a location to prevent certain operations.\n\n## Path Parameters\n- `locationId`: UUID of the location\n\n## Request Body\nLocationBlockingRequestDto containing:\n- `blockingType`: Type of blocking (PLACEMENT_BLOCKED, PICKING_BLOCKED, FULLY_BLOCKED)\n- `blockedById`: User ID who is setting the blocking\n\n## Blocking Types\n- `PLACEMENT_BLOCKED`: Prevents putaway/placement operations\n- `PICKING_BLOCKED`: Prevents picking/retrieval operations\n- `FULLY_BLOCKED`: Prevents all operations\n\n## Response\nReturns the updated LocationStateResponseDto.\n",
        "parameters" : [ {
          "name" : "locationId",
          "in" : "path",
          "description" : "Location ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "warehouseId",
          "in" : "query",
          "description" : "Warehouse ID (UUID)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Blocking configuration",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.location.dto.LocationBlockingRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated location state",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.location.dto.LocationStateResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inventory - Location States" ],
        "summary" : "Clear location blocking",
        "description" : "\nRemoves blocking from a location.\n\n## Path Parameters\n- `locationId`: UUID of the location\n\n## Response\nReturns the updated LocationStateResponseDto with blocking cleared.\n",
        "parameters" : [ {
          "name" : "locationId",
          "in" : "path",
          "description" : "Location ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Updated location state with blocking cleared",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.location.dto.LocationStateResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Location state not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/balances/sse" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get stock ledger balances stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof stock ledger balances for the current tenant. The endpoint streams paginated\nbalance data as they change in the database.\n\n## Usage\n1. Stage filters using POST /stock-ledger/balances/sse/filters with JSON body\n2. Connect to this SSE endpoint with pagination parameters and WMS-SSE-Request-Id header\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"updatedAt,desc\")\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/balances/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<StockLedgerBalanceDto>\ncontaining the current page of balances matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns balances for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'updatedAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/balances/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<StockLedgerBalanceDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerBalanceDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/balances/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get stock ledger balances count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof stock ledger balances matching the specified filters for the current tenant.\n\n## Usage\n1. Stage filters using POST /stock-ledger/balances/sse/filters with JSON body\n2. Connect to this SSE endpoint with WMS-SSE-Request-Id header\n3. Receive continuous count updates as data changes\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/balances/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts balances for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/balances/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count (Long)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/balances/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a request ID in the response\n3. Use the request ID in WMS-SSE-Request-Id header when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in cache (5 minutes TTL).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Raw JSON filter request",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/entries/sse" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get stock ledger entries stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof stock ledger entries for the current tenant. The endpoint streams paginated\nledger entry data as they change in the database.\n\n## Usage\n1. Stage filters using POST /stock-ledger/entries/sse/filters with JSON body\n2. Connect to this SSE endpoint with pagination parameters and WMS-SSE-Request-Id header\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"registeredAt,desc\")\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/entries/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<StockLedgerEntryDto>\ncontaining the current page of ledger entries matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns entries for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'registeredAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/entries/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<StockLedgerEntryDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerEntryDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/entries/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get stock ledger entries count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof stock ledger entries matching the specified filters for the current tenant.\n\n## Usage\n1. Stage filters using POST /stock-ledger/entries/sse/filters with JSON body\n2. Connect to this SSE endpoint with WMS-SSE-Request-Id header\n3. Receive continuous count updates as data changes\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/entries/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts entries for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/entries/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count (Long)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/entries/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a request ID in the response\n3. Use the request ID in WMS-SSE-Request-Id header when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\nAvailable filter fields:\n- warehouseId: filter by warehouse\n- productId: filter by product\n- productFeatureId: filter by product feature\n- lotId: filter by lot\n- packTypeId: filter by pack type\n- ownerId: filter by owner party\n- locationId: filter by location\n- containerId: filter by container\n- status: filter by stock status (AVAILABLE, QUARANTINE, DAMAGED, etc.)\n- entryType: filter by entry type (RECEIPT_EXTERNAL, SHIPMENT_EXTERNAL, ADJUSTMENT, etc.)\n- documentType: filter by document type\n- documentId: filter by document ID\n- accountingDate: filter by accounting date\n- registeredAt: filter by registration timestamp\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in cache (5 minutes TTL).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Raw JSON filter request",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/external-movements/sse" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get external stock movements stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof external stock movement ledger entries for the current tenant. The endpoint\nstreams paginated movement data as they change in the database.\n\n## Usage\n1. Stage filters using POST /stock-ledger/external-movements/sse/filters with JSON body\n2. Connect to this SSE endpoint with pagination parameters and WMS-SSE-Request-Id header\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"registeredAt,desc\")\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/external-movements/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<ExternalStockMovementResponseDto>\ncontaining the current page of movements matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns movements for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'registeredAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/external-movements/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ExternalStockMovementResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.ExternalStockMovementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/external-movements/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get external stock movements count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof external stock movement ledger entries matching the specified filters for\nthe current tenant.\n\n## Usage\n1. Stage filters using POST /stock-ledger/external-movements/sse/filters with JSON body\n2. Connect to this SSE endpoint with WMS-SSE-Request-Id header\n3. Receive continuous count updates as data changes\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/external-movements/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts movements for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/external-movements/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count (Long)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/external-movements/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Stage filters for external stock movement SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a request ID in the response\n3. Use the request ID in WMS-SSE-Request-Id header when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\nAvailable filter fields:\n- warehouseId: filter by warehouse\n- productId: filter by product\n- productFeatureId: filter by product feature\n- lotId: filter by lot\n- packTypeId: filter by pack type\n- ownerId: filter by owner party\n- locationId: filter by location\n- containerId: filter by container\n- status: filter by stock status (AVAILABLE, QUARANTINE, DAMAGED, etc.)\n- partyId: filter by external counterparty (supplier/customer)\n- externalDocumentType: filter by external document type (INBOUND_ORDER, RECEIPT, OUTBOUND_ORDER)\n- externalDocumentId: filter by external document UUID\n- movementType: filter by movement type (RECEIPT, ADJUSTMENT, SHIPMENT)\n- documentType: filter by source document type\n- documentId: filter by source document UUID\n- accountingDate: filter by accounting date\n- registeredAt: filter by registration timestamp\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in cache (5 minutes TTL).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Raw JSON filter request",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/incoming-movements/sse" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get incoming stock ledger entries stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof incoming stock ledger entries for the current tenant. The endpoint streams\npaginated ledger data as it changes in the database.\n\n## Usage\n1. Stage filters using POST /stock-ledger/incoming-movements/sse/filters with JSON body\n2. Connect to this SSE endpoint with pagination parameters and WMS-SSE-Request-Id header\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"registeredAt,desc\")\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/incoming-movements/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<IncomingStockLedgerEntryResponseDto>\ncontaining the current page of entries matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns entries for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'registeredAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/incoming-movements/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<IncomingStockLedgerEntryResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.IncomingStockLedgerEntryResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/incoming-movements/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get incoming stock ledger entries count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof incoming stock ledger entries matching the specified filters for the\ncurrent tenant.\n\n## Usage\n1. Stage filters using POST /stock-ledger/incoming-movements/sse/filters with JSON body\n2. Connect to this SSE endpoint with WMS-SSE-Request-Id header\n3. Receive continuous count updates as data changes\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/incoming-movements/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts entries for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/incoming-movements/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count (Long)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/incoming-movements/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Stage filters for incoming stock ledger SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a request ID in the response\n3. Use the request ID in WMS-SSE-Request-Id header when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\nAvailable filter fields:\n- warehouseId: filter by warehouse\n- productId: filter by product\n- productFeatureId: filter by product feature\n- lotId: filter by lot\n- packTypeId: filter by pack type\n- ownerId: filter by owner party\n- locationId: filter by target location\n- containerId: filter by target container\n- sourceDocumentType: filter by source document type (PUTAWAY, RELOCATION)\n- sourceDocumentId: filter by source document UUID\n- entryType: filter by entry type (PUTAWAY, REPLENISHMENT, PRODUCTION, RELOCATION)\n- accountingDate: filter by accounting date\n- registeredAt: filter by registration timestamp\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in cache (5 minutes TTL).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Raw JSON filter request",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/reservations/sse" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get reservation ledger entries stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof reservation ledger entries for the current tenant. The endpoint streams\npaginated ledger data as it changes in the database.\n\n## Usage\n1. Stage filters using POST /stock-ledger/reservations/sse/filters with JSON body\n2. Connect to this SSE endpoint with pagination parameters and WMS-SSE-Request-Id header\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"registeredAt,desc\")\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/reservations/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<ReservationLedgerEntryResponseDto>\ncontaining the current page of entries matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns entries for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'registeredAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/reservations/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ReservationLedgerEntryResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerEntryResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/reservations/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get reservation ledger entries count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof reservation ledger entries matching the specified filters for the current\ntenant.\n\n## Usage\n1. Stage filters using POST /stock-ledger/reservations/sse/filters with JSON body\n2. Connect to this SSE endpoint with WMS-SSE-Request-Id header\n3. Receive continuous count updates as data changes\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/reservations/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts entries for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/reservations/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count (Long)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/reservations/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Stage filters for reservation ledger SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a request ID in the response\n3. Use the request ID in WMS-SSE-Request-Id header when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\nAvailable filter fields:\n- warehouseId: filter by warehouse\n- productId: filter by product\n- productFeatureId: filter by product feature\n- lotId: filter by lot\n- packTypeId: filter by pack type\n- ownerId: filter by owner party\n- locationId: filter by reservation location\n- containerId: filter by reservation container\n- sourceDocumentType: filter by source document type (PUTAWAY, RELOCATION, PICKING)\n- sourceDocumentId: filter by source document UUID\n- entryType: filter by entry type (PUTAWAY, OUTBOUND, QC, HOLD, RELOCATION)\n- accountingDate: filter by accounting date\n- registeredAt: filter by registration timestamp\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in cache (5 minutes TTL).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Raw JSON filter request",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/reservations/balances/sse" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get reservation ledger balances stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof reservation ledger balances for the current tenant. The endpoint streams\npaginated balance data as reservation rows change in the database.\n\n## Usage\n1. Stage filters using POST /stock-ledger/reservations/balances/sse/filters\n2. Connect to this SSE endpoint with pagination parameters and WMS-SSE-Request-Id header\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"updatedAt,desc\")\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/reservations/balances/sse/filters\n\n## Event Format\nJSON-serialized Page<ReservationLedgerBalanceDto>.\n\n## Authentication\nRequires authentication. Only returns balances for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'updatedAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/reservations/balances/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ReservationLedgerBalanceDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerBalanceDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/reservations/balances/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get reservation ledger balances count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof reservation ledger balances matching the specified filters for the current tenant.\n\n## Usage\n1. Stage filters using POST /stock-ledger/reservations/balances/sse/filters\n2. Connect to this SSE endpoint with WMS-SSE-Request-Id header\n3. Receive continuous count updates as data changes\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/reservations/balances/sse/filters\n\n## Event Format\nServer-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts balances for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/reservations/balances/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count (Long)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/reservations/balances/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Stage filters for reservation-balance SSE requests",
        "description" : "\nStores filter configuration for subsequent reservation-balance SSE requests.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a request ID in the response\n3. Use the request ID in WMS-SSE-Request-Id header when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in cache (5 minutes TTL).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Raw JSON filter request",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/internal-movements/sse" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get internal stock movements stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof internal stock movement ledger entries for the current tenant. The endpoint\nstreams paginated movement data as it changes in the database.\n\n## Usage\n1. Stage filters using POST /stock-ledger/internal-movements/sse/filters with JSON body\n2. Connect to this SSE endpoint with pagination parameters and WMS-SSE-Request-Id header\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"registeredAt,desc\")\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/internal-movements/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<InternalStockMovementResponseDto>\ncontaining the current page of movements matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns movements for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'registeredAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/internal-movements/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<InternalStockMovementResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.InternalStockMovementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/internal-movements/sse/count" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get internal stock movements count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof internal stock movement ledger entries matching the specified filters for\nthe current tenant.\n\n## Usage\n1. Stage filters using POST /stock-ledger/internal-movements/sse/filters with JSON body\n2. Connect to this SSE endpoint with WMS-SSE-Request-Id header\n3. Receive continuous count updates as data changes\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /stock-ledger/internal-movements/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts movements for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /stock-ledger/internal-movements/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count (Long)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/internal-movements/sse/filters" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Stage filters for internal stock movement SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a request ID in the response\n3. Use the request ID in WMS-SSE-Request-Id header when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\nAvailable filter fields:\n- warehouseId / corWarehouseId: filter by source / destination warehouse\n- productId: filter by product\n- productFeatureId: filter by product feature\n- lotId: filter by lot\n- packTypeId / corPackTypeId: filter by source / destination pack type\n- ownerId: filter by owner party\n- locationId / corLocationId: filter by source / destination location\n- containerId / corContainerId: filter by source / destination container\n- status / corStatus: filter by source / destination stock status\n- documentType: filter by source document type\n- documentId: filter by source document UUID\n- accountingDate: filter by accounting date\n- registeredAt: filter by registration timestamp\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in cache (5 minutes TTL).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Raw JSON filter request",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/balances/search" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Search stock ledger balances",
        "description" : "\nReturns a paginated list of stock ledger balances filtered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"updatedAt,desc\")\n\n## Request Body\nOptional FilterRequest for filtering results by warehouse, product, location, status, etc.\n\n## Response\nPage<StockLedgerBalanceDto> containing stock balance records.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'updatedAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of stock ledger balances",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerBalanceDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/balances/as-of/search" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Search stock ledger balances as of a point in time",
        "description" : "\nReturns a paginated list of aggregated stock ledger balances as of a given point in time.\n\nQuery aggregates the immutable `stock_ledger` table on the fly: signed `pack_quantity`\nis summed across all 9 dimensions (warehouse, product, feature, lot, packType, owner,\nlocation, container, status) while filtering entries by either `accounting_date` (business\nbasis) or `registered_at` (system basis). Rows whose net balance is zero are excluded.\n\n## Query Parameters\n- `timeBasis` (required): `accounting_date` or `registration_date`.\n- `date` (required): the anchor value. Accepts **either** a `LocalDate` (`yyyy-MM-dd`)\n  **or** a UTC Instant (`yyyy-MM-ddTHH:mm:ss[.SSS]Z`). Interpretation depends on `timeBasis`:\n    - `accounting_date` — business date basis (day-level by storage design):\n        * `LocalDate` → used as the as-of date.\n        * `Instant` → must be **start-of-day UTC** (`T00:00:00Z`); otherwise the request is\n          rejected with `400`. The UTC calendar date of the instant is used.\n    - `registration_date` — system time basis (instant-level):\n        * `Instant` → used as the as-of moment.\n        * `LocalDate` → promoted to the start of that day in **UTC** (`T00:00:00Z`). Callers\n          operating in non-UTC timezones should supply an explicit UTC Instant if they need\n          a moment other than `00:00:00Z`.\n- `position`: Position (0-based).\n- `size`: Number of items per page.\n- `sort`: Sort field and direction (e.g., `productId,asc`).\n\n## Instant format\nInstants MUST be supplied in UTC (trailing `Z`). Offsets other than `Z` are rejected.\n\n## Request Body\nOptional FilterRequest for filtering by dimensions (warehouseId, productId, status, etc.).\n\n## Response\n`Page<StockLedgerBalanceAsOfDto>` containing point-in-time balance rows.\n\n## Notes\n- Use `accounting_date` for bookkeeping and turnover reports — it honours back-dated entries.\n- Use `registration_date` only for audit / reproducibility (what the system saw at moment X).\n",
        "parameters" : [ {
          "name" : "timeBasis",
          "in" : "query",
          "description" : "Time basis: accounting_date (business) or registration_date (system)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.TimeBasisDto"
          }
        }, {
          "name" : "date",
          "in" : "query",
          "description" : "Anchor value. Accepts either a LocalDate (yyyy-MM-dd) or a UTC Instant (yyyy-MM-ddTHH:mm:ssZ). See endpoint description for per-timeBasis rules.",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'productId,asc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters by dimensions (warehouseId, productId, status, ...)",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of point-in-time stock ledger balances",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerBalanceAsOfDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/balances/by-container/{containerId}" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "List stock balances with availability for a container, a location or a product",
        "description" : "\nReturns a flat list of stock balances within the requested scope, each enriched\nwith the currently reserved quantity (summed across reservation source documents)\nand the derived available quantity.\n\nThree URL variants share this response shape and behavior:\n\n- `GET /stock-ledger/balances/by-container/{containerId}` — balances physically tied\n  to the given container.\n- `GET /stock-ledger/balances/by-location/{locationId}` — loose stock keyed directly\n  to the location plus stock in containers physically located there.\n- `GET /stock-ledger/balances/by-product/{productId}?warehouseId={warehouseId}` — every\n  balance of the product, narrowed to one warehouse when `warehouseId` is given; rows are\n  ordered by warehouse, location name and container code.\n\n## Path Parameters\n- `containerId`: UUID of the container (container variant)\n- `locationId`: UUID of the location (location variant)\n- `productId`: UUID of the product (product variant)\n\n## Query Parameters\n- `warehouseId` (product variant, optional): UUID of the warehouse to narrow to\n\n## Response\nList<StockBalanceWithAvailabilityDto>. Reserved quantity is attributed only to\nbalances with status = AVAILABLE; any other status reports reserved and available as 0.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Flat list of stock balances with availability for the requested scope",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockBalanceWithAvailabilityDto"
                  },
                  "title" : "List<StockBalanceWithAvailabilityDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/balances/by-location/{locationId}" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "List stock balances with availability for a container, a location or a product",
        "description" : "\nReturns a flat list of stock balances within the requested scope, each enriched\nwith the currently reserved quantity (summed across reservation source documents)\nand the derived available quantity.\n\nThree URL variants share this response shape and behavior:\n\n- `GET /stock-ledger/balances/by-container/{containerId}` — balances physically tied\n  to the given container.\n- `GET /stock-ledger/balances/by-location/{locationId}` — loose stock keyed directly\n  to the location plus stock in containers physically located there.\n- `GET /stock-ledger/balances/by-product/{productId}?warehouseId={warehouseId}` — every\n  balance of the product, narrowed to one warehouse when `warehouseId` is given; rows are\n  ordered by warehouse, location name and container code.\n\n## Path Parameters\n- `containerId`: UUID of the container (container variant)\n- `locationId`: UUID of the location (location variant)\n- `productId`: UUID of the product (product variant)\n\n## Query Parameters\n- `warehouseId` (product variant, optional): UUID of the warehouse to narrow to\n\n## Response\nList<StockBalanceWithAvailabilityDto>. Reserved quantity is attributed only to\nbalances with status = AVAILABLE; any other status reports reserved and available as 0.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Flat list of stock balances with availability for the requested scope",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockBalanceWithAvailabilityDto"
                  },
                  "title" : "List<StockBalanceWithAvailabilityDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/balances/by-product/{productId}" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "List stock balances with availability for a container, a location or a product",
        "description" : "\nReturns a flat list of stock balances within the requested scope, each enriched\nwith the currently reserved quantity (summed across reservation source documents)\nand the derived available quantity.\n\nThree URL variants share this response shape and behavior:\n\n- `GET /stock-ledger/balances/by-container/{containerId}` — balances physically tied\n  to the given container.\n- `GET /stock-ledger/balances/by-location/{locationId}` — loose stock keyed directly\n  to the location plus stock in containers physically located there.\n- `GET /stock-ledger/balances/by-product/{productId}?warehouseId={warehouseId}` — every\n  balance of the product, narrowed to one warehouse when `warehouseId` is given; rows are\n  ordered by warehouse, location name and container code.\n\n## Path Parameters\n- `containerId`: UUID of the container (container variant)\n- `locationId`: UUID of the location (location variant)\n- `productId`: UUID of the product (product variant)\n\n## Query Parameters\n- `warehouseId` (product variant, optional): UUID of the warehouse to narrow to\n\n## Response\nList<StockBalanceWithAvailabilityDto>. Reserved quantity is attributed only to\nbalances with status = AVAILABLE; any other status reports reserved and available as 0.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Flat list of stock balances with availability for the requested scope",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockBalanceWithAvailabilityDto"
                  },
                  "title" : "List<StockBalanceWithAvailabilityDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/entries/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get stock ledger entry by ID",
        "description" : "Returns a single stock ledger entry by its unique identifier.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Stock ledger entry details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerEntryDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Entry not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/entries/search" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Search stock ledger entries",
        "description" : "\nReturns a paginated list of stock ledger entries for the current tenant filtered\nby optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"registeredAt,desc\")\n\n## Request Body\nOptional FilterRequest for filtering results.\n\nAvailable filter fields:\n- warehouseId: filter by warehouse\n- productId: filter by product\n- productFeatureId: filter by product feature\n- lotId: filter by lot\n- packTypeId: filter by pack type\n- ownerId: filter by owner party\n- locationId: filter by location\n- containerId: filter by container\n- status: filter by stock status (AVAILABLE, QUARANTINE, DAMAGED, etc.)\n- entryType: filter by entry type (RECEIPT_EXTERNAL, RECEIPT_TRANSFER, SHIPMENT_EXTERNAL, SHIPMENT_TRANSFER, ADJUSTMENT)\n- documentType: filter by source document type (RECEIPT, RELOCATION, PUTAWAY, PICKING, SHIPMENT, INVENTORY_COUNT, OPENING_BALANCE, CONTAINER_CIRCULATION, CONTAINER_DECOMMISSION)\n- documentId: filter by source document UUID\n- accountingDate: filter by accounting date\n- registeredAt: filter by registration timestamp\n\n## Response\nPage<StockLedgerEntryDto> containing ledger entry records.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'registeredAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of stock ledger entries",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerEntryDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/external-movements/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get external stock movement by ID",
        "description" : "Returns a single external stock movement ledger entry by its unique identifier.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "External stock movement details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.ExternalStockMovementResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Movement not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/external-movements/search" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Search external stock movements",
        "description" : "\nReturns a paginated list of external stock movement ledger entries for the current\ntenant filtered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"registeredAt,desc\")\n\n## Request Body\nOptional FilterRequest for filtering results.\n\nAvailable filter fields:\n- warehouseId: filter by warehouse\n- productId: filter by product\n- productFeatureId: filter by product feature\n- lotId: filter by lot\n- packTypeId: filter by pack type\n- ownerId: filter by owner party\n- locationId: filter by location\n- containerId: filter by container\n- status: filter by stock status (AVAILABLE, QUARANTINE, DAMAGED, etc.)\n- partyId: filter by external counterparty (supplier/customer)\n- externalDocumentType: filter by external document type (INBOUND_ORDER, RECEIPT, OUTBOUND_ORDER)\n- externalDocumentId: filter by external document UUID\n- movementType: filter by movement type (RECEIPT, ADJUSTMENT, SHIPMENT)\n- documentType: filter by source document type\n- documentId: filter by source document UUID\n- accountingDate: filter by accounting date\n- registeredAt: filter by registration timestamp\n\n## Response\nPage<ExternalStockMovementResponseDto> containing movement records.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'registeredAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of external stock movements",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.ExternalStockMovementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/incoming-movements/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get incoming stock ledger entry by ID",
        "description" : "Returns a single incoming stock ledger entry by its unique identifier.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Incoming stock ledger entry details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.IncomingStockLedgerEntryResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Entry not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/incoming-movements/search" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Search incoming stock ledger entries",
        "description" : "\nReturns a paginated list of incoming stock ledger entries for the current\ntenant filtered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"registeredAt,desc\")\n\n## Request Body\nOptional FilterRequest for filtering results.\n\nAvailable filter fields:\n- warehouseId: filter by warehouse\n- productId: filter by product\n- productFeatureId: filter by product feature\n- lotId: filter by lot\n- packTypeId: filter by pack type\n- ownerId: filter by owner party\n- locationId: filter by target location\n- containerId: filter by target container\n- sourceDocumentType: filter by source document type (PUTAWAY, RELOCATION)\n- sourceDocumentId: filter by source document UUID\n- entryType: filter by entry type (PUTAWAY, REPLENISHMENT, PRODUCTION, RELOCATION)\n- accountingDate: filter by accounting date\n- registeredAt: filter by registration timestamp\n\n## Response\nPage<IncomingStockLedgerEntryResponseDto> containing ledger entry records.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'registeredAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of incoming stock ledger entries",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.IncomingStockLedgerEntryResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/reservations/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get reservation ledger entry by ID",
        "description" : "Returns a single reservation ledger entry by its unique identifier.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Reservation ledger entry details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerEntryResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Entry not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/reservations/search" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Search reservation ledger entries",
        "description" : "\nReturns a paginated list of reservation ledger entries for the current tenant\nfiltered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"registeredAt,desc\")\n\n## Request Body\nOptional FilterRequest for filtering results.\n\nAvailable filter fields:\n- warehouseId: filter by warehouse\n- productId: filter by product\n- productFeatureId: filter by product feature\n- lotId: filter by lot\n- packTypeId: filter by pack type\n- ownerId: filter by owner party\n- locationId: filter by reservation location\n- containerId: filter by reservation container\n- sourceDocumentType: filter by source document type (PUTAWAY, RELOCATION, PICKING)\n- sourceDocumentId: filter by source document UUID\n- entryType: filter by entry type (PUTAWAY, OUTBOUND, QC, HOLD, RELOCATION)\n- accountingDate: filter by accounting date\n- registeredAt: filter by registration timestamp\n\n## Response\nPage<ReservationLedgerEntryResponseDto> containing ledger entry records.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'registeredAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of reservation ledger entries",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerEntryResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/reservations/balances/search" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Search reservation ledger balances",
        "description" : "\nReturns a paginated list of reservation ledger balances filtered by optional criteria.\nContainer-bound rows are enriched with the container's current location_id and\ntop-level parent container via a LEFT JOIN against container_state.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"updatedAt,desc\")\n\n## Request Body\nOptional FilterRequest for filtering results by warehouse, product, location,\ncontainer, source document, etc.\n\n## Response\nPage<ReservationLedgerBalanceDto> containing reservation balance records.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'updatedAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of reservation ledger balances",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerBalanceDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/internal-movements/{id}" : {
      "get" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Get internal stock movement by ID",
        "description" : "Returns a single internal stock movement ledger entry by its unique identifier.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Internal stock movement details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.InternalStockMovementResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Movement not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/internal-movements/search" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Search internal stock movements",
        "description" : "\nReturns a paginated list of internal stock movement ledger entries for the\ncurrent tenant filtered by optional criteria. Each row carries both source\ndimensions and the destination correspondence (`cor*` fields), representing\na single internal warehouse transfer.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"registeredAt,desc\")\n\n## Request Body\nOptional FilterRequest for filtering results.\n\nAvailable filter fields:\n- warehouseId / corWarehouseId: filter by source / destination warehouse\n- productId: filter by product\n- productFeatureId: filter by product feature\n- lotId: filter by lot\n- packTypeId / corPackTypeId: filter by source / destination pack type\n- ownerId: filter by owner party\n- locationId / corLocationId: filter by source / destination location\n- containerId / corContainerId: filter by source / destination container\n- status / corStatus: filter by source / destination stock status\n- documentType: filter by source document type (RELOCATION, PUTAWAY, etc.)\n- documentId: filter by source document UUID\n- accountingDate: filter by accounting date\n- registeredAt: filter by registration timestamp\n\n## Response\nPage<InternalStockMovementResponseDto> containing movement records.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'registeredAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of internal stock movements",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.InternalStockMovementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/turnover-sheet/search" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Search turnover-balance sheet (оборотно-сальдова відомість)",
        "description" : "\nReturns the turnover-balance sheet (оборотно-сальдова відомість) for every dimension\ncombination over a specified period: opening balance, period turnover split by direction\nand source, and closing balance.\n\n## Query Parameters\n- `timeBasis` (required): `accounting_date` or `registration_date`.\n- `from`, `to` (required): inclusive period bounds as `yyyy-MM-dd`.\n\n## Filters\nOptional `FilterRequest` in the request body to narrow by any stock dimension\n(`warehouseId`, `productId`, `status`, ...).\n\n## Response\n`List<StockTurnoverSheetRowDto>` — one row per dimension combination whose opening or\nclosing balance is non-zero, or whose period turnover is non-zero. Not paginated.\n",
        "parameters" : [ {
          "name" : "timeBasis",
          "in" : "query",
          "description" : "Time basis: accounting_date (business) or registration_date (system).",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.TimeBasisDto"
          }
        }, {
          "name" : "from",
          "in" : "query",
          "description" : "Inclusive start of the period (yyyy-MM-dd).",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "to",
          "in" : "query",
          "description" : "Inclusive end of the period (yyyy-MM-dd).",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters for dimensions (warehouse, product, status, etc.)",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Turnover-balance sheet rows for the period (no pagination).",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockTurnoverSheetRowDto"
                  },
                  "title" : "List<StockTurnoverSheetRowDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/stock-ledger/movements/search" : {
      "post" : {
        "tags" : [ "Inventory - Stock Ledger" ],
        "summary" : "Search stock movements (flat period listing)",
        "description" : "\nReturns a paginated flat list of stock-movement ledger events during a period, from\nboth the external (supplier / customer / adjustment) and the internal (inter-warehouse\ntransfer) ledger tables. Scope the result (for example, to a single warehouse or\nproduct) via the universal `FilterRequest` body.\n\nEvery row carries the common 9 stock dimensions (warehouse, product, feature, lot,\npackType, owner, location, container, status) projected onto the row's queried-side.\nThe event's quantity is split into two non-negative magnitude columns —\n`receiptPackQuantity` / `issuePackQuantity` (and mirroring `receiptQuantity` /\n`issueQuantity` at the base-UoM level). Exactly one of each pair is non-zero per row.\n\n## Classification rules\n- **External rows**:\n  * `movementType = RECEIPT` → receipt (`receipt*` populated).\n  * `movementType = SHIPMENT` → issue (`issue*` populated).\n  * `movementType = ADJUSTMENT` → receipt if `packQuantity > 0`, issue if\n    `packQuantity < 0`. Rows with `packQuantity = 0` are excluded.\n- **Internal rows** (inter-warehouse transfers only — same-warehouse\n  location-to-location moves, where `warehouseId = corWarehouseId`, are always excluded):\n  Emitted twice so both sides of the transfer are visible in a system-wide view:\n  * Destination side (receipt): dimensions come from the `cor_*` columns;\n    `warehouseId` exposes the destination warehouse.\n  * Source side (issue): dimensions come from the base columns; `warehouseId` exposes\n    the source warehouse.\n\nNarrow to one warehouse by passing `{\"warehouseId\":{\"eq\":\"...\"}}` in the body: the\nfilter applies to the queried-side column of every leg, so you see only receipts\nlanding on that warehouse and only issues leaving it.\n\n## Query Parameters\n- `timeBasis` (required): `accounting_date` or `registration_date`.\n- `from`, `to` (required): inclusive period bounds as `yyyy-MM-dd`.\n    - For `accounting_date` the SQL predicate is `accounting_date BETWEEN from AND to`.\n    - For `registration_date` the predicate is\n      `registered_at >= from@00:00:00Z AND registered_at < (to + 1 day)@00:00:00Z`\n      (end-exclusive upper bound in UTC so the whole calendar day `to` is included).\n- `position`: Position (0-based).\n- `size`: Number of items per page.\n- `sort`: Sort field and direction (e.g., `accountingDate,desc`). When omitted, the\n  result is sorted by the `timeBasis` field in descending order.\n\n## Request Body\nOptional `FilterRequest` for filtering by common dimensions (`warehouseId`,\n`productId`, `lotId`, `productFeatureId`, `packTypeId`, `ownerId`, `locationId`,\n`containerId`, `status`). Filters are applied to the queried-side column of each leg.\n\n## Response\n`Page<StockMovementDto>` — flat rows interleaved by direction and source. Callers can\ndistinguish the underlying ledger via the `source` field (`EXTERNAL` / `INTERNAL`) and\ntell receipts from issues by inspecting which quantity column is non-zero.\n",
        "parameters" : [ {
          "name" : "timeBasis",
          "in" : "query",
          "description" : "Time basis: accounting_date (business) or registration_date (system).",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.TimeBasisDto"
          }
        }, {
          "name" : "from",
          "in" : "query",
          "description" : "Inclusive start of the period (yyyy-MM-dd).",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "to",
          "in" : "query",
          "description" : "Inclusive end of the period (yyyy-MM-dd).",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based).",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page.",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'accountingDate,desc'. Defaults to the timeBasis field in descending order.",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters by common dimensions (warehouseId, productId, status, ...).",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of flat stock movements for the period.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.StockMovementDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/warehouses/{warehouseId}/pack-conversion/sse" : {
      "get" : {
        "tags" : [ "Inventory - Pack Conversion" ],
        "summary" : "Stream the state of the warehouse's pack-to-base run",
        "description" : "The first event is the current state. `runId` is the Idempotency-Key of the run, so a client recognises its own. `IDLE` means nothing runs and no result from the last 24 hours is kept. A run whose process died is reported `FAILED`. `failure` is `BLOCKED` or `REFERENCE_MODE` when the preview's 409 explains it, `ERROR` otherwise. In every state `relocations` and `convertedRows` hold the portions already committed, so a failed run shows what it converted; `totalRows` is the run's total as last read.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of the warehouse's run state",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionStatusDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/warehouses/{warehouseId}/pack-conversion/preview" : {
      "get" : {
        "tags" : [ "Inventory - Pack Conversion" ],
        "summary" : "Preview the pack-to-base transition helper",
        "description" : "What the transition helper would move from pack types to the base unit on this warehouse: rows, products, cells and containers, rows not in AVAILABLE, and how many relocations a run creates (one per owner in each portion of up to 5,000 rows). When a run could not start, answers the same 409 the start answers, with the reason as text: documents holding packs, picked goods, negative pack stock or open counts (PACK_DOCUMENTS_OPEN), or a warehouse already in the reference mode (PACK_CONVERSION_REFERENCE_MODE).",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "A run could start",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionPreviewDto"
                }
              }
            }
          },
          "409" : {
            "description" : "A run could not start; the code and the text say why",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inventory/warehouses/{warehouseId}/pack-conversion" : {
      "post" : {
        "tags" : [ "Inventory - Pack Conversion" ],
        "summary" : "Run the pack-to-base transition helper",
        "description" : "Moves every pack-held stock row of the warehouse, of any status, to the base unit in the same cell or container, as posted ad-hoc relocations with purpose PACK_TO_BASE. The warehouse must be in the stock-control mode, and nothing else may hold packs: no pack reservations, picked goods, negative pack stock or open counts with stock-control pack facts.\n\n**Accepted, not done.** The run is queued and converts portions of up to 5,000 rows, each in its own transaction and its own relocation per owner; while a portion runs, stock writes of this warehouse wait. A run that stops keeps its committed portions, and a new run converts the rest. Follow it on the warehouse's stream (`.../pack-conversion/sse`); `runId` is the Idempotency-Key. The same key again returns the same run. The helper never switches the mode.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "202" : {
            "description" : "The run was queued",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionAcceptedDto"
                }
              }
            }
          },
          "409" : {
            "description" : "PACK_DOCUMENTS_OPEN, PACK_CONVERSION_REFERENCE_MODE, or PACK_CONVERSION_RUNNING when another run of this warehouse is in progress",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/party/parties/sse" : {
      "get" : {
        "tags" : [ "Party" ],
        "summary" : "Get parties stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof parties for the current tenant. The endpoint streams paginated party data as it\nchanges in the database.\n\n## Usage\n1. Optionally stage filters using POST /api/v1/party/parties/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /api/v1/party/parties/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<PartyResponseDto>\ncontaining the current page of parties matching the filters and pagination.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Only returns parties for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /parties/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of party pages",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.party.contract.dto.PartyResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/party/parties/sse/count" : {
      "get" : {
        "tags" : [ "Party" ],
        "summary" : "Get parties count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof parties matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /api/v1/party/parties/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /api/v1/party/parties/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Only counts parties for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /parties/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of party count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/party/parties/sse/{id}" : {
      "get" : {
        "tags" : [ "Party" ],
        "summary" : "Get single party via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific party by its ID.\n\n## Usage\nConnect to this SSE endpoint with the party ID in the path parameter.\nReceive continuous updates as the party data changes.\n\n## Path Parameters\n- `id`: UUID of the party\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized PartyResponseFullDto\ncontaining the full party details, translations included.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Only returns parties for the authenticated user's tenant.\n\n## Errors\n- Returns error event if party ID is missing or invalid\n- Sends no event while the party is not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the party",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of single party",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.party.contract.dto.PartyResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/party/parties/sse/filters" : {
      "post" : {
        "tags" : [ "Party" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Filter configuration as JSON",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/party/parties/search" : {
      "post" : {
        "tags" : [ "Party" ],
        "summary" : "Search parties",
        "description" : "\nReturns a paginated list of parties filtered by optional criteria.\nOptimized for list views. Use query parameters for pagination and sorting.\n\n## Method\nPOST /api/v1/party/parties/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns Page<PartyResponseDto> with items and pagination metadata.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Only returns parties for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Paginated list of parties",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.party.contract.dto.PartyResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/party/parties/{id}" : {
      "get" : {
        "tags" : [ "Party" ],
        "summary" : "Get party by ID",
        "description" : "\nReturns full details of a single party, translations included.\n\n## Method\nGET /api/v1/party/parties/{id}\n\n## Path Parameters\n- `id`: UUID of the party\n\n## Response\nPartyResponseFullDto containing the full party details.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 404 if the party is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the party",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Party details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.party.contract.dto.PartyResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Party" ],
        "summary" : "Delete party (soft delete)",
        "description" : "\nPerforms a soft delete of a party using optimistic locking.\n\n## Method\nDELETE /api/v1/party/parties/{id}?version={version}\n\n## Path Parameters\n- `id`: UUID of the party\n\n## Query Parameters\n- `version`: Short value of the current entity version for optimistic locking\n\n## Response\nEmpty response on success.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 404 if the party is not found\n- 409 if version conflict (concurrent modification)\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the party",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current entity version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Party deleted successfully",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/party/parties/new" : {
      "post" : {
        "tags" : [ "Party" ],
        "summary" : "Get new party template",
        "description" : "\nReturns a new party template with default values for creating a new party.\n\n## Method\nPOST /api/v1/party/parties/new\n\n## Response\nPartyResponseFullDto with default values that can be used as a template for creating a new party.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New party template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.party.contract.dto.PartyResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/party/parties/copy/{id}" : {
      "post" : {
        "tags" : [ "Party" ],
        "summary" : "Copy party",
        "description" : "\nCreates a copy of an existing party as a template for creating a new party.\nThe copy includes all settings but has an empty ID and version 0.\n\n## Method\nPOST /api/v1/party/parties/copy/{id}\n\n## Path Parameters\n- `id`: UUID of the party to copy\n\n## Response\nPartyResponseFullDto with copied data but no ID.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 404 if the source party is not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the party to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied party",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.party.contract.dto.PartyResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/party/parties" : {
      "put" : {
        "tags" : [ "Party" ],
        "summary" : "Update party",
        "description" : "\nUpdates an existing party with optimistic locking.\n\n## Method\nPUT /api/v1/party/parties\n\n## Request Body\nPartyIncomeDto with updated information. `id` and the current `version` are required.\nSet `updateTranslations` to true to replace the party's translations with `translations`.\n\n## Response\nPartyResponseFullDto with the updated party details.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 400 if validation fails or `id`/`version` is missing\n- 404 if the party is not found\n- 409 if version conflict (concurrent modification)\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Updated party data with its ID and current version",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.party.contract.dto.PartyIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated party",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.party.contract.dto.PartyResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Party" ],
        "summary" : "Create new party",
        "description" : "\nCreates a new party (counterparty) in the system.\n\n## Method\nPOST /api/v1/party/parties\n\n## Request Body\nPartyIncomeDto with party information including:\n- `name`: Party name (required)\n- `owner`, `supplier`, `customer`, `carrier`: Party roles (optional, default false)\n- `code`, `externalId`, `description`: Optional identifying fields\n- `translations`: Localized names and descriptions, applied only when `updateTranslations` is true\n\n`id` and `version` are ignored on create.\n\n## Response\nPartyResponseFullDto with the created party details including generated ID.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 400 if validation fails\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Party data",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.party.contract.dto.PartyIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created party",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.party.contract.dto.PartyResponseFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/party/parties/light" : {
      "post" : {
        "tags" : [ "Party" ],
        "summary" : "Get lightweight party data",
        "description" : "\nReturns lightweight party data for efficient client-side synchronization.\nGiven a list of IDs and versions, returns only those records that are deleted or have version mismatches.\n\n## Method\nPOST /api/v1/party/parties/light\n\n## Request Body\nList<IdVersionDto> containing the IDs and versions to check. Maximum 100 items.\n\n## Response\nList<PartyLightDto> containing only records that need to be updated on the client.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 400 if more than 100 items are provided\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of IDs and versions to check",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight party data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.party.contract.dto.PartyLightDto"
                  },
                  "title" : "List<PartyLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/party/parties/minimal/search" : {
      "post" : {
        "tags" : [ "Party" ],
        "summary" : "Minimal party search",
        "description" : "\nReturns a minimal list of parties for autocomplete and selection purposes.\nReturns only essential fields (ID, name) for improved performance.\n\n## Method\nPOST /api/v1/party/parties/minimal/search\n\n## Query Parameters\n- `limit`: Maximum number of results to return (optional, default: 51, max: 51)\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria.\n\n## Response\nList of minimal party objects with ID and name only.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Rate Limiting\nThis endpoint has relaxed rate limiting (LIGHT_RATE_LIMIT) for better UX in autocomplete scenarios.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of results (default: 51, max: 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Minimal party list",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-orders/sse" : {
      "get" : {
        "tags" : [ "Inbound - Orders" ],
        "summary" : "Get inbound orders stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof inbound orders for the current tenant. The endpoint streams paginated inbound\norder headers as they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /inbound-orders/sse with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /inbound-orders/sse for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<InboundOrderHeaderDto>\ncontaining the current page of inbound orders matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns orders for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /inbound-orders/sse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<InboundOrderHeaderDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-orders/sse/count" : {
      "get" : {
        "tags" : [ "Inbound - Orders" ],
        "summary" : "Get inbound orders count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof inbound orders matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /inbound-orders/sse with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /inbound-orders/sse for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts orders for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /inbound-orders/sse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-orders/sse/{id}" : {
      "get" : {
        "tags" : [ "Inbound - Orders" ],
        "summary" : "Get single inbound order via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific inbound order by its ID.\n\n## Usage\nConnect to this SSE endpoint with the inbound order ID in the path parameter.\nReceive continuous updates as the order data changes.\n\n## Path Parameters\n- `id`: UUID of the inbound order\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized InboundOrderResponseDto\ncontaining the full order details.\n\n## Authentication\nRequires authentication. Only returns orders for the authenticated user's tenant.\n\n## Errors\n- Returns error event if order ID is missing or invalid\n- Returns null events if order is deleted or not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the inbound order",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of InboundOrderResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-orders/sse/filters" : {
      "post" : {
        "tags" : [ "Inbound - Orders" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-orders/search" : {
      "post" : {
        "tags" : [ "Inbound - Orders" ],
        "summary" : "Search inbound orders",
        "description" : "\nReturns a paginated list of inbound order headers filtered by optional criteria.\nOptimized for list views. Use query parameters for pagination and sorting.\n\n## Method\nPOST /inbound-orders/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns Page<InboundOrderHeaderDto> with items and pagination metadata.\n\n## Authentication\nRequires authentication. Only returns orders for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of inbound order headers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-orders/{id}" : {
      "get" : {
        "tags" : [ "Inbound - Orders" ],
        "summary" : "Get inbound order by ID",
        "description" : "\nReturns full details of a single inbound order including lines and containers.\n\n## Method\nGET /inbound-orders/{id}\n\n## Path Parameters\n- `id`: UUID of the inbound order\n\n## Response\nInboundOrderResponseDto containing the full order details.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if the order is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the inbound order",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Inbound order details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Inbound order not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inbound - Orders" ],
        "summary" : "Delete inbound order (soft delete)",
        "description" : "\nPerforms a soft delete of an inbound order using optimistic locking.\n\n## Method\nDELETE /inbound-orders/{id}\n\n## Path Parameters\n- `id`: UUID of the inbound order\n\n## Query Parameters\n- `version`: Short value of the current entity version for optimistic locking\n\n## Response\nEmpty response on success.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the inbound order",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current entity version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Deleted successfully",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-orders/new" : {
      "post" : {
        "tags" : [ "Inbound - Orders" ],
        "summary" : "Get new inbound order template",
        "description" : "\nReturns a new inbound order template with default values for creating a new order.\n\n## Method\nPOST /inbound-orders/new\n\n## Response\nInboundOrderResponseDto with default values that can be used as a template for creating a new order.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse to put on the template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New inbound order template with default values",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-orders" : {
      "post" : {
        "tags" : [ "Inbound - Orders" ],
        "summary" : "Process inbound order",
        "description" : "\nCreates or updates an inbound order from the provided payload and returns the full order details.\n\n## Method\nPOST /inbound-orders/process\n\n## Headers\n- `WMS-Idempotency-Key`: **REQUIRED**. Unique key for idempotency check to prevent duplicate processing.\n\n## Request Body\nInboundOrderIncomeDto describing the inbound order to create or update.\n\n## Response\nInboundOrderResponseDto with the persisted order details.\n\n## Idempotency\nFor idempotency, the `WMS-Idempotency-Key` header can be set. On first processing with a given key,\nthe inbound order is created or updated. Subsequent requests with the same key within 10 minutes\nreturn the same result without reprocessing.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Inbound order payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Persisted inbound order details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-orders/copy/{id}" : {
      "get" : {
        "tags" : [ "Inbound - Orders" ],
        "summary" : "Copy inbound order",
        "description" : "\nReturns a copy of an existing inbound order with reset values for creating a new order.\nThe copy has status DRAFT, empty number, and null externalId/externalNumber.\nDoes not save to database.\n\n## Method\nGET /inbound-orders/copy/{id}\n\n## Path Parameters\n- `id`: UUID of the inbound order to copy\n\n## Response\nInboundOrderResponseDto containing the copied order details with id = nil (not saved).\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if the source order is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the inbound order to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copy of the inbound order",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Inbound order not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-orders/light" : {
      "post" : {
        "tags" : [ "Inbound - Orders" ],
        "summary" : "Get lightweight inbound order data",
        "description" : "\nReturns lightweight inbound order data for efficient client-side synchronization.\nGiven a list of IDs and versions, returns only those records that are deleted or have version mismatches.\n\n## Method\nPOST /inbound-orders/light\n\n## Request Body\nList<IdVersionDto> containing the IDs and versions to check. Maximum 100 items.\n\n## Response\nList<InboundOrderLightDto> containing only records that need to be updated on the client.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 400 if more than 100 items are provided\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID and version pairs to check for updates (max 100 items)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight inbound order data for records that need updates",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLightDto"
                  },
                  "title" : "List<InboundOrderLightDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid request (e.g., too many items)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-order-ledger/sse" : {
      "get" : {
        "tags" : [ "Inbound - Order Ledger" ],
        "summary" : "Get inbound order ledger entries stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof inbound order ledger entries for the current tenant. The endpoint streams paginated\nledger entry data as they change in the database.\n\n## Usage\n1. Stage filters using POST /inbound-order-ledger/sse/filters with JSON body\n2. Connect to this SSE endpoint with pagination parameters and WMS-SSE-Request-Id header\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"registeredAt,desc\")\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /inbound-order-ledger/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<InboundOrderLedgerEntryResponseDto>\ncontaining the current page of ledger entries matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns entries for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'registeredAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /inbound-order-ledger-entries/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<InboundOrderLedgerEntryResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLedgerEntryResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-order-ledger/sse/count" : {
      "get" : {
        "tags" : [ "Inbound - Order Ledger" ],
        "summary" : "Get inbound order ledger entries count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof inbound order ledger entries matching the specified filters for the current tenant.\n\n## Usage\n1. Stage filters using POST /inbound-order-ledger/sse/filters with JSON body\n2. Connect to this SSE endpoint with WMS-SSE-Request-Id header\n3. Receive continuous count updates as data changes\n\n## Headers\n- `WMS-SSE-Request-Id`: Required. ID returned from POST /inbound-order-ledger/sse/filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts entries for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /inbound-order-ledger-entries/sse/filters",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count (Long)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-order-ledger/sse/filters" : {
      "post" : {
        "tags" : [ "Inbound - Order Ledger" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a request ID in the response\n3. Use the request ID in WMS-SSE-Request-Id header when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\nAvailable filter fields:\n- inboundOrderId: filter by inbound order\n- productId: filter by product\n- productFeatureId: filter by product feature\n- lotId: filter by lot\n- containerId: filter by container\n- ownerId: filter by owner party\n- entryType: filter by entry type (ORDER, RECEIPT, FACT)\n- receiptId: filter by receipt\n- accountingDate: filter by accounting date\n- registeredAt: filter by registration timestamp\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in cache (5 minutes TTL).\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Raw JSON filter request",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID (UUID string)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-order-ledger/{id}" : {
      "get" : {
        "tags" : [ "Inbound - Order Ledger" ],
        "summary" : "Get inbound order ledger entry by ID",
        "description" : "Returns a single inbound order ledger entry by its unique identifier.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Inbound order ledger entry details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLedgerEntryResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Entry not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/inbound-order-ledger/search" : {
      "post" : {
        "tags" : [ "Inbound - Order Ledger" ],
        "summary" : "Search inbound order ledger entries",
        "description" : "\nReturns a paginated list of inbound order ledger entries for the current tenant\nfiltered by optional criteria.\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"registeredAt,desc\")\n\n## Request Body\nOptional FilterRequest for filtering results.\n\nAvailable filter fields:\n- inboundOrderId: filter by inbound order\n- productId: filter by product\n- productFeatureId: filter by product feature\n- lotId: filter by lot\n- containerId: filter by container\n- ownerId: filter by owner party\n- entryType: filter by entry type (ORDER, RECEIPT, FACT)\n- receiptId: filter by receipt\n- accountingDate: filter by accounting date\n- registeredAt: filter by registration timestamp\n\n## Response\nPage<InboundOrderLedgerEntryResponseDto> containing ledger entry records.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'registeredAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of inbound order ledger entries",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLedgerEntryResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/sse" : {
      "get" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Get receipts stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof receipts for the current tenant. The endpoint streams paginated receipt\nheaders as they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /receipts/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /receipts/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<ReceiptHeaderDto>\ncontaining the current page of receipts matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns receipts for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /receipts/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ReceiptHeaderDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/sse/count" : {
      "get" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Get receipts count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof receipts matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /receipts/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /receipts/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts receipts for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /receipts/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/sse/{id}" : {
      "get" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Get single receipt via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific receipt by its ID.\n\n## Usage\nConnect to this SSE endpoint with the receipt ID in the path parameter.\nReceive continuous updates as the receipt data changes.\n\n## Path Parameters\n- `id`: UUID of the receipt\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized ReceiptResponseDto\ncontaining the full receipt details.\n\n## Authentication\nRequires authentication. Only returns receipts for the authenticated user's tenant.\n\n## Errors\n- Returns error event if receipt ID is missing or invalid\n- Returns null events if receipt is deleted or not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the receipt",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of ReceiptResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/sse/filters" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/pending-inbound-orders/sse" : {
      "get" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "SSE: Get all pending inbound orders",
        "description" : "Get all pending inbound orders (with positive ledger balances) with live updates via SSE",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /receipts/pending-inbound-orders/sse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<PendingInboundOrderDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.inboundorder.dto.PendingInboundOrderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/pending-inbound-orders/sse/count" : {
      "get" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "SSE: Count pending inbound orders",
        "description" : "Count pending inbound orders (with positive ledger balances) with live updates via SSE",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /receipts/pending-inbound-orders/sse",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/pending-inbound-orders/sse/filters" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Stage filters for pending inbound orders SSE",
        "description" : "Stage filters for pending inbound orders SSE endpoints",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/search" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Search receipts",
        "description" : "Returns a paginated list of receipt headers filtered by optional criteria.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of receipt headers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/by-barcode" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Resolve open receipts by a scanned package",
        "description" : "\nResolves a scan into the receipts it may belong to. Built for the handheld flow, where the operator\nscans the package instead of hunting for its receipt in a list.\n\n## Method\nPOST /receipts/by-barcode\n\n## Request Body\nReceiptBarcodeLookupRequestDto with the scanned barcode and the warehouse being worked in.\nThe scan is trimmed first.\n\n## Matching\nA receipt matches when any one of these holds:\n- its own barcode equals the scan exactly;\n- it is a single-line receipt without containers, and its line plans a product the catalog resolves\n  the scan to. A barcode bound to a product feature or a lot matches only a line planning that same\n  feature or lot; a barcode bound to neither matches any line of the product. The barcode's pack\n  type plays no part;\n- it is a single-line receipt planning a container whose code equals the scan exactly.\n\n## Response\nReceiptBarcodeLookupResultDto holding the matching receipts ready for receiving — TO_RECEIVE — in\nthe given warehouse, ordered by number and capped at 50, as ReceiptHeaderResponseDto, the shape\n/receipts/search returns, single-line subject included. This mirrors the handheld receipt list,\nwhich shows the same status.\n\nThe list is empty when nothing matches and when the scan hits a receipt still in DRAFT or already\nreceived or cancelled. It may hold more than one receipt, because WMS does not enforce barcode\nuniqueness and one scan may match in more than one way; that is not an error, and the client\nswitches its list into \"filtered by this barcode\" mode and lets the operator pick.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Scanned package barcode and warehouse",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptBarcodeLookupRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Open receipts carrying the scanned barcode",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptBarcodeLookupResultDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/{id}" : {
      "get" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Get receipt by ID",
        "description" : "Returns full receipt details including lines.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Receipt details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Delete receipt (soft delete)",
        "description" : "Soft deletes a receipt with optimistic locking by version.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Receipt deleted",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "patch" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Change receipt status",
        "description" : "\nChanges the status of an existing receipt with business rules validation.\n\n## Allowed Status Transitions\n- **DRAFT → TO_RECEIVE**: Validates sufficient balance in ledger for all receipt lines. If balance is insufficient, returns validation error with specific line indices.\n- **TO_RECEIVE → RECEIVED**: Allowed without additional validation.\n- **TO_RECEIVE → CANCELLED**: Validates that receiving has not started (no ReceiptFacts exist). If receiving has started, returns validation error.\n- All other transitions are forbidden and return error.\n\n## Business Logic\n- **DRAFT → TO_RECEIVE**: After successful validation, the receipt is posted (ledger entries are synchronized).\n- The endpoint uses optimistic locking via the `version` field to prevent concurrent modifications.\n\n## Validation Errors\nIf validation fails, returns HTTP 400 with structured validation errors indicating specific line indices where problems occurred:\n```json\n{\n  \"message\": \"Invalid data format\",\n  \"errors\": [\n    {\n      \"path\": \"lines[3]\",\n      \"message\": \"Insufficient balance: required 100, available 50\"\n    }\n  ]\n}\n```\n\n## Path Parameters\n- `id`: UUID of the receipt\n\n## Request Body\n- `targetStatus`: Target status to transition to (DRAFT, TO_RECEIVE, RECEIVED, CANCELLED)\n- `version`: Current version of the receipt for optimistic locking\n\n## Response\nReturns the updated receipt with full details including lines and incremented version.\n\n## Authentication\nRequires authentication. Only allows status changes for receipts in the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Receipt ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Status change request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ChangeReceiptStatusRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Receipt status changed successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/pending-inbound-orders/{id}" : {
      "get" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Get pending inbound order details",
        "description" : "Returns full inbound order details plus ledger summary flattened list",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Inbound order UUID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Pending inbound order details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLedgerSummaryResponseDto"
                  },
                  "title" : "List<InboundOrderLedgerSummaryResponseDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Save receipt (create or update)",
        "description" : "\nCreates or updates a Receipt document based on the presence of the ID in the payload.\n- If `id` is missing: a new Receipt is created.\n- If `id` is present: the existing Receipt is updated (system-managed fields are preserved).\n\nFor idempotency, the `Idempotency-Key` header is REQUIRED for creation (when `id` is missing). On first successful creation,\nthe saved receipt ID is cached for 10 minutes. Subsequent create requests (without `id`) with the same key will return the same saved Receipt.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Receipt upsert payload (create or update)",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created receipt",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/{id}/facts" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Register actual receiving fact",
        "description" : "\nRegisters a physical receiving fact for a receipt and updates ledger.\n\nWhen the lot has fewer days left before expiry than the lot tracking policy's\n`minRemainingShelfLifeDaysOnReceipt`, the fact is refused with 409 `LOT_SHELF_LIFE_TOO_SHORT`\n(the user holds `inbound.receipts.accept_short_shelf_life`) or `LOT_SHELF_LIFE_TOO_SHORT_NO_RIGHT`;\n`errors` carries one line per lot. Repeating the request with `acceptShortShelfLife = true`\nsaves it for a holder of the right; without the right that answers 403.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Receiving fact payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptFactIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptWithFactIdDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/containers" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Register container for receipt",
        "description" : "\nRegisters a container for a receipt.\n\n## Container Resolution\n- If `containerId` is provided: registers movement for the existing container\n- If `containerId` is null: resolves the container by barcode; where the warehouse allows temporary\n  containers and no usable container carries the code, creates one of the temporary container type\n  whose code pattern matches the whole scan\n- Several temporary types match and `containerTypeId` is absent: nothing is created, the response\n  carries `containerTypeChoice`; repeat the request with the chosen `containerTypeId` (the same\n  idempotency key may be reused)\n\n## Movement Registration\nAfter container resolution, a container movement to the receiving zone is registered\nwith the provided `performedAt` timestamp.\n\n## Use Cases\n- Pre-register containers before receiving facts are created\n- Support offline-first scenarios where container registration happens before fact sync\n\n## Request Body\n- `barcode`: Container barcode scanned by operator (required)\n- `containerId`: Existing container ID (optional - if null, temporary container is resolved by barcode)\n- `receiptId`: ID of the receipt to register container for (required)\n- `performedAt`: Timestamp when the container registration was performed on client (required)\n- `containerTypeId`: Temporary container type the operator chose after a `containerTypeChoice` response (optional);\n  a type that does not match the scan is refused with 400 on `containerTypeId`\n\n## Response\nReturns the container ID and whether it was newly created (for temporary containers).\n`containerId` is null exactly when `containerTypeChoice` lists the candidate types (`id`, `name`).\n\n## Authentication\nRequires authentication. Only allows registration for receipts in the authenticated user's tenant.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Container registration payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.RegisterContainerForReceiptRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Container registration result",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.container.dto.RegisterContainerForReceiptResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/containers/accept-sender" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Accept sender container",
        "description" : "\nAccepts a sender container for a receipt in one operation and registers remaining goods from this container.\n\n## Behavior\n- Uses server time for processing (client does not pass performedAt)\n- Validates request warehouse matches receipt warehouse\n- Registers sender container for receipt context\n- Creates ReceiptFacts only for remaining quantity from this sender container\n- Returns updated receipt and created fact IDs\n- A planned lot below the receipt shelf-life minimum answers 409 as `POST /receipts/{id}/facts` does\n\n## Request Body\n- `receiptId`: Receipt ID\n- `senderContainerId`: Sender container to accept\n- `warehouseId`: Must match receipt warehouse\n- `locationId`: Target location for acceptance flow\n- `accountingDate`: Accounting date for created facts\n- `acceptShortShelfLife`: Confirms lots below the receipt shelf-life minimum (needs `inbound.receipts.accept_short_shelf_life`)\n\n## Response\n- `receipt`: Updated receipt\n- `createdFactIds`: IDs of created facts (can be empty if container already fully processed)\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Sender container acceptance payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.AcceptSenderContainerRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Sender container accepted successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.AcceptSenderContainerResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/containers/close" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Close container",
        "description" : "\nCloses a container by setting its status to CLOSED and updating closedAt and lastActivityAt timestamps.\n\n## Request Body\n- `containerId`: UUID of the container to close (required)\n- `closedAt`: Timestamp when the container was closed on client (required)\n\n## Response\nReturns HTTP 200 OK on success.\n\n## Errors\n- Returns HTTP 409 Conflict if container is already closed with a different timestamp.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Close container payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.CloseContainerRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Container closed successfully",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/container-fact-reversals" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Reverse a container acceptance",
        "description" : "Takes back one container acceptance of the receipt by recording a reversing fact with a reason, restores the container's owner, and re-posts the receipt so the container debt register follows.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "The container acceptance to take back, and why",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReverseContainerFactRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Container acceptance reversed",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/{id}/container-facts" : {
      "get" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "List the container acceptances of a receipt",
        "description" : "Returns every container the receipt accepted, with the debt each acceptance opened or closed and any reversal.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "The container acceptances of the receipt",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptContainerFactResponseDto"
                  },
                  "title" : "List<ReceiptContainerFactResponseDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/new" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Preview receipt from inbound order",
        "description" : "Builds a non-persisted receipt either for all remaining keys or for provided product keys.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "New receipt request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptNewRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Receipt preview",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptNewResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/light" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Get lightweight receipt data",
        "description" : "\nReturns lightweight receipt data for efficient client-side synchronization.\nGiven a list of IDs and versions, returns only those records that are deleted or have version mismatches.\n\n## Method\nPOST /receipts/light\n\n## Request Body\nList<IdVersionDto> containing the IDs and versions to check. Maximum 100 items.\n\n## Response\nList<ReceiptLightDto> containing only records that need to be updated on the client.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 400 if more than 100 items are provided\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID and version pairs to check for updates (max 100 items)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight receipt data for records that need updates",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLightDto"
                  },
                  "title" : "List<ReceiptLightDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid request (e.g., too many items)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/lot-required" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Check if lot is required for receipt",
        "description" : "\nReturns whether a lot must be specified for receipt facts.\nA product category that does not use lots never requires one; only then does the\nwarehouse tracking policy decide.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Lot requirement query",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLotRequirementRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lot requirement for receipt facts",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLotRequirementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/receipts/minimal/search" : {
      "post" : {
        "tags" : [ "Inbound - Receipts" ],
        "summary" : "Search minimal receipt records",
        "description" : "\nReturns minimal receipt records (id and document-number label only) for autocomplete/lookup fields.\n\n## Usage\nPOST /receipts/minimal/search\nwith an optional FilterRequest JSON body (e.g. filter by document number and non-deleted).\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal receipt data (id and number label only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/sse" : {
      "get" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Get putaway operations stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof putaway operations for the current tenant. The endpoint streams paginated putaway\nheaders as they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /putaways/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /putaways/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<PutawayHeaderResponseDto>\ncontaining the current page of putaway operations matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns putaway operations for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /putaways/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<PutawayHeaderResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/sse/count" : {
      "get" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Get putaway operations count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof putaway operations matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /putaways/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /putaways/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts putaway operations for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /putaways/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/sse/{id}" : {
      "get" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Get single putaway operation via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific putaway operation by its ID.\n\n## Usage\nConnect to this SSE endpoint with the putaway ID in the path parameter.\nReceive continuous updates as the putaway data changes.\n\n## Path Parameters\n- `id`: UUID of the putaway operation\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized PutawayFullResponseDto\ncontaining the full putaway details including executions.\n\n## Authentication\nRequires authentication. Only returns putaway operations for the authenticated user's tenant.\n\n## Errors\n- Returns error event if putaway ID is missing or invalid\n- Returns null events if putaway is deleted or not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Putaway ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of PutawayFullResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/sse/filters" : {
      "post" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/plan/sources" : {
      "post" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Search for available putaway sources",
        "description" : "\nSearches for goods available for putaway in receiving locations.\nReturns aggregated information about loose goods and containers with their contents.\n\n## Request Body\nPutawaySourcesRequestDto with:\n- `warehouseId`: Warehouse to search in (required)\n- `receivingLocationId`: Filter by specific receiving locations (optional, list of LocationId)\n\n## Response Structure\nReturns PutawaySourcesResponseDto containing:\n- **items**: Goods without containers, grouped by analytical key (product + feature + lot + owner + packType)\n  - `totalQuantity`: Total quantity in location\n  - `reservedQuantity`: Quantity already reserved for other operations\n  - `availableQuantity`: Quantity available for putaway\n- **containers**: Containers available for putaway (CLOSED status, PUTAWAY_CART purpose)\n  - Each container includes its items with the same quantity breakdown\n\n## Business Rules\n- Only returns goods with AVAILABLE stock status\n- Excludes goods with REJECTED, QUARANTINE, PENDING_QC lot statuses\n- Only includes containers in RECEIVING locations with CLOSED status\n- Respects existing reservations from ReservationLedger\n\n## Authentication\nRequires authentication. Only returns sources for the authenticated user's tenant.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Search criteria for putaway sources",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawaySourcesRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Available sources for putaway",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawaySourcesResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/plan/preview/location/create" : {
      "post" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Create putaway plan preview from receiving location",
        "description" : "\nGenerates a preview of putaway plan from a receiving location, caches it for 5 minutes,\nand returns a UUID for later retrieval.\n\n## Request Body\nPutawayLocationPreviewRequestDto with:\n- `warehouseId`: Target warehouse\n- `locationId`: Receiving location containing goods\n- `items`: List of items to include (analytical keys only)\n  - Product analytics (productId, featureId, lotId, ownerId, packTypeId)\n\n## Response\nReturns PutawayPreviewIdDto containing:\n- `id`: UUID to retrieve the cached preview\n\n## Business Logic\n- Matches requested analytical keys against available stock\n- Automatically selects ALL available quantity for matching items\n- Items without available stock are not included (no warnings)\n- Preview is cached in Redis for 5 minutes\n\n## Authentication\nRequires authentication.\n\n## Note\nUse GET /putaways/plan/preview/{id} to retrieve the full preview data.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Selected items for putaway plan preview from location",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayLocationPreviewRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "UUID of the cached putaway plan preview",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayPreviewIdDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/plan/preview/container/create" : {
      "post" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Create putaway plan preview from container",
        "description" : "\nGenerates a preview of putaway plan from a container, caches it for 5 minutes,\nand returns a UUID for later retrieval.\n\n## Request Body\nPutawayContainerPreviewRequestDto with:\n- `warehouseId`: Target warehouse\n- `locationId`: Receiving location where container is placed\n- `containerId`: Container to put away\n\n## Response\nReturns PutawayPreviewIdDto containing:\n- `id`: UUID to retrieve the cached preview\n\n## Business Logic\n- Automatically selects ALL items from the specified container\n- No manual item selection required\n- Container must be in the specified location\n- Container must have CLOSED status\n- Preview is cached in Redis for 5 minutes\n\n## Authentication\nRequires authentication.\n\n## Note\nUse GET /putaways/plan/preview/{id} to retrieve the full preview data.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Container to preview for putaway",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayContainerPreviewRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "UUID of the cached putaway plan preview",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayPreviewIdDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/plan/preview/{id}" : {
      "get" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Get cached putaway plan preview by UUID",
        "description" : "\nRetrieves a previously cached putaway plan preview by its UUID.\n\n## Path Parameters\n- `id`: UUID returned from the create preview endpoints\n\n## Response\nReturns PutawayPlanPreviewResponseDto containing:\n- Header information (warehouseId, sourceType)\n- **executions**: Preview executions with available quantities\n\n## Cache Behavior\n- Previews are cached for 5 minutes\n- Returns 404 Not Found if preview is expired or not found\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the cached putaway plan preview",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Cached putaway plan preview",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayPlanPreviewResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Preview not found or expired",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/search" : {
      "post" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Search putaway operations",
        "description" : "\nReturns a paginated list of putaway operation headers filtered by optional criteria.\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria (optional).\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n\n## Authentication\nRequires authentication. Only returns putaway operations for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of putaway headers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/{id}" : {
      "get" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Get putaway operation by ID",
        "description" : "\nReturns full putaway operation details including lines and execution data.\n\n## Path Parameters\n- `id`: UUID of the putaway operation\n\n## Authentication\nRequires authentication. Only returns putaway operations for the authenticated user's tenant.\n\n## Response\nReturns PutawayFullResponseDto with complete putaway information including:\n- Header data (warehouse, source, cart, status, etc.)\n- Execution data (plan vs fact aggregated by analytical keys)\n- Metadata (created/updated timestamps, version, etc.)\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Putaway details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Delete putaway operation (soft delete)",
        "description" : "\nSoft deletes a putaway operation with optimistic locking by version.\n\n## Path Parameters\n- `id`: UUID of the putaway operation\n\n## Query Parameters\n- `version`: Current version for optimistic locking\n\n## Business Rules\n- Can only delete putaway that hasn't been completed\n- Releases all reservations\n- Removes planned arrivals\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Putaway ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Putaway deleted successfully",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "patch" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Change putaway status",
        "description" : "\nChanges the status of an existing putaway operation with business rules validation.\n\n## Allowed Status Transitions\n- **PLANNED → IN_PROGRESS**: Automatically when first fact is registered\n- **IN_PROGRESS → COMPLETED**: When all planned quantities are executed\n- **IN_PROGRESS → CLOSED_PARTIALLY_COMPLETED**: Manual closure with remaining quantities\n- **PLANNED → CANCELLED**: Cancel before execution starts\n- All other transitions are forbidden\n\n## Business Logic\n- Status changes are mostly automatic based on fact registration\n- Manual closure allows partial completion\n- Cancellation releases reservations and planned arrivals\n\n## Closure Consistency\nThe requested closing status must match the remaining plan; the server rejects it otherwise.\n- **COMPLETED** is rejected while any line still has an unplaced quantity\n- **CLOSED_PARTIALLY_COMPLETED** is rejected when nothing is left to place\n\n## Path Parameters\n- `id`: UUID of the putaway operation\n\n## Request Body\n- `targetStatus`: Target status to transition to\n- `version`: Current version for optimistic locking\n\n## Headers\n- `WMS-Idempotency-Key`: Required. Unique key for idempotency.\n\n## Authentication\nRequires authentication.\n\n## Response\nReturns PutawayFullResponseDto with the updated putaway operation.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Putaway ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Status change request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.ChangePutawayStatusRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Putaway status changed successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/count" : {
      "post" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Count putaway operations",
        "description" : "\nReturns the count of putaway operations matching optional filter criteria.\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria (optional).\n\n## Authentication\nRequires authentication. Only counts putaway operations for the authenticated user's tenant.\n\n## Response\nReturns Long count value.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Count of putaway operations",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways" : {
      "put" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Update putaway operation",
        "description" : "\nUpdates an existing putaway operation.\n\n## Path Parameters\n- `id`: UUID of the putaway operation\n\n## Request Body\nPutawayIncomeDto with updated fields and current version for optimistic locking.\n\n## Business Rules\n- Can only update putaway in PLANNED status\n- Version must match current version (optimistic locking)\n- System re-validates availability and adjusts reservations\n\n## Authentication\nRequires authentication.\n\n## Response\nReturns PutawayFullResponseDto with the updated putaway operation.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Putaway update payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated putaway",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Create putaway operation",
        "description" : "\nCreates a new putaway operation for moving goods from receiving locations to storage.\n\n## Request Body\nPutawayIncomeDto with:\n- `warehouseId`: Target warehouse\n- `sourceLocationId`: Receiving location (for location-based putaway)\n- `sourceContainerId`: Container to put away (for container-based putaway)\n- `sourceType`: RECEIVING_LOCATION or CONTAINER\n- `lines`: List of items to put away with quantities and targets\n\n## Business Rules\n- Either sourceLocationId OR sourceContainerId must be set (based on sourceType)\n- For CONTAINER sourceType: all goods in the container must have AVAILABLE stock status\n- System validates sufficient available quantity before creating reservation\n- Putaway is created in PLANNED status\n- Reservations are created in ReservationLedger\n- Incoming stock entries are created in IncomingStockLedger if target locations are specified\n\n## Authentication\nRequires authentication.\n\n## Response\nReturns PutawayFullResponseDto with the created putaway operation.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Putaway creation payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created putaway",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/{id}/facts" : {
      "post" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Register actual putaway fact",
        "description" : "\nRegisters a physical placement of goods from receiving/cart to storage location.\n\n## Request Body\nPutawayFactIncomeDto with:\n- `putawayId`: Reference to parent putaway operation\n- Product analytics (productId, featureId, lotId, ownerId, packTypeId)\n- `targetType`: `LOCATION` or `CONTAINER`\n- `targetLocationId`: Location where goods were placed; required for `LOCATION`, must be null for `CONTAINER`\n- `targetContainerId`: Container where goods were placed; required for `CONTAINER`, must be null for `LOCATION`\n- `packQuantity`: Actual quantity placed\n- `executedAt`: Timestamp of placement\n- `accountingDate`: Business date for accounting\n\n## Business Logic\n- System determines source automatically based on Putaway configuration:\n  - If Putaway.sourceContainerId is set: source is the container\n  - If Putaway.bufferContainerId is set: source is the cart\n  - Otherwise: source is the receiving location\n- Validates available quantity in source\n- Creates stock movements in StockLedger\n- Adjusts reservations in ReservationLedger\n- Adjusts incoming stock in IncomingStockLedger\n- Updates putaway status (PLANNED → IN_PROGRESS, or IN_PROGRESS → COMPLETED)\n- Cart container reference is captured from current Putaway.bufferContainerId at registration time\n\n## Authentication\nRequires authentication.\n\n## Response\nReturns PutawayFactId of the created fact record.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Putaway fact payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayFactIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated putaway with created fact ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayWithFactIdDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/{id}/carrier" : {
      "patch" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Set or change putaway carrier",
        "description" : "\nSets or changes the carrier used for transporting goods during putaway.\n\n## Path Parameters\n- `id`: UUID of the putaway operation\n\n## Request Body\n- `carrierId`: Carrier ID to use\n- `version`: Current version for optimistic locking\n\n## Headers\n- `WMS-Idempotency-Key`: Required. Unique key for idempotency.\n\n## Business Logic\n- Only for location-based putaway (not container-based)\n- When carrier is set:\n  - If Putaway source is LOCATION (loose goods): system creates a temporary container (purpose `PUTAWAY_CART`) to hold\n    goods placed on the carrier\n  - If Putaway source is CONTAINER: system does not create a cart container\n  - Buffer container type is taken from WarehouseReceivingPolicy.putawayBufferContainerTypeId (required for LOCATION case)\n  - Putaway.bufferContainerId is assigned automatically by the system (LOCATION case)\n\n## Authentication\nRequires authentication.\n\n## Response\nReturns PutawayFullResponseDto with the updated putaway operation.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Putaway ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Carrier request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.SetCarrierRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Putaway updated with new carrier",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/light" : {
      "post" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Get lightweight putaway data",
        "description" : "\nReturns lightweight putaway data for efficient client-side synchronization.\n\n## Request Body\nList of ID and version pairs to check for updates. Maximum 100 items per request.\n\n## Response\nReturns a list of PutawayLightDto containing only records that need updates:\n- Records that have been modified (version mismatch)\n- Records that have been deleted\n\nRecords with matching version are not returned to minimize payload size.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID and version pairs to check for updates (max 100 items)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight putaway data for records that need updates",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayLightDto"
                  },
                  "title" : "List<PutawayLightDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid request (e.g., too many items)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/putaways/minimal/search" : {
      "post" : {
        "tags" : [ "Inbound - Putaway" ],
        "summary" : "Search minimal putaway records",
        "description" : "\nReturns minimal putaway records (id and document-number label only) for autocomplete/lookup fields.\n\n## Usage\nPOST /putaways/minimal/search\nwith an optional FilterRequest JSON body (e.g. filter by document number and non-deleted).\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal putaway data (id and number label only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/warehouse-receiving-policies/{warehouseId}" : {
      "get" : {
        "tags" : [ "Inbound - Receiving Policies" ],
        "summary" : "Get warehouse receiving policy",
        "description" : "Gets receiving policy for a warehouse. Returns default policy if none exists.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : { },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Inbound - Receiving Policies" ],
        "summary" : "Update warehouse receiving policy",
        "description" : "Creates or updates receiving policy for a warehouse.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/inbound/warehouse-receiving-policies/sse/{warehouseId}" : {
      "get" : {
        "tags" : [ "Inbound - Receiving Policies" ],
        "summary" : "SSE stream of warehouse receiving policy by warehouse ID",
        "description" : "Server-Sent Events (SSE) stream providing real-time updates for a specific warehouse receiving policy.\nReturns policy data whenever it changes. Returns default policy if none exists.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of WarehouseReceivingPolicyResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.policy.dto.WarehouseReceivingPolicyResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-systems/sse" : {
      "get" : {
        "tags" : [ "Integrations - ExternalSystems" ],
        "summary" : "Stream external systems via SSE",
        "description" : "Server-Sent Events stream of paginated external systems. Use POST /external-systems/sse/filters first to stage filters.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /external-systems/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of external system pages",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-systems/sse/count" : {
      "get" : {
        "tags" : [ "Integrations - ExternalSystems" ],
        "summary" : "Stream external systems count via SSE",
        "description" : "Server-Sent Events stream of external system count for current filters. Use POST /external-systems/sse/filters first to stage filters.",
        "parameters" : [ {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /external-systems/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of external system count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-systems/sse/{id}" : {
      "get" : {
        "tags" : [ "Integrations - ExternalSystems" ],
        "summary" : "Stream external system by ID via SSE",
        "description" : "Server-Sent Events stream of single external system by ID. Returns full external system details.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the external system",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of single external system",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-systems/sse/filters" : {
      "post" : {
        "tags" : [ "Integrations - ExternalSystems" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "Stores filter configuration and returns an ID to be used as WMS-SSE-Request-Id header in subsequent SSE requests.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Filter configuration as JSON",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-systems/search" : {
      "post" : {
        "tags" : [ "Integrations - ExternalSystems" ],
        "summary" : "Search external systems",
        "description" : "Returns a paginated list of external systems in tenant scope with optional filters.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of external systems",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-systems/{id}" : {
      "get" : {
        "tags" : [ "Integrations - ExternalSystems" ],
        "summary" : "Get external system by ID",
        "description" : "Returns full external system details including capabilities and warehouse scope.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the external system",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.integrations.ExternalSystemId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "External system details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Integrations - ExternalSystems" ],
        "summary" : "Update external system",
        "description" : "Updates an external system by ID with optimistic locking. Requires idempotency key.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the external system",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.integrations.ExternalSystemId"
          }
        } ],
        "requestBody" : {
          "description" : "External system payload for update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.UpdateExternalSystemIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated external system",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemFullResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Version conflict during optimistic locking",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Integrations - ExternalSystems" ],
        "summary" : "Delete external system",
        "description" : "Soft deletes an external system by ID with optimistic locking using version parameter.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "External system ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.integrations.ExternalSystemId"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Deleted success indication",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-systems/new" : {
      "get" : {
        "tags" : [ "Integrations - ExternalSystems" ],
        "summary" : "Get new external system template",
        "description" : "Returns a new external system template with default values.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New external system template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-systems" : {
      "post" : {
        "tags" : [ "Integrations - ExternalSystems" ],
        "summary" : "Create external system",
        "description" : "Creates a new external system configuration. Requires idempotency key.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "External system payload for creation",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.CreateExternalSystemIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created external system",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-systems/light" : {
      "post" : {
        "tags" : [ "Integrations - ExternalSystems" ],
        "summary" : "Get external systems light data",
        "description" : "Returns lightweight external system data for a list of IDs with versions.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID and version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of lightweight external system data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemLightDto"
                  },
                  "title" : "List<ExternalSystemLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-systems/minimal/search" : {
      "post" : {
        "tags" : [ "Integrations - ExternalSystems" ],
        "summary" : "Minimal search external systems",
        "description" : "Returns minimal external system data for autocomplete and lookups.",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items to return (default: 51, max: 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of minimal external system data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-references/sse" : {
      "get" : {
        "tags" : [ "Integrations - ExternalReferences" ],
        "summary" : "Stream external references via SSE",
        "description" : "Server-Sent Events stream of paginated external references. Use POST /external-references/sse/filters first to stage filters.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /external-references/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of external reference pages",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-references/sse/count" : {
      "get" : {
        "tags" : [ "Integrations - ExternalReferences" ],
        "summary" : "Stream external references count via SSE",
        "description" : "Server-Sent Events stream of external reference count for current filters. Use POST /external-references/sse/filters first to stage filters.",
        "parameters" : [ {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /external-references/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of external reference count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-references/sse/{id}" : {
      "get" : {
        "tags" : [ "Integrations - ExternalReferences" ],
        "summary" : "Stream external reference by ID via SSE",
        "description" : "Server-Sent Events stream of single external reference by ID. Returns external reference details.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the external reference",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of single external reference",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-references/sse/filters" : {
      "post" : {
        "tags" : [ "Integrations - ExternalReferences" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "Stores filter configuration and returns an ID to be used as WMS-SSE-Request-Id header in subsequent SSE requests.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Filter configuration as JSON",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-references/search-by-internal-id" : {
      "get" : {
        "tags" : [ "Integrations - ExternalReferences" ],
        "summary" : "Find external references by internal entity ID",
        "description" : "Returns external references for provided internal entity ID. Optionally filters by external system ID.",
        "parameters" : [ {
          "name" : "internalEntityId",
          "in" : "query",
          "description" : "Internal entity identifier",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "externalSystemId",
          "in" : "query",
          "description" : "Optional external system identifier",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of external references matched by internal entity ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceResponseDto"
                  },
                  "title" : "List<ExternalReferenceResponseDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-references/conflicts/mark-secondary" : {
      "post" : {
        "tags" : [ "Integrations - ExternalReferences" ],
        "summary" : "Mark external reference as secondary",
        "description" : "Resolves conflict by setting one selected mapping as non-primary.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.MarkExternalReferenceSecondaryRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-references/conflicts/set-primary-batch" : {
      "post" : {
        "tags" : [ "Integrations - ExternalReferences" ],
        "summary" : "Set primary external reference in selected batch",
        "description" : "Normalizes primary/conflict flags for selected mappings.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.SetExternalReferencePrimaryBatchRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceResponseDto"
                  },
                  "title" : "List<ExternalReferenceResponseDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-references/conflicts/rebind" : {
      "post" : {
        "tags" : [ "Integrations - ExternalReferences" ],
        "summary" : "Rebind external reference to another internal entity",
        "description" : "Moves one mapping to another internal entity and re-evaluates primary/conflict flags.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.RebindExternalReferenceRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-references/ownership-transfer" : {
      "post" : {
        "tags" : [ "Integrations - ExternalReferences" ],
        "summary" : "Transfer ownership of external references",
        "description" : "Transfers owner link to the target mapping and normalizes owner/primary flags for provided set.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.TransferExternalReferenceOwnershipRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.TransferExternalReferenceOwnershipResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-references/register-batch" : {
      "post" : {
        "tags" : [ "Integrations - ExternalReferences" ],
        "summary" : "Register external reference mappings in bulk",
        "description" : "Registers known `(externalEntityId, internalEntityId)` mappings for an external system without any entity payload. Use for one-shot reconciliation when the external system already has internal ids for entities created in WMS.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.RegisterExternalReferenceBatchRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.RegisterExternalReferenceBatchResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/external-references/{id}" : {
      "delete" : {
        "tags" : [ "Integrations - ExternalReferences" ],
        "summary" : "Delete external reference",
        "description" : "Deletes an external reference by ID with optimistic locking using version parameter.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "External reference ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ExternalReferenceId"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "External reference deleted successfully",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/import" : {
      "post" : {
        "tags" : [ "Integrations - Import" ],
        "summary" : "Import reference data and documents",
        "description" : "Imports a heterogeneous batch of reference and document items from external systems. Each item is routed by its entityType; reference items use external `id` with optional `_key` fallback, document items use source identity (`id` or `externalId`).",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Unified import request payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.importing.dto.ImportRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Import processing result",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.importing.dto.ImportResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/change-feed" : {
      "get" : {
        "tags" : [ "Integrations - OutboundPolling" ],
        "summary" : "Read outbound change feed",
        "description" : "Returns change-feed events after an optional cursor in deterministic order.",
        "parameters" : [ {
          "name" : "externalSystemCode",
          "in" : "query",
          "description" : "External system code",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of events in the page",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Outbound change-feed page",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.changefeed.dto.OutboundChangeFeedResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/checkpoints/{externalSystemCode}" : {
      "get" : {
        "tags" : [ "Integrations - OutboundPolling" ],
        "summary" : "Get change-feed checkpoint",
        "description" : "Returns current checkpoint state for an external system.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Checkpoint state",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.changefeed.dto.CheckpointResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/checkpoints/acknowledge" : {
      "post" : {
        "tags" : [ "Integrations - OutboundPolling" ],
        "summary" : "Acknowledge change-feed checkpoint",
        "description" : "Moves checkpoint cursor forward for a consumer. Repeating the last acknowledged event changes nothing.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Checkpoint acknowledgment request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.changefeed.dto.AcknowledgeCheckpointIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated checkpoint state",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.changefeed.dto.CheckpointResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/resync-sessions" : {
      "post" : {
        "tags" : [ "Integrations - ResyncSnapshot" ],
        "summary" : "Start outbound resynchronization session",
        "description" : "Creates a snapshot session and captures change-feed watermark for incremental handoff.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Resync session start request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionStartRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created resync session",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionStartResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/resync-sessions/{sessionId}" : {
      "get" : {
        "tags" : [ "Integrations - ResyncSnapshot" ],
        "summary" : "Get resync session status",
        "description" : "Returns status and metadata for an outbound resync session.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Resync session status",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionStatusResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/resync-sessions/{sessionId}/page" : {
      "get" : {
        "tags" : [ "Integrations - ResyncSnapshot" ],
        "summary" : "Read resync snapshot page",
        "description" : "Returns one deterministic page for snapshot synchronization.",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of snapshot items in the page",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Snapshot page",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.resync.dto.ResyncPageResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/resync-sessions/{sessionId}/complete" : {
      "post" : {
        "tags" : [ "Integrations - ResyncSnapshot" ],
        "summary" : "Complete resync session",
        "description" : "Marks snapshot session as completed and returns stored watermark for incremental handoff.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Resync completion request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionCompletionRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Completed resync session",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionCompletionResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/stock-balances/as-of" : {
      "post" : {
        "tags" : [ "Integrations - StockBalances" ],
        "summary" : "Read a point-in-time stock-balance export page",
        "description" : "Returns one deterministic page of stock balances as of a fixed accounting or registration date, for reconciliation with an external accounting ledger. Five things a consumer must know before summing rows: (1) every `StockStatus` bucket is included in the totals - a consumer that wants only sellable stock must filter `status` itself, this endpoint does not pre-filter; (2) `packTypeId` is not returned - it is folded into `baseQuantity`, which is already expressed in the product's base unit of measure (`baseQuantity = packQuantity * PackType.quantity`, summed per group); (3) `locationId` and `containerId` are deliberately absent - warehouse-internal topology has no counterpart in any accounting system and would multiply the row count by an order of magnitude; (4) stock held in a location of type `EXTERNAL` is not reported at all - such a location holds goods an unplanned picking has taken off the shelf but not yet shipped, which the consuming system has normally already written off; the goods appear on neither the source location nor the external one; (5) a page may exceed `limit` to keep one `(warehouse, product)` group whole across the page boundary, and `asOf.date` is mandatory even for `timeBasis=registration_date` - the whole scan must be anchored to one fixed point in time, since the query is paged and an implicit \"now\" re-evaluated on every page request would land rows on either side of the keyset boundary depending on timing.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Point-in-time stock-balance export request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockBalanceAsOfExportRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Stock-balance export page",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockBalanceAsOfExportPageDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/returnable-containers/debts/as-of" : {
      "post" : {
        "tags" : [ "Integrations - ReturnableContainerDebts" ],
        "summary" : "Read a point-in-time returnable-container debt export page",
        "description" : "Returns one deterministic page of open returnable-container debts as of a fixed accounting date, for reconciliation with an external accounting ledger. Four things a consumer must know: (1) a row is one open debt for one container - the register tracks individual containers with a balance of 0 or 1, so a consumer whose own books are quantitative must aggregate the rows itself; (2) both directions are returned unless `direction` narrows them, and `RECEIVABLE` means the party owes the tenant while `PAYABLE` means the tenant owes the party; (3) `warehouseId` is the warehouse the container is currently assigned to, not the one the debt was opened in, and the warehouse filter applies to that same column - a debt follows its container when the container moves; (4) `asOf` is mandatory and the whole scan is anchored to one point in time, since the query is paged and an implicit \"now\" re-evaluated on every page request would land rows on either side of the keyset boundary depending on timing.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Point-in-time container-debt export request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.export.dto.ContainerDebtAsOfExportRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Container-debt export page",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.export.dto.ContainerDebtAsOfExportPageDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/integrations/export-payloads/{entityType}/{internalEntityId}" : {
      "get" : {
        "tags" : [ "Integrations - ExportPayloads" ],
        "summary" : "Read one entity's export payload on demand",
        "description" : "Returns the payload the change feed would deliver today for a single entity, resolved to the requesting external system's identifiers. Read-only: it registers no change-feed event and moves no checkpoint, so a consumer can refresh a payload it failed to import without disturbing other readers.",
        "parameters" : [ {
          "name" : "externalSystemCode",
          "in" : "query",
          "description" : "Code of the external system the payload is prepared for",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Freshly prepared export payload",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.exportpayload.dto.ExportPayloadResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/warehouse-picking-policies/{warehouseId}" : {
      "get" : {
        "tags" : [ "Outbound - Warehouse Picking Policies" ],
        "summary" : "Get warehouse picking policy",
        "description" : "Gets picking policy for a warehouse. Returns default policy if none exists.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : { },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Outbound - Warehouse Picking Policies" ],
        "summary" : "Update warehouse picking policy",
        "description" : "Creates or updates picking policy for a warehouse.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/warehouse-picking-policies/sse/{warehouseId}" : {
      "get" : {
        "tags" : [ "Outbound - Warehouse Picking Policies" ],
        "summary" : "SSE stream of warehouse picking policy by warehouse ID",
        "description" : "Server-Sent Events (SSE) stream providing real-time updates for a specific warehouse picking policy.\nReturns policy data whenever it changes. Returns default policy if none exists.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of WarehousePickingPolicyResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.WarehousePickingPolicyResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/warehouse-shipping-policies/{warehouseId}" : {
      "get" : {
        "tags" : [ "Outbound - Warehouse Shipping Policies" ],
        "summary" : "Get warehouse shipping policy",
        "description" : "Gets shipping policy for a warehouse. Returns default policy if none exists.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : { },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Outbound - Warehouse Shipping Policies" ],
        "summary" : "Update warehouse shipping policy",
        "description" : "Creates or updates shipping policy for a warehouse.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/warehouse-shipping-policies/sse/{warehouseId}" : {
      "get" : {
        "tags" : [ "Outbound - Warehouse Shipping Policies" ],
        "summary" : "SSE stream of warehouse shipping policy by warehouse ID",
        "description" : "Server-Sent Events (SSE) stream providing real-time updates for a specific warehouse shipping policy.\nReturns policy data whenever it changes. Returns default policy if none exists.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of WarehouseShippingPolicyResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.WarehouseShippingPolicyResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-location-settings/{locationId}" : {
      "get" : {
        "tags" : [ "Outbound - Outbound Location Settings" ],
        "summary" : "Get outbound location settings by location ID",
        "description" : "Gets outbound location settings for a location. Returns unrestricted settings if none exist.",
        "parameters" : [ {
          "name" : "locationId",
          "in" : "path",
          "description" : "Location ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Outbound location settings",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.OutboundLocationSettingsResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-location-settings" : {
      "put" : {
        "tags" : [ "Outbound - Outbound Location Settings" ],
        "summary" : "Update outbound location settings",
        "description" : "Updates outbound location settings for a location.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Outbound location settings payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.OutboundLocationSettingsIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated outbound location settings",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.OutboundLocationSettingsResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Outbound - Outbound Location Settings" ],
        "summary" : "Create outbound location settings",
        "description" : "Creates outbound location settings for a location.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Outbound location settings payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.OutboundLocationSettingsIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created outbound location settings",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.OutboundLocationSettingsResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/wave-picking-policies/sse" : {
      "get" : {
        "tags" : [ "Outbound - Wave Picking Policies" ],
        "summary" : "SSE stream of wave picking policies",
        "description" : "\n        Opens an SSE connection that streams wave picking policy updates.\n        Use POST /wave-picking-policies/sse/filters to stage filters first, then pass the returned ID\n        in the X-SSE-Request-Id header.\n    ",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /wave-picking-policies/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<WavePickingPolicyResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/wave-picking-policies/sse/count" : {
      "get" : {
        "tags" : [ "Outbound - Wave Picking Policies" ],
        "summary" : "SSE stream of wave picking policy count",
        "description" : "\n        Opens an SSE connection that streams the count of wave picking policies matching filters.\n        Use POST /wave-picking-policies/sse/filters to stage filters first.\n    ",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /wave-picking-policies/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/wave-picking-policies/sse/{id}" : {
      "get" : {
        "tags" : [ "Outbound - Wave Picking Policies" ],
        "summary" : "SSE stream of wave picking policy by ID",
        "description" : "\n        Opens an SSE connection that streams updates for a specific wave picking policy.\n    ",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the wave picking policy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of WavePickingPolicyResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/wave-picking-policies/sse/filters" : {
      "post" : {
        "tags" : [ "Outbound - Wave Picking Policies" ],
        "summary" : "Stage SSE filters",
        "description" : "\n        Stages filter configuration for subsequent SSE requests.\n        Returns an ID to be used in the X-SSE-Request-Id header of SSE endpoints.\n    ",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/wave-picking-policies/search" : {
      "post" : {
        "tags" : [ "Outbound - Wave Picking Policies" ],
        "summary" : "Search wave picking policies",
        "description" : "Gets all wave picking policies with pagination and optional filters.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of wave picking policies",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/wave-picking-policies/{id}" : {
      "get" : {
        "tags" : [ "Outbound - Wave Picking Policies" ],
        "summary" : "Get wave picking policy by ID",
        "description" : "Gets wave picking policy details by ID.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Wave picking policy details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Wave picking policy not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Outbound - Wave Picking Policies" ],
        "summary" : "Delete wave picking policy",
        "description" : "Soft deletes a wave picking policy by ID with optimistic locking.",
        "parameters" : [ ],
        "responses" : {
          "204" : {
            "description" : "Wave picking policy deleted",
            "headers" : { }
          },
          "404" : {
            "description" : "Wave picking policy not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/wave-picking-policies/new" : {
      "post" : {
        "tags" : [ "Outbound - Wave Picking Policies" ],
        "summary" : "Get new wave picking policy template",
        "description" : "Returns a template for creating a new wave picking policy with default values.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "New wave picking policy template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/wave-picking-policies" : {
      "post" : {
        "tags" : [ "Outbound - Wave Picking Policies" ],
        "summary" : "Create or update wave picking policy",
        "description" : "\n        Creates a new wave picking policy or updates an existing one.\n        If ID is provided and exists, the policy is updated; otherwise, a new policy is created.\n        Requires idempotency key header.\n    ",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Wave picking policy payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Persisted wave picking policy details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/wave-picking-policies/light" : {
      "post" : {
        "tags" : [ "Outbound - Wave Picking Policies" ],
        "summary" : "Get lightweight policy data",
        "description" : "\n        Returns lightweight data for wave picking policies that need synchronization.\n        Used for efficient client-side data sync - returns only policies that are deleted or have version mismatch.\n    ",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID/version pairs to check",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of policies that need sync",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyLightDto"
                  },
                  "title" : "List<WavePickingPolicyLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/picking-stock-settings/search" : {
      "post" : {
        "tags" : [ "Outbound - Picking Stock Settings" ],
        "summary" : "Search picking stock settings",
        "description" : "Gets all picking stock settings with pagination and filters.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/picking-stock-settings/{id}" : {
      "get" : {
        "tags" : [ "Outbound - Picking Stock Settings" ],
        "summary" : "Get picking stock settings by ID",
        "description" : "Gets picking stock settings by ID.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Outbound - Picking Stock Settings" ],
        "summary" : "Update picking stock settings",
        "description" : "Updates existing picking stock settings.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Outbound - Picking Stock Settings" ],
        "summary" : "Delete picking stock settings",
        "description" : "Deletes picking stock settings by ID.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/picking-stock-settings" : {
      "post" : {
        "tags" : [ "Outbound - Picking Stock Settings" ],
        "summary" : "Create picking stock settings",
        "description" : "Creates new picking stock settings.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/sse" : {
      "get" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Get waves stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof waves for the current tenant. The endpoint streams paginated waves\nas they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /waves/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /waves/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<WaveResponseDto>\ncontaining the current page of waves matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns waves for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /waves/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<WaveResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.wave.dto.WaveHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/sse/{id}" : {
      "get" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Get wave by ID via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific wave by its ID for the current tenant. The endpoint streams\nthe wave data as it changes in the database.\n\n## Usage\n1. Connect to this SSE endpoint with the wave ID as path parameter\n2. Receive continuous updates as the wave data changes\n\n## Path Parameters\n- `id`: UUID of the wave to monitor\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized WaveResponseDto\ncontaining the current state of the wave.\n\n## Authentication\nRequires authentication. Only returns the wave if it belongs to the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the wave",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of WaveResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WaveResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/sse/{id}/orders" : {
      "get" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Get wave order headers via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor order headers in a specific wave by wave ID. The endpoint streams order headers\n(without lines) as they change in the database.\n\n## Usage\n1. Connect to this SSE endpoint with the wave ID as path parameter\n2. Receive continuous updates as orders or their data change\n\n## Path Parameters\n- `id`: UUID of the wave to monitor orders for\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized List<OutboundOrderHeaderResponseDto>\ncontaining the current state of all order headers in the wave, sorted by wave order.\n\n## Tracked Changes\nUpdates are triggered by changes to:\n- Wave orders composition (add/remove/reorder)\n- Order headers\n\n## Authentication\nRequires authentication. Only returns orders if the wave belongs to the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the wave",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of List<OutboundOrderHeaderResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderHeaderResponseDto"
                  },
                  "title" : "List<OutboundOrderHeaderResponseDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/sse/count" : {
      "get" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Get waves count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof waves matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /waves/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /waves/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts waves for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /waves/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/sse/filters" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Stage filters for Wave SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/search" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Search waves",
        "description" : "Gets all waves with pagination and filters.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}" : {
      "get" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Get wave by ID",
        "description" : "Gets wave by ID.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Update wave",
        "description" : "Updates existing wave. Only DRAFT waves can be updated. Orders can be replaced via orderIds field (null = don't change, empty = clear all).",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Delete wave",
        "description" : "\nDeletes wave by ID with cancellation and soft delete.\n\n## Behavior\n- If wave is already deleted - returns empty result (idempotent).\n- If wave is already CANCELLED - sets deleted flag only.\n- Otherwise - performs full cancellation (cancels pickings, replenishments, resets orders) and sets deleted flag.\n\n## Method\nDELETE /waves/{id}\n\n## Path Parameters\n- `id`: UUID of the wave\n\n## Query Parameters\n- `version`: Short value of the current entity version for optimistic locking\n\n## Headers\n- `X-Idempotency-Key`: Required. Unique key for idempotency.\n\n## Response\nReturns cancellation result with counts (cancelledPickings, cancelledReplenishments, restoredOrdersCount).\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 400 if wave is COMPLETED\n- 400 if version mismatch\n- 404 if wave not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the wave",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current entity version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Deleted successfully",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/new" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Get new wave template",
        "description" : "\nReturns a new wave template with default values for creating a new wave.\n\n## Method\nPOST /waves/new\n\n## Response\nWaveResponseDto with default values that can be used as a template for creating a new wave.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse to put on the template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New wave template with default values",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WaveHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Create wave",
        "description" : "Creates new wave in DRAFT status. Orders can be provided in orderIds field.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/plan" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Plan wave",
        "description" : "Executes planning for a wave. Wave must be in DRAFT status with orders in PENDING status.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/launch" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Launch wave",
        "description" : "Launches a wave from PLANNED status. Excludes NOT_PLANNED orders and activates documents.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/cancel" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Cancel wave",
        "description" : "Cancels a wave. Sets picking and replenishment documents to CANCELLED status, returns orders to PENDING status.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/to-draft" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Return wave to draft",
        "description" : "Returns a planned wave to draft status. Wave must be in PLANNED status.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/light" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Get lightweight wave data for synchronization",
        "description" : "\nReturns lightweight wave data for entities that need synchronization.\n\n## Request Body\nList of IdVersionDto containing ID/version pairs to check.\n\n## Response\nList of WaveLightDto for waves that need sync:\n- If wave not found: returns entry with deleted=true\n- If version differs or null: returns current wave data\n- If version matches: wave is skipped (no sync needed)\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID/version pairs to check",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of waves that need sync",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WaveLightDto"
                  },
                  "title" : "List<WaveLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/sorting/consolidate" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Consolidate goods to container",
        "description" : "Transfers all goods from source containers to target container. Source containers become EMPTY after successful transfer.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/sorting/nest" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Nest containers into shipment container",
        "description" : "Nests containers into an existing shipment container. All containers must belong to the same recipient and shipping zone.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/sorting/create-container" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Create sorting container and nest",
        "description" : "Creates a new temporary LPN_SHIPMENT container and nests the specified containers into it during sorting.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/sorting/finish" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Finish sorting for container",
        "description" : "Marks container as sorted: sets purpose to LPN_SHIPMENT, status to CLOSED, and target location to packing or shipping zone based on wave policy.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/sorting/transfer" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Transfer item between containers",
        "description" : "Transfers a single item from source container to target container. Used for position-by-position transfer during sorting operations.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/sorting/create-returns-container" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Create returns container",
        "description" : "Creates a new temporary RETURNS container for handling surplus goods from cancelled orders during sorting.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/sorting/transfer-to-returns" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Transfer to returns container",
        "description" : "Transfers surplus goods to a returns container during sorting. Validates quantity does not exceed free quantity (stock minus pending order needs).",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/packing/create-container" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Create packing container and nest",
        "description" : "Creates a new temporary LPN_SHIPMENT container and nests the specified containers into it during packing.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/packing/nest" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Nest containers into packing shipment container",
        "description" : "Nests containers into an existing shipment container during packing. All containers must belong to the same recipient and shipping zone.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/waves/{id}/packing/finish" : {
      "post" : {
        "tags" : [ "Outbound - Waves" ],
        "summary" : "Finish packing for container",
        "description" : "Marks container as packed: sets purpose to LPN_SHIPMENT, status to CLOSED, and target location to shipping zone based on outbound order.",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/sse" : {
      "get" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "SSE stream of picking documents",
        "description" : "\n        Server-Sent Events (SSE) stream providing real-time updates for picking documents list.\n        Supports pagination and filtering. Use the filters endpoint to stage complex filters\n        and pass the returned ID in the X-SSE-Request-ID header.\n    ",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /pickings/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<PickingHeaderResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.picking.dto.PickingHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/sse/count" : {
      "get" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "SSE stream of picking documents count",
        "description" : "\n        Server-Sent Events (SSE) stream providing real-time count of picking documents.\n        Supports filtering. Use the filters endpoint to stage complex filters\n        and pass the returned ID in the X-SSE-Request-ID header.\n    ",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /pickings/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/sse/{id}" : {
      "get" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "SSE stream of picking document by ID",
        "description" : "\n        Server-Sent Events (SSE) stream providing real-time updates for a specific picking document.\n        Returns full picking data including executions whenever the document or its facts change.\n    ",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Picking ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of PickingFullResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/sse/{id}/source-container/{containerId}" : {
      "get" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "SSE stream of a source container matched against a picking",
        "description" : "\n        Server-Sent Events (SSE) stream of a storage container's contents matched against the picking's\n        remaining demand. Each row carries what the container holds and what is still demanded; excess,\n        match state and whether the whole container may be taken are derived from those numbers plus the\n        picking's allowOverpick. The container need not appear in the picking plan.\n        Emits on changes to the picking, container stock, reservations, the container row and its state.\n    ",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Picking ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "containerId",
          "in" : "path",
          "description" : "Source container ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of PickingSourceContainerDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSourceContainerDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/sse/wave/{waveId}" : {
      "get" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "SSE stream of picking documents by wave ID",
        "description" : "\n        Server-Sent Events (SSE) stream providing real-time updates for picking documents of a specific wave.\n        Supports sorting and filtering without pagination. Use the filters endpoint to stage complex filters\n        and pass the returned ID in the X-SSE-Request-ID header.\n    ",
        "parameters" : [ {
          "name" : "waveId",
          "in" : "path",
          "description" : "UUID of the wave",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/java.util.UUID"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /pickings/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of List<PickingHeaderResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingHeaderResponseDto"
                  },
                  "title" : "List<PickingHeaderResponseDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/sse/filters" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Stage SSE filters for picking",
        "description" : "\n        Stages filter parameters for subsequent SSE requests. Returns an ID that can be passed\n        in the X-SSE-Request-ID header of SSE endpoints. Filters are cached temporarily.\n    ",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/search" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Search picking documents",
        "description" : "Search picking documents with pagination and filtering.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Filter parameters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of picking documents",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.picking.dto.PickingHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/by-barcode" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Resolve pickings by package barcode",
        "description" : "\nResolves the barcode printed on a package label into the pickings that serve the outbound orders\ncarrying it. Built for the handheld flow, where the executor scans the label instead of picking a\ndocument out of a list.\n\n## Method\nPOST /pickings/by-barcode\n\n## Request Body\nPickingBarcodeLookupRequestDto with the scanned barcode and the warehouse being worked in.\nThe barcode is matched exactly, after trimming.\n\n## Response\nPickingBarcodeLookupResultDto holding the pickings the acting executor may work on: the same\nworking set the picking counter and the executor list use — PLANNED or IN_PROGRESS in the given\nwarehouse, narrowed by the warehouse's executor assignment mode.\n\nThe list is empty when nothing matches, when the picking is already finished or cancelled, or when\nit belongs to another executor. It may hold more than one picking, because WMS does not enforce\nbarcode uniqueness and one order can be served by several pickings.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Scanned package barcode and warehouse",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingBarcodeLookupRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Pickings the executor may work on for the scanned barcode",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingBarcodeLookupResultDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/unplanned" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Create unplanned picking",
        "description" : "\n        Creates a manual unplanned picking document.\n        Request requires Idempotency-Key header.\n    ",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Unplanned picking creation payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.UnplannedPickingCreateIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "description" : "Unplanned picking successfully created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFullResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation error - invalid input data or business rule violation",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/{id}/unplanned" : {
      "put" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Update unplanned picking",
        "description" : "\n        Updates a manual unplanned picking document.\n        Request requires optimistic-lock version and Idempotency-Key header.\n    ",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Picking ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Unplanned picking update payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.UnplannedPickingUpdateIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Unplanned picking successfully updated",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFullResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation error - invalid input data or business rule violation",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/{id}" : {
      "get" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Get picking document by ID",
        "description" : "Retrieves a picking document by its ID with full details including executions.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Picking ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Picking document with full details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFullResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Picking document not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "patch" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Change picking status",
        "description" : "\n        Changes picking status to terminal state.\n        Allowed target statuses: COMPLETED, PARTIALLY_COMPLETED, CANCELLED.\n        Completing the picking (COMPLETED or PARTIALLY_COMPLETED) settles its open containers that were\n        never closed: those holding goods are closed, and under PICKING_AS_FINAL_OPERATION shipped with\n        the picking; empty ones are released, each becoming EMPTY (EMPTY_RTI) and losing its picking,\n        order and wave bindings.\n        Request requires optimistic-lock version and Idempotency-Key header.\n    ",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Picking ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Status change request payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.ChangePickingStatusRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.ChangePickingStatusResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation error - invalid data or business rule violation",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/{id}/missing-position" : {
      "get" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Explain a missing picking position",
        "description" : "The picking- and storage-zone stock of a missing position's product: tiles in base units, the free rows the position may take with a repack proposal where a repack in a picking cell fills it and a re-plan mark where an administrator's re-plan would take the row, the reservations that hold the rest, and the stock it cannot take (another status, lot status, lot or feature), which the tiles leave out.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Picking ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "productId",
          "in" : "query",
          "description" : "Product of the position (UUID)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "productFeatureId",
          "in" : "query",
          "description" : "Product feature of the position (UUID)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "lotId",
          "in" : "query",
          "description" : "Lot of the position (UUID)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "packTypeId",
          "in" : "query",
          "description" : "Pack type of the position (UUID)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "targetContainerId",
          "in" : "query",
          "description" : "Cart position of a cluster picking (UUID)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "The missing position card",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingMissingPositionResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The picking is unknown or the product is not in its plan",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/count" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Count picking documents",
        "description" : "Returns the count of picking documents matching the provided filters.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Filter parameters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Count of picking documents matching filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/facts" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Register picking fact",
        "description" : "\n        Registers a new picking fact (actual picked goods). This records the execution of a picking\n        operation from a TSD (terminal data collection) device.\n\n        Validation rules:\n        - Picking must be in PLANNED or IN_PROGRESS status\n        - Product must be in the picking plan\n        - Lot must match planned lot (unless specificationStage = AT_PICKING)\n        - Overpick is only allowed if OutboundOrder.allowOverpick = true\n        - Target container must be active and assigned to this picking or wave\n    ",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Picking fact data including product, quantity, source and target",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFactInputDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingWithFactIdDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation error - invalid data or business rule violation",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/{id}/cancellations" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Cancel a picking line",
        "description" : "Cancels part or all of the remaining demand of a discrete picking position by recording a cancellation fact. The missing demand is reduced first, then the position's sourced lines; the quantity may not exceed the position's remaining demand. Moves no stock; releases the reservation on the cancelled quantity. Allowed only when the acting user's profile grants `allowPickingLineCancellation`.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Picking line cancellation request payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLineCancelInputDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingWithFactIdDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation error - invalid data or business rule violation",
            "headers" : { }
          },
          "403" : {
            "description" : "The acting user's profile does not grant the picking-line cancellation right",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/{id}/repacks" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Repack a missing picking position",
        "description" : "Repacks stock in place into the pack type of a missing position and re-plans that position of this picking onto it, in one transaction. Requires the `outbound.pickings.repack` right in the picking's warehouse.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "The missing position and the stock to open",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingRepackIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFullResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation error - the position, the stock or the cell does not allow the repack",
            "headers" : { }
          },
          "403" : {
            "description" : "The acting user's profile does not grant the picking repack right",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/{id}/pick-all" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Pick all remaining lines",
        "description" : "\n        Creates picking facts for all remaining (not yet executed) picking lines of a document.\n        Operation is allowed only when the acting user's profile grants `allowPickAll`.\n        Without a snapshot, the request-level `targetContainerId` overrides target container for\n        all generated facts. With a snapshot, each row's own `targetContainerId` wins and the\n        request-level `targetContainerId` is used only as a fallback for rows that omit it.\n    ",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Accounting date, optional target container override, and an optional client snapshot (picking version plus the rows displayed on the terminal). The snapshot is accepted on free-picking documents only; without it the server determines the composition itself.",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingPickAllRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingPickAllResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation error - operation is not allowed or request data is invalid",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/{id}/source-container/{containerId}/pick" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Take a source container whole",
        "description" : "\n        Registers picking facts for the container's entire content in one transaction, claims the\n        container as this picking's cart (PICK_CART) and moves it to the picking target location. The\n        container stays open and can take more goods; the operator closes it through the close endpoint.\n        The facts carry the same container as source and target, so stock stays inside it and only its\n        cell changes.\n        Goods absent from the plan are accepted only when the order allows overpicking.\n        Requires an Idempotency-Key header.\n    ",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Accounting date and the rows the operator saw on the card",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSourceContainerPickRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSourceContainerPickResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The container is not an eligible source, is blocked, or its content breaks the picking rules",
            "headers" : { }
          },
          "409" : {
            "description" : "The container's content changed after the card was displayed; the response lists the divergences",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/containers" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Register container for picking",
        "description" : "\n        Registers a container for a picking operation using a unified barcode flow.\n\n        The system resolves container type automatically:\n        - Existing container in current warehouse has priority\n        - If no existing container is found and the warehouse allows temporary containers, the container is\n          created of the temporary container type whose code pattern matches the whole scan\n        - If several temporary types match and `containerTypeId` is absent, nothing is created: the response\n          has `containerId` null and lists the candidates in `containerTypeChoice`; repeat the request with\n          the chosen `containerTypeId` (the same idempotency key may be reused). A `containerTypeId` that\n          does not match the scan is refused with 400 on `containerTypeId`\n        - If neither path is applicable, a validation error is returned\n\n        For existing containers, validation rules from current registration logic are preserved.\n        The operation timestamp is generated on server side.\n        Either locationId or carrierId must be provided for container placement.\n    ",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Container registration payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.RegisterContainerForPickingRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.RegisterContainerForPickingResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation error - invalid data or business rule violation",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/containers/close" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Close picking container",
        "description" : "\n        Closes a PICK_CART container. The close completes the picking (status COMPLETED) when no line\n        has quantity left, whatever its other containers are doing. The completion closes the picking's\n        remaining open containers that hold goods and releases the empty ones: each becomes EMPTY\n        (EMPTY_RTI) and loses its picking, order and wave bindings. Under picking-as-final-operation the\n        completion then ships the picking's closed containers.\n    ",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Close container payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.ClosePickingContainerRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.ClosePickingContainerResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation error - invalid data or business rule violation",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/light" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Get lightweight picking data",
        "description" : "\nReturns lightweight picking data for efficient client-side synchronization.\n\n## Request Body\nList of ID and version pairs to check for updates. Maximum 100 items per request.\n\n## Response\nReturns a list of PickingLightDto containing only records that need updates:\n- Records that have been modified (version mismatch)\n- Records that have been deleted\n\nRecords with matching version are not returned to minimize payload size.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID and version pairs to check for updates (max 100 items)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight picking data for records that need updates",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLightDto"
                  },
                  "title" : "List<PickingLightDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid request (e.g., too many items)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/minimal/search" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Search minimal picking records",
        "description" : "\nReturns minimal picking records (id and document-number label only) for autocomplete/lookup fields.\n\n## Usage\nPOST /pickings/minimal/search\nwith an optional FilterRequest JSON body (e.g. filter by document number and non-deleted).\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (max 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Minimal picking data (id and number label only)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit exceeds maximum",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/pickings/lot-required" : {
      "post" : {
        "tags" : [ "Outbound - Pickings" ],
        "summary" : "Check if lot is required for picking",
        "description" : "\nReturns whether a lot must be specified for picking.\nA product category that does not use lots never requires one; only then does the\nwarehouse tracking policy decide.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Lot requirement query",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLotRequirementRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lot requirement for picking facts",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLotRequirementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/sse" : {
      "get" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Stream shipping events",
        "description" : "Server-sent stream of the shipping event list.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'date,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /dispatches/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<DispatchHeaderResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/sse/count" : {
      "get" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Stream the shipping event count",
        "description" : "Server-sent stream of how many shipping events match the filters.",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /dispatches/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/sse/{id}" : {
      "get" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Stream one shipping event",
        "description" : "Server-sent stream of a single shipping event with its handling units.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Shipping event ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of DispatchFullResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/sse/{id}/container/{containerId}" : {
      "get" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Stream one container of a shipping event",
        "description" : "Server-sent stream of one container's contents set against the event's plan, including goods the plan never named. `quantityDemanded` is null on an event that carries no plan, and zero for an analytic the plan does not want.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Shipping event ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "containerId",
          "in" : "path",
          "description" : "Container ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of DispatchContainerCardDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchContainerCardDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/sse/filters" : {
      "post" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Stage SSE filters",
        "description" : "Stages filter parameters and returns the request id the SSE endpoints read.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/search" : {
      "post" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Search shipping events",
        "description" : "Returns a paginated, filterable list of shipping event headers.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'date,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Filter parameters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/ready" : {
      "get" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "List what is ready to hand over",
        "description" : "Orders whose picked goods stand in a shipping zone of the warehouse, optionally narrowed to one channel and carrier. Each unit reports whether it stands where its channel expects it; a channel with no configured zone reports null rather than a verdict.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "query",
          "description" : "Warehouse ID (UUID). Required",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "channel",
          "in" : "query",
          "description" : "Shipping channel to narrow to",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "carrierPartyId",
          "in" : "query",
          "description" : "Carrier party ID (UUID) to narrow to",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchReadyOrderDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/count" : {
      "post" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Count shipping events",
        "description" : "Returns how many shipping events match the filters.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Filter parameters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/light" : {
      "post" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Get lightweight shipping event data for synchronization",
        "description" : "\nReturns lightweight shipping event data for entities that need synchronization.\n\n- The request carries id/version pairs; only events whose version differs (or whose version was not\n  supplied) come back\n- An unknown id comes back as an entry with `deleted = true`\n- `name` is composed as \"{number} ({date})\"\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID and version pairs to check for updates (max 100 items)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight dispatch data for records that need updates",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchLightDto"
                  },
                  "title" : "List<DispatchLightDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid request (e.g., too many items)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches" : {
      "post" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Create or edit a shipping event",
        "description" : "\nCreates a shipping event — one physical handover to one transport receiver — or edits the one named\nby `id`.\n\n- `channel` is required; `carrierPartyId` is required for COURIER and rejected for SELF_PICKUP\n- `planMode` defaults from the channel on create (STRICT for VEHICLE_ROUTE and INTER_WAREHOUSE, OPEN\n  otherwise) and keeps the stored value on edit\n- `planEntries` are accepted only in STRICT mode, and an order may sit in the plan of at most one\n  non-closed strict event\n- editing requires `version` for optimistic locking, and neither the channel nor the warehouse may\n  differ from the stored one; the plan mode cannot change once the event has handling units\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Shipping event to create or edit",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFullResponseDto"
                }
              }
            }
          },
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/self-pickup" : {
      "post" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Open the self-pickup event of an order",
        "description" : "\nReturns the non-closed self-pickup event the order is already being handed over through, opening one\nif none is running. Both branches answer with the same shape.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Order collecting in person",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.SelfPickupDispatchOpenIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFullResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/{id}" : {
      "get" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Get a shipping event",
        "description" : "Returns the header, the expected-order plan and the registered handling units with the goods that left with them.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Shipping event ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFullResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Shipping event not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "patch" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Move a shipping event to another status",
        "description" : "\nReleases a prepared event for loading (`TO_SHIP`), confirms the shipping work as finished\n(`SHIPPED`) or calls it off (`CANCELLED`). The lifecycle only ever moves forward —\nDRAFT -> TO_SHIP -> IN_PROGRESS -> SHIPPED, with CANCELLED reachable from any non-terminal status —\nso no request may name a status behind the current one. `IN_PROGRESS` is not a target: registering\nthe first unit sets it. `version` must come from the most recent dispatch response, registration\nincluded, since registering the first unit is itself a versioned write.\n\n`TO_SHIP`:\n\n- Refused unless `gateLocationId` is set: without a shipping zone there is nowhere to load from.\n  An event without one names it through `PUT /dispatches/{id}` first\n- A draft accepts no units, facts or reversals until it is released\n\n`SHIPPED`:\n\n- COURIER events refuse to close while any standing unit carries no `actualWaybillNumber`\n- Under-shipment against a STRICT plan is not an error but needs `acknowledgeShortShipment`\n- Every order with units on the event has its status recomputed here, identically for all channels\n- Orders whose `shortfallClosure` is AUTOMATIC are closed short immediately, releasing the\n  reservations and queue position of the remainder; BY_OPERATOR orders stay PARTIALLY_SHIPPED\n\n`CANCELLED`:\n\n- The goods issue is reversed and everything the event had loaded, loose and containers alike, is\n  placed in the event's own shipping zone, `gateLocationId`\n- `gateLocationId` is therefore required while any standing unit carries facts, and has to be a\n  SHIPPING location of the event's own warehouse; an event without one names it through\n  `PUT /dispatches/{id}` first\n- An event holding nothing owes no zone, which is how an event opened by mistake is abandoned\n- No order status is recomputed: only a non-terminal event can be cancelled, so it never advanced\n  one, and `orderOutcomes` comes back empty\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Shipping event ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Target status with the event's current version",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.ChangeDispatchStatusRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.ChangeDispatchStatusResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The event cannot move to the requested status; the body lists every precondition broken",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/{id}/handling-units/container" : {
      "post" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Ship a container off a shipping event",
        "description" : "\nHands one container to the transport. The server registers a CONTAINER handling unit under it and\nsnapshots the container's whole stock into the unit's facts, so the balance is relieved at once.\n\n- the container leaves whole and is never taken apart to ship one position out of it\n- its source is the cell the container stands in, resolved from its current state\n- `accountingDate` is supplied by the caller, as for receipt, putaway, relocation and picking facts\n\nThe first handling unit moves the event to IN_PROGRESS.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Shipping event ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "The container leaving with the transport",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchContainerUnitInputDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchWithHandlingUnitIdDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The unit was refused; the body lists every rule it broke",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/{id}/handling-units/loose" : {
      "post" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Open a loose handling unit on a shipping event",
        "description" : "\nOpens one LOOSE handling unit by hand. It is opened empty and OPEN; the goods arrive through\n`POST .../handling-units/{unitId}/facts`, one scan at a time, and\n`POST .../handling-units/{unitId}/finalize` closes it with the carrier's waybill number.\n\n- `sourceLocationId` is the shipping cell the goods stand in; goods standing in a container ship as\n  that container instead\n- `accountingDate` is supplied by the caller, as for receipt, putaway, relocation and picking facts\n\nThe first handling unit moves the event to IN_PROGRESS.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Shipping event ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Handling unit to open",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchLooseUnitInputDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchWithHandlingUnitIdDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The unit was refused; the body lists every rule it broke",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/{id}/facts" : {
      "post" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Register one scan on a shipping event",
        "description" : "\nRegisters one scanned position and posts it immediately: the goods are already on the transport, so\nthe balance is relieved at the moment of the scan. Three modes, told apart by what the body names:\n\n- `unitId` given: the fact joins that open LOOSE unit\n- `unitId` null, `outboundOrderId` given: the server finds or opens the order's LOOSE unit\n- both null: the quantity is spread over every order still waiting for this analytic, and must equal\n  the sum of their outstanding plan exactly — less cannot be attributed, more has no addressee\n\n`accountingDate` and `sourceLocationId` are required in the last two modes, where the server opens the\nunit. A negative quantity corrects an earlier scan and therefore requires `unitId`; it may reduce the\nunit to zero on an analytic key, never below it. CONTAINER units take no scans: their facts are\nsnapshotted when the unit is opened.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Shipping event ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "The scanned position: target, analytics, quantity and its source cell",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFactRegisterInputDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchWithRegisteredFactsDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The unit is finalized, the event is closed, the balance is short, the scan overships an order, or an aggregated quantity does not match the outstanding plan",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/{id}/handling-units/{unitId}/finalize" : {
      "post" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Finalize a handling unit",
        "description" : "\nCloses a unit to further facts and records the number the carrier supplied. Posts nothing: the goods\nleft the balance as they were scanned.\n\n- Accepted for an already-finalized unit too, which is how a container unit gets its number\n- A null `actualWaybillNumber` leaves any existing one untouched\n- A unit whose scans were all corrected away holds nothing and cannot be finalized\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Shipping event ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "unitId",
          "in" : "path",
          "description" : "Handling unit ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        } ],
        "requestBody" : {
          "description" : "The waybill number the carrier issued, when there is one",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHandlingUnitFinalizeInputDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchWithHandlingUnitIdDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The event is closed, the unit holds no quantity, or the unit is a reversal",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/dispatches/{id}/handling-units/{unitId}/reverse" : {
      "post" : {
        "tags" : [ "Outbound - Dispatches" ],
        "summary" : "Reverse a handling unit",
        "description" : "\nUndoes one handling unit by writing a reversing unit that carries a reason. The original is never\nedited or deleted.\n\n- The goods return to the source cell or source container the original unit recorded\n- A unit may be reversed at most once, and a reversing unit cannot itself be reversed\n- Unavailable once the event is CLOSED or CANCELLED; corrections after a close go through the\n  inbound SHIPMENT_CANCELLATION receipt, and a cancellation has already returned everything\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Shipping event ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "unitId",
          "in" : "path",
          "description" : "Handling unit ID",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        } ],
        "requestBody" : {
          "description" : "Reason for the reversal",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHandlingUnitReverseIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "201" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchWithHandlingUnitIdDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The unit cannot be reversed; the body lists every rule broken",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/sse" : {
      "get" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Get outbound orders stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof outbound orders for the current tenant. The endpoint streams paginated outbound\norder headers as they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /outbound-orders/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /outbound-orders/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<OutboundOrderHeaderDto>\ncontaining the current page of outbound orders matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns orders for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /outbound-orders/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<OutboundOrderHeaderDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/sse/count" : {
      "get" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Get outbound orders count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof outbound orders matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /outbound-orders/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /outbound-orders/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts orders for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /outbound-orders/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/sse/{id}" : {
      "get" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Get single outbound order via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific outbound order by its ID.\n\n## Usage\nConnect to this SSE endpoint with the outbound order ID in the path parameter.\nReceive continuous updates as the order data changes.\n\n## Path Parameters\n- `id`: UUID of the outbound order\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized OutboundOrderResponseDto\ncontaining the full order details.\n\n## Authentication\nRequires authentication. Only returns orders for the authenticated user's tenant.\n\n## Errors\n- Returns error event if order ID is missing or invalid\n- Returns null events if order is deleted or not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the outbound order",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of OutboundOrderResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/sse/filters" : {
      "post" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/search" : {
      "post" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Search outbound orders",
        "description" : "\nReturns a paginated list of outbound order headers filtered by optional criteria.\nOptimized for list views. Use query parameters for pagination and sorting.\n\n## Method\nPOST /outbound-orders/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns Page<OutboundOrderHeaderDto> with items and pagination metadata.\n\n## Authentication\nRequires authentication. Only returns orders for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of outbound order headers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/{id}" : {
      "get" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Get outbound order by ID",
        "description" : "\nReturns full details of a single outbound order including lines.\n\n## Method\nGET /outbound-orders/{id}\n\n## Path Parameters\n- `id`: UUID of the outbound order\n\n## Response\nOutboundOrderResponseDto containing the full order details.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if the order is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the outbound order",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Outbound order details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Outbound order not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Delete outbound order (soft delete)",
        "description" : "\nPerforms a soft delete of an outbound order using optimistic locking.\n\n## Method\nDELETE /outbound-orders/{id}\n\n## Path Parameters\n- `id`: UUID of the outbound order\n\n## Query Parameters\n- `version`: Short value of the current entity version for optimistic locking\n\n## Response\nEmpty response on success.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the outbound order",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current entity version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Deleted successfully",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/new" : {
      "post" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Get new outbound order template",
        "description" : "\nReturns a new outbound order template with default values for creating a new order.\n\n## Method\nPOST /outbound-orders/new\n\n## Response\nOutboundOrderResponseDto with default values that can be used as a template for creating a new order.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse to put on the template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New outbound order template with default values",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders" : {
      "post" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Process outbound order",
        "description" : "\nCreates or updates an outbound order from the provided payload and returns the full order details.\n\n## Method\nPOST /outbound-orders\n\n## Request Body\nOutboundOrderIncomeDto describing the outbound order to create or update.\n\n## Response\nOutboundOrderResponseDto with the persisted order details.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Outbound order payload",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Persisted outbound order details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/plan" : {
      "post" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Plan outbound orders",
        "description" : "\nRuns direct-order planning/replanning for an ordered list of outbound order IDs.\n\n## Method\nPOST /outbound-orders/plan\n\n## Request Body\nDirectOrderPlanRequestDto with `orderIds` preserving client-defined order.\n\n## Response\nDirectOrderPlanResponseDto with:\n- `plannedOrders`: updated outbound orders after planning;\n- `skippedOrders`: orders skipped from planning because of non-plannable statuses.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Ordered outbound order IDs for planning",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.DirectOrderPlanRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Planned outbound orders",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.DirectOrderPlanResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/plan/dry-run" : {
      "post" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Dry-run outbound order planning",
        "description" : "\nRuns direct-order planning/replanning in dry-run mode for an ordered list of outbound order IDs.\n\n## Method\nPOST /outbound-orders/plan/dry-run\n\n## Request Body\nDirectOrderPlanDryRunRequestDto with `orderIds` preserving client-defined order.\n\n## Response\nDirectOrderPlanDryRunResponseDto with:\n- `virtualPickings`: virtual planning results without persistence;\n- `skippedOrders`: orders skipped from planning because of non-plannable statuses.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Ordered outbound order IDs for planning dry run",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.DirectOrderPlanDryRunRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Virtual pickings calculated in dry-run mode",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.DirectOrderPlanDryRunResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/{id}/free-picking" : {
      "get" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Free picking availability",
        "description" : "\nReports whether a picking without reservations may be created for this order.\n\n## Method\nGET /outbound-orders/{id}/free-picking\n\n## Response\nFreePickingAvailabilityDto with `available`: true when the warehouse policy enables free picking\nand, if it uses waves, the order is not in a batch or cluster wave.\n\nOrder status, an existing picking and a missing shipping zone are not part of this answer;\nthey are reported with their own messages by the creation endpoint instead.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Whether free picking may be created for this order",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.FreePickingAvailabilityDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Create free picking",
        "description" : "\nCreates a picking from the order demand with no source cells and no reservations.\nSource cells are resolved in memory on every read of the picking.\n\n## Method\nPOST /outbound-orders/{id}/free-picking\n\n## Response\nOutboundOrderResponseDto for the order, now FULLY_PLANNED.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "The order after its free picking was created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/lot-required" : {
      "post" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Lot requirement for an order line",
        "description" : "\nReports whether a lot belongs on an order line for a product category in a warehouse.\n\n## Method\nPOST /outbound-orders/lot-required\n\n## Response\nOutboundOrderLotRequirementResponseDto with `inputMode` and, when a policy resolves,\n`specificationStage`. Only REQUIRED with AT_SHIPMENT_PLANNING means the order itself carries the lot;\nunder the other stages the lot is chosen later and a value already on the line is informational.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Lot requirement query",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLotRequirementRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lot requirement for outbound order lines",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLotRequirementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/light" : {
      "post" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Get lightweight outbound order data",
        "description" : "\nReturns lightweight outbound order data for efficient client-side synchronization.\nGiven a list of IDs and versions, returns only those records that are deleted or have version mismatches.\n\n## Method\nPOST /outbound-orders/light\n\n## Request Body\nList<IdVersionDto> containing the IDs and versions to check. Maximum 100 items.\n\n## Response\nList<OutboundOrderLightDto> containing only records that need to be updated on the client.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 400 if more than 100 items are provided\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID and version pairs to check for updates (max 100 items)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight outbound order data for records that need updates",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLightDto"
                  },
                  "title" : "List<OutboundOrderLightDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid request (e.g., too many items)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/by-ids" : {
      "post" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Get outbound order headers by IDs",
        "description" : "\nReturns outbound order headers for the provided list of IDs.\n\n## Method\nPOST /outbound-orders/header-by-ids\n\n## Request Body\nList<OutboundOrderId> containing the IDs to fetch. Maximum 100 items.\n\n## Response\nList<OutboundOrderHeaderResponseDto> containing order headers without lines.\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 400 if more than 100 items are provided\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of outbound order IDs to fetch (max 100 items)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
                },
                "title" : "List<OutboundOrderId>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Outbound order headers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderHeaderResponseDto"
                  },
                  "title" : "List<OutboundOrderHeaderResponseDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid request (e.g., too many items)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/copy/{id}" : {
      "get" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Copy outbound order",
        "description" : "\nReturns a copy of an existing outbound order with reset values for creating a new order.\nThe copy has status DRAFT, empty number, and null externalId/externalType/name.\nDoes not save to database.\n\n## Method\nGET /outbound-orders/copy/{id}\n\n## Path Parameters\n- `id`: UUID of the outbound order to copy\n\n## Response\nOutboundOrderResponseDto containing the copied order details with id = nil (not saved).\n\n## Authentication\nRequires authentication and tenant membership.\n\n## Errors\n- 404 if the source order is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the outbound order to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copy of the outbound order",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Outbound order not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-orders/{id}/close-short" : {
      "post" : {
        "tags" : [ "Outbound - Outbound Orders" ],
        "summary" : "Close an outbound order short",
        "description" : "\nWrites off whatever the order has not shipped and finishes it as CLOSED_SHORT.\n\nCancels the pickings still covering the remainder, releases their reservations, detaches the order\nfrom an unlaunched wave and from batch or cluster pickings, removes it from the planning queue and\nrecords the written-off quantity for reporting. Containers keep their binding: they still hold the\ngoods that did ship.\n\n## Method\nPOST /outbound-orders/{id}/close-short\n\n## Response\nOutboundOrderCloseShortResponseDto with the closed order and the remainder written off.\n\n## Errors\n400 when the order is already closed, or when it has shipped nothing and so has no partial\ndelivery to close. 409 when the supplied version is stale.\n\n## Authentication\nRequires authentication and tenant membership.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Current order version and an optional reason for the write-off",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderCloseShortInputDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "The closed order and the recorded shortfall",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderCloseShortResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The order is already closed or has shipped nothing",
            "headers" : { }
          },
          "409" : {
            "description" : "The supplied version does not match the stored one",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/outbound-order-ledger/sse/{orderId}" : {
      "get" : {
        "tags" : [ "Outbound - Outbound Order Ledger" ],
        "summary" : "Stream a single order's line executions via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection that streams the line executions of a single\noutbound order, without loading the full order. Backs the planning-assistant execution panel, which\nfollows one order at a time and must re-render as pickers work.\n\n## Usage\nConnect to this SSE endpoint with the outbound order ID in the path parameter. The stream emits the\ncurrent executions on subscribe and again whenever the order's planned, executed, or cancelled\nquantities change — including no-wave picking, which updates picking facts rather than the order row.\n\n## Path Parameters\n- `orderId`: UUID of the outbound order\n\n## Event Format\nThe endpoint sends Server-Sent Events with a JSON-serialized List<OutboundOrderLineExecutionResponseDto>\nfor the order.\n\n## Authentication\nRequires authentication and tenant membership. Only returns executions for orders the caller's tenant\nand warehouse scope can see; an inaccessible order streams an empty list.\n\n## Errors\n- Returns error event if the order ID is missing or invalid\n",
        "parameters" : [ {
          "name" : "orderId",
          "in" : "path",
          "description" : "UUID of the outbound order",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of List<OutboundOrderLineExecutionResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLineExecutionResponseDto"
                  },
                  "title" : "List<OutboundOrderLineExecutionResponseDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/competing-demand/sse/{orderId}/{productId}" : {
      "get" : {
        "tags" : [ "Outbound - Competing Demand" ],
        "summary" : "Stream every order demanding one product of an order, in planning order, via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection that streams, for ONE product a single outbound\norder (the \"subject\") needs, every non-terminal order of the subject's owner demanding that product\nand whether stock covers them all. The subject is one of the listed orders. Backs the planning\nassistant, which follows one order at a time and, within it, one product the planner drills into; it\nmust re-render as orders arrive, as pickers work, and as the planning queue is reordered.\n\n## Usage\nConnect with the subject outbound order ID and the product ID in the path parameters; the warehouse\nand owner are taken from the subject order. The stream emits the current snapshot on subscribe and\nagain whenever the demand side changes — an order or line, a pick that raises an order's executed\nquantity (including no-wave picking, which updates picking facts rather than the order row), or a\nplanning-sequence change (a drag, a group, a replan) that reorders the list. A pure stock arrival with\nno order, picking or sequence change does not push until the next such event.\n\n## Path Parameters\n- `orderId`: UUID of the subject outbound order (supplies the warehouse and owner scope)\n- `productId`: UUID of the product to scope the panel to\n\n## Event Format\nThe endpoint sends a JSON-serialized List<ProductCompetingDemandDto> holding at most one entry — the\nrequested product (a list purely so the transport shape matches the executions stream). It carries the\ndemanding orders (the subject included) with their net demand, ordered by the planning sequence; the\ntotal net demand across them; the signed net available (stock − reservations, negative when\nover-reserved) scoped to the subject's owner; and the shortage (available − total demand, negative when\nstock cannot cover every order). An order already fully picked but not yet shipped stays listed at zero\nnet demand. A product the order does not name, or an order the caller cannot see, streams an empty list.\n\n## Authentication\nRequires authentication and tenant membership. Only serves orders the caller's tenant and warehouse\nscope can see; an inaccessible order streams an empty list.\n\n## Errors\n- Returns error event if the order ID or product ID is missing or invalid\n",
        "parameters" : [ {
          "name" : "orderId",
          "in" : "path",
          "description" : "UUID of the outbound order",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "productId",
          "in" : "path",
          "description" : "UUID of the product to scope the panel to",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "productFeatureId",
          "in" : "query",
          "description" : "UUID of the product feature; absent means the featureless SKU",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of List<ProductCompetingDemandDto> (at most one entry)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.ProductCompetingDemandDto"
                  },
                  "title" : "List<ProductCompetingDemandDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/planning-queue/{warehouseId}/sse" : {
      "get" : {
        "tags" : [ "Outbound - Planning Queue" ],
        "summary" : "Stream the planning queue",
        "description" : "Streams a warehouse's non-terminal outbound orders in shipment priority order, re-sending the page whenever the queue can have changed — a drag by another user, a group formed or renamed, or an order arriving from the exchange.\n\nEmits the same page as POST /planning-queue/{warehouseId}/search, backfill included, so the first event is a complete read and no separate fetch is needed. Ordering is part of the contract rather than a client parameter: a 'sort' directive is ignored, exactly as on the search route.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Page index (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /planning-queue/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<OutboundOrderHeaderResponseDto>, in queue order",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/planning-queue/sse/filters" : {
      "post" : {
        "tags" : [ "Outbound - Planning Queue" ],
        "summary" : "Stage planning queue filters for an SSE stream",
        "description" : "Stores a FilterRequest and returns its id, to be passed to the SSE stream in the request-id header. An SSE stream is opened with a GET and therefore carries no body, so filters are staged here first.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/planning-queue/{warehouseId}/replan/sse" : {
      "get" : {
        "tags" : [ "Outbound - Planning Queue" ],
        "summary" : "Stream the state of a warehouse's replan",
        "description" : "Streams how the warehouse's replan is going, or how the last one ended.\n\nThe first event is the current state, not the next change: a run may have started before this subscription, or may still be waiting for the warehouse minutes after the button was pressed, and either way the client is told the whole truth rather than picking up mid-way.\n\nOne stream serves every viewer of the warehouse. `runId` is the idempotency key of the run, so a client recognises the one it asked for; pressing Replan does not mean your run is the one executing. `IDLE` means nothing is running and no recent result is still being reported.\n\nA run whose process died is reported `FAILED` rather than left claiming to be in progress, so a queue left part-planned is visible instead of silent.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of the warehouse's replan state",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.planning.ReplanStatusDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/planning-queue/{warehouseId}/search" : {
      "post" : {
        "tags" : [ "Outbound - Planning Queue" ],
        "summary" : "Search the planning queue",
        "description" : "Returns a warehouse's non-terminal outbound orders in shipment priority order. Orders imported since the last read are appended to the end of the queue by this call.\n\nOrdering is part of this endpoint's contract rather than a client parameter: the list order IS the manual planning priority, and reordering is expressed by neighbour ids, never by a sort column. A 'sort' directive is therefore ignored — honouring one would return a list in which drag-and-drop has no meaning. 'page' and 'size' apply normally, as do body filters.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Page index (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of outbound order headers, in queue order",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/planning-queue/{warehouseId}/reorder" : {
      "post" : {
        "tags" : [ "Outbound - Planning Queue" ],
        "summary" : "Reorder the planning queue",
        "description" : "Moves one order to a new place in a warehouse's planning queue.\n\nThe destination is given as the two orders it falls between, never as an index: the client's copy of the queue can go stale under it — an import appends, another user drags — while an id keeps naming the same row. Either neighbour may be omitted, meaning the moved order lands at that edge of the queue; omitting both is valid only when the moved orders are the whole queue.\n\nThe new position is computed by the server from the neighbours' current positions, and only the moved rows are written — the rest of the queue is never rewritten.\n\nAn order carrying a planning group moves that whole group, which keeps its internal order; 'movedOrderIds' reports what actually moved.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "The moved order and the two orders it lands between",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueReorderRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "The orders that moved, in their new priority order",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueReorderResultDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/planning-queue/{warehouseId}/reorder-within-group" : {
      "post" : {
        "tags" : [ "Outbound - Planning Queue" ],
        "summary" : "Reorder one order within its planning group",
        "description" : "Moves a single order to a new rank among its group siblings, without moving the group as a whole. The two neighbours must be siblings in the same group; a null neighbour means the edge of the group (top when 'beforeOrderId' is omitted, bottom when 'afterOrderId' is omitted). A null edge that still hides an un-named sibling is refused. Only the moved row is written; the group identifier is unchanged.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "The moved member and the sibling(s) it lands between",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueReorderWithinGroupRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "The order that moved",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueReorderWithinGroupResultDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/planning-queue/{warehouseId}/group" : {
      "post" : {
        "tags" : [ "Outbound - Planning Queue" ],
        "summary" : "Group orders in the planning queue",
        "description" : "Gathers the named orders of a warehouse's planning queue into one planning group.\n\nThe group lands where its topmost member already sat, and every other named order is pulled up to it: grouping expresses 'these ship together', and they ship when the most urgent of them does. Members keep their relative order, and no order outside the group is moved.\n\nThe group's identifier is not a parameter — it is the number of the topmost member, which only the server can pick because only it can see the stored priority. 'planningGroup' in the response reports it. Use rename to change it.\n\nOrders that already belong to a group simply take the new identifier and leave the old group behind.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "The orders to gather into one group",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueGroupRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "The group's identifier and its members, in their new priority order",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueGroupResultDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/planning-queue/{warehouseId}/rename-group" : {
      "post" : {
        "tags" : [ "Outbound - Planning Queue" ],
        "summary" : "Rename a planning group",
        "description" : "Renames a planning group of a warehouse's planning queue. Nothing moves.\n\nThe group is named by the identifier it carries rather than by its members: an identifier keeps naming the same group while the client's copy of the membership goes stale under it.\n\nRefused when the new identifier is already carried by at least one order OUTSIDE this group, which would merge two groups into one without saying so. Renaming a group to the identifier it already carries is allowed — those orders are not outside it.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "The group to rename, and the identifier to give it",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueRenameGroupRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "The identifier now carried, and the orders that carry it",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueRenameGroupResultDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/planning-queue/{warehouseId}/ungroup" : {
      "post" : {
        "tags" : [ "Outbound - Planning Queue" ],
        "summary" : "Ungroup a planning group",
        "description" : "Dissolves a planning group of a warehouse's planning queue.\n\nIts members keep their positions exactly: a place in the queue is a decision the user made about an order, and dissolving the group it happens to be in is not a reason to undo it. Only the group is cleared, so afterwards each former member drags alone.\n\nNamed by the identifier, like a rename: the gesture dissolves a group, and a group is the set of orders carrying one identifier.\n\nName 'orderIds' to remove only those members: they drop to just below the group's remaining members, which stay grouped under the same identifier and keep their positions, so the group is not left split around a former member. Omit 'orderIds' to dissolve the whole group, leaving every member in place. Removing every member but one leaves a valid one-member group; it is not auto-dissolved.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "The group, and optionally the subset of members to remove",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueUngroupRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "The orders that no longer carry a group",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueUngroupResultDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/outbound/planning-queue/{warehouseId}/replan" : {
      "post" : {
        "tags" : [ "Outbound - Planning Queue" ],
        "summary" : "Replan the planning queue",
        "description" : "Asks for a warehouse's whole planning queue to be replanned in priority order, so that stock follows the order the queue is in.\n\nDragging an order to the head changes its priority but moves no goods: the stock a lower-priority order reserved stays reserved to it. This is what acts on that priority — every queued order gives back the reservations of the pickings nobody has started, and only then does the queue claim stock again from the head down, so goods reach the orders the user ranked highest. Pickings the floor has already started are never taken back.\n\n**Accepted, not done.** The replan runs in the background and takes minutes on a large queue; this returns as soon as the request is queued. The queue's own stream shows orders changing as the replan proceeds. There is no completion signal yet, and an order edited while the replan is walking is left alone and keeps its previous plan.\n\nOne warehouse is replanned at a time. Another planning operation on this warehouse — a drag, a direct plan, a wave launch — waits while a replan runs and may be refused with 409 if it waits too long.",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "path",
          "description" : "Warehouse ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "202" : {
            "description" : "The replan was queued. It has not run yet.",
            "headers" : { }
          },
          "400" : {
            "description" : "No such warehouse, or the Idempotency-Key header is missing",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/circulation-entries/sse" : {
      "get" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "Stream circulation entries",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'number,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /circulation-entries/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ContainerCirculationEntryResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/circulation-entries/sse/count" : {
      "get" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "Stream the circulation entry count",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /circulation-entries/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/circulation-entries/sse/{id}" : {
      "get" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "Stream a circulation entry",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the circulation entry",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of ContainerCirculationEntryResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/circulation-entries/sse/filters" : {
      "post" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "Stage circulation entry filters for SSE",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/circulation-entries/search" : {
      "post" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "Search circulation entries",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/circulation-entries/new" : {
      "post" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "New circulation entry template",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse to put on the template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/circulation-entries/{id}" : {
      "get" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "Get a circulation entry",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "Delete a draft circulation entry",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/circulation-entries" : {
      "post" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "Create or update a draft circulation entry",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryResponseDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/circulation-entries/{id}/post" : {
      "post" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "Post a circulation entry: write off packaging and create its containers",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryActionDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryResponseDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/circulation-entries/{id}/unpost" : {
      "post" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "Unpost a circulation entry: return packaging and decommission its containers",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryActionDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryResponseDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/circulation-entries/light" : {
      "post" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "Sync circulation entry references",
        "description" : "Returns lightweight records for the ids whose version differs from the one supplied.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Id and version pairs (max 100)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryLightDto"
                  },
                  "title" : "List<ContainerCirculationEntryLightDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "More than 100 items",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/circulation-entries/minimal/search" : {
      "post" : {
        "tags" : [ "Container circulation entries" ],
        "summary" : "Search circulation entries for a picker",
        "description" : "Returns id and number label only; soft-deleted documents are excluded.",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (1..51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit outside 1..51",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/opening-balances/sse" : {
      "get" : {
        "tags" : [ "Container opening balances" ],
        "summary" : "Stream opening balances",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'number,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /opening-balances/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ReturnableContainerOpeningBalanceResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/opening-balances/sse/count" : {
      "get" : {
        "tags" : [ "Container opening balances" ],
        "summary" : "Stream the opening balance count",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /opening-balances/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/opening-balances/sse/{id}" : {
      "get" : {
        "tags" : [ "Container opening balances" ],
        "summary" : "Stream a opening balance",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the opening balance",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of ReturnableContainerOpeningBalanceResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/opening-balances/sse/filters" : {
      "post" : {
        "tags" : [ "Container opening balances" ],
        "summary" : "Stage opening balance filters for SSE",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/opening-balances/search" : {
      "post" : {
        "tags" : [ "Container opening balances" ],
        "summary" : "Search returnable container opening balances",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/opening-balances/new" : {
      "post" : {
        "tags" : [ "Container opening balances" ],
        "summary" : "New opening balance template",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse to put on the template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/opening-balances/{id}" : {
      "get" : {
        "tags" : [ "Container opening balances" ],
        "summary" : "Get an opening balance",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Container opening balances" ],
        "summary" : "Delete a draft opening balance",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/opening-balances" : {
      "post" : {
        "tags" : [ "Container opening balances" ],
        "summary" : "Create or update a draft opening balance",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceResponseDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/opening-balances/{id}/post" : {
      "post" : {
        "tags" : [ "Container opening balances" ],
        "summary" : "Post an opening balance: create its missing containers and open their debts",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceActionDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceResponseDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/opening-balances/{id}/unpost" : {
      "post" : {
        "tags" : [ "Container opening balances" ],
        "summary" : "Unpost an opening balance: close its debts and decommission the containers it created",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceActionDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceResponseDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/opening-balances/light" : {
      "post" : {
        "tags" : [ "Container opening balances" ],
        "summary" : "Sync container opening balance references",
        "description" : "Returns lightweight records for the ids whose version differs from the one supplied.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Id and version pairs (max 100)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceLightDto"
                  },
                  "title" : "List<ReturnableContainerOpeningBalanceLightDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "More than 100 items",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions/sse" : {
      "get" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Stream decommissions",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'number,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /decommissions/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ContainerDecommissionResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions/sse/count" : {
      "get" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Stream the decommission count",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /decommissions/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions/sse/{id}" : {
      "get" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Stream a decommission",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the decommission",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of ContainerDecommissionResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions/sse/filters" : {
      "post" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Stage decommission filters for SSE",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions/search" : {
      "post" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Search container decommissions",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions/new" : {
      "post" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "New decommission template",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse to put on the template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions/{id}" : {
      "get" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Get a container decommission",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Delete a draft container decommission",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions" : {
      "post" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Create or update a draft container decommission",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionResponseDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions/{id}/post" : {
      "post" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Post a container decommission: take its containers out of circulation",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionActionDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionResponseDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions/{id}/unpost" : {
      "post" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Unpost a container decommission: return its containers to circulation",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionActionDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionResponseDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions/container-by-code" : {
      "post" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Find the container a scan names for a decommission",
        "description" : "A live container is answered as POST /containers/by-code answers it. A code only a container already out of circulation carried is refused with the decommission that retired it.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Container lookup parameters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerByCodeRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "No container carried the code",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions/light" : {
      "post" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Sync decommission references",
        "description" : "Returns lightweight records for the ids whose version differs from the one supplied.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Id and version pairs (max 100)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionLightDto"
                  },
                  "title" : "List<ContainerDecommissionLightDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "More than 100 items",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/decommissions/minimal/search" : {
      "post" : {
        "tags" : [ "Container decommissions" ],
        "summary" : "Search decommissions for a picker",
        "description" : "Returns id and number label only; soft-deleted documents are excluded.",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items (1..51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          },
          "400" : {
            "description" : "Limit outside 1..51",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/debt-settlements/sse" : {
      "get" : {
        "tags" : [ "Container debt settlements" ],
        "summary" : "Stream debt settlements",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'number,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /debt-settlements/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ContainerDebtSettlementResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/debt-settlements/sse/count" : {
      "get" : {
        "tags" : [ "Container debt settlements" ],
        "summary" : "Stream the debt settlement count",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /debt-settlements/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/debt-settlements/sse/{id}" : {
      "get" : {
        "tags" : [ "Container debt settlements" ],
        "summary" : "Stream a debt settlement",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the debt settlement",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of ContainerDebtSettlementResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/debt-settlements/sse/filters" : {
      "post" : {
        "tags" : [ "Container debt settlements" ],
        "summary" : "Stage debt settlement filters for SSE",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/debt-settlements/search" : {
      "post" : {
        "tags" : [ "Container debt settlements" ],
        "summary" : "Search container debt settlements",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/debt-settlements/new" : {
      "post" : {
        "tags" : [ "Container debt settlements" ],
        "summary" : "New debt settlement template",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Warehouse to put on the template",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/debt-settlements/{id}" : {
      "get" : {
        "tags" : [ "Container debt settlements" ],
        "summary" : "Get a container debt settlement",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Container debt settlements" ],
        "summary" : "Delete a draft container debt settlement",
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/debt-settlements" : {
      "post" : {
        "tags" : [ "Container debt settlements" ],
        "summary" : "Create or update a draft container debt settlement",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementResponseDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/debt-settlements/{id}/post" : {
      "post" : {
        "tags" : [ "Container debt settlements" ],
        "summary" : "Post a container debt settlement: close its debts",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementActionDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementResponseDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/debt-settlements/{id}/unpost" : {
      "post" : {
        "tags" : [ "Container debt settlements" ],
        "summary" : "Unpost a container debt settlement: reopen its debts",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementActionDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementResponseDto"
                }
              }
            }
          },
          "409" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/receivables/sse" : {
      "get" : {
        "tags" : [ "Container debt reports" ],
        "summary" : "Stream container debts parties owe the tenant",
        "parameters" : [ {
          "name" : "asOf",
          "in" : "query",
          "description" : "Report date, yyyy-MM-dd; today in the tenant's time zone when omitted",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of the request staged by POST /receivables/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ContainerReceivableRowDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.report.dto.ContainerReceivableRowDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/receivables/sse/count" : {
      "get" : {
        "tags" : [ "Container debt reports" ],
        "summary" : "Stream the number of container debts parties owe the tenant",
        "parameters" : [ {
          "name" : "asOf",
          "in" : "query",
          "description" : "Report date, yyyy-MM-dd; today in the tenant's time zone when omitted",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of the request staged by POST /receivables/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/receivables/sse/filters" : {
      "post" : {
        "tags" : [ "Container debt reports" ],
        "summary" : "Stage receivables report filters for SSE",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Raw JSON filter request by report columns; empty for no filter",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/payables/sse" : {
      "get" : {
        "tags" : [ "Container debt reports" ],
        "summary" : "Stream container debts the tenant owes parties",
        "parameters" : [ {
          "name" : "asOf",
          "in" : "query",
          "description" : "Report date, yyyy-MM-dd; today in the tenant's time zone when omitted",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of the request staged by POST /payables/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ContainerPayableRowDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.report.dto.ContainerPayableRowDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/payables/sse/count" : {
      "get" : {
        "tags" : [ "Container debt reports" ],
        "summary" : "Stream the number of container debts the tenant owes parties",
        "parameters" : [ {
          "name" : "asOf",
          "in" : "query",
          "description" : "Report date, yyyy-MM-dd; today in the tenant's time zone when omitted",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of the request staged by POST /payables/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/payables/sse/filters" : {
      "post" : {
        "tags" : [ "Container debt reports" ],
        "summary" : "Stage payables report filters for SSE",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Raw JSON filter request by report columns; empty for no filter",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/receivables/search" : {
      "post" : {
        "tags" : [ "Container debt reports" ],
        "summary" : "Search container debts parties owe the tenant",
        "parameters" : [ {
          "name" : "asOf",
          "in" : "query",
          "description" : "Report date, yyyy-MM-dd; today in the tenant's time zone when omitted",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters by report columns",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.report.dto.ContainerReceivableRowDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/payables/search" : {
      "post" : {
        "tags" : [ "Container debt reports" ],
        "summary" : "Search container debts the tenant owes parties",
        "parameters" : [ {
          "name" : "asOf",
          "in" : "query",
          "description" : "Report date, yyyy-MM-dd; today in the tenant's time zone when omitted",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters by report columns",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.report.dto.ContainerPayableRowDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/returnable-containers/containers/{id}/history" : {
      "get" : {
        "tags" : [ "Container debt reports" ],
        "summary" : "Get the register history of one container",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.report.dto.ContainerDebtMovementDto"
                  },
                  "title" : "List<ContainerDebtMovementDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/warehouse-counters/sse" : {
      "get" : {
        "tags" : [ "Analytics - Warehouse Counters" ],
        "summary" : "Get warehouse counters stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) stream with live warehouse counter updates.\n\nSimple counters appear under `values`; grouped counters (`WAVE`, `INVENTORY_COUNT`) appear\nunder `groups` as a per-status breakdown.\n\n## Query Parameters\n- `warehouseId`: Warehouse UUID.\n- `types`: Counter type list (repeated or comma-separated).\n\n## Authentication\nRequires authentication and tenant-level access.\n",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "query",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "types",
          "in" : "query",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.counter.dto.WarehouseCounterTypeDto"
            },
            "title" : "List<WarehouseCounterTypeDto>"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of live warehouse counters.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.counter.dto.WarehouseCountersResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/warehouse-counters" : {
      "get" : {
        "tags" : [ "Analytics - Warehouse Counters" ],
        "summary" : "Get warehouse counters snapshot",
        "description" : "\nReturns current warehouse counter values for the requested warehouse and counter types.\n\nSimple counters (`RECEIPT`, `PICKING`, `PUTAWAY`, `RELOCATION`) appear under\n`values` as a single number each. Grouped counters appear under `groups` as a per-status\nbreakdown: `WAVE` keyed by stage (`PICKING`, `SORTING`, `PACKING`, `MOVEMENT`) and\n`INVENTORY_COUNT` keyed by status (`DRAFT`, `IN_PROGRESS`, `ENTERING_RESULTS`,\n`PENDING_CONFIRMATION`).\n\n## Query Parameters\n- `warehouseId`: Warehouse UUID.\n- `types`: Counter type list (repeated or comma-separated).\n\n## Authentication\nRequires authentication and tenant-level access.\n",
        "parameters" : [ {
          "name" : "warehouseId",
          "in" : "query",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        }, {
          "name" : "types",
          "in" : "query",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.counter.dto.WarehouseCounterTypeDto"
            },
            "title" : "List<WarehouseCounterTypeDto>"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Current warehouse counters snapshot.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.counter.dto.WarehouseCountersResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/productivity" : {
      "get" : {
        "tags" : [ "Analytics - Productivity" ],
        "summary" : "Daily productivity & throughput series",
        "description" : "Bounded daily rollups (picking/receipt/putaway throughput, wave cycle time, order fulfillment time). Requires from/to.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Productivity metric series for the requested range.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.productivity.dto.ProductivityResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/dashboard" : {
      "get" : {
        "tags" : [ "Analytics - Dashboard" ],
        "summary" : "Resolve the caller's dashboard layout",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.dashboard.dto.DashboardLayoutResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Analytics - Dashboard" ],
        "summary" : "Upsert the caller's personal dashboard layout",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.dashboard.dto.DashboardLayoutResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Optimistic-lock version conflict",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Analytics - Dashboard" ],
        "summary" : "Reset the caller's dashboard (delete personal layout)",
        "parameters" : [ ],
        "responses" : {
          "204" : {
            "description" : "Personal layout deleted (idempotent)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/dashboard/shared" : {
      "get" : {
        "tags" : [ "Analytics - Dashboard" ],
        "summary" : "Read the tenant shared dashboard layout",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.dashboard.dto.DashboardLayoutResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Analytics - Dashboard" ],
        "summary" : "Upsert the tenant shared dashboard layout",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.dashboard.dto.DashboardLayoutResponseDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Optimistic-lock version conflict",
            "headers" : { }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Analytics - Dashboard" ],
        "summary" : "Clear the tenant shared dashboard layout",
        "parameters" : [ ],
        "responses" : {
          "204" : {
            "description" : "Shared layout cleared (idempotent)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/online/live" : {
      "get" : {
        "tags" : [ "Analytics - Online" ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/online/now" : {
      "get" : {
        "tags" : [ "Analytics - Online" ],
        "summary" : "Current online users (snapshot)",
        "description" : "One-shot count of users currently online for the tenant.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Current online users snapshot.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.online.dto.OnlineNowDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/online/chart" : {
      "get" : {
        "tags" : [ "Analytics - Online" ],
        "summary" : "Online concurrency chart (avg + peak) by hour or day",
        "description" : "Bounded concurrency rollups (average and peak online users) bucketed by hour or day. Requires from/to as ISO-8601 instants.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Online concurrency series for the requested range.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.online.dto.OnlineChartResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/mcp/windows" : {
      "get" : {
        "tags" : [ "Analytics - Account" ],
        "summary" : "MCP usage windows (day/week/month, no consumers)",
        "description" : "Per-window MCP quota usage (today / this week / this month) for the tenant, without the top-consumers list. Powers the account dashboard MCP usage tile.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Current MCP usage windows snapshot.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.usage.dto.McpWindowsDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/mcp/series" : {
      "get" : {
        "tags" : [ "Analytics - Account" ],
        "summary" : "MCP usage trend (request count per day)",
        "description" : "Dense daily MCP request counts for the tenant over the requested range (gaps zero-filled), plus the optional current day-window limit for a reference line. Requires from/to as ISO-8601 dates. Powers the account dashboard MCP usage trend tile.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Daily MCP usage series for the requested range.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.usage.dto.McpDailySeriesDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/license" : {
      "get" : {
        "tags" : [ "Analytics - Account" ],
        "summary" : "License status (narrow)",
        "description" : "Tenant license status badge plus read-only flag and the validity/grace boundary instants, without seats, storage, or MCP. Powers the account dashboard license tile.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Current license status snapshot.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.account.dto.AccountLicenseStatusDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/seats" : {
      "get" : {
        "tags" : [ "Analytics - Account" ],
        "summary" : "Seat usage (narrow)",
        "description" : "Tenant seat consumption per type (named / concurrent / technical), each used and limit, without storage or MCP. Powers the account dashboard seats tile.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Current seat usage snapshot.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.account.dto.AccountSeatsUsageDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/storage" : {
      "get" : {
        "tags" : [ "Analytics - Account" ],
        "summary" : "Storage usage (narrow)",
        "description" : "Tenant storage consumption: used-bytes total plus the tenant cap and the cached-stats timestamp, without seats, license, or MCP. Powers the account dashboard storage tile.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Current storage usage snapshot.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.account.dto.AccountStorageUsageDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/fulfillment" : {
      "get" : {
        "tags" : [ "Analytics - Fulfillment" ],
        "summary" : "Group B fulfillment & SLA two-line series (snapshot)",
        "description" : "Daily planned-vs-actual series for one fulfillment metric over a bounded [from, to] date window. Default scope: warehouse.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Two-line series for the requested metric.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.fulfillment.dto.MetricSeriesResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/stock-status" : {
      "get" : {
        "tags" : [ "Analytics - Stock Status" ],
        "summary" : "Group D stock-by-status breakdown (snapshot)",
        "description" : "Per-status additive physical volume (m³) and weight (kg) of on-hand stock for one warehouse. Both measures are returned. Default scope: warehouse.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Volume + weight per stock status.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.stockstatus.dto.StockStatusBreakdownResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/lists" : {
      "get" : {
        "tags" : [ "Analytics - Actionable Lists" ],
        "summary" : "Group D actionable lists (snapshot)",
        "description" : "Top-N actionable rows for one source in one warehouse, pre-sorted by priority. limit is server-capped at 100.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Actionable rows for the requested source in render order.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.actionablelist.dto.ActionableListResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/settings" : {
      "get" : {
        "tags" : [ "Analytics - Settings" ],
        "summary" : "Get the current tenant's analytics enablement",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.config.dto.AnalyticsSettingsDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Analytics - Settings" ],
        "summary" : "Enable or disable analytics collection for the current tenant",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.config.dto.AnalyticsSettingsUpdateDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.config.dto.AnalyticsSettingsDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/analytics/settings/cleanup" : {
      "post" : {
        "tags" : [ "Analytics - Settings" ],
        "summary" : "Delete the current tenant's analytics collected before a date",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.config.dto.AnalyticsCleanupRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.config.dto.AnalyticsCleanupResultDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks/sse" : {
      "get" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Stream pages of scheduled tasks",
        "description" : "Streams the requested page of scheduled tasks, starting with a full snapshot and re-emitting whenever a task or its cursor changes. Filters come from a staged request; the rows carry the header projection.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'name,asc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST tasks/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ScheduledTaskHeaderResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks/sse/{id}" : {
      "get" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Stream one scheduled task",
        "description" : "Streams one scheduled task in full, starting with a snapshot and re-emitting whenever the task or its cursor changes. A deleted or invisible task emits nothing.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the scheduled task",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of ScheduledTaskResponseDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks/sse/count" : {
      "get" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Stream the scheduled task count",
        "description" : "Streams the number of scheduled tasks matching the staged filters, using the same query as the page stream.",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST tasks/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of the scheduled task count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks/sse/filters" : {
      "post" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Stage filters for the scheduled task streams",
        "description" : "Stores a FilterRequest and returns its id, which the streams then send back in the request id header. An expired entry is answered with 410 so the client re-stages.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks/runs/sse" : {
      "get" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Stream pages of scheduled task runs",
        "description" : "Streams the requested page of run history, starting with a full snapshot and re-emitting whenever a run changes. The stream is flat: one task's history is selected by staging a 'taskId' filter, newest occurrence first.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'scheduledFor,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST tasks/runs/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<ScheduledTaskRunResponseDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskRunResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks/runs/sse/count" : {
      "get" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Stream the scheduled task run count",
        "description" : "Streams the number of runs matching the staged filters, using the same query as the run page stream.",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST tasks/runs/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of the scheduled task run count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks/runs/sse/filters" : {
      "post" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Stage filters for the scheduled task run streams",
        "description" : "Stores a FilterRequest and returns its id, which the run streams then send back in the request id header. An expired entry is answered with 410 so the client re-stages.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure, normally carrying the taskId of the open task",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks/search" : {
      "post" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Search scheduled tasks",
        "description" : "Returns a page of the current tenant's scheduled tasks. Pagination comes from query parameters, filters from an optional FilterRequest body.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'name,asc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of scheduled tasks",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskHeaderResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks/{id}" : {
      "get" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Get a scheduled task",
        "description" : "Returns one scheduled task including its next and last run instants. The schedule sentence is built by the client; the server returns the structured schedule only.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Scheduled task id",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.scheduler.ScheduledTaskId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Scheduled task",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "put" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Update a scheduled task",
        "description" : "Replaces the task configuration and recomputes the cursor from the current moment; missed occurrences are not replayed. The body must carry the current version and cannot change the enabled state, which only the toggle writes.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Scheduled task id",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.scheduler.ScheduledTaskId"
          }
        } ],
        "requestBody" : {
          "description" : "Scheduled task configuration with its current version",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated scheduled task",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Delete a scheduled task",
        "description" : "Soft-deletes the task, clears its cursor and skips its queued runs.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Scheduled task id",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.scheduler.ScheduledTaskId"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current entity version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Scheduled task deleted",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks/{id}/runs" : {
      "get" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Get the run history of a scheduled task",
        "description" : "Returns a page of runs for one task, newest occurrence first.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Scheduled task id",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.scheduler.ScheduledTaskId"
          }
        }, {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Page of runs",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskRunResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/task-types" : {
      "get" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "List registered task types",
        "description" : "Returns the type keys registered by the deployed features with the payload version each one currently accepts, plus the time zone applied to a task that does not carry its own. Labels are localised by the client.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Registered task types and the server default time zone",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskTypesResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks" : {
      "post" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Create a scheduled task",
        "description" : "Creates a task and computes its first occurrence from the current moment. The payload is opaque to the scheduler and is validated by the contributor owning the task type. A created task is enabled; turning it off is a separate call.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Scheduled task configuration",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created scheduled task",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks/{id}/enabled" : {
      "patch" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Enable or disable a scheduled task",
        "description" : "Toggles the task without touching the rest of its configuration. Disabling also skips its queued runs.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Scheduled task id",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.scheduler.ScheduledTaskId"
          }
        }, {
          "name" : "enabled",
          "in" : "query",
          "description" : "Target state",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current entity version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Updated scheduled task",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/scheduler/tasks/{id}/run" : {
      "post" : {
        "tags" : [ "Scheduled Tasks" ],
        "summary" : "Run a scheduled task now",
        "description" : "Queues one manual run of the task, allowed while the task is disabled but not while it is broken. The run then takes the ordinary path, including the per-tenant concurrency limit. A task that still owns a queued or running run is refused with a 'state' field error.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Scheduled task id",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.scheduler.ScheduledTaskId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Manual run queued",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/operations" : {
      "post" : {
        "tags" : [ "PDT operations" ],
        "summary" : "Submit a PDT operation",
        "description" : "Posts one signed operation of the session's terminal device. A repeated operation id answers with the logged outcome and the replay header; an operation out of device sequence answers 409 with the last processed sequence.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Signed operation envelope",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.operation.dto.PdtOperationEnvelopeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Posted operation",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.operation.dto.PdtOperationResultDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Out of device sequence",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.operation.dto.PdtSequenceConflictDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/operations/batch" : {
      "post" : {
        "tags" : [ "PDT operations" ],
        "summary" : "Submit a batch of PDT operations",
        "description" : "Posts signed operations of the session's terminal device in device sequence order. Each operation gets its own status; operations that cannot be processed yet are reported as not processed. Accepts a user's PDT session token or a device sync session token; a revoked sync session answers 401 SYNC_SESSION_REVOKED and an inactive device 403 DEVICE_NOT_ACTIVE.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Signed operation envelopes in device sequence order",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.operation.dto.PdtBatchRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Per-operation results",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.operation.dto.PdtBatchResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/sync/changes" : {
      "get" : {
        "tags" : [ "PDT sync" ],
        "summary" : "Read working-set changes",
        "description" : "Returns the changes of the warehouse's PDT working set after the cursor: the current record of each changed entity, or an instruction to drop it. A cursor older than the retention window answers 410. Accepts only a device sync session token and reads the pinned warehouse's full working set as the system; a user's token answers 401, a revoked sync session answers 401 SYNC_SESSION_REVOKED and an inactive device 403 DEVICE_NOT_ACTIVE. warehouseId may be omitted and defaults to the pinned warehouse; another one answers 403 WarehouseNotPinned, and one that is not a UUID 400 WarehouseInvalid before any scope is checked.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "A page of working-set changes",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.dto.SyncChangesResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "CursorMissing, CursorInvalid, PageLimit or WarehouseInvalid",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "DeviceNotActive or WarehouseNotPinned",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "410" : {
            "description" : "The cursor is older than the retention window; resync from a snapshot",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/sync/lookup" : {
      "post" : {
        "tags" : [ "PDT sync" ],
        "summary" : "Look up working-set entities",
        "description" : "Returns the current records of entities the device met in a record but does not hold, in the feed's shape. Barcodes are not looked up: ask for them through POST /sync/barcodes. Accepts only a device sync session token and reads the pinned warehouse's full working set as the system; a user's token answers 401, a revoked sync session answers 401 SYNC_SESSION_REVOKED and an inactive device 403 DEVICE_NOT_ACTIVE. warehouseId must be the pinned warehouse; another one answers 403.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Entities the device met but does not hold",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.dto.SyncLookupRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Their current records",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.dto.SyncLookupResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "LookupSize, LookupEntity",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "DeviceNotActive or WarehouseNotPinned",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/sync/barcodes" : {
      "post" : {
        "tags" : [ "PDT sync" ],
        "summary" : "Read the barcodes of product combinations",
        "description" : "Returns the barcodes that are actual for the given product, feature and lot combinations, in the feed's shape, each barcode once. A barcode is actual while a combination it covers is in the warehouse working set. Names at least one and at most 500 combinations, otherwise 400. Accepts only a device sync session token and reads the pinned warehouse's full working set as the system; a user's token answers 401, a revoked sync session answers 401 SYNC_SESSION_REVOKED and an inactive device 403 DEVICE_NOT_ACTIVE. warehouseId must be the pinned warehouse; another one answers 403.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "The combinations the device holds",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.dto.SyncBarcodesRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "The actual barcodes of those combinations",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.dto.SyncLookupResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "BarcodeLookupSize",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "DeviceNotActive or WarehouseNotPinned",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/sync/snapshot" : {
      "get" : {
        "tags" : [ "PDT sync" ],
        "summary" : "Read the working-set snapshot",
        "description" : "Returns the warehouse's PDT working set page by page, and the change cursor fixed before the first read; once nextPage is null the device pulls changes from that cursor. Without page, starts a snapshot; with it, continues one. limit counts records: 500 by default, at most 1000. Types come in this order, each by id ascending: tenant settings, barcode policy, receiving policy, picking policy, shipping policy, lot tracking policy, user, location, location state, container type, container, container reservation, stock, reservation, receipt, putaway, picking, dispatch, relocation. Lots, products, parties and barcodes are not included: the device fetches the ones its records reference through lookup, and barcodes through POST /sync/barcodes. entities, comma-separated type names (for example LOCATION,RECEIPT), limits a new snapshot to those types, still in this order, so the device re-downloads part of its set; without it every type comes. A name the snapshot does not deliver, or none, answers 400. The first page's tokens carry the filter, so with page, entities is ignored. A snapshot older than the retention window answers 410. Accepts only a device sync session token and reads the pinned warehouse's full working set as the system; a user's token answers 401, a revoked sync session answers 401 SYNC_SESSION_REVOKED and an inactive device 403 DEVICE_NOT_ACTIVE. warehouseId may be omitted and defaults to the pinned warehouse; another one answers 403 WarehouseNotPinned, and one that is not a UUID 400 WarehouseInvalid before any scope is checked.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "A page of the working-set snapshot",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.dto.SyncSnapshotResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "SnapshotPageInvalid, SnapshotEntitiesInvalid (entities empty or naming a type the snapshot does not deliver), PageLimit or WarehouseInvalid",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "DeviceNotActive or WarehouseNotPinned",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "410" : {
            "description" : "The snapshot's cursor is older than the retention window; start over",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/sync/parked" : {
      "get" : {
        "tags" : [ "PDT sync" ],
        "summary" : "Count the device's parked operations",
        "description" : "Open parked operations of the device per author, so the device can show its operator theirs.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.dto.PdtParkedCountsDto"
                }
              }
            }
          },
          "403" : {
            "description" : "DeviceNotActive",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/sync/device" : {
      "get" : {
        "tags" : [ "PDT sync" ],
        "summary" : "Read the device's offline state",
        "description" : "The device's offline settings and what to do with the data it holds: DRAIN_AND_WIPE once offline was switched off. Served while offline is on or a wipe is pending; each read extends the device's licence lease.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.DeviceOfflineStateDto"
                }
              }
            }
          },
          "403" : {
            "description" : "DEVICE_NOT_ACTIVE, or OFFLINE_DISABLED when offline is off and nothing is left to wipe",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/sync/device/wiped" : {
      "post" : {
        "tags" : [ "PDT sync" ],
        "summary" : "Confirm the device has wiped its offline data",
        "description" : "Signed by the device once it has pushed its queue and wiped its replica. Clears the pending wipe, frees the offline licence and ends the sync session; a device with offline switched on again keeps both.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "The confirmation, signed by the device",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.syncsession.dto.DeviceWipedRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "204" : {
            "description" : "Recorded",
            "headers" : { }
          },
          "403" : {
            "description" : "DEVICE_NOT_ACTIVE, OFFLINE_DISABLED, or SyncSignatureInvalid",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/sync/session" : {
      "post" : {
        "tags" : [ "PDT sync" ],
        "summary" : "Issue a device sync session",
        "description" : "Issues the calling PDT device a sync session pinned to the warehouse, replacing its previous one. The device signs the request with its key. The session's access token works only on operation batches and sync reads; its refresh token renews the pair. Of two issuances for one device at once, the one that loses answers 409 SYNC_ISSUE_RETRY and issues nothing.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "The warehouse to pin, signed by the device",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.syncsession.dto.DeviceSyncSessionIssueRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "The new sync session's tokens",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.syncsession.dto.DeviceSyncSessionDto"
                }
              }
            }
          },
          "401" : {
            "description" : "No or no longer valid user authorization",
            "headers" : { }
          },
          "403" : {
            "description" : "NoDeviceSession, DeviceNotActive, SyncSignatureInvalid or WarehouseNotAccessible",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "409" : {
            "description" : "SYNC_ISSUE_RETRY: another issuance for this device committed first; nothing was issued, retry",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/sync/session/refresh" : {
      "post" : {
        "tags" : [ "PDT sync" ],
        "summary" : "Refresh a device sync session",
        "description" : "Rotates a device sync session's refresh token and reissues its access token. Unauthenticated: the tenant comes from the WMS-Tenant-Code header and the device signs the request. A retry with the previous refresh token within a minute returns the same pair, or 409 SYNC_REFRESH_RETRY when that pair is not available yet; a later signed reuse revokes the session.",
        "parameters" : [ {
          "name" : "WMS-Tenant-Code",
          "in" : "header",
          "description" : "The tenant the session belongs to",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "The refresh token, signed by the device",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.syncsession.dto.DeviceSyncSessionRefreshRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "The rotated pair",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.syncsession.dto.DeviceSyncSessionDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The WMS-Tenant-Code header is missing",
            "headers" : { }
          },
          "401" : {
            "description" : "SYNC_SESSION_REVOKED: unknown, revoked, expired or reused",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "421" : {
            "description" : "The tenant is not served by this pod; the session is untouched",
            "headers" : { }
          },
          "409" : {
            "description" : "SYNC_REFRESH_RETRY: a retry found no answer of the rotation it repeats; retry",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "DEVICE_NOT_ACTIVE, or SyncSignatureInvalid",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/discrepancies/sse/count" : {
      "get" : {
        "tags" : [ "PDT offline discrepancies" ],
        "summary" : "Stream the count of open high and medium offline discrepancies",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /pdt/discrepancies/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/discrepancies/sse/filters" : {
      "post" : {
        "tags" : [ "PDT offline discrepancies" ],
        "summary" : "Stage offline discrepancy filters for SSE",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/discrepancies/search" : {
      "post" : {
        "tags" : [ "PDT offline discrepancies" ],
        "summary" : "Search offline discrepancies",
        "description" : "Discrepancies of offline PDT operations in the warehouses where the user may view them, newest first.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/discrepancies/{id}" : {
      "get" : {
        "tags" : [ "PDT offline discrepancies" ],
        "summary" : "Get an offline discrepancy",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Absent, or in a warehouse where the user may not view it",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/discrepancies/{id}/resolve" : {
      "post" : {
        "tags" : [ "PDT offline discrepancies" ],
        "summary" : "Mark an offline discrepancy processed",
        "description" : "Marks the discrepancy processed against the version the caller saw, with an optional comment.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResolveRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "DiscrepancyNotOpen: already processed or auto-resolved",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          },
          "409" : {
            "description" : "The discrepancy changed after the caller read it",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/pdt/discrepancies/resolve" : {
      "post" : {
        "tags" : [ "PDT offline discrepancies" ],
        "summary" : "Mark several offline discrepancies processed",
        "description" : "Each item is marked on its own; the response tells what happened to each.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyBulkResolveRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyBulkResolveResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "DiscrepancyBatchSize",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.ValidationErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes/sse" : {
      "get" : {
        "tags" : [ "Attributes" ],
        "summary" : "Get attributes stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof attributes for the current tenant. The endpoint streams paginated attribute data as it\nchanges in the database.\n\n## Usage\n1. Optionally stage filters using POST /api/v1/attributes/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /api/v1/attributes/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<AttributeHeaderDto>\ncontaining the current page of attributes matching the filters and pagination.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Only returns attributes for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /attributes/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of attribute pages",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.attribute.contract.dto.AttributeHeaderDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes/sse/count" : {
      "get" : {
        "tags" : [ "Attributes" ],
        "summary" : "Get attributes count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof attributes matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /api/v1/attributes/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /api/v1/attributes/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Only counts attributes for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /attributes/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of attribute count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes/sse/{id}" : {
      "get" : {
        "tags" : [ "Attributes" ],
        "summary" : "Get single attribute via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific attribute by its ID.\n\n## Usage\nConnect to this SSE endpoint with the attribute ID in the path parameter.\nReceive continuous updates as the attribute data changes.\n\n## Path Parameters\n- `id`: UUID of the attribute\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized AttributeHeaderDto\ncontaining the full attribute details.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Only returns attributes for the authenticated user's tenant.\n\n## Errors\n- Returns error event if attribute ID is missing or invalid\n- Returns null events if attribute is deleted or not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the attribute",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of single attribute",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes/sse/filters" : {
      "post" : {
        "tags" : [ "Attributes" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Filter configuration as JSON",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes/{id}" : {
      "get" : {
        "tags" : [ "Attributes" ],
        "summary" : "Get attribute by ID",
        "description" : "\nReturns full details of a single attribute.\n\n## Method\nGET /api/v1/attributes/{id}\n\n## Path Parameters\n- `id`: UUID of the attribute\n\n## Response\nAttributeHeaderDto containing the full attribute details.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 404 if the attribute is not found or not accessible\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the attribute",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.shared.AttributeId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Attribute details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Attributes" ],
        "summary" : "Delete attribute (soft delete)",
        "description" : "\nPerforms a soft delete of an attribute using optimistic locking.\n\n## Method\nDELETE /api/v1/attributes/{id}?version={version}\n\n## Path Parameters\n- `id`: UUID of the attribute\n\n## Query Parameters\n- `version`: Short value of the current entity version for optimistic locking\n\n## Response\nEmpty response on success.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 404 if the attribute is not found\n- 409 if version conflict (concurrent modification)\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the attribute",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "version",
          "in" : "query",
          "description" : "Current entity version for optimistic locking",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Attribute deleted successfully",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes" : {
      "put" : {
        "tags" : [ "Attributes" ],
        "summary" : "Update attribute",
        "description" : "\nUpdates an existing attribute with optimistic locking.\n\n## Method\nPUT /api/v1/attributes\n\n## Request Body\nAttributeIncomeDto with updated information and current ID.\n\n## Response\nAttributeHeaderDto with the updated attribute details.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 404 if the attribute is not found\n- 400 if validation fails\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Updated attribute data",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated attribute",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Attributes" ],
        "summary" : "Create new attribute",
        "description" : "\nCreates a new attribute in the system.\n\n## Method\nPOST /api/v1/attributes\n\n## Request Body\nAttributeIncomeDto with attribute information including:\n- `name`: Attribute name (required)\n- `identifier`: Attribute identifier (required)\n- Additional optional fields\n\n## Response\nAttributeHeaderDto with the created attribute details including generated ID.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 400 if validation fails\n- 409 if attribute with identifier already exists in tenant\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Attribute data",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created attribute",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes/by-table/{table}" : {
      "get" : {
        "tags" : [ "Attributes" ],
        "summary" : "Get attributes by table",
        "description" : "\nReturns attributes applicable to the specified table without pagination.\nOnly non-deleted attribute items are returned.\n\n## Method\nGET /api/v1/attributes/by-table/{table}\n\n## Path Parameters\n- `table`: Table name to filter attributes by\n\n## Response\nList<AttributeDefinitionDto> containing reduced attribute definition details for the table.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n",
        "parameters" : [ {
          "name" : "table",
          "in" : "path",
          "description" : "Table name to filter attributes by",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Attributes for table",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeDefinitionDto"
                  },
                  "title" : "List<AttributeDefinitionDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes/search" : {
      "post" : {
        "tags" : [ "Attributes" ],
        "summary" : "Search attributes",
        "description" : "\nReturns a paginated list of attributes filtered by optional criteria.\nOptimized for list views. Use query parameters for pagination and sorting.\n\n## Method\nPOST /api/v1/attributes/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria. If omitted, returns unfiltered results.\n\n## Response\nReturns Page<AttributeHeaderDto> with items and pagination metadata.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role. Only returns attributes for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Paginated list of attributes",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.attribute.contract.dto.AttributeHeaderDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes/new" : {
      "post" : {
        "tags" : [ "Attributes" ],
        "summary" : "Get new attribute template",
        "description" : "\nReturns a new attribute template with default values for creating a new attribute.\n\n## Method\nPOST /api/v1/attributes/new\n\n## Request Body\nAttributeParametersDto with optional parameters:\n- `groupId`: ID of the parent group (optional)\n- `isGroup`: Boolean flag indicating if this is a group (optional)\n\n## Response\nAttributeHeaderDto with default values that can be used as a template for creating a new attribute.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Optional parameters for new attribute",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeParametersDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New attribute template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes/copy/{id}" : {
      "get" : {
        "tags" : [ "Attributes" ],
        "summary" : "Copy attribute",
        "description" : "\nCreates a copy of an existing attribute as a template for creating a new attribute.\nThe copy includes all settings but generates a new ID.\n\n## Method\nGET /api/v1/attributes/copy/{id}\n\n## Path Parameters\n- `id`: UUID of the attribute to copy\n\n## Response\nAttributeHeaderDto with copied data but new ID.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 404 if the source attribute is not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the attribute to copy",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Copied attribute",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeFullDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes/by-identifiers" : {
      "post" : {
        "tags" : [ "Attributes" ],
        "summary" : "Get attributes by identifiers",
        "description" : "\nReturns attributes matching the provided identifiers.\n\n## Method\nPOST /api/v1/attributes/by-identifiers\n\n## Request Body\nList<String> containing the attribute identifiers to search for.\n\n## Response\nList<AttributeIdentifierNameDto> containing the matched attributes with their IDs and names.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of attribute identifiers",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "type" : "string",
                  "title" : "String"
                },
                "title" : "List<String>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Attributes by identifiers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeIdentifierNameDto"
                  },
                  "title" : "List<AttributeIdentifierNameDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes/light" : {
      "post" : {
        "tags" : [ "Attributes" ],
        "summary" : "Get lightweight attribute data",
        "description" : "\nReturns lightweight attribute data for efficient client-side synchronization.\nGiven a list of IDs and versions, returns only those records that are deleted or have version mismatches.\n\n## Method\nPOST /api/v1/attributes/light\n\n## Request Body\nList<IdVersionDto> containing the IDs and versions to check. Maximum 100 items.\n\n## Response\nList<AttributeLightDto> containing only records that need to be updated on the client.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Errors\n- 400 if more than 100 items are provided\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of IDs and versions to check",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Lightweight attribute data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeLightDto"
                  },
                  "title" : "List<AttributeLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/attributes/minimal/search" : {
      "post" : {
        "tags" : [ "Attributes" ],
        "summary" : "Minimal attribute search",
        "description" : "\nReturns a minimal list of attributes for autocomplete and selection purposes.\nReturns only essential fields (ID, name) for improved performance.\n\n## Method\nPOST /api/v1/attributes/minimal/search\n\n## Query Parameters\n- `limit`: Maximum number of results to return (optional, default: 51, max: 51)\n\n## Request Body (optional)\nAccepts a FilterRequest JSON with field-specific filter criteria.\n\n## Response\nList of minimal attribute objects with ID and name only.\n\n## Authentication\nRequires authentication with OWNER, ADMIN, or USER role.\n\n## Rate Limiting\nThis endpoint has relaxed rate limiting (LIGHT_RATE_LIMIT) for better UX in autocomplete scenarios.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of results (default: 51, max: 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Minimal attribute list",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/sse" : {
      "get" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Get print forms stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof print forms for the current tenant. The endpoint streams paginated print form\ndata as they change in the database.\n\n## Usage\n1. Optionally stage filters using POST /print-forms/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"createdAt,desc\")\n- `stagedRequestId`: ID returned from POST /print-forms/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<PrintFormDto>\ncontaining the current page of print forms matching the filters and pagination.\n\n## Authentication\nRequires authentication. Only returns print forms for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /print-forms/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of Page<PrintFormDto>",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/sse/count" : {
      "get" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Get print forms count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof print forms matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /print-forms/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /print-forms/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication. Only counts print forms for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "WMS-SSE-Request-Id",
          "in" : "header",
          "description" : "ID of staged filters from POST /print-forms/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/sse/{id}" : {
      "get" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Get single print form via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific print form by its ID.\n\n## Usage\nConnect to this SSE endpoint with the print form ID in the path parameter.\nReceive continuous updates as the print form data changes.\n\n## Path Parameters\n- `id`: UUID of the print form\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized PrintFormDto\ncontaining the full print form details.\n\n## Authentication\nRequires authentication. Only returns print forms for the authenticated user's tenant.\n\n## Errors\n- Returns error event if print form ID is missing or invalid\n- Returns null events if print form is deleted or not found\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of PrintFormDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/sse/filters" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "FilterRequest JSON structure",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "ID of the staged filters",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                },
                "examples" : {
                  "id" : {
                    "value" : "12345678-1234-1234-1234-123456789012"
                  }
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/search" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Search print forms",
        "description" : "Returns a paginated list of print forms filtered by optional criteria.",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'createdAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of print forms",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/{id}" : {
      "get" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Get print form by ID",
        "description" : "Returns full print form details by its ID.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Print form details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Delete print form (soft delete)",
        "description" : "Soft deletes a print form with optimistic locking by version.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Print form deleted",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/new" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Get new print form template",
        "description" : "\nReturns a new print form template with default values.\n\n## Request Body (optional)\n- `table`: Table name to pre-fill the form\n- `purpose`: Purpose to pre-fill the form\n\nIf no body is provided, returns a template with empty table and purpose fields.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Optional table and purpose to pre-fill the form",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "New print form template",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/copy/{id}" : {
      "get" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Copy print form",
        "description" : "Creates a copy of an existing print form by its ID with a new name.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Copied print form",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms" : {
      "put" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Update print form",
        "description" : "Updates an existing print form. The ID must be provided in the request body.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Print form data to update",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Updated print form",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      },
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Create print form",
        "description" : "Creates a new print form with the provided data.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Print form data to create",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormIncomeDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Created print form",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/artifacts" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Render a print form and park it for download",
        "description" : "\nRenders a PDF from a print form template and entity data, then parks it server-side and returns its\nkey, so a viewer screen can be reached by that key rather than by carrying the document itself.\n\n## Request Body\n- `formId`: UUID of the print form template to use\n- `entityId`: UUID of the entity to get data from\n- `params`: Additional parameters for PDF generation (optional)\n- `copies`: how many times the rendered page is repeated, 1..999 (optional, defaults to 1)\n\n## Response\n`artifactId` — fetch the bytes from `GET /print-forms/artifacts/{id}`.\n`fileName` — the document name without extension, «<title> № <number> від <dd.MM.yyyy>» in the form language,\nelse «<title> <caption>» or the title alone.\n\n## Errors\n- 400: `copies` out of range, or no print data provider for the form's table\n- 404: print form not found\n- 500: report generation failure\n\n## Behavior\nThe artifact expires 5 minutes after its last read and is readable only by the user who rendered it.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "PDF generation request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormPdfRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Key and file name of the parked PDF",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormArtifactResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/artifacts/batch" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Render a merged print form and park it for download",
        "description" : "\nRenders a single merged PDF by filling the same print form template for several entities, then\nparks it server-side and returns its key. Entity data is fetched in parallel; PDF assembly is\nsequential. Pages follow the order of `entities`, and each entity starts on a new page.\n\n## Request Body\n- `formId`: UUID of the print form template to use\n- `entities`: entity identifiers with per-entity `copies` — non-empty, at most 50 entries, unique ids\n- `params`: shared additional parameters applied to every entity (optional)\n\n## Response\n`artifactId` — fetch the bytes from `GET /print-forms/artifacts/{id}`.\n`fileName` — «<title> (<count of distinct entities>)»; a batch of one entity is named as its single print.\n\n## Errors\n- 400: empty `entities`, more than 50 entries, duplicate ids, `copies` out of range, more than 5000\n  total pages, or no print data provider for the form's table\n- 404: print form not found\n- 500: report generation failure\n\n## Behavior\n- Fail-fast: any per-entity failure (missing entity, provider error) aborts the whole request.\n- All entities must belong to the table associated with the print form (enforced implicitly by the data provider).\n- The artifact expires 5 minutes after its last read and is readable only by the user who rendered it.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Batch PDF generation request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormBatchPdfRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Key and file name of the parked merged PDF",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormArtifactResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/artifacts/{id}" : {
      "get" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Download a parked print form",
        "description" : "\nReturns the PDF parked by `POST /print-forms/artifacts` or `POST /print-forms/artifacts/batch`,\nand pushes its expiry out by another 5 minutes.\n\n## Response\nThe PDF as binary content with Content-Type: application/pdf and\n`Content-Disposition: inline; filename=<id>.pdf; filename*=utf-8''<fileName>.pdf` (RFC 5987).\n\n## Errors\n- 404: unknown id, expired artifact, or an artifact belonging to another user — one answer for all\n  three, so the endpoint cannot be probed for which ids exist\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "The parked PDF",
            "headers" : { }
          },
          "404" : {
            "description" : "Unknown, expired, or another user's artifact",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/{id}/template" : {
      "get" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Download print form template",
        "description" : "\nDownloads the JRXML template file for a print form by its ID.\n\n## Path Parameters\n- `id`: UUID of the print form\n\n## Response\nReturns the template file as binary content with:\n- Content-Type: application/xml\n- Content-Disposition: attachment with original filename\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Template file (JRXML)",
            "headers" : { }
          },
          "404" : {
            "description" : "Template not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/preview" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Preview print data",
        "description" : "\nReturns the data that would be used for print form generation without actually generating the PDF.\nUseful for previewing and debugging print form templates.\n\n## Request Body\n- `table`: Table name to get data from\n- `entityId`: UUID of the entity\n- `params`: Additional parameters (optional)\n\n## Response\nReturns PrintDataWrapper containing the data that would be passed to the template.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Preview request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormPreviewRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Print data preview",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintDataWrapper"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/preview/jrxml" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Preview JRXML template with data",
        "description" : "\nReturns the JRXML template with sample data for preview purposes.\nUseful for testing and debugging Jasper report templates.\n\n## Request Body\n- `table`: Table name to get data from\n- `entityId`: UUID of the entity\n- `params`: Additional parameters (optional)\n\n## Response\nReturns JRXML template as byte array with XML content type.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "JRXML preview request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormPreviewRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "JRXML template with sample data",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/expand" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Expand DTO data",
        "description" : "\nExpands a DTO JSON object by resolving related entities using metadata and depth.\n\n## Request Body\n- `dtoFqn`: Fully qualified DTO class name under `ua.wwind.wms.*`\n- `depth`: Depth of reference expansion (0 means only direct ID replacement)\n- `data`: JSON object of the DTO to expand\n\n## Response\nReturns expanded JSON with resolved entities in place of ID values.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "DTO expand request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDtoExpandRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Expanded DTO data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/expand-tree" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Render DTO field tree as HTML",
        "description" : "\nReturns a self-contained HTML page visualising the field structure of a DTO as a collapsible\ntree. Uses the same walker as the JRXML preview endpoint: identical FK navigation, polymorphic\nFK merging, depth and cycle handling. Each leaf is annotated with its Kotlin source type\nname (e.g. `ContainerId?`, `Quantity`, `List<ReceiptLineExecutionResponseDto>`).\n\n## Request Body\n- `dtoFqn`: fully-qualified DTO class name (e.g. `ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDto`)\n- `depth`: max FK recursion depth (4 is a reasonable default; 0 returns only the root)\n\n## Response\n`text/html` page with `<details>/<summary>` collapse — open in any browser.\n\n## Authentication\nRequires `OWNER` or `ADMIN` role.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "DTO tree request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDtoExpandTreeRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "HTML tree page",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/light" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Get print forms light data",
        "description" : "Returns lightweight print form data for a list of IDs with versions. Used for efficient data synchronization.",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "List of ID and version pairs",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdVersionDto"
                },
                "title" : "List<IdVersionDto>"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of lightweight print form data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormLightDto"
                  },
                  "title" : "List<PrintFormLightDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/minimal/search" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Search print forms (minimal)",
        "description" : "\nReturns a minimal list of print forms (ID and name only) filtered by optional criteria.\nLimited to 51 items maximum for performance reasons.\n\n## Query Parameters\n- `limit`: Maximum number of items to return (default: 51, max: 51)\n\n## Request Body\nOptional FilterRequest for filtering results.\n\n## Response\nReturns List<IdNamePreviewDto> with id and name fields only.\n",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items to return (default: 51, max: 51)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "requestBody" : {
          "description" : "Optional filters",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "List of minimal print form data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
                  },
                  "title" : "List<IdNamePreviewDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/available" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Get available print forms",
        "description" : "\nReturns print forms available for a specific table and purpose.\n\n## Request Body\n- `table`: Table name to find print forms for\n- `purpose`: Purpose of the print form (optional)\n\n## Response\nReturns List<IdNamePreviewDto> with id and name of available print forms.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Request for available print forms",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Merged list: tenant forms followed by library forms",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.library.dto.AvailablePrintFormDto"
                  },
                  "title" : "List<AvailablePrintFormDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/tables" : {
      "get" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Get printable tables",
        "description" : "Returns all tables available for print forms with their purposes",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "List of printable tables with purposes",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintableTableDto"
                  },
                  "title" : "List<PrintableTableDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/metadata" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Get table metadata",
        "description" : "\nReturns hierarchical metadata for a table used in print forms.\n\n## Request Body\n- `table`: Table name (schema-qualified)\n- `depth`: Depth of hierarchy expansion (0 means no references)\n\n## Response\nReturns TableMetadata with fields and resolved references (by table names) and `included` metadata for related tables.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Table metadata request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormTableMetadataRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Table metadata",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.metadata.TableMetadata"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/metadata/by-dto" : {
      "post" : {
        "tags" : [ "Print Forms" ],
        "summary" : "Get table metadata by DTO",
        "description" : "\nReturns hierarchical metadata for a DTO class using a fully qualified class name (FQN).\n\n## Request Body\n- `dtoFqn`: Fully qualified DTO class name under `ua.wwind.wms.*`\n- `depth`: Depth of hierarchy expansion (0 means no references, max 10)\n\n## Response\nReturns a list of TableMetadata with fields and resolved references (by table names) and `included` metadata for related tables.\n\n## Authentication\nRequires authentication.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "DTO metadata request",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDtoMetadataRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "DTO metadata",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.metadata.TableMetadata"
                  },
                  "title" : "List<TableMetadata>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/library" : {
      "get" : {
        "tags" : [ "Print Form Library" ],
        "summary" : "List the print form library",
        "description" : "Returns the entire catalog of pre-built library forms as a flat list. The catalog is small enough that the client owns filtering and sorting end-to-end.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Full list of library print forms",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.library.dto.LibraryPrintFormDto"
                  },
                  "title" : "List<LibraryPrintFormDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/print-forms/library/{id}" : {
      "get" : {
        "tags" : [ "Print Form Library" ],
        "summary" : "Get a single library print form",
        "description" : "Returns one library form by its id, or 404 if not registered.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Library print form id (e.g. 'iam.user.badge.en')",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Library print form",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.library.dto.LibraryPrintFormDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Form not registered",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/data-import/sse" : {
      "get" : {
        "tags" : [ "Data Import" ],
        "summary" : "Get import jobs stream via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nof import jobs for the current tenant. The endpoint streams paginated import job data as it\nchanges in the database.\n\n## Usage\n1. Optionally stage filters using POST /data-import/sse/filters with JSON body\n2. Connect to this SSE endpoint with the pagination parameters\n3. Receive continuous updates as data changes\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort field and direction (e.g., \"startedAt,desc\")\n- `stagedRequestId`: ID returned from POST /data-import/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized Page<ImportJobDto>\ncontaining the current page of import jobs matching the filters and pagination.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role. Only returns import jobs for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field and direction, e.g. 'startedAt,desc'",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /data-import/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of import job pages",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.dataimport.contract.dto.ImportJobDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/data-import/sse/count" : {
      "get" : {
        "tags" : [ "Data Import" ],
        "summary" : "Get import jobs count via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time count\nof import jobs matching the specified filters for the current tenant.\n\n## Usage\n1. Optionally stage filters using POST /data-import/sse/filters with JSON body\n2. Connect to this SSE endpoint with the stagedRequestId parameter\n3. Receive continuous count updates as data changes\n\n## Query Parameters\n- `stagedRequestId`: ID returned from POST /data-import/sse/filters for applying filters\n\n## Event Format\nThe endpoint sends Server-Sent Events with count as Long value.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role. Only counts import jobs for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "stagedRequestId",
          "in" : "query",
          "description" : "ID from POST /data-import/sse/filters",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of import job count",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "integer",
                  "format" : "int64",
                  "title" : "Long"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/data-import/sse/{id}" : {
      "get" : {
        "tags" : [ "Data Import" ],
        "summary" : "Get single import job via SSE",
        "description" : "\nEstablishes a Server-Sent Events (SSE) connection to receive real-time updates\nfor a specific import job by its ID.\n\n## Usage\nConnect to this SSE endpoint with the import job ID in the path parameter.\nReceive continuous updates as the import job data changes.\n\n## Path Parameters\n- `id`: UUID of the import job\n\n## Event Format\nThe endpoint sends Server-Sent Events with JSON-serialized ImportStatusResponseDto\ncontaining the full import job details.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role. Only returns import jobs for the authenticated user's tenant.\n\n## Errors\n- Returns error event if import job ID is missing or invalid\n- Returns null events if import job is deleted or not found\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the import job",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.dataimport.ImportJobId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of import job details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportStatusResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/data-import/sse/filters" : {
      "post" : {
        "tags" : [ "Data Import" ],
        "summary" : "Stage filters for SSE requests",
        "description" : "\nStores filter configuration for subsequent SSE requests. This endpoint accepts\na JSON filter request body and returns a unique ID that can be used with SSE\nendpoints to apply these filters.\n\n## Usage Flow\n1. POST your filters as JSON to this endpoint\n2. Receive a stagedRequestId in the response\n3. Use the stagedRequestId as a query parameter when connecting to SSE endpoints\n\n## Request Body\nAccepts a FilterRequest JSON structure with field-specific filter criteria.\n\n## Response\nReturns a unique string ID that identifies the staged filter configuration.\n\n## Authentication\nRequires authentication with OWNER or ADMIN role.\n\n## Note\nStaged filters are temporarily stored in memory and associated with the user's session.\n",
        "parameters" : [ ],
        "requestBody" : {
          "description" : "Filter configuration",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Staged request ID",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "title" : "String"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/data-import/upload" : {
      "post" : {
        "tags" : [ "Data Import" ],
        "summary" : "Upload and start data import",
        "description" : "\nUploads a ZIP file containing data files and starts the import process.\n\n## Method\nPOST /data-import/upload\n\n## Request Body\nMultipart form data with:\n- `file`: ZIP archive containing data files (max 100MB)\n- `mode`: Import mode (UPSERT, INSERT, UPDATE) - optional, defaults to UPSERT\n- `dryRun`: Boolean flag to simulate import without making changes - optional, defaults to false\n\n## Response\nImportUploadResponseDto with:\n- Import job ID\n- Status\n- Initial progress information\n\n## Business Rules\n- ZIP file must not exceed 100MB\n- ZIP file must contain valid data files\n- Import runs asynchronously after upload\n\n## Authentication\nRequires OWNER or ADMIN role.\n\n## Errors\n- 400 Bad Request if no file uploaded or file is invalid\n- 413 Payload Too Large if file exceeds size limit\n",
        "parameters" : [ ],
        "responses" : {
          "202" : {
            "description" : "Import job created and started",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportUploadResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "No file uploaded or invalid file",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/data-import/demo" : {
      "post" : {
        "tags" : [ "Data Import" ],
        "summary" : "Start demo bootstrap import",
        "description" : "\nStarts demo bootstrap process and tracks it via data-import job stream.\nThe endpoint creates a regular import job and executes bootstrap contributors asynchronously.\nUse existing SSE endpoints (`/data-import/sse`) to monitor progress and result.\nIf at least one product already exists in tenant data, request is rejected.\n\n## Query Parameters\n- `scenario` (required): Which demo dataset to import - a `name` from `GET /data-import/demo/scenarios`. A missing or unknown value is rejected.\n",
        "parameters" : [ {
          "name" : "scenario",
          "in" : "query",
          "description" : "Which demo dataset to import: a name from GET /data-import/demo/scenarios.",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "202" : {
            "description" : "Demo bootstrap job created and started",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportUploadResponseDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Demo bootstrap is not allowed for current tenant, or the scenario is missing or unknown",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/data-import/demo/scenarios" : {
      "get" : {
        "tags" : [ "Data Import" ],
        "summary" : "List demo scenarios",
        "description" : "\nLists the demo scenarios this build can seed, in catalog order. Each carries the `name` the demo\nstart takes as `scenario`, and a title and description in the request's language.\n",
        "parameters" : [ {
          "name" : "Accept-Language",
          "in" : "header",
          "description" : "en or uk; en when absent or unsupported.",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "The scenarios",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.DemoScenarioDto"
                  },
                  "title" : "List<DemoScenarioDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/data-import/{id}/status" : {
      "get" : {
        "tags" : [ "Data Import" ],
        "summary" : "Get import job status",
        "description" : "\nReturns the current status and progress of an import job.\n\n## Method\nGET /data-import/{importId}/status\n\n## Path Parameters\n- `importId`: UUID of the import job\n\n## Response\nImportStatusResponseDto with:\n- Current status (QUEUED, PROCESSING, COMPLETED, FAILED, CANCELLED)\n- Progress information (processed/total files)\n- Summary of operations\n- File-level results\n- Timestamps\n\n## Authentication\nRequires OWNER or ADMIN role.\n\n## Errors\n- 404 if import job not found\n",
        "parameters" : [ {
          "name" : "importId",
          "in" : "path",
          "description" : "Import job ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Import job status and progress",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportStatusResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Import job not found",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/data-import/{id}/cancel" : {
      "post" : {
        "tags" : [ "Data Import" ],
        "summary" : "Cancel import job",
        "description" : "\nCancels a running or queued import job.\n\n## Method\nPOST /data-import/{importId}/cancel\n\n## Path Parameters\n- `importId`: UUID of the import job to cancel\n\n## Response\nImportCancelResponseDto with:\n- Import job ID\n- Updated status\n- Cancellation timestamp\n\n## Business Rules\n- Can only cancel jobs in QUEUED or PROCESSING status\n- Cancellation is asynchronous; job will complete current file processing\n\n## Authentication\nRequires OWNER or ADMIN role.\n\n## Errors\n- 404 if import job not found\n- 400 if job is already completed, failed, or cancelled\n",
        "parameters" : [ {
          "name" : "importId",
          "in" : "path",
          "description" : "Import job ID (UUID)",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Import job cancelled",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportCancelResponseDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Import job not found",
            "headers" : { }
          },
          "400" : {
            "description" : "Job cannot be cancelled (already completed, failed, or cancelled)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/data-import/search" : {
      "post" : {
        "tags" : [ "Data Import" ],
        "summary" : "Search import jobs",
        "description" : "\nReturns a paginated list of import jobs for the current tenant with optional filtering.\n\n## Method\nPOST /data-import/search\n\n## Query Parameters\n- `position`: Position (0-based)\n- `size`: Number of items per page\n- `sort`: Sort criteria\n\n## Request Body\nFilterRequest JSON (optional) for advanced filtering on:\n- status: Filter by import job status\n- startedAt: Filter by start date\n- completedAt: Filter by completion date\n- uploadedFileName: Filter by file name\n- mode: Filter by import mode\n\n## Response\nPage<ImportHistoryItemDto> with:\n- Paginated list of import job summaries\n- Total elements count\n- Pagination metadata\n\n## Authentication\nRequires OWNER or ADMIN role. Only returns import jobs for the authenticated user's tenant.\n",
        "parameters" : [ {
          "name" : "position",
          "in" : "query",
          "description" : "Position (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of items per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort criteria",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "FilterRequest JSON (optional)",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "title" : "String"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Paginated list of import jobs",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.dataimport.contract.dto.ImportJobDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/mcp/usage" : {
      "get" : {
        "tags" : [ ],
        "summary" : "MCP quota usage",
        "description" : "Per-window MCP quota usage (day/week/month) and top consumers for the current tenant.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Current MCP usage snapshot",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.mcp.contract.dto.McpUsageResponseDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/telemetry/spans" : {
      "post" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/api/v1/policies/revisions" : {
      "get" : {
        "tags" : [ ],
        "summary" : "Current policy revisions",
        "description" : "An opaque digest per policy kind. A client compares it for inequality and drops the caches derived from that policy when it differs; no ordering is implied.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Revision per policy kind",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.policy.PolicyRevisionsDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/v1/policies/revisions/sse" : {
      "get" : {
        "tags" : [ ],
        "summary" : "Policy revision stream",
        "description" : "The current revisions on open, then again whenever a policy actually changes.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "SSE stream of PolicyRevisionsDto",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.policy.PolicyRevisionsDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/tenants/{tenantId}/license/usage" : {
      "get" : {
        "tags" : [ ],
        "summary" : "Tenant license usage (s2s)",
        "description" : "Current license consumption for the tenant addressed by its numeric id.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "Current used counts for the tenant",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.TenantUsageDto"
                }
              }
            }
          },
          "400" : {
            "description" : "tenantId is not a valid tenant id",
            "headers" : { }
          },
          "404" : {
            "description" : "No such tenant",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/tenants/{tenantId}/reset-owner-2fa" : {
      "post" : {
        "tags" : [ ],
        "summary" : "Reset the tenant owner's 2FA (s2s)",
        "description" : "Disables the TOTP of the tenant's live OWNER, ends all of their sessions and remembered devices and mails them. The actor is recorded in the audit trail and named in the letter; the owner sets up an authenticator again at their next sign-in.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.OwnerTotpResetRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "The owner's 2FA was reset",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.OwnerTotpResetDto"
                }
              }
            }
          },
          "400" : {
            "description" : "A blank actor name or email, or an unknown actorKind",
            "headers" : { }
          },
          "409" : {
            "description" : "The tenant has no live OWNER (NO_OWNER)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/tenants/{tenantId}/demo-passwords" : {
      "post" : {
        "tags" : [ ],
        "summary" : "Set the demo staff's password (s2s, load test only)",
        "description" : "Sets the password and turns password sign-in on for every enabled human user of a DEMO tenant except its OWNER; sends no mail and ends no session. Answers 404 unless the pool sets iam.loadtest.demo-passwords-enabled and the tenant is a demo.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.DemoPasswordsRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "The logins changed, with their profiles",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.DemoPasswordsDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The password breaks the password policy",
            "headers" : { }
          },
          "404" : {
            "description" : "Not served for this tenant on this pool",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/tenants/{tenantId}/{action}" : {
      "post" : {
        "tags" : [ ],
        "summary" : "Tenant pod operation (s2s)",
        "description" : "Runs migrate, backup, export, restore, check, admit, release or owner against the addressed tenant on this pod. backup takes an optional body {class: ROUTINE|MIGRATION, trigger: AUTO|MANUAL} (default: a manual routine backup); export takes no body and writes the tenant's data as a gzip SQL file with a JSON sidecar under exports/{tenantId}/, even for a blocked tenant -- artifactRef in the record is their key without extension; restore takes {artifactRef, foreign}: the artifact key without extension, which must belong to the addressed tenant unless foreign is true -- then it is another tenant's copy, loaded only into an empty database; owner takes {email, name} and creates the tenant's first user if it has none; demo takes {scenario} and seeds that demo scenario as the tenant's owner, with a failure reason in the Accept-Language locale.",
        "parameters" : [ {
          "name" : "X-Placement-Revision",
          "in" : "header",
          "description" : "The placement revision this pod must have applied before it starts. Omitted, no revision is demanded.",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "Accept-Language",
          "in" : "header",
          "description" : "Language of a demo refusal or failure reason: en or uk; en when absent or unsupported.",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "The operation finished, or the asynchronous operation already running",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.TenantOperationDto"
                }
              }
            }
          },
          "202" : {
            "description" : "The asynchronous operation started; poll GET ops/{operationId}",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.TenantOperationDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Unknown action, an unknown demo scenario, a restore artifact of another tenant without foreign, or a revision header that is not a number",
            "headers" : { }
          },
          "409" : {
            "description" : "The tenant is locked by an unrecorded run (TENANT_OPERATION_IN_FLIGHT), or this pod could not read a placement directory as current as the call demands (PLACEMENT_DIRECTORY_STALE), or the tenant's code is held by another tenant the directory still places (TENANT_CODE_TAKEN)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/verify" : {
      "post" : {
        "tags" : [ ],
        "summary" : "Verify a backup copy (s2s)",
        "description" : "Restores {artifactRef} into the database at {dbHost}/{dbName}, which must be empty, runs migrations on it and answers with the stamp it read back. The database is the caller's: this pod neither creates nor drops it, and registers nothing about it -- no placement row, no admission, no registry entry.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.TenantVerifyRequestDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "202" : {
            "description" : "The verification started; poll GET ops/{operationId}",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.TenantOperationDto"
                }
              }
            }
          },
          "400" : {
            "description" : "The artifact key or the database address is malformed",
            "headers" : { }
          },
          "409" : {
            "description" : "The target database is already being verified (VERIFY_IN_FLIGHT)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/ops/{operationId}" : {
      "get" : {
        "tags" : [ ],
        "summary" : "Tenant operation record (s2s)",
        "description" : "Status, log and outcome of one operation, readable from any pod.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "The operation record",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.TenantOperationDto"
                }
              }
            }
          },
          "404" : {
            "description" : "No such operation, or its retention has elapsed",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/demo-scenarios" : {
      "get" : {
        "tags" : [ ],
        "summary" : "Demo scenarios (s2s)",
        "description" : "The demo scenarios this build can seed, in catalog order, each with a title and a description rendered in the Accept-Language locale. The list belongs to the image: pods of different versions may answer differently.",
        "parameters" : [ {
          "name" : "Accept-Language",
          "in" : "header",
          "description" : "en or uk; en when absent or unsupported.",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "The scenarios",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.DemoScenarioDto"
                  },
                  "title" : "List<DemoScenarioDto>"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/tenants/{tenantId}/export-format" : {
      "get" : {
        "tags" : [ ],
        "summary" : "Export format description (s2s)",
        "description" : "Every table a data export of this build holds, in file order, with the columns, types, NOT NULL and primary key the file declares; excluded tables and hidden columns are absent. Read from the addressed tenant's database, which must be at this pod's version. The answer is the same for every tenant at that version: cache it by formatVersion and serverVersion.",
        "parameters" : [ {
          "name" : "X-Placement-Revision",
          "in" : "header",
          "description" : "The placement revision this pod must have applied before it reads. Omitted, no revision is demanded.",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "The description",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.ExportFormatDto"
                }
              }
            }
          },
          "400" : {
            "description" : "A revision header that is not a number",
            "headers" : { }
          },
          "409" : {
            "description" : "The tenant's database is not at this pod's version (TENANT_SCHEMA_VERSION_MISMATCH), or this pod could not read a placement directory as current as the call demands (PLACEMENT_DIRECTORY_STALE)",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/tenants/{tenantId}/data-migration/migrations/{key}/batches" : {
      "get" : {
        "tags" : [ "Data Migration" ],
        "summary" : "Background migration batch history (s2s)",
        "description" : "Batch log of one migration, most recent first. Without pagination parameters the whole history is returned.",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "description" : "Page index (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Number of batches per page; omit both to read the whole log",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Page of batch log rows",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.datamigration.contract.migration.dto.DataMigrationBatchDto"
                }
              }
            }
          },
          "404" : {
            "description" : "The tenant has no migration with this key",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/tenants/{tenantId}/data-migration/standing" : {
      "get" : {
        "tags" : [ "Data Migration" ],
        "summary" : "One tenant's background migration standing (s2s)",
        "description" : "\nReturns everything the control plane keeps about one tenant's background migrations, folded from\nthis database's own `migration_state` rows.\n\n## Method\nGET /api/s2s/v1/tenants/{tenantId}/data-migration/standing\n\n## What the numbers mean\n`level` is the watermark of finished work: the highest point N where every row at or below N is\nfinished, floored by this build's baseline. `state` is UNKNOWN, OK, RUNNING or FAILED.\n`minRequiredBy` is the smallest `requiredBy` among unfinished rows and `nextRequiredKey` names the\nrow that attains it -- together they say which migration holds the tenant back and from which point.\n`focus` is the one migration the state is about, and it is absent only when nothing has been recorded.\n\n## Why the database answers rather than the control plane\nThe database is the only source that survives a restore from a backup: a control plane that\naccumulated this state would keep describing the database it had before the restore.\n\n## Authentication\nGuarded by X-API-Key.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "The tenant's standing and the migration that explains it",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.datamigration.contract.migration.dto.MigrationStandingDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/tenants/{tenantId}/data-migration/migrations/search" : {
      "post" : {
        "tags" : [ "Data Migration" ],
        "summary" : "One tenant's background migrations, paged (s2s)",
        "description" : "\nThe tenant's migrations as a page, newest scale point first, with a row whose ordinal is unknown\nlast. Filters and sort keys name this table's own columns -- `key`, `status`, `ordinal`,\n`updatedAt`, `attempts`, `appVersion` -- and a caller whose vocabulary differs translates on its\nside.\n\n## Method\nPOST /api/s2s/v1/tenants/{tenantId}/data-migration/migrations/search\n\n## Authentication\nGuarded by X-API-Key.\n",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "description" : "Page index (0-based)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "description" : "Rows per page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort directive, e.g. 'ordinal,desc' (repeatable)",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Optional column filters (key, status, ordinal, updatedAt, …)",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Page of the tenant's migrations",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.datamigration.contract.migration.dto.DataMigrationMigrationDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/tenants/{tenantId}/data-migration/migrations/{key}/priority" : {
      "post" : {
        "tags" : [ "Data Migration" ],
        "summary" : "Lift or restore one migration's pacing (s2s)",
        "description" : "\nTurns priority mode on or off for one migration of one tenant. In priority mode the engine stops\npausing between batches, which costs the tenant its protection from a migration saturating the\ndatabase -- the caller is expected to have said so to whoever asked.\n\n## Method\nPOST /api/s2s/v1/tenants/{tenantId}/data-migration/migrations/{key}/priority\n\n## Why synchronous\nThe pace of a migration is asked for by a person watching a screen. A command published to a queue\nis lost when the serving pod restarts, and a hotfix rollout is exactly when pods restart, so the\nasker would be told nothing and left to guess. A call to the pod that serves the tenant either\nsucceeds or says why.\n\n## Authentication\nGuarded by X-API-Key.\n",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ua.wwind.wms.feature.datamigration.contract.migration.dto.MigrationPrioritySetDto"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "The pace was changed",
            "headers" : { }
          },
          "404" : {
            "description" : "The tenant has no migration with this key",
            "headers" : { }
          },
          "409" : {
            "description" : "The migration is finished and has no pace left to change",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/data-migration/scale" : {
      "get" : {
        "tags" : [ "Data Migration" ],
        "summary" : "The migration scale this build carries (s2s)",
        "description" : "\nReturns the point this build stands on the background-migration scale, and every record in its\ncatalog.\n\n## Method\nGET /api/s2s/v1/data-migration/scale\n\n## Why it is not addressed at a tenant\nThe catalog is a property of the image, not of a database: it is compiled in and identical for every\ntenant this pod serves. The caller is the control plane deciding whether a tenant may be moved onto\nthis build, and it has to know what this build would refuse before it attempts the move -- the\npreflight runs inside the schema migration and cannot be asked in advance.\n\n## Points, not versions\n`ordinal` and `requiredBy` are integers on a single scale, not release versions.\n`buildOrdinal` is the highest point the catalog names as reached.\n\n## Authentication\nGuarded by X-API-Key.\n",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "This build's scale point and every catalog record it carries",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.feature.datamigration.contract.migration.dto.MigrationScaleDto"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/api/s2s/v1/tenants/{tenantId}/loadtest-erp" : {
      "post" : {
        "tags" : [ ],
        "summary" : "Provision the load-test ERP (s2s, load test only)",
        "description" : "Creates or reuses the technical user lt_erp and the external system lt-erp of a DEMO tenant, issues a fresh token (revoking the previous one) and returns it with the ids the ERP's documents reference. Answers 404 unless the pool sets app.loadtest.erp-access-enabled.",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "description" : "The token and the reference ids",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ua.wwind.wms.app.loadtest.LoadtestErpAccessDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Not served for this tenant on this pool",
            "headers" : { }
          }
        },
        "deprecated" : false
      }
    },
    "/.well-known/oauth-authorization-server/t/{tenantCode}" : {
      "get" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/.well-known/jwks.json" : {
      "get" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/.well-known/oauth-protected-resource/t/{tenantCode}/mcp" : {
      "get" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/t/{tenantCode}/oauth/authorize" : {
      "get" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/t/{tenantCode}/oauth/token" : {
      "post" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/t/{tenantCode}/oauth/register" : {
      "post" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/t/{tenantCode}/mcp" : {
      "post" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      },
      "delete" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/oauth/authorize/info" : {
      "get" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/oauth/authorize/confirm" : {
      "post" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    }
  },
  "components" : {
    "schemas" : {
      "ua.wwind.wms.feature.iam.contract.auth.dto.AuthenticationRequestDto" : {
        "type" : "object",
        "properties" : {
          "clientVersion" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "email" : {
            "type" : "string",
            "title" : "String"
          },
          "oauthRequestId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "email" ],
        "title" : "AuthenticationRequestDto"
      },
      "kotlin.uuid.Uuid" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "Uuid",
        "example" : null
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.AuthChallengeDto" : {
        "type" : "object",
        "properties" : {
          "authSessionId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        },
        "required" : [ "authSessionId" ],
        "title" : "AuthChallengeDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.VerifyOtpRequestDto" : {
        "type" : "object",
        "properties" : {
          "authSessionId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "code" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "authSessionId", "code" ],
        "title" : "VerifyOtpRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.VerifyLinkRequestDto" : {
        "type" : "object",
        "properties" : {
          "authSessionId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "token" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "authSessionId", "token" ],
        "title" : "VerifyLinkRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.RefreshTokenDto" : {
        "type" : "object",
        "properties" : {
          "clientVersion" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "token" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "token" ],
        "title" : "RefreshTokenDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.RefreshResponseDto" : {
        "type" : "object",
        "properties" : {
          "accessToken" : {
            "type" : "string",
            "title" : "String"
          },
          "refreshToken" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "accessToken", "refreshToken" ],
        "title" : "RefreshResponseDto"
      },
      "kotlin.time.Instant" : {
        "type" : "string",
        "format" : "date-time",
        "title" : "Instant",
        "example" : null
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.TechnicalJwtIssueResponseDto" : {
        "type" : "object",
        "properties" : {
          "accessToken" : {
            "type" : "string",
            "title" : "String"
          },
          "expiresAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          }
        },
        "required" : [ "accessToken", "expiresAt" ],
        "title" : "TechnicalJwtIssueResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.PasswordLoginRequestDto" : {
        "type" : "object",
        "properties" : {
          "email" : {
            "type" : "string",
            "title" : "String"
          },
          "password" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "email", "password" ],
        "title" : "PasswordLoginRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.ActiveSessionDto" : {
        "type" : "object",
        "properties" : {
          "appMode" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.SessionAppMode"
            } ]
          },
          "createdAt" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "current" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "deviceId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "familyId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "lastActivity" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "platform" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.SessionPlatform"
            } ]
          }
        },
        "required" : [ "createdAt", "current", "familyId", "lastActivity" ],
        "title" : "ActiveSessionDto"
      },
      "ua.wwind.wms.core.shared.model.SessionAppMode" : {
        "type" : "string",
        "enum" : [ "CLIENT", "PDT" ],
        "title" : "SessionAppMode"
      },
      "ua.wwind.wms.core.shared.model.SessionPlatform" : {
        "type" : "string",
        "enum" : [ "ANDROID", "IOS", "WEB", "DESKTOP" ],
        "title" : "SessionPlatform"
      },
      "ua.wwind.wms.core.security.model.UserRole" : {
        "type" : "string",
        "enum" : [ "USER", "ADMIN", "OWNER" ],
        "title" : "UserRole"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.AuthStateDto" : {
        "type" : "string",
        "enum" : [ "PASSWORD_RESET", "TOTP_ENROLL", "TOTP_CHALLENGE", "SESSION_TAKEOVER", "AUTHENTICATED" ],
        "title" : "AuthStateDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.SystemUserDto" : {
        "type" : "object",
        "properties" : {
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "role" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.security.model.UserRole"
          }
        },
        "required" : [ "name", "role" ],
        "title" : "SystemUserDto"
      },
      "ua.wwind.wms.core.shared.idtypes.security.UserId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "UserId",
        "example" : null
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.PasswordAuthResponseDto" : {
        "type" : "object",
        "properties" : {
          "accessToken" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "activeSessions" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.ActiveSessionDto"
            },
            "title" : "List<ActiveSessionDto>"
          },
          "deviceTrustToken" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "otpauthUri" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "preAuthHandle" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "refreshToken" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "rememberDeviceAllowed" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "role" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.security.model.UserRole"
            } ]
          },
          "secret" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "state" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.AuthStateDto"
          },
          "takeoverTicket" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "user" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.SystemUserDto"
            } ]
          }
        },
        "required" : [ "rememberDeviceAllowed", "state" ],
        "title" : "PasswordAuthResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.PasswordChangeRequestDto" : {
        "type" : "object",
        "properties" : {
          "currentPassword" : {
            "type" : "string",
            "title" : "String"
          },
          "newPassword" : {
            "type" : "string",
            "title" : "String"
          },
          "preAuthHandle" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "currentPassword", "newPassword", "preAuthHandle" ],
        "title" : "PasswordChangeRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.EnrollStartRequestDto" : {
        "type" : "object",
        "properties" : {
          "preAuthHandle" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "preAuthHandle" ],
        "title" : "EnrollStartRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.EnrollConfirmRequestDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "preAuthHandle" : {
            "type" : "string",
            "title" : "String"
          },
          "rememberDevice" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "code", "preAuthHandle", "rememberDevice" ],
        "title" : "EnrollConfirmRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.TotpVerifyRequestDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "preAuthHandle" : {
            "type" : "string",
            "title" : "String"
          },
          "rememberDevice" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "code", "preAuthHandle", "rememberDevice" ],
        "title" : "TotpVerifyRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.TotpRecoveryRequestDto" : {
        "type" : "object",
        "properties" : {
          "preAuthHandle" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "preAuthHandle" ],
        "title" : "TotpRecoveryRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.TotpRecoveryStatusDto" : {
        "type" : "string",
        "enum" : [ "SENT", "ALREADY_SENT", "NO_ADMINS", "NOT_APPLICABLE" ],
        "title" : "TotpRecoveryStatusDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.TotpRecoveryResponseDto" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.TotpRecoveryStatusDto"
          }
        },
        "required" : [ "status" ],
        "title" : "TotpRecoveryResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.ForgotPasswordRequestDto" : {
        "type" : "object",
        "properties" : {
          "email" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "email" ],
        "title" : "ForgotPasswordRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.SetPasswordRequestDto" : {
        "type" : "object",
        "properties" : {
          "newPassword" : {
            "type" : "string",
            "title" : "String"
          },
          "token" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "newPassword", "token" ],
        "title" : "SetPasswordRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.SessionTakeoverRequestDto" : {
        "type" : "object",
        "properties" : {
          "ticket" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "ticket" ],
        "title" : "SessionTakeoverRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.AuthSessionStatusDto" : {
        "type" : "string",
        "enum" : [ "PENDING", "ACCEPTED", "COMPLETED", "EXPIRED", "LOCKED" ],
        "title" : "AuthSessionStatusDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.CheckResponseDto" : {
        "type" : "object",
        "properties" : {
          "accessToken" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "activeSessions" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.ActiveSessionDto"
            },
            "title" : "List<ActiveSessionDto>"
          },
          "preAuthHandle" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "redirectUri" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "refreshToken" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "rememberDeviceAllowed" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "role" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.security.model.UserRole"
            } ]
          },
          "state" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.AuthStateDto"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.AuthSessionStatusDto"
          },
          "takeoverTicket" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "user" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.SystemUserDto"
            } ]
          }
        },
        "required" : [ "rememberDeviceAllowed", "status" ],
        "title" : "CheckResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.security.AccessGroupId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "AccessGroupId",
        "example" : null
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.UserLocaleDto" : {
        "type" : "string",
        "enum" : [ "EN", "UK" ],
        "title" : "UserLocaleDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.UserSeatTypeDto" : {
        "type" : "string",
        "enum" : [ "NAMED", "CONCURRENT" ],
        "title" : "UserSeatTypeDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.UserTypeDto" : {
        "type" : "string",
        "enum" : [ "HUMAN", "TECHNICAL" ],
        "title" : "UserTypeDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.UserResponseDto" : {
        "type" : "object",
        "properties" : {
          "accessGroups" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.AccessGroupId"
            },
            "title" : "List<AccessGroupId>"
          },
          "badgeTokenCreatedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "email" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "language" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserLocaleDto"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "namedLockedUntil" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "passwordAccessEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "role" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.security.model.UserRole"
          },
          "seatType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserSeatTypeDto"
            } ]
          },
          "technicalCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "totpEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserTypeDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "accessGroups", "deleted", "enabled", "language", "name", "number", "passwordAccessEnabled", "role", "totpEnabled", "type", "version" ],
        "title" : "UserResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.EmailChangeStatusDto" : {
        "type" : "string",
        "enum" : [ "PENDING", "CONFIRMED", "EXPIRED", "LOCKED" ],
        "title" : "EmailChangeStatusDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.EmailChangeStatusResponseDto" : {
        "type" : "object",
        "properties" : {
          "email" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.EmailChangeStatusDto"
          }
        },
        "required" : [ "status" ],
        "title" : "EmailChangeStatusResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.UserHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "badgeTokenCreatedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "email" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "language" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserLocaleDto"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "role" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.security.model.UserRole"
          },
          "seatType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserSeatTypeDto"
            } ]
          },
          "technicalCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserTypeDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "enabled", "id", "language", "name", "number", "role", "type", "version" ],
        "title" : "UserHeaderResponseDto"
      },
      "io.perracodex.exposed.pagination.Page.PageDetails" : {
        "type" : "object",
        "properties" : {
          "elementsInPage" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "elementsPerPage" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "hasNext" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "hasPrevious" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "isFirst" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "isLast" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "isOverflow" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "pageIndex" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "position" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "sort" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Pageable.PageSort"
            },
            "title" : "List<Pageable.PageSort>"
          },
          "totalElements" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "totalPages" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "elementsInPage", "elementsPerPage", "hasNext", "hasPrevious", "isFirst", "isLast", "isOverflow", "pageIndex", "position", "totalElements", "totalPages" ],
        "title" : "Page.PageDetails"
      },
      "io.perracodex.exposed.pagination.Pageable.PageSort" : {
        "type" : "object",
        "properties" : {
          "direction" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Pageable.PageDirection"
          },
          "field" : {
            "type" : "string",
            "title" : "String"
          },
          "table" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "direction", "field" ],
        "title" : "Pageable.PageSort"
      },
      "io.perracodex.exposed.pagination.Pageable.PageDirection" : {
        "type" : "string",
        "enum" : [ "ASC", "DESC" ],
        "title" : "Pageable.PageDirection"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.user.dto.UserHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserHeaderResponseDto"
            },
            "title" : "List<UserHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<UserHeaderResponseDto>"
      },
      "ua.wwind.exposed.filters.core.FilterNode" : {
        "anyOf" : [ {
          "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterGroup"
        }, {
          "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterLeaf"
        } ],
        "title" : "FilterNode"
      },
      "ua.wwind.exposed.filters.core.FilterGroup" : {
        "type" : "object",
        "properties" : {
          "children" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterNode"
            },
            "title" : "List<FilterNode>"
          },
          "combinator" : {
            "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterCombinator"
          }
        },
        "required" : [ "children", "combinator" ],
        "title" : "FilterGroup"
      },
      "ua.wwind.exposed.filters.core.FilterCombinator" : {
        "type" : "string",
        "enum" : [ "AND", "OR", "NOT" ],
        "title" : "FilterCombinator"
      },
      "ua.wwind.exposed.filters.core.FilterLeaf" : {
        "type" : "object",
        "properties" : {
          "predicates" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FieldFilter"
            },
            "title" : "List<FieldFilter>"
          }
        },
        "required" : [ "predicates" ],
        "title" : "FilterLeaf"
      },
      "ua.wwind.exposed.filters.core.FieldFilter" : {
        "type" : "object",
        "properties" : {
          "field" : {
            "type" : "string",
            "title" : "String"
          },
          "operator" : {
            "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterOperator"
          },
          "values" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          }
        },
        "required" : [ "field", "operator", "values" ],
        "title" : "FieldFilter"
      },
      "ua.wwind.exposed.filters.core.FilterOperator" : {
        "type" : "string",
        "enum" : [ "EQ", "NEQ", "CONTAINS", "STARTS_WITH", "ENDS_WITH", "IN", "NOT_IN", "BETWEEN", "GT", "GTE", "LT", "LTE", "IS_NULL", "IS_NOT_NULL", "IN_HIERARCHY" ],
        "title" : "FilterOperator"
      },
      "ua.wwind.exposed.filters.core.FilterRequest" : {
        "type" : "object",
        "properties" : {
          "root" : {
            "$ref" : "#/components/schemas/ua.wwind.exposed.filters.core.FilterNode"
          }
        },
        "required" : [ "root" ],
        "title" : "FilterRequest"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.UserIncomeDto" : {
        "type" : "object",
        "properties" : {
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "email" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "language" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserLocaleDto"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "role" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.security.model.UserRole"
          },
          "seatType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserSeatTypeDto"
            } ]
          },
          "technicalCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserTypeDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "language", "name", "role", "type", "version" ],
        "title" : "UserIncomeDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.BadgeTokenResponseDto" : {
        "type" : "object",
        "properties" : {
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "qrPayload" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "createdAt", "qrPayload" ],
        "title" : "BadgeTokenResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.PasswordAccessRequestDto" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "enabled" ],
        "title" : "PasswordAccessRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.UserStatusRequestDto" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "enabled" ],
        "title" : "UserStatusRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.ReplaceAccessGroupsRequestDto" : {
        "type" : "object",
        "properties" : {
          "groupIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.AccessGroupId"
            },
            "title" : "Set<AccessGroupId>",
            "uniqueItems" : true
          }
        },
        "required" : [ "groupIds" ],
        "title" : "ReplaceAccessGroupsRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.TechnicalUserTokenIssueRequestDto" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "expiresAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          }
        },
        "required" : [ "expiresAt" ],
        "title" : "TechnicalUserTokenIssueRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.TechnicalUserTokenResponseDto" : {
        "type" : "object",
        "properties" : {
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "expiresAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "TechnicalUserTokenId"
          },
          "issuedByUserId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "lastUsedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "revokedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "technicalUserId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "createdAt", "deleted", "expiresAt", "id", "issuedByUserId", "number", "technicalUserId", "version" ],
        "title" : "TechnicalUserTokenResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.TechnicalUserTokenIssueResponseDto" : {
        "type" : "object",
        "properties" : {
          "token" : {
            "type" : "string",
            "title" : "String"
          },
          "tokenData" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.TechnicalUserTokenResponseDto"
          }
        },
        "required" : [ "token", "tokenData" ],
        "title" : "TechnicalUserTokenIssueResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.auth.dto.TechnicalUserTokenResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.TechnicalUserTokenResponseDto"
            },
            "title" : "List<TechnicalUserTokenResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<TechnicalUserTokenResponseDto>"
      },
      "ua.wwind.wms.feature.iam.contract.auth.dto.TrustedDeviceDto" : {
        "type" : "object",
        "properties" : {
          "appMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.SessionAppMode"
          },
          "createdAt" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "current" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "deviceId" : {
            "type" : "string",
            "title" : "String"
          },
          "expiresAt" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "id" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "lastUsedAt" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "platform" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.SessionPlatform"
          }
        },
        "required" : [ "appMode", "createdAt", "current", "deviceId", "expiresAt", "id", "platform" ],
        "title" : "TrustedDeviceDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.UserSelfUpdateDto" : {
        "type" : "object",
        "properties" : {
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "language" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.user.dto.UserLocaleDto"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "language", "name", "version" ],
        "title" : "UserSelfUpdateDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.SelfPasswordChangeRequestDto" : {
        "type" : "object",
        "properties" : {
          "currentPassword" : {
            "type" : "string",
            "title" : "String"
          },
          "newPassword" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "currentPassword", "newPassword" ],
        "title" : "SelfPasswordChangeRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.SelfResetTotpRequestDto" : {
        "type" : "object",
        "properties" : {
          "password" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "password" ],
        "title" : "SelfResetTotpRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.EmailChangeStartRequestDto" : {
        "type" : "object",
        "properties" : {
          "newEmail" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "newEmail" ],
        "title" : "EmailChangeStartRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.EmailChangeChallengeDto" : {
        "type" : "object",
        "properties" : {
          "sessionId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        },
        "required" : [ "sessionId" ],
        "title" : "EmailChangeChallengeDto"
      },
      "ua.wwind.wms.core.rest.validation.FieldError" : {
        "type" : "object",
        "properties" : {
          "message" : {
            "type" : "string",
            "title" : "String"
          },
          "path" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "message", "path" ],
        "title" : "FieldError"
      },
      "ua.wwind.wms.core.rest.validation.ValidationErrorResponse" : {
        "type" : "object",
        "properties" : {
          "errors" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.rest.validation.FieldError"
            },
            "title" : "List<FieldError>"
          },
          "message" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "errors", "message" ],
        "title" : "ValidationErrorResponse"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.EmailChangeConfirmRequestDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "sessionId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        },
        "required" : [ "code", "sessionId" ],
        "title" : "EmailChangeConfirmRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.EmailChangeVerifyLinkRequestDto" : {
        "type" : "object",
        "properties" : {
          "sessionId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "token" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "sessionId", "token" ],
        "title" : "EmailChangeVerifyLinkRequestDto"
      },
      "ua.wwind.wms.core.shared.dto.IdVersionDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "version" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "id" ],
        "title" : "IdVersionDto"
      },
      "ua.wwind.wms.feature.iam.contract.user.dto.UserLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "UserLightDto"
      },
      "ua.wwind.wms.core.shared.dto.IdNamePreviewDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "previewUrl" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "id", "name" ],
        "title" : "IdNamePreviewDto"
      },
      "ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.AccessGroupId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "profileId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.ProfileId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "number", "profileId", "version" ],
        "title" : "AccessGroupHeaderResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.security.ProfileId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ProfileId",
        "example" : null
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupHeaderResponseDto"
            },
            "title" : "List<AccessGroupHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<AccessGroupHeaderResponseDto>"
      },
      "ua.wwind.wms.core.shared.idtypes.topology.WarehouseId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "WarehouseId",
        "example" : null
      },
      "ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupResponseDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.AccessGroupId"
            } ]
          },
          "members" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            },
            "title" : "List<UserId>"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "profileId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.ProfileId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseAssignments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            },
            "title" : "List<WarehouseId>"
          }
        },
        "required" : [ "deleted", "members", "name", "number", "profileId", "version", "warehouseAssignments" ],
        "title" : "AccessGroupResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupIncomeDto" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.AccessGroupId"
            } ]
          },
          "members" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            },
            "title" : "List<UserId>"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "profileId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.ProfileId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseAssignments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            },
            "title" : "List<WarehouseId>"
          }
        },
        "required" : [ "members", "name", "profileId", "version", "warehouseAssignments" ],
        "title" : "AccessGroupIncomeDto"
      },
      "ua.wwind.wms.feature.iam.contract.accessgroup.dto.AccessGroupLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.AccessGroupId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "AccessGroupLightDto"
      },
      "ua.wwind.wms.feature.iam.contract.profile.dto.ProfileHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.ProfileId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseAccessRestricted" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "deleted", "id", "name", "number", "version", "warehouseAccessRestricted" ],
        "title" : "ProfileHeaderResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.profile.dto.ProfileHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.ProfileHeaderResponseDto"
            },
            "title" : "List<ProfileHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ProfileHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.iam.contract.profile.dto.ProfilePermissionResponseDto" : {
        "type" : "object",
        "properties" : {
          "add" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "delete" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "edit" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "grantedBy" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "read" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "table" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.ProtectedTableDto"
          },
          "view" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "add", "delete", "edit", "grantedBy", "read", "table", "view" ],
        "title" : "ProfilePermissionResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.profile.dto.ProtectedTableDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ProtectedTableId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "id", "name" ],
        "title" : "ProtectedTableDto"
      },
      "ua.wwind.wms.feature.iam.contract.profile.dto.ProfileFullResponseDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.ProfileId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "permissions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.ProfilePermissionResponseDto"
            },
            "title" : "List<ProfilePermissionResponseDto>"
          },
          "rights" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseAccessRestricted" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "deleted", "id", "name", "number", "permissions", "rights", "version", "warehouseAccessRestricted" ],
        "title" : "ProfileFullResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.profile.dto.RightAreaDto" : {
        "type" : "object",
        "properties" : {
          "key" : {
            "type" : "string",
            "title" : "String"
          },
          "rights" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.RightDto"
            },
            "title" : "List<RightDto>"
          },
          "title" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "key", "rights", "title" ],
        "title" : "RightAreaDto"
      },
      "ua.wwind.wms.feature.iam.contract.profile.dto.RightDto" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "grants" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.RightGrantDto"
            },
            "title" : "List<RightGrantDto>"
          },
          "key" : {
            "type" : "string",
            "title" : "String"
          },
          "parent" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "title" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "grants", "key", "title" ],
        "title" : "RightDto"
      },
      "ua.wwind.wms.feature.iam.contract.profile.dto.RightGrantDto" : {
        "type" : "object",
        "properties" : {
          "add" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "delete" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "edit" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "read" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "table" : {
            "type" : "string",
            "title" : "String"
          },
          "view" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "add", "delete", "edit", "read", "table", "view" ],
        "title" : "RightGrantDto"
      },
      "ua.wwind.wms.feature.iam.contract.profile.dto.RightsCatalogResponseDto" : {
        "type" : "object",
        "properties" : {
          "areas" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.RightAreaDto"
            },
            "title" : "List<RightAreaDto>"
          }
        },
        "required" : [ "areas" ],
        "title" : "RightsCatalogResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.profile.dto.ProfileIncomeDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.ProfileId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "rights" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseAccessRestricted" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "name", "rights", "version", "warehouseAccessRestricted" ],
        "title" : "ProfileIncomeDto"
      },
      "ua.wwind.wms.feature.iam.contract.profile.dto.ProfileLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.ProfileId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "ProfileLightDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.TenantStorageUsageTableDto" : {
        "type" : "object",
        "properties" : {
          "tableName" : {
            "type" : "string",
            "title" : "String"
          },
          "totalSizeBytes" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "updatedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          }
        },
        "required" : [ "tableName", "totalSizeBytes" ],
        "title" : "TenantStorageUsageTableDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.TenantStorageUsageResponseDto" : {
        "type" : "object",
        "properties" : {
          "details" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.TenantStorageUsageTableDto"
            },
            "title" : "List<TenantStorageUsageTableDto>"
          },
          "totalSizeBytes" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "updatedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          }
        },
        "required" : [ "details", "totalSizeBytes" ],
        "title" : "TenantStorageUsageResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseUsageDto" : {
        "type" : "object",
        "properties" : {
          "limit" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "percent" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "used" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "used" ],
        "title" : "LicenseUsageDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseMcpUsageDto" : {
        "type" : "object",
        "properties" : {
          "limit" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "percent" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "resetAtEpochMs" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "used" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "resetAtEpochMs", "used" ],
        "title" : "LicenseMcpUsageDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.TenantLicenseStatusDto" : {
        "type" : "string",
        "enum" : [ "NONE", "ACTIVE", "GRACE_WARNING", "GRACE_READONLY", "EXPIRED" ],
        "title" : "TenantLicenseStatusDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseStorageUsageDto" : {
        "type" : "object",
        "properties" : {
          "limitBytes" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "percent" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "updatedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "usedBytes" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "usedBytes" ],
        "title" : "LicenseStorageUsageDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseUsageScopeDto" : {
        "type" : "string",
        "enum" : [ "ACCOUNT", "TENANT" ],
        "title" : "LicenseUsageScopeDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.TenantLicenseOverviewDto" : {
        "type" : "object",
        "properties" : {
          "concurrentSeats" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseUsageDto"
          },
          "graceReadonlyUntil" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "graceWarningUntil" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "mcpCallsMonth" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseMcpUsageDto"
          },
          "namedSeats" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseUsageDto"
          },
          "readOnly" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "readOnlyReason" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.TenantLicenseStatusDto"
          },
          "storage" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseStorageUsageDto"
          },
          "technicalSeats" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseUsageDto"
          },
          "usageScope" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseUsageScopeDto"
          },
          "validFrom" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "validUntil" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          }
        },
        "required" : [ "concurrentSeats", "mcpCallsMonth", "namedSeats", "readOnly", "status", "storage", "technicalSeats", "usageScope" ],
        "title" : "TenantLicenseOverviewDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseHistoryItemDto" : {
        "type" : "object",
        "properties" : {
          "apiCallsPerMonth" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "concurrentSeats" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "current" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "namedSeats" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "periodId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "storageGb" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "technicalSeats" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "validFrom" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "validUntil" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          }
        },
        "required" : [ "apiCallsPerMonth", "concurrentSeats", "createdAt", "current", "namedSeats", "periodId", "storageGb", "technicalSeats", "validFrom", "validUntil" ],
        "title" : "LicenseHistoryItemDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseHistoryItemDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.LicenseHistoryItemDto"
            },
            "title" : "List<LicenseHistoryItemDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<LicenseHistoryItemDto>"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.SlaMonthSummaryDto" : {
        "type" : "object",
        "properties" : {
          "downtimeMin" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "excludedMin" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "month" : {
            "type" : "string",
            "title" : "String"
          },
          "noDataMin" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "state" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.SlaMonthStateDto"
          },
          "totalMin" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "uptimePct" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "downtimeMin", "excludedMin", "month", "noDataMin", "state", "totalMin", "uptimePct" ],
        "title" : "SlaMonthSummaryDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.SlaMonthStateDto" : {
        "type" : "string",
        "enum" : [ "PRELIMINARY", "DRAFT", "FINAL" ],
        "title" : "SlaMonthStateDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.AccountSlaSummaryDto" : {
        "type" : "object",
        "properties" : {
          "months" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.SlaMonthSummaryDto"
            },
            "title" : "List<SlaMonthSummaryDto>"
          },
          "poolAliases" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          }
        },
        "required" : [ "months", "poolAliases" ],
        "title" : "AccountSlaSummaryDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.SlaIncidentDto" : {
        "type" : "object",
        "properties" : {
          "components" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.SlaComponentDto"
            },
            "title" : "List<SlaComponentDto>"
          },
          "downtimeMin" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "endedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "excludedMin" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "exclusions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.SlaExclusionDto"
            },
            "title" : "List<SlaExclusionDto>"
          },
          "incidentId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "publicMessage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "startedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.SlaIncidentStatusDto"
          },
          "title" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "components", "downtimeMin", "endedAt", "excludedMin", "exclusions", "incidentId", "startedAt", "status", "title" ],
        "title" : "SlaIncidentDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.SlaComponentDto" : {
        "type" : "object",
        "properties" : {
          "alias" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "kind" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.SlaComponentKindDto"
          }
        },
        "required" : [ "kind" ],
        "title" : "SlaComponentDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.SlaComponentKindDto" : {
        "type" : "string",
        "enum" : [ "API", "WEB", "AUTH", "POOL" ],
        "title" : "SlaComponentKindDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.SlaExclusionDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.SlaExclusionCodeDto"
          },
          "from" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "minutes" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "to" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          }
        },
        "required" : [ "code", "from", "minutes", "to" ],
        "title" : "SlaExclusionDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.SlaExclusionCodeDto" : {
        "type" : "string",
        "enum" : [ "B_FORCE_MAJEURE", "V_CLIENT_ACTION", "G_THIRD_PARTY", "GH_SECURITY" ],
        "title" : "SlaExclusionCodeDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.SlaIncidentStatusDto" : {
        "type" : "string",
        "enum" : [ "INVESTIGATING", "IDENTIFIED", "MONITORING", "RESOLVED" ],
        "title" : "SlaIncidentStatusDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.UpcomingMaintenanceDto" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string",
            "title" : "String"
          },
          "end" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "planId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "start" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "zone" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "description", "end", "planId", "start", "zone" ],
        "title" : "UpcomingMaintenanceDto"
      },
      "ua.wwind.wms.feature.iam.contract.settings.dto.SupportedDataLanguageDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "code", "name" ],
        "title" : "SupportedDataLanguageDto"
      },
      "ua.wwind.wms.feature.iam.contract.settings.dto.SettingsResponseDto" : {
        "type" : "object",
        "properties" : {
          "returnableContainersEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "supportedDataLanguages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.settings.dto.SupportedDataLanguageDto"
            },
            "title" : "List<SupportedDataLanguageDto>"
          },
          "systemDataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "tenantTimeZone" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "returnableContainersEnabled", "supportedDataLanguages", "tenantTimeZone", "version" ],
        "title" : "SettingsResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.settings.dto.SettingsIncomeDto" : {
        "type" : "object",
        "properties" : {
          "returnableContainersEnabled" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "supportedDataLanguages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.settings.dto.SupportedDataLanguageDto"
            },
            "title" : "List<SupportedDataLanguageDto>"
          },
          "systemDataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "supportedDataLanguages", "version" ],
        "title" : "SettingsIncomeDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceDto" : {
        "type" : "object",
        "properties" : {
          "appVersion" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "currentUserId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "customName" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "deviceUuid" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "displayName" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.iam.TerminalDeviceId"
          },
          "isOnline" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "lastActivityAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "lastSeenAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "offline" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceOfflineDto"
          },
          "platform" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceStatusDto"
          },
          "tag" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "createdAt", "deleted", "deviceUuid", "displayName", "id", "isOnline", "offline", "status", "tag" ],
        "title" : "TerminalDeviceDto"
      },
      "ua.wwind.wms.core.shared.idtypes.iam.TerminalDeviceId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "TerminalDeviceId",
        "example" : null
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceOfflineDto" : {
        "type" : "object",
        "properties" : {
          "breaker" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.BreakerThresholdsDto"
            } ]
          },
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "enabledAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "licence" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.OfflineLicenceStateDto"
          },
          "maxDurationSeconds" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "releasingUntil" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "suspension" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.OfflineSuspensionDto"
            } ]
          }
        },
        "required" : [ "enabled", "licence", "maxDurationSeconds" ],
        "title" : "TerminalDeviceOfflineDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.BreakerThresholdsDto" : {
        "type" : "object",
        "properties" : {
          "badShare" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "failureRun" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "pausesMs" : {
            "type" : [ "null", "array" ],
            "items" : {
              "type" : "integer",
              "format" : "int64",
              "title" : "Long"
            },
            "title" : "List<Long>"
          },
          "recoveryProbeIntervalMs" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "recoverySpanMs" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "recoverySuccesses" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "slowCallMs" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "windowAgeMs" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "windowSize" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          }
        },
        "title" : "BreakerThresholdsDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.OfflineLicenceStateDto" : {
        "type" : "string",
        "enum" : [ "FREE", "HELD", "RELEASING" ],
        "title" : "OfflineLicenceStateDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.OfflineSuspensionDto" : {
        "type" : "string",
        "enum" : [ "READ_ONLY", "BLOCKED" ],
        "title" : "OfflineSuspensionDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceStatusDto" : {
        "type" : "string",
        "enum" : [ "ACTIVE", "REVOKED", "BLOCKED" ],
        "title" : "TerminalDeviceStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalDeviceDto"
            },
            "title" : "List<TerminalDeviceDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<TerminalDeviceDto>"
      },
      "ua.wwind.wms.feature.iam.api.http.terminal.device.HeartbeatRequestDto" : {
        "type" : "object",
        "properties" : {
          "appVersion" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deviceId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.iam.TerminalDeviceId"
          },
          "platform" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "deviceId" ],
        "title" : "HeartbeatRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.DeviceOfflineCommandDto" : {
        "type" : "string",
        "enum" : [ "NONE", "DRAIN_AND_WIPE" ],
        "title" : "DeviceOfflineCommandDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.DeviceOfflineStateDto" : {
        "type" : "object",
        "properties" : {
          "breaker" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.BreakerThresholdsDto"
            } ]
          },
          "command" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.DeviceOfflineCommandDto"
          },
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "maxDurationSeconds" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "offlineEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "suspension" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.OfflineSuspensionDto"
            } ]
          }
        },
        "required" : [ "command", "maxDurationSeconds", "offlineEnabled" ],
        "title" : "DeviceOfflineStateDto"
      },
      "ua.wwind.wms.core.shared.idtypes.iam.PairingSessionId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "PairingSessionId",
        "example" : null
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.PairingStartResponseDto" : {
        "type" : "object",
        "properties" : {
          "expiresIn" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "qrPayload" : {
            "type" : "string",
            "title" : "String"
          },
          "sessionId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.iam.PairingSessionId"
          }
        },
        "required" : [ "expiresIn", "qrPayload", "sessionId" ],
        "title" : "PairingStartResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.PairingSessionStatusDto" : {
        "type" : "string",
        "enum" : [ "PENDING", "CLAIMED", "APPROVED", "REJECTED", "EXPIRED", "ALREADY_PAIRED" ],
        "title" : "PairingSessionStatusDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.PairingStatusDto" : {
        "type" : "object",
        "properties" : {
          "deviceTag" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.PairingSessionStatusDto"
          }
        },
        "required" : [ "status" ],
        "title" : "PairingStatusDto"
      },
      "java.util.UUID" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "UUID",
        "example" : null
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.DeviceUpdateRequestDto" : {
        "type" : "object",
        "properties" : {
          "customName" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "title" : "DeviceUpdateRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.DeviceOfflineSettingsRequestDto" : {
        "type" : "object",
        "properties" : {
          "breaker" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.BreakerThresholdsDto"
            } ]
          },
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "maxDurationSeconds" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "enabled" ],
        "title" : "DeviceOfflineSettingsRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.OfflineDeviceNotActiveDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "code" ],
        "title" : "OfflineDeviceNotActiveDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.PairingClaimResponseDto" : {
        "type" : "object",
        "properties" : {
          "alreadyPaired" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "code" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deviceTag" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "expiresIn" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "alreadyPaired" ],
        "title" : "PairingClaimResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.iam.TerminalLoginSessionId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "TerminalLoginSessionId",
        "example" : null
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalLoginStartResponseDto" : {
        "type" : "object",
        "properties" : {
          "challenge" : {
            "type" : "string",
            "title" : "String"
          },
          "expiresIn" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "loginSessionId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.iam.TerminalLoginSessionId"
          }
        },
        "required" : [ "challenge", "expiresIn", "loginSessionId" ],
        "title" : "TerminalLoginStartResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.DeviceSummaryDto" : {
        "type" : "object",
        "properties" : {
          "displayName" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.iam.TerminalDeviceId"
          },
          "tag" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "displayName", "id", "tag" ],
        "title" : "DeviceSummaryDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.UserSummaryDto" : {
        "type" : "object",
        "properties" : {
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "role" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "id", "name", "role" ],
        "title" : "UserSummaryDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalLoginFinishResponseDto" : {
        "type" : "object",
        "properties" : {
          "accessToken" : {
            "type" : "string",
            "title" : "String"
          },
          "device" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.DeviceSummaryDto"
          },
          "expiresIn" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "refreshExpiresIn" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "refreshToken" : {
            "type" : "string",
            "title" : "String"
          },
          "tenantCode" : {
            "type" : "string",
            "title" : "String"
          },
          "user" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.UserSummaryDto"
          }
        },
        "required" : [ "accessToken", "device", "expiresIn", "refreshExpiresIn", "refreshToken", "tenantCode", "user" ],
        "title" : "TerminalLoginFinishResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalLoginErrorDto" : {
        "type" : "string",
        "enum" : [ "BADGE_INVALID", "BADGE_REVOKED", "DEVICE_NOT_REGISTERED_IN_TENANT", "DEVICE_REVOKED_OR_BLOCKED", "LOGIN_SESSION_EXPIRED", "SIGNATURE_INVALID", "TOO_MANY_ATTEMPTS", "RATE_LIMITED", "SEAT_LIMIT_EXCEEDED", "ACCOUNT_DISABLED", "SESSION_TAKEOVER_REQUIRED", "SESSION_ENDED" ],
        "title" : "TerminalLoginErrorDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalSessionTakeoverRequiredDto" : {
        "type" : "object",
        "properties" : {
          "activeSessions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auth.dto.ActiveSessionDto"
            },
            "title" : "List<ActiveSessionDto>"
          },
          "code" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalLoginErrorDto"
          },
          "expiresIn" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "takeoverTicket" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "activeSessions", "code", "expiresIn", "takeoverTicket" ],
        "title" : "TerminalSessionTakeoverRequiredDto"
      },
      "ua.wwind.wms.feature.iam.contract.terminal.dto.TerminalLoginAbandonRequestDto" : {
        "type" : "object",
        "properties" : {
          "deviceUuid" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "loginIdempotencyKey" : {
            "type" : "string",
            "title" : "String"
          },
          "signature" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "deviceUuid", "loginIdempotencyKey", "signature" ],
        "title" : "TerminalLoginAbandonRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.profile.dto.ProfilePermissionWithTableNameDto" : {
        "type" : "object",
        "properties" : {
          "add" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "delete" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "edit" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "read" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "table" : {
            "type" : "string",
            "title" : "String"
          },
          "view" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "add", "delete", "edit", "read", "table", "view" ],
        "title" : "ProfilePermissionWithTableNameDto"
      },
      "ua.wwind.wms.feature.iam.contract.accessscope.dto.AccessScopeTenantOptionsDto" : {
        "type" : "object",
        "properties" : {
          "returnableContainersEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "returnableContainersEnabled" ],
        "title" : "AccessScopeTenantOptionsDto"
      },
      "ua.wwind.wms.feature.iam.contract.accessscope.dto.AccessScopeTablesResponseDto" : {
        "type" : "object",
        "properties" : {
          "permissions" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.profile.dto.ProfilePermissionWithTableNameDto"
            },
            "title" : "List<ProfilePermissionWithTableNameDto>"
          },
          "rights" : {
            "type" : [ "null", "array" ],
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "tenantOptions" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.accessscope.dto.AccessScopeTenantOptionsDto"
          }
        },
        "required" : [ "tenantOptions" ],
        "title" : "AccessScopeTablesResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.auditlog.dto.AuditLogHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "changedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "AuditLogId"
          },
          "operation" : {
            "type" : "string",
            "title" : "String"
          },
          "responsibleUser" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "transactionComment" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "changedAt", "id", "operation" ],
        "title" : "AuditLogHeaderResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.iam.contract.auditlog.dto.AuditLogHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auditlog.dto.AuditLogHeaderResponseDto"
            },
            "title" : "List<AuditLogHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<AuditLogHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.iam.contract.auditlog.dto.AuditLogFullResponseDto" : {
        "type" : "object",
        "properties" : {
          "changedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "data" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "AuditLogId"
          },
          "operation" : {
            "type" : "string",
            "title" : "String"
          },
          "responsibleUser" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "transactionComment" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "changedAt", "data", "id", "operation" ],
        "title" : "AuditLogFullResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.auditconfig.dto.AuditTenantConfigItemDto" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "retentionDays" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "tableName" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "enabled", "tableName" ],
        "title" : "AuditTenantConfigItemDto"
      },
      "ua.wwind.wms.feature.iam.contract.auditconfig.dto.AuditTenantConfigListResponseDto" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auditconfig.dto.AuditTenantConfigItemDto"
            },
            "title" : "List<AuditTenantConfigItemDto>"
          },
          "maxRetentionDays" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "items", "maxRetentionDays" ],
        "title" : "AuditTenantConfigListResponseDto"
      },
      "ua.wwind.wms.feature.iam.contract.auditconfig.dto.AuditTenantConfigUpdateItemDto" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "retentionDays" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "tableName" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "enabled", "tableName" ],
        "title" : "AuditTenantConfigUpdateItemDto"
      },
      "ua.wwind.wms.feature.iam.contract.auditconfig.dto.AuditTenantConfigUpdateRequestDto" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.auditconfig.dto.AuditTenantConfigUpdateItemDto"
            },
            "title" : "List<AuditTenantConfigUpdateItemDto>"
          }
        },
        "required" : [ "items" ],
        "title" : "AuditTenantConfigUpdateRequestDto"
      },
      "ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureResponseDto" : {
        "type" : "object",
        "properties" : {
          "classifierCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "fullName" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          },
          "measureType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.MeasureTypeDto"
            } ]
          },
          "multiplicity" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "packHandlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeHandlingGroupId"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "fullName", "id", "multiplicity", "name", "number", "version" ],
        "title" : "UnitsOfMeasureResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "UnitOfMeasureId",
        "example" : null
      },
      "ua.wwind.wms.feature.catalog.contract.uom.dto.MeasureTypeDto" : {
        "type" : "string",
        "enum" : [ "WEIGHT", "VOLUME", "LENGTH", "AREA", "COUNT" ],
        "title" : "MeasureTypeDto"
      },
      "ua.wwind.wms.core.shared.idtypes.product.PackTypeHandlingGroupId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "PackTypeHandlingGroupId",
        "example" : null
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureResponseDto"
            },
            "title" : "List<UnitsOfMeasureResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<UnitsOfMeasureResponseDto>"
      },
      "ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureTranslationDto" : {
        "type" : "object",
        "properties" : {
          "fullName" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "language" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "language" ],
        "title" : "UnitsOfMeasureTranslationDto"
      },
      "ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureResponseFullDto" : {
        "type" : "object",
        "properties" : {
          "classifierCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "fullName" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          },
          "measureType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.MeasureTypeDto"
            } ]
          },
          "multiplicity" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "packHandlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeHandlingGroupId"
            } ]
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureTranslationDto"
            },
            "title" : "List<UnitsOfMeasureTranslationDto>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "fullName", "id", "multiplicity", "name", "number", "translations", "version" ],
        "title" : "UnitsOfMeasureResponseFullDto"
      },
      "ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureIncomeDto" : {
        "type" : "object",
        "properties" : {
          "classifierCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "fullName" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "measureType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.MeasureTypeDto"
            } ]
          },
          "multiplicity" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "packHandlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeHandlingGroupId"
            } ]
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureTranslationDto"
            },
            "title" : "List<UnitsOfMeasureTranslationDto>"
          },
          "updateTranslations" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "fullName", "multiplicity", "name", "translations", "updateTranslations", "version" ],
        "title" : "UnitsOfMeasureIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.uom.dto.UnitsOfMeasureLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "UnitsOfMeasureLightDto"
      },
      "ua.wwind.wms.core.rest.extension.StockMode" : {
        "type" : "string",
        "enum" : [ "SHOW", "ONLY" ],
        "title" : "StockMode"
      },
      "ua.wwind.wms.core.shared.idtypes.topology.LocationId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "LocationId",
        "example" : null
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.ContainerId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ContainerId",
        "example" : null
      },
      "ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ProductFeatureId",
        "example" : null
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.LotId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "LotId",
        "example" : null
      },
      "kotlinx.serialization.json.JsonElement" : {
        "oneOf" : [ {
          "type" : "array",
          "items" : {
            "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
          }
        }, {
          "type" : "object",
          "additionalProperties" : {
            "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
          }
        }, {
          "type" : "string"
        }, {
          "type" : "number"
        }, {
          "type" : "integer",
          "format" : "int32"
        }, {
          "type" : "boolean"
        }, { } ],
        "title" : "JsonElement"
      },
      "ua.wwind.wms.feature.catalog.contract.product.dto.ProductListingRequestDto" : {
        "type" : "object",
        "properties" : {
          "codec" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "compression" : {
            "type" : [ "null", "array" ],
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "fields" : {
            "type" : [ "null", "array" ],
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "filter" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            } ]
          }
        },
        "title" : "ProductListingRequestDto"
      },
      "ua.wwind.wms.feature.catalog.contract.product.dto.ProductListingStageResponseDto" : {
        "type" : "object",
        "properties" : {
          "appliedFields" : {
            "type" : [ "null", "array" ],
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "compression" : {
            "type" : "string",
            "title" : "String"
          },
          "requestId" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "compression", "requestId" ],
        "title" : "ProductListingStageResponseDto"
      },
      "ua.wwind.wms.feature.catalog.contract.product.dto.ProductResponseHeaderDto" : {
        "type" : "object",
        "properties" : {
          "article" : {
            "type" : "string",
            "title" : "String"
          },
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "categoryId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "depth" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "dimensionUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "dimensionless" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "featureUsageType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureUsageTypeDto"
          },
          "featuresOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "fullName" : {
            "type" : "string",
            "title" : "String"
          },
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "handlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductHandlingGroupId"
            } ]
          },
          "height" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "packTypeSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
            } ]
          },
          "packUsageMode" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packusage.dto.PackUsageModeDto"
            } ]
          },
          "stockQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "type" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductTypeDto"
            } ]
          },
          "uomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volumeDenominator" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "volumeNumerator" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "volumeUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "weightDenominator" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "weightNumerator" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "weightUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "width" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          }
        },
        "required" : [ "article", "deleted", "featureUsageType", "fullName", "isGroup", "name", "number", "version", "volumeDenominator", "volumeNumerator", "weightDenominator", "weightNumerator" ],
        "title" : "ProductResponseHeaderDto"
      },
      "ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ProductCategoryId",
        "example" : null
      },
      "ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureUsageTypeDto" : {
        "type" : "string",
        "enum" : [ "NOT_USED", "INDIVIDUAL_FOR_PRODUCT", "SHARED_WITHIN_PRODUCT_CATEGORY", "SHARED_ACROSS_PRODUCT_CATEGORY" ],
        "title" : "ProductFeatureUsageTypeDto"
      },
      "ua.wwind.wms.core.shared.idtypes.product.ProductId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ProductId",
        "example" : null
      },
      "ua.wwind.wms.core.shared.idtypes.product.ProductHandlingGroupId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ProductHandlingGroupId",
        "example" : null
      },
      "ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "PackTypeSetId",
        "example" : null
      },
      "ua.wwind.wms.feature.catalog.contract.packusage.dto.PackUsageModeDto" : {
        "type" : "string",
        "enum" : [ "INDIVIDUAL_ONLY", "SHARED_SET_ONLY", "SHARED_SET_WITH_INDIVIDUAL" ],
        "title" : "PackUsageModeDto"
      },
      "ua.wwind.wms.core.shared.model.Quantity" : {
        "type" : "string",
        "title" : "Quantity",
        "example" : null
      },
      "ua.wwind.wms.feature.catalog.contract.product.dto.ProductTypeDto" : {
        "type" : "string",
        "enum" : [ "PRODUCT", "PACKAGING" ],
        "title" : "ProductTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.product.dto.ProductResponseHeaderDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductResponseHeaderDto"
            },
            "title" : "List<ProductResponseHeaderDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ProductResponseHeaderDto>"
      },
      "ua.wwind.wms.feature.catalog.contract.product.dto.ProductTranslationDto" : {
        "type" : "object",
        "properties" : {
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "fullName" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "language" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "language" ],
        "title" : "ProductTranslationDto"
      },
      "ua.wwind.wms.feature.catalog.contract.product.dto.ProductResponseFullDto" : {
        "type" : "object",
        "properties" : {
          "article" : {
            "type" : "string",
            "title" : "String"
          },
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "categoryId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "depth" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "dimensionUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "dimensionless" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "featureUsageType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureUsageTypeDto"
          },
          "featuresOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "fullName" : {
            "type" : "string",
            "title" : "String"
          },
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "handlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductHandlingGroupId"
            } ]
          },
          "height" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "packTypeSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
            } ]
          },
          "packUsageMode" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packusage.dto.PackUsageModeDto"
            } ]
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductTranslationDto"
            },
            "title" : "List<ProductTranslationDto>"
          },
          "type" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductTypeDto"
            } ]
          },
          "uomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volumeDenominator" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "volumeNumerator" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "volumeUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "weightDenominator" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "weightNumerator" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "weightUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "width" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          }
        },
        "required" : [ "article", "deleted", "featureUsageType", "fullName", "isGroup", "name", "number", "translations", "version", "volumeDenominator", "volumeNumerator", "weightDenominator", "weightNumerator" ],
        "title" : "ProductResponseFullDto"
      },
      "ua.wwind.wms.feature.catalog.contract.product.dto.ProductParametersDto" : {
        "type" : "object",
        "properties" : {
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "isGroup" ],
        "title" : "ProductParametersDto"
      },
      "ua.wwind.wms.feature.catalog.contract.product.dto.ProductIncomeDto" : {
        "type" : "object",
        "properties" : {
          "article" : {
            "type" : "string",
            "title" : "String"
          },
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "categoryId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "depth" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "dimensionUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "dimensionless" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "featureUsageType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureUsageTypeDto"
          },
          "featuresOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "fullName" : {
            "type" : "string",
            "title" : "String"
          },
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "handlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductHandlingGroupId"
            } ]
          },
          "height" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "packTypeSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
            } ]
          },
          "packUsageMode" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packusage.dto.PackUsageModeDto"
            } ]
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductTranslationDto"
            },
            "title" : "List<ProductTranslationDto>"
          },
          "type" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductTypeDto"
            } ]
          },
          "uomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "updateTranslations" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volumeDenominator" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "volumeNumerator" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "volumeUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "weightDenominator" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "weightNumerator" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "weightUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "width" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          }
        },
        "required" : [ "article", "deleted", "featureUsageType", "fullName", "isGroup", "name", "translations", "updateTranslations", "version", "volumeDenominator", "volumeNumerator", "weightDenominator", "weightNumerator" ],
        "title" : "ProductIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.attribute.dto.AttributeDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "entryMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.attribute.dto.AttributeEntryModeDto"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.shared.AttributeId"
          },
          "identifier" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.attribute.dto.AttributeTypeDto"
          },
          "values" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.attribute.dto.AttributeValueDto"
            },
            "title" : "List<AttributeValueDto>"
          }
        },
        "required" : [ "deleted", "entryMode", "id", "identifier", "name", "type" ],
        "title" : "AttributeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.attribute.dto.AttributeEntryModeDto" : {
        "type" : "string",
        "enum" : [ "HIDDEN", "SHOWN", "REQUIRED" ],
        "title" : "AttributeEntryModeDto"
      },
      "ua.wwind.wms.core.shared.idtypes.shared.AttributeId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "AttributeId",
        "example" : null
      },
      "ua.wwind.wms.feature.catalog.contract.attribute.dto.AttributeTypeDto" : {
        "type" : "string",
        "enum" : [ "STRING", "NUMBER", "BOOLEAN", "DATE", "ENUM" ],
        "title" : "AttributeTypeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.attribute.dto.AttributeValueDto" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "value" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "name", "value" ],
        "title" : "AttributeValueDto"
      },
      "ua.wwind.wms.core.shared.idtypes.product.ProductSetId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ProductSetId",
        "example" : null
      },
      "ua.wwind.wms.feature.catalog.contract.product.dto.ProductSetMembershipPatchIncomeDto" : {
        "type" : "object",
        "properties" : {
          "addProductSetIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductSetId"
            },
            "title" : "List<ProductSetId>"
          },
          "removeProductSetIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductSetId"
            },
            "title" : "List<ProductSetId>"
          }
        },
        "required" : [ "addProductSetIds", "removeProductSetIds" ],
        "title" : "ProductSetMembershipPatchIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.product.dto.ProductLightDto" : {
        "type" : "object",
        "properties" : {
          "article" : {
            "type" : "string",
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "featureUsageType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureUsageTypeDto"
          },
          "featuresOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "packTypeSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
            } ]
          },
          "packUsageMode" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packusage.dto.PackUsageModeDto"
            } ]
          },
          "productCategoryId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "uomName" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "uomUnitary" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "usesFeatures" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "article", "deleted", "featureUsageType", "id", "name", "uomUnitary", "usesFeatures", "version" ],
        "title" : "ProductLightDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryHeaderDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "featureUsageType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureUsageTypeDto"
          },
          "featuresOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "fullName" : {
            "type" : "string",
            "title" : "String"
          },
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "handlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductHandlingGroupId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "lotIdentification" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.lot.dto.LotIdentificationDto"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "packTypeSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
            } ]
          },
          "packUsageMode" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packusage.dto.PackUsageModeDto"
            } ]
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductTypeDto"
          },
          "uomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "useFeatures" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useLots" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "featureUsageType", "fullName", "isGroup", "lotIdentification", "name", "number", "type", "useFeatures", "useLots", "version" ],
        "title" : "ProductCategoryHeaderDto"
      },
      "ua.wwind.wms.feature.catalog.contract.lot.dto.LotIdentificationDto" : {
        "type" : "string",
        "enum" : [ "NOT_USED", "SERIES", "INSTANCE" ],
        "title" : "LotIdentificationDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryHeaderDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryHeaderDto"
            },
            "title" : "List<ProductCategoryHeaderDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ProductCategoryHeaderDto>"
      },
      "ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryAttributeAssignmentDto" : {
        "type" : "object",
        "properties" : {
          "attributeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.shared.AttributeId"
          },
          "entryMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.attribute.dto.AttributeEntryModeDto"
          },
          "table" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "attributeId", "entryMode", "table" ],
        "title" : "ProductCategoryAttributeAssignmentDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryLotTrackingPolicyAssignmentDto" : {
        "type" : "object",
        "properties" : {
          "trackingPolicyId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotTrackingPolicyId"
          },
          "warehouseId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          }
        },
        "required" : [ "trackingPolicyId" ],
        "title" : "ProductCategoryLotTrackingPolicyAssignmentDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.LotTrackingPolicyId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "LotTrackingPolicyId",
        "example" : null
      },
      "ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryTranslationDto" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "fullName" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "language" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "language" ],
        "title" : "ProductCategoryTranslationDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryFullDto" : {
        "type" : "object",
        "properties" : {
          "attributeAssignments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryAttributeAssignmentDto"
            },
            "title" : "List<ProductCategoryAttributeAssignmentDto>"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "featureUsageType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureUsageTypeDto"
          },
          "featuresOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "fullName" : {
            "type" : "string",
            "title" : "String"
          },
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "handlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductHandlingGroupId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "lotIdentification" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.lot.dto.LotIdentificationDto"
          },
          "lotTrackingPolicyAssignments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryLotTrackingPolicyAssignmentDto"
            },
            "title" : "List<ProductCategoryLotTrackingPolicyAssignmentDto>"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "packTypeSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
            } ]
          },
          "packUsageMode" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packusage.dto.PackUsageModeDto"
            } ]
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryTranslationDto"
            },
            "title" : "List<ProductCategoryTranslationDto>"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductTypeDto"
          },
          "uomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "useFeatures" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useLots" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "attributeAssignments", "deleted", "featureUsageType", "fullName", "isGroup", "lotIdentification", "lotTrackingPolicyAssignments", "name", "number", "translations", "type", "useFeatures", "useLots", "version" ],
        "title" : "ProductCategoryFullDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryParametersDto" : {
        "type" : "object",
        "properties" : {
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "isGroup" ],
        "title" : "ProductCategoryParametersDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryAttributeAssignmentIncomeDto" : {
        "type" : "object",
        "properties" : {
          "attributeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.shared.AttributeId"
          },
          "entryMode" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.attribute.dto.AttributeEntryModeDto"
            } ]
          },
          "table" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "attributeId", "table" ],
        "title" : "ProductCategoryAttributeAssignmentIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryIncomeDto" : {
        "type" : "object",
        "properties" : {
          "attributeAssignments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryAttributeAssignmentIncomeDto"
            },
            "title" : "List<ProductCategoryAttributeAssignmentIncomeDto>"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "featureUsageType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureUsageTypeDto"
          },
          "featuresOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "fullName" : {
            "type" : "string",
            "title" : "String"
          },
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "handlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductHandlingGroupId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "lotIdentification" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.lot.dto.LotIdentificationDto"
          },
          "lotTrackingPolicyAssignments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryLotTrackingPolicyAssignmentDto"
            },
            "title" : "List<ProductCategoryLotTrackingPolicyAssignmentDto>"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "packTypeSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
            } ]
          },
          "packUsageMode" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packusage.dto.PackUsageModeDto"
            } ]
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryTranslationDto"
            },
            "title" : "List<ProductCategoryTranslationDto>"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.product.dto.ProductTypeDto"
          },
          "uomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "updateLotTrackingPolicyAssignments" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "updateTranslations" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useFeatures" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useLots" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "attributeAssignments", "deleted", "featureUsageType", "fullName", "isGroup", "lotIdentification", "lotTrackingPolicyAssignments", "name", "translations", "type", "updateLotTrackingPolicyAssignments", "updateTranslations", "useFeatures", "useLots", "version" ],
        "title" : "ProductCategoryIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productcategory.dto.ProductCategoryLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "ProductCategoryLightDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "PackTypeId",
        "example" : null
      },
      "ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureResponseDto" : {
        "type" : "object",
        "properties" : {
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "fullName" : {
            "type" : "string",
            "title" : "String"
          },
          "hasStockInOtherPackTypes" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "ownerType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureOwnerTypeDto"
          },
          "stockQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "fullName", "id", "name", "number", "ownerId", "ownerType", "version" ],
        "title" : "ProductFeatureResponseDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureOwnerTypeDto" : {
        "type" : "string",
        "enum" : [ "PRODUCT_CATEGORY", "PRODUCT" ],
        "title" : "ProductFeatureOwnerTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureResponseDto"
            },
            "title" : "List<ProductFeatureResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ProductFeatureResponseDto>"
      },
      "ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureTranslationDto" : {
        "type" : "object",
        "properties" : {
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "fullName" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "language" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "language" ],
        "title" : "ProductFeatureTranslationDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureResponseFullDto" : {
        "type" : "object",
        "properties" : {
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "fullName" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "ownerType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureOwnerTypeDto"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureTranslationDto"
            },
            "title" : "List<ProductFeatureTranslationDto>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "fullName", "id", "name", "number", "ownerId", "ownerType", "translations", "version" ],
        "title" : "ProductFeatureResponseFullDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureParametersDto" : {
        "type" : "object",
        "properties" : {
          "ownerId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "ownerType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureOwnerTypeDto"
          }
        },
        "required" : [ "ownerId", "ownerType" ],
        "title" : "ProductFeatureParametersDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureIncomeDto" : {
        "type" : "object",
        "properties" : {
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "fullName" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "ownerId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "ownerType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureOwnerTypeDto"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureTranslationDto"
            },
            "title" : "List<ProductFeatureTranslationDto>"
          },
          "updateTranslations" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "fullName", "name", "ownerId", "ownerType", "translations", "updateTranslations", "version" ],
        "title" : "ProductFeatureIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productfeature.dto.ProductFeatureLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "ProductFeatureLightDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResponseDto" : {
        "type" : "object",
        "properties" : {
          "barcode" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "BarcodeId"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          }
        },
        "required" : [ "barcode", "productId", "updatedAt" ],
        "title" : "BarcodeResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResponseDto"
            },
            "title" : "List<BarcodeResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<BarcodeResponseDto>"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeIncomeDto" : {
        "type" : "object",
        "properties" : {
          "barcode" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        },
        "required" : [ "barcode", "productId" ],
        "title" : "BarcodeIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResolveRequestDto" : {
        "type" : "object",
        "properties" : {
          "barcodeValue" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "barcodeValue" ],
        "title" : "BarcodeResolveRequestDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResolvedItemDto" : {
        "type" : "object",
        "properties" : {
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          }
        },
        "required" : [ "productId" ],
        "title" : "BarcodeResolvedItemDto"
      },
      "ua.wwind.wms.core.shared.idtypes.party.PartyId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "PartyId",
        "example" : null
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResolveResultDto" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResolvedItemDto"
            },
            "title" : "List<BarcodeResolvedItemDto>"
          }
        },
        "required" : [ "items" ],
        "title" : "BarcodeResolveResultDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeOwnerDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "code", "id", "name" ],
        "title" : "BarcodeOwnerDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeOwnerLookupResultDto" : {
        "type" : "object",
        "properties" : {
          "owner" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeOwnerDto"
            } ]
          }
        },
        "title" : "BarcodeOwnerLookupResultDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeCriterionDto" : {
        "type" : "object",
        "properties" : {
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        },
        "required" : [ "productId" ],
        "title" : "BarcodeCriterionDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeFindByCriteriaRequestDto" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeCriterionDto"
            },
            "title" : "List<BarcodeCriterionDto>"
          }
        },
        "required" : [ "items" ],
        "title" : "BarcodeFindByCriteriaRequestDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeFindByCriteriaResponseDto" : {
        "type" : "object",
        "properties" : {
          "matches" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeResponseDto"
            },
            "title" : "List<BarcodeResponseDto>"
          }
        },
        "required" : [ "matches" ],
        "title" : "BarcodeFindByCriteriaResponseDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1AiDefinitionDto" : {
        "type" : "object",
        "properties" : {
          "ai" : {
            "type" : "string",
            "title" : "String"
          },
          "builtInTarget" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1BuiltInTargetDto"
            } ]
          },
          "fixedLength" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "format" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1AiFormatDto"
          },
          "maxLength" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "ai", "fixedLength", "format", "maxLength", "name" ],
        "title" : "Gs1AiDefinitionDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1BuiltInTargetDto" : {
        "type" : "string",
        "enum" : [ "CONTAINER_CODE", "PRODUCT", "QUANTITY", "NET_WEIGHT" ],
        "title" : "Gs1BuiltInTargetDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1AiFormatDto" : {
        "type" : "string",
        "enum" : [ "NUMERIC", "ALPHANUMERIC", "DATE", "DATE_TIME", "DECIMAL" ],
        "title" : "Gs1AiFormatDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1AiDictionaryResponseDto" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1AiDefinitionDto"
            },
            "title" : "List<Gs1AiDefinitionDto>"
          }
        },
        "required" : [ "items" ],
        "title" : "Gs1AiDictionaryResponseDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ParseRequestDto" : {
        "type" : "object",
        "properties" : {
          "barcodeValue" : {
            "type" : "string",
            "title" : "String"
          },
          "productId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          }
        },
        "required" : [ "barcodeValue" ],
        "title" : "Gs1ParseRequestDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ElementDto" : {
        "type" : "object",
        "properties" : {
          "ai" : {
            "type" : "string",
            "title" : "String"
          },
          "attributeIdentifier" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "raw" : {
            "type" : "string",
            "title" : "String"
          },
          "target" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ElementTargetDto"
            } ]
          },
          "value" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "ai", "name", "raw", "value" ],
        "title" : "Gs1ElementDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ElementTargetDto" : {
        "type" : "string",
        "enum" : [ "CONTAINER_CODE", "PRODUCT", "QUANTITY", "NET_WEIGHT", "LOT_NUMBER", "LOT_MANUFACTURED_AT", "LOT_EXPIRY_AT", "LOT_ATTRIBUTE", "IGNORE" ],
        "title" : "Gs1ElementTargetDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ParsedLotDto" : {
        "type" : "object",
        "properties" : {
          "attributes" : {
            "type" : "object",
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "expiryAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "manufacturedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "attributes" ],
        "title" : "Gs1ParsedLotDto"
      },
      "kotlinx.datetime.LocalDate" : {
        "type" : "string",
        "format" : "date",
        "title" : "LocalDate",
        "example" : null
      },
      "kotlinx.datetime.DayOfWeek" : {
        "type" : "string",
        "enum" : [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ],
        "title" : "DayOfWeek"
      },
      "kotlinx.datetime.Month" : {
        "type" : "string",
        "enum" : [ "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER" ],
        "title" : "Month"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ParsedProductDto" : {
        "type" : "object",
        "properties" : {
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        },
        "required" : [ "productId" ],
        "title" : "Gs1ParsedProductDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ParseWarningDto" : {
        "type" : "object",
        "properties" : {
          "ai" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "code" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ParseWarningCodeDto"
          },
          "elementIndex" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "message" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "value" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "code", "message" ],
        "title" : "Gs1ParseWarningDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ParseWarningCodeDto" : {
        "type" : "string",
        "enum" : [ "UNKNOWN_AI", "CHECK_DIGIT", "INVALID_VALUE", "MISSING_SEPARATOR", "GTIN_NOT_FOUND", "AMBIGUOUS_GTIN", "ATTRIBUTE_NOT_APPLICABLE", "LOT_AMBIGUOUS" ],
        "title" : "Gs1ParseWarningCodeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ParseResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "elements" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ElementDto"
            },
            "title" : "List<Gs1ElementDto>"
          },
          "isGs1" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "lot" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ParsedLotDto"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "product" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ParsedProductDto"
            } ]
          },
          "quantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "warnings" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1ParseWarningDto"
            },
            "title" : "List<Gs1ParseWarningDto>"
          }
        },
        "required" : [ "elements", "isGs1", "lot", "warnings" ],
        "title" : "Gs1ParseResponseDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1MappingDto" : {
        "type" : "object",
        "properties" : {
          "ai" : {
            "type" : "string",
            "title" : "String"
          },
          "attributeIdentifier" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "target" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1MappingTargetDto"
          }
        },
        "required" : [ "ai", "target" ],
        "title" : "Gs1MappingDto"
      },
      "ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1MappingTargetDto" : {
        "type" : "string",
        "enum" : [ "LOT_NUMBER", "LOT_MANUFACTURED_AT", "LOT_EXPIRY_AT", "LOT_ATTRIBUTE", "IGNORE" ],
        "title" : "Gs1MappingTargetDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodePolicyResponseDto" : {
        "type" : "object",
        "properties" : {
          "barcodePatterns" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "barcodeUniquenessEnforced" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "gs1Enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "gs1Mappings" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1MappingDto"
            },
            "title" : "List<Gs1MappingDto>"
          },
          "ownerCodeFormat" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "ownerCodePattern" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "updatedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "barcodePatterns", "barcodeUniquenessEnforced", "gs1Enabled", "gs1Mappings", "version" ],
        "title" : "BarcodePolicyResponseDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodePolicyIncomeDto" : {
        "type" : "object",
        "properties" : {
          "barcodePatterns" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "barcodeUniquenessEnforced" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "gs1Enabled" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "gs1Mappings" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.gs1.dto.Gs1MappingDto"
            },
            "title" : "List<Gs1MappingDto>"
          },
          "ownerCodeFormat" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "ownerCodePattern" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "barcodePatterns", "barcodeUniquenessEnforced", "version" ],
        "title" : "BarcodePolicyIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.OwnerCodeTemplateCheckRequestDto" : {
        "type" : "object",
        "properties" : {
          "ownerCodeFormat" : {
            "type" : "string",
            "title" : "String"
          },
          "ownerCodePattern" : {
            "type" : "string",
            "title" : "String"
          },
          "sample" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "ownerCodeFormat", "ownerCodePattern", "sample" ],
        "title" : "OwnerCodeTemplateCheckRequestDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.OwnerCodeConflictDto" : {
        "type" : "object",
        "properties" : {
          "codePattern" : {
            "type" : "string",
            "title" : "String"
          },
          "containerTypeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "codePattern", "containerTypeId", "name" ],
        "title" : "OwnerCodeConflictDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ContainerTypeId",
        "example" : null
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.OwnerCodeTemplateCheckResponseDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "conflicts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.OwnerCodeConflictDto"
            },
            "title" : "List<OwnerCodeConflictDto>"
          },
          "label" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "owner" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeOwnerDto"
            } ]
          }
        },
        "required" : [ "conflicts" ],
        "title" : "OwnerCodeTemplateCheckResponseDto"
      },
      "ua.wwind.wms.feature.catalog.contract.barcode.dto.BarcodeLightDto" : {
        "type" : "object",
        "properties" : {
          "barcode" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        },
        "required" : [ "barcode", "id", "productId" ],
        "title" : "BarcodeLightDto"
      },
      "ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeResponseDto" : {
        "type" : "object",
        "properties" : {
          "baseUomId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          },
          "childPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "depth" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "dimensionUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "dimensionless" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "handlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeHandlingGroupId"
            } ]
          },
          "height" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "isActive" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "packTypeSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
            } ]
          },
          "packagingId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "packagingIsReturnable" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "productId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityOfChild" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "uomId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volume" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "volumeUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "weight" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "weightUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "width" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          }
        },
        "required" : [ "baseUomId", "deleted", "isActive", "name", "number", "packagingIsReturnable", "quantity", "uomId", "version" ],
        "title" : "PackTypeResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeResponseDto"
            },
            "title" : "List<PackTypeResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<PackTypeResponseDto>"
      },
      "ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeTranslationDto" : {
        "type" : "object",
        "properties" : {
          "language" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "language" ],
        "title" : "PackTypeTranslationDto"
      },
      "ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeResponseFullDto" : {
        "type" : "object",
        "properties" : {
          "baseUomId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          },
          "childPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "depth" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "dimensionUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "dimensionless" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "handlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeHandlingGroupId"
            } ]
          },
          "height" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "isActive" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "packTypeSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
            } ]
          },
          "packagingId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "packagingIsReturnable" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "productId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityOfChild" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeTranslationDto"
            },
            "title" : "List<PackTypeTranslationDto>"
          },
          "uomId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volume" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "volumeUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "weight" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "weightUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "width" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          }
        },
        "required" : [ "baseUomId", "deleted", "isActive", "name", "number", "packagingIsReturnable", "quantity", "translations", "uomId", "version" ],
        "title" : "PackTypeResponseFullDto"
      },
      "ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeIncomeDto" : {
        "type" : "object",
        "properties" : {
          "childPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "depth" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "dimensionUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "dimensionless" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "handlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeHandlingGroupId"
            } ]
          },
          "height" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "isActive" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "packTypeSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
            } ]
          },
          "packagingId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "packagingIsReturnable" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "productId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityOfChild" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeTranslationDto"
            },
            "title" : "List<PackTypeTranslationDto>"
          },
          "uomId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          },
          "updateTranslations" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volume" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "volumeUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "weight" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "weightUomId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "width" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          }
        },
        "required" : [ "deleted", "isActive", "name", "packagingIsReturnable", "quantity", "translations", "uomId", "updateTranslations", "version" ],
        "title" : "PackTypeIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.packtype.dto.PackTypeLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "quantity", "version" ],
        "title" : "PackTypeLightDto"
      },
      "ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetResponseDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
            } ]
          },
          "isActive" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "uomId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "isActive", "name", "number", "uomId", "version" ],
        "title" : "PackTypeSetResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetResponseDto"
            },
            "title" : "List<PackTypeSetResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<PackTypeSetResponseDto>"
      },
      "ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetIncomeDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
            } ]
          },
          "isActive" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "uomId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "isActive", "name", "uomId", "version" ],
        "title" : "PackTypeSetIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.packtypeset.dto.PackTypeSetLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeSetId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "PackTypeSetLightDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetHeaderDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductSetId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "name", "number", "version" ],
        "title" : "ProductSetHeaderDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetHeaderDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetHeaderDto"
            },
            "title" : "List<ProductSetHeaderDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ProductSetHeaderDto>"
      },
      "ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetFullDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductSetId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "productIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            },
            "title" : "List<ProductId>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "name", "number", "productIds", "version" ],
        "title" : "ProductSetFullDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetIncomeDto" : {
        "type" : "object",
        "properties" : {
          "addProductIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            },
            "title" : "List<ProductId>"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductSetId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "removeProductIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            },
            "title" : "Set<ProductId>",
            "uniqueItems" : true
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "addProductIds", "deleted", "name", "removeProductIds", "version" ],
        "title" : "ProductSetIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.productset.dto.ProductSetLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductSetId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "ProductSetLightDto"
      },
      "ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupResponseDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "enforceVolumeCapacity" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "enforceWeightCapacity" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductHandlingGroupId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "enforceVolumeCapacity", "enforceWeightCapacity", "name", "number", "version" ],
        "title" : "ProductHandlingGroupResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupResponseDto"
            },
            "title" : "List<ProductHandlingGroupResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ProductHandlingGroupResponseDto>"
      },
      "ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupIncomeDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "enforceVolumeCapacity" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "enforceWeightCapacity" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductHandlingGroupId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "enforceVolumeCapacity", "enforceWeightCapacity", "name", "version" ],
        "title" : "ProductHandlingGroupIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.producthandlinggroup.dto.ProductHandlingGroupLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductHandlingGroupId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "ProductHandlingGroupLightDto"
      },
      "ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupResponseDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeHandlingGroupId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "name", "number", "version" ],
        "title" : "PackTypeHandlingGroupResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupResponseDto"
            },
            "title" : "List<PackTypeHandlingGroupResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<PackTypeHandlingGroupResponseDto>"
      },
      "ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupIncomeDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeHandlingGroupId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "name", "version" ],
        "title" : "PackTypeHandlingGroupIncomeDto"
      },
      "ua.wwind.wms.feature.catalog.contract.packtypehandlinggroup.dto.PackTypeHandlingGroupLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeHandlingGroupId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "PackTypeHandlingGroupLightDto"
      },
      "ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseDto" : {
        "type" : "object",
        "properties" : {
          "addressedStorageStartDate" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "allowManualItemSelection" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowManualTransferToDifferentWarehouse" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "assistantMenuLayout" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "autoShipDuringPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "containerCodePattern" : {
            "type" : "string",
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "featurePrintLabel" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          },
          "manualShipmentEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "manualShipmentRestrictionEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "packAccountingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.PackAccountingMode"
          },
          "receivingQuantityTolerancePct" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "timeZone" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "unknownLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "useContainerMovement" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useLocationsType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.shared.dto.UseLocationsTypeDto"
          },
          "useOwners" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useRooms" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "allowManualItemSelection", "allowManualTransferToDifferentWarehouse", "autoShipDuringPicking", "containerCodePattern", "deleted", "featurePrintLabel", "manualShipmentEnabled", "manualShipmentRestrictionEnabled", "name", "number", "packAccountingMode", "receivingQuantityTolerancePct", "useContainerMovement", "useLocationsType", "useOwners", "useRooms", "version" ],
        "title" : "WarehouseDto"
      },
      "ua.wwind.wms.core.shared.model.PackAccountingMode" : {
        "type" : "string",
        "enum" : [ "STOCK_CONTROL", "REFERENCE" ],
        "title" : "PackAccountingMode"
      },
      "ua.wwind.wms.feature.topology.contract.shared.dto.UseLocationsTypeDto" : {
        "type" : "string",
        "enum" : [ "NOT_USE", "STORAGE", "REFERENCE_PLACEMENT" ],
        "title" : "UseLocationsTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseDto"
            },
            "title" : "List<WarehouseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<WarehouseDto>"
      },
      "ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseTranslationDto" : {
        "type" : "object",
        "properties" : {
          "language" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "language" ],
        "title" : "WarehouseTranslationDto"
      },
      "ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseResponseFullDto" : {
        "type" : "object",
        "properties" : {
          "addressedStorageStartDate" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "allowManualItemSelection" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowManualTransferToDifferentWarehouse" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "assistantMenuLayout" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "autoShipDuringPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "containerCodePattern" : {
            "type" : "string",
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "featurePrintLabel" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          },
          "manualShipmentEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "manualShipmentRestrictionEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "packAccountingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.PackAccountingMode"
          },
          "receivingQuantityTolerancePct" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "timeZone" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseTranslationDto"
            },
            "title" : "List<WarehouseTranslationDto>"
          },
          "unknownLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "useContainerMovement" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useLocationsType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.shared.dto.UseLocationsTypeDto"
          },
          "useOwners" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useRooms" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "allowManualItemSelection", "allowManualTransferToDifferentWarehouse", "autoShipDuringPicking", "containerCodePattern", "deleted", "featurePrintLabel", "manualShipmentEnabled", "manualShipmentRestrictionEnabled", "name", "number", "packAccountingMode", "receivingQuantityTolerancePct", "translations", "useContainerMovement", "useLocationsType", "useOwners", "useRooms", "version" ],
        "title" : "WarehouseResponseFullDto"
      },
      "ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseIncomeDto" : {
        "type" : "object",
        "properties" : {
          "addressedStorageStartDate" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "allowManualItemSelection" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowManualTransferToDifferentWarehouse" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "assistantMenuLayout" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "autoShipDuringPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "containerCodePattern" : {
            "type" : "string",
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "featurePrintLabel" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          },
          "manualShipmentEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "manualShipmentRestrictionEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "placeDuringReceiving" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "receivingQuantityTolerancePct" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "timeZone" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseTranslationDto"
            },
            "title" : "List<WarehouseTranslationDto>"
          },
          "unknownLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "updateTranslations" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useContainerMovement" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useLocationsType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.shared.dto.UseLocationsTypeDto"
          },
          "useOwners" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useRooms" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "allowManualItemSelection", "allowManualTransferToDifferentWarehouse", "autoShipDuringPicking", "containerCodePattern", "deleted", "featurePrintLabel", "manualShipmentEnabled", "manualShipmentRestrictionEnabled", "name", "placeDuringReceiving", "receivingQuantityTolerancePct", "translations", "updateTranslations", "useContainerMovement", "useLocationsType", "useOwners", "useRooms", "version" ],
        "title" : "WarehouseIncomeDto"
      },
      "ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehousePackAccountingModeChangeDto" : {
        "type" : "object",
        "properties" : {
          "mode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.PackAccountingMode"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "mode", "version" ],
        "title" : "WarehousePackAccountingModeChangeDto"
      },
      "ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "packAccountingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.PackAccountingMode"
          },
          "useOwners" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "packAccountingMode", "useOwners", "version" ],
        "title" : "WarehouseLightDto"
      },
      "ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : "string",
            "title" : "String"
          },
          "fillLocationByDefault" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "deleted", "description", "fillLocationByDefault", "name", "number", "version", "warehouseId" ],
        "title" : "WorkAreaDto"
      },
      "ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "WorkAreaId",
        "example" : null
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaDto"
            },
            "title" : "List<WorkAreaDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<WorkAreaDto>"
      },
      "ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaTranslationDto" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "language" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "language" ],
        "title" : "WorkAreaTranslationDto"
      },
      "ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaResponseFullDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : "string",
            "title" : "String"
          },
          "fillLocationByDefault" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaTranslationDto"
            },
            "title" : "List<WorkAreaTranslationDto>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "deleted", "description", "fillLocationByDefault", "name", "number", "translations", "version", "warehouseId" ],
        "title" : "WorkAreaResponseFullDto"
      },
      "ua.wwind.wms.feature.topology.contract.warehouse.dto.WarehouseParametersDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          }
        },
        "title" : "WarehouseParametersDto"
      },
      "ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaIncomeDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : "string",
            "title" : "String"
          },
          "fillLocationByDefault" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaTranslationDto"
            },
            "title" : "List<WorkAreaTranslationDto>"
          },
          "updateTranslations" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "deleted", "description", "fillLocationByDefault", "name", "translations", "updateTranslations", "version", "warehouseId" ],
        "title" : "WorkAreaIncomeDto"
      },
      "ua.wwind.wms.feature.topology.contract.workarea.dto.WorkAreaLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "WorkAreaLightDto"
      },
      "ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
            } ]
          },
          "locationCountingFrequency" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "pickingPriorityMixed" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "pickingPriorityMonoProduct" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "pickingPriorityUnderRemainder" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "deleted", "description", "locationCountingFrequency", "name", "number", "pickingPriorityMixed", "pickingPriorityMonoProduct", "pickingPriorityUnderRemainder", "version", "warehouseId" ],
        "title" : "StorageAreaDto"
      },
      "ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "StorageAreaId",
        "example" : null
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaDto"
            },
            "title" : "List<StorageAreaDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<StorageAreaDto>"
      },
      "ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaTranslationDto" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "language" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "language" ],
        "title" : "StorageAreaTranslationDto"
      },
      "ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaResponseFullDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
            } ]
          },
          "locationCountingFrequency" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "pickingPriorityMixed" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "pickingPriorityMonoProduct" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "pickingPriorityUnderRemainder" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaTranslationDto"
            },
            "title" : "List<StorageAreaTranslationDto>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "deleted", "description", "locationCountingFrequency", "name", "number", "pickingPriorityMixed", "pickingPriorityMonoProduct", "pickingPriorityUnderRemainder", "translations", "version", "warehouseId" ],
        "title" : "StorageAreaResponseFullDto"
      },
      "ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaIncomeDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
            } ]
          },
          "locationCountingFrequency" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "pickingPriorityMixed" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "pickingPriorityMonoProduct" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "pickingPriorityUnderRemainder" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaTranslationDto"
            },
            "title" : "List<StorageAreaTranslationDto>"
          },
          "updateTranslations" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "deleted", "description", "locationCountingFrequency", "name", "pickingPriorityMixed", "pickingPriorityMonoProduct", "pickingPriorityUnderRemainder", "translations", "updateTranslations", "version", "warehouseId" ],
        "title" : "StorageAreaIncomeDto"
      },
      "ua.wwind.wms.feature.topology.contract.storagearea.dto.StorageAreaLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "StorageAreaLightDto"
      },
      "ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "depth" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "depthUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "height" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "heightUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId"
            } ]
          },
          "isUnlimitedSize" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "isUnlimitedWeight" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "maxWeight" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volume" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "volumeUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "weightUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "width" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "widthUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          }
        },
        "required" : [ "deleted", "depth", "height", "isUnlimitedSize", "isUnlimitedWeight", "maxWeight", "name", "number", "version", "volume", "width" ],
        "title" : "LocationSizeDto"
      },
      "ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "LocationSizeId",
        "example" : null
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeDto"
            },
            "title" : "List<LocationSizeDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<LocationSizeDto>"
      },
      "ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeTranslationDto" : {
        "type" : "object",
        "properties" : {
          "language" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "language" ],
        "title" : "LocationSizeTranslationDto"
      },
      "ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeResponseFullDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "depth" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "depthUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "height" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "heightUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId"
            } ]
          },
          "isUnlimitedSize" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "isUnlimitedWeight" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "maxWeight" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeTranslationDto"
            },
            "title" : "List<LocationSizeTranslationDto>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volume" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "volumeUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "weightUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "width" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "widthUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          }
        },
        "required" : [ "deleted", "depth", "height", "isUnlimitedSize", "isUnlimitedWeight", "maxWeight", "name", "number", "translations", "version", "volume", "width" ],
        "title" : "LocationSizeResponseFullDto"
      },
      "ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeIncomeDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "depth" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "depthUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "height" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "heightUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId"
            } ]
          },
          "isUnlimitedSize" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "isUnlimitedWeight" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "maxWeight" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeTranslationDto"
            },
            "title" : "List<LocationSizeTranslationDto>"
          },
          "updateTranslations" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volume" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "volumeUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "weightUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          },
          "width" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "widthUnitId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.UnitOfMeasureId"
            } ]
          }
        },
        "required" : [ "deleted", "depth", "height", "isUnlimitedSize", "isUnlimitedWeight", "maxWeight", "name", "translations", "updateTranslations", "version", "volume", "width" ],
        "title" : "LocationSizeIncomeDto"
      },
      "ua.wwind.wms.feature.topology.contract.locationsize.dto.LocationSizeLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "LocationSizeLightDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationHeaderDto" : {
        "type" : "object",
        "properties" : {
          "address" : {
            "type" : "string",
            "title" : "String"
          },
          "addressLevel" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "addressLine" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "addressPosition" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "addressRack" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "addressSection" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "addressSeparator" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.shared.dto.AddressSeparatorTypeDto"
            } ]
          },
          "autogeneratePlacement" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "availabilityLevel" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "code" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "countingFrequency" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "countingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationCountingModeDto"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "hasStockInOtherPackTypes" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "pickingOrder" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "receiverId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          },
          "receiverLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sizeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId"
            } ]
          },
          "stockQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "storageAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
            } ]
          },
          "type" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationTypeDto"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volumeCapacity" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "weightCapacity" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "workAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
            } ]
          }
        },
        "required" : [ "address", "autogeneratePlacement", "countingMode", "deleted", "isGroup", "name", "number", "version", "warehouseId" ],
        "title" : "LocationHeaderDto"
      },
      "ua.wwind.wms.feature.topology.contract.shared.dto.AddressSeparatorTypeDto" : {
        "type" : "string",
        "enum" : [ "DOT", "DASH", "UNDERSCORE", "SPACE", "EMPTY" ],
        "title" : "AddressSeparatorTypeDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationCountingModeDto" : {
        "type" : "string",
        "enum" : [ "INHERIT", "CUSTOM", "NEVER" ],
        "title" : "LocationCountingModeDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationTypeDto" : {
        "type" : "string",
        "enum" : [ "RECEIVING", "CROSS_DOCK", "STORAGE", "PICKING", "SORTING", "PACKING", "SHIPPING", "EXTERNAL", "ARCHIVE", "LOCATION" ],
        "title" : "LocationTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.topology.contract.location.dto.LocationHeaderDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationHeaderDto"
            },
            "title" : "List<LocationHeaderDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<LocationHeaderDto>"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationFullDto" : {
        "type" : "object",
        "properties" : {
          "address" : {
            "type" : "string",
            "title" : "String"
          },
          "addressLevel" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "addressLine" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "addressPosition" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "addressRack" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "addressSection" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "addressSeparator" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.shared.dto.AddressSeparatorTypeDto"
            } ]
          },
          "autogeneratePlacement" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "availabilityLevel" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "code" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "countingFrequency" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "countingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationCountingModeDto"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "pickingOrder" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "receiverId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          },
          "receiverLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "restrictionProductSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductSetId"
            } ]
          },
          "sizeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId"
            } ]
          },
          "storageAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
            } ]
          },
          "type" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationTypeDto"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volumeCapacity" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "weightCapacity" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "workAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
            } ]
          }
        },
        "required" : [ "address", "autogeneratePlacement", "countingMode", "deleted", "isGroup", "name", "number", "version", "warehouseId" ],
        "title" : "LocationFullDto"
      },
      "ua.wwind.wms.feature.inventory.contract.location.dto.LocationStateResponseDto" : {
        "type" : "object",
        "properties" : {
          "actualAssortment" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.location.dto.LocationStockAssortmentDto"
          },
          "actualMonoLotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "actualMonoProductFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "actualMonoProductId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "actualOccupiedVolume" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "actualOccupiedWeight" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "actualOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "blockedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "blockedById" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "blockingType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.location.dto.LocationBlockingTypeDto"
            } ]
          },
          "depth" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "height" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "inventoryChangedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "inventoryChangedByDocumentId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "inventoryChangedByDocumentType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.location.dto.LocationStateDocumentTypeDto"
            } ]
          },
          "inventoryStatus" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.location.dto.LocationInventoryStatusDto"
            } ]
          },
          "isUnlimitedSize" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "isUnlimitedWeight" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "lastCountedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "loadCapacity" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "plannedAssortment" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.location.dto.LocationStockAssortmentDto"
          },
          "plannedMonoLotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "plannedMonoProductFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "plannedMonoProductId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "plannedOccupiedVolume" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "plannedOccupiedWeight" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "plannedOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "totalVolume" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "updatedById" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "width" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          }
        },
        "required" : [ "actualAssortment", "actualOccupiedVolume", "actualOccupiedWeight", "depth", "height", "isUnlimitedSize", "isUnlimitedWeight", "loadCapacity", "locationId", "plannedAssortment", "plannedOccupiedVolume", "plannedOccupiedWeight", "totalVolume", "updatedAt", "warehouseId", "width" ],
        "title" : "LocationStateResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.location.dto.LocationStockAssortmentDto" : {
        "type" : "string",
        "enum" : [ "EMPTY", "MONO_PRODUCT", "MIXED_LOTS", "MIXED_PRODUCTS" ],
        "title" : "LocationStockAssortmentDto"
      },
      "ua.wwind.wms.feature.inventory.contract.location.dto.LocationBlockingTypeDto" : {
        "type" : "string",
        "enum" : [ "PLACEMENT_BLOCKED", "PICKING_BLOCKED", "FULLY_BLOCKED" ],
        "title" : "LocationBlockingTypeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.location.dto.LocationStateDocumentTypeDto" : {
        "type" : "string",
        "enum" : [ "RELOCATION", "INVENTORY_COUNT", "MANUAL_ADJUSTMENT", "PICKING" ],
        "title" : "LocationStateDocumentTypeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.location.dto.LocationInventoryStatusDto" : {
        "type" : "string",
        "enum" : [ "COUNT_REQUIRED", "COUNT_COMPLETED" ],
        "title" : "LocationInventoryStatusDto"
      },
      "ua.wwind.wms.feature.topology.api.location.dto.LocationWithStateDto" : {
        "type" : "object",
        "properties" : {
          "location" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationFullDto"
          },
          "state" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.location.dto.LocationStateResponseDto"
            } ]
          }
        },
        "required" : [ "location" ],
        "title" : "LocationWithStateDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationByCodeRequestDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "code", "warehouseId" ],
        "title" : "LocationByCodeRequestDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationParametersDto" : {
        "type" : "object",
        "properties" : {
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "warehouseId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          }
        },
        "required" : [ "isGroup" ],
        "title" : "LocationParametersDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationIncomeDto" : {
        "type" : "object",
        "properties" : {
          "address" : {
            "type" : "string",
            "title" : "String"
          },
          "addressLevel" : {
            "type" : "string",
            "title" : "String"
          },
          "addressLine" : {
            "type" : "string",
            "title" : "String"
          },
          "addressPosition" : {
            "type" : "string",
            "title" : "String"
          },
          "addressRack" : {
            "type" : "string",
            "title" : "String"
          },
          "addressSection" : {
            "type" : "string",
            "title" : "String"
          },
          "addressSeparator" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.shared.dto.AddressSeparatorTypeDto"
          },
          "autogeneratePlacement" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "availabilityLevel" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "code" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "countingFrequency" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "countingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationCountingModeDto"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "pickingOrder" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "receiverId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          },
          "receiverLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "restrictionProductSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductSetId"
            } ]
          },
          "sizeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId"
            } ]
          },
          "storageAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
            } ]
          },
          "type" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationTypeDto"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volumeCapacity" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "weightCapacity" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "workAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
            } ]
          }
        },
        "required" : [ "address", "addressLevel", "addressLine", "addressPosition", "addressRack", "addressSection", "addressSeparator", "autogeneratePlacement", "availabilityLevel", "countingMode", "deleted", "isGroup", "name", "pickingOrder", "version", "volumeCapacity", "warehouseId", "weightCapacity" ],
        "title" : "LocationIncomeDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationGeneratorGroupsDto" : {
        "type" : "object",
        "properties" : {
          "level" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "line" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "rack" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "section" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "level", "line", "rack", "section" ],
        "title" : "LocationGeneratorGroupsDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationGeneratorSegmentsDto" : {
        "type" : "object",
        "properties" : {
          "level" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationSegmentDto"
          },
          "line" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationSegmentDto"
          },
          "position" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationSegmentDto"
          },
          "rack" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationSegmentDto"
          },
          "section" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationSegmentDto"
          }
        },
        "required" : [ "level", "line", "position", "rack", "section" ],
        "title" : "LocationGeneratorSegmentsDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationSegmentDto" : {
        "type" : "object",
        "properties" : {
          "alphabet" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.SegmentAlphabetDto"
            } ]
          },
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "fixedLength" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "from" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "to" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "type" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.SegmentKindDto"
            } ]
          }
        },
        "required" : [ "enabled" ],
        "title" : "LocationSegmentDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.SegmentAlphabetDto" : {
        "type" : "string",
        "enum" : [ "LATIN", "CYRILLIC" ],
        "title" : "SegmentAlphabetDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.SegmentKindDto" : {
        "type" : "string",
        "enum" : [ "NUMERIC", "ALPHABETIC", "ALPHANUMERIC" ],
        "title" : "SegmentKindDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationGeneratorTemplateDto" : {
        "type" : "object",
        "properties" : {
          "availabilityLevel" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_kotlin.Short"
          },
          "pickingOrder" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_kotlin.Int"
          },
          "sizeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId"
          },
          "storageAreaId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationTypeDto"
          },
          "volumeCapacity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_kotlin.Double"
          },
          "weightCapacity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_kotlin.Double"
          },
          "workAreaId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
          }
        },
        "required" : [ "availabilityLevel", "pickingOrder", "sizeId", "storageAreaId", "type", "volumeCapacity", "weightCapacity", "workAreaId" ],
        "title" : "LocationGeneratorTemplateDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_kotlin.Short" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "value" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "enabled", "value" ],
        "title" : "Toggleable<Short>"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_kotlin.Int" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "value" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "enabled", "value" ],
        "title" : "Toggleable<Int>"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "value" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId"
          }
        },
        "required" : [ "enabled", "value" ],
        "title" : "Toggleable<LocationSizeId>"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "value" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
          }
        },
        "required" : [ "enabled", "value" ],
        "title" : "Toggleable<StorageAreaId>"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_kotlin.Double" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "value" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          }
        },
        "required" : [ "enabled", "value" ],
        "title" : "Toggleable<Double>"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.Toggleable_ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "value" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
          }
        },
        "required" : [ "enabled", "value" ],
        "title" : "Toggleable<WorkAreaId>"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationGeneratorRequestDto" : {
        "type" : "object",
        "properties" : {
          "groups" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationGeneratorGroupsDto"
          },
          "segments" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationGeneratorSegmentsDto"
          },
          "separator" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.shared.dto.AddressSeparatorTypeDto"
          },
          "template" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationGeneratorTemplateDto"
          },
          "updateExisting" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "groups", "segments", "separator", "template", "updateExisting", "warehouseId" ],
        "title" : "LocationGeneratorRequestDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationGeneratorResponseDto" : {
        "type" : "object",
        "properties" : {
          "groupsCreated" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "inserted" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "skipped" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "updated" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "groupsCreated", "inserted", "skipped", "updated" ],
        "title" : "LocationGeneratorResponseDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationGeneratorErrorDto" : {
        "type" : "object",
        "properties" : {
          "addresses" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "totalCollisions" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "addresses", "code", "totalCollisions" ],
        "title" : "LocationGeneratorErrorDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationGroupLevelDto" : {
        "type" : "string",
        "enum" : [ "SECTION", "LINE", "RACK", "LEVEL" ],
        "title" : "LocationGroupLevelDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationExportRequestDto" : {
        "type" : "object",
        "properties" : {
          "filters" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            } ]
          },
          "groupLevel" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationGroupLevelDto"
            } ]
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "warehouseId" ],
        "title" : "LocationExportRequestDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationGroupDiffDto" : {
        "type" : "object",
        "properties" : {
          "address" : {
            "type" : "string",
            "title" : "String"
          },
          "changes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.FieldChangeDto"
            },
            "title" : "List<FieldChangeDto>"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationDiffStatusDto"
          },
          "version" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "address", "changes", "name", "status" ],
        "title" : "LocationGroupDiffDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.FieldChangeDto" : {
        "type" : "object",
        "properties" : {
          "field" : {
            "type" : "string",
            "title" : "String"
          },
          "newValue" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "oldValue" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "field" ],
        "title" : "FieldChangeDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationDiffStatusDto" : {
        "type" : "string",
        "enum" : [ "NEW", "UPDATED", "UNCHANGED", "INVALID" ],
        "title" : "LocationDiffStatusDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationDiffDto" : {
        "type" : "object",
        "properties" : {
          "address" : {
            "type" : "string",
            "title" : "String"
          },
          "changes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.FieldChangeDto"
            },
            "title" : "List<FieldChangeDto>"
          },
          "groupAddress" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "payload" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationImportPayloadDto"
            } ]
          },
          "problems" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationImportProblemDto"
            },
            "title" : "List<LocationImportProblemDto>"
          },
          "sheetRowNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationDiffStatusDto"
          },
          "version" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "address", "changes", "problems", "sheetRowNumber", "status" ],
        "title" : "LocationDiffDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationImportPayloadDto" : {
        "type" : "object",
        "properties" : {
          "address" : {
            "type" : "string",
            "title" : "String"
          },
          "addressLevel" : {
            "type" : "string",
            "title" : "String"
          },
          "addressLine" : {
            "type" : "string",
            "title" : "String"
          },
          "addressPosition" : {
            "type" : "string",
            "title" : "String"
          },
          "addressRack" : {
            "type" : "string",
            "title" : "String"
          },
          "addressSection" : {
            "type" : "string",
            "title" : "String"
          },
          "addressSeparator" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.shared.dto.AddressSeparatorTypeDto"
            } ]
          },
          "autogeneratePlacement" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "availabilityLevel" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "code" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "countingFrequency" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "countingMode" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationCountingModeDto"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "pickingOrder" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "sizeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationSizeId"
            } ]
          },
          "storageAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
            } ]
          },
          "type" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationTypeDto"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "volumeCapacity" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "weightCapacity" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "workAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
            } ]
          }
        },
        "required" : [ "address", "addressLevel", "addressLine", "addressPosition", "addressRack", "addressSection", "name", "version", "warehouseId" ],
        "title" : "LocationImportPayloadDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationImportProblemDto" : {
        "type" : "object",
        "properties" : {
          "field" : {
            "type" : "string",
            "title" : "String"
          },
          "message" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "field", "message" ],
        "title" : "LocationImportProblemDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationImportSummaryDto" : {
        "type" : "object",
        "properties" : {
          "invalid" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "new" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "newGroups" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "unchanged" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "updated" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "updatedGroups" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "invalid", "new", "newGroups", "unchanged", "updated", "updatedGroups" ],
        "title" : "LocationImportSummaryDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationImportPreviewDto" : {
        "type" : "object",
        "properties" : {
          "exportedAt" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "groupLevel" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationGroupLevelDto"
            } ]
          },
          "groups" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationGroupDiffDto"
            },
            "title" : "List<LocationGroupDiffDto>"
          },
          "locations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationDiffDto"
            },
            "title" : "List<LocationDiffDto>"
          },
          "summary" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationImportSummaryDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "groups", "locations", "summary", "warehouseId" ],
        "title" : "LocationImportPreviewDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationImportApplyDto" : {
        "type" : "object",
        "properties" : {
          "groups" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationGroupDiffDto"
            },
            "title" : "List<LocationGroupDiffDto>"
          },
          "locations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationDiffDto"
            },
            "title" : "List<LocationDiffDto>"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "groups", "locations", "warehouseId" ],
        "title" : "LocationImportApplyDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationImportApplyResultDto" : {
        "type" : "object",
        "properties" : {
          "created" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "createdGroups" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "renamedGroups" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "updated" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "created", "createdGroups", "renamedGroups", "updated" ],
        "title" : "LocationImportApplyResultDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationImportConflictDto" : {
        "type" : "object",
        "properties" : {
          "actualVersion" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "address" : {
            "type" : "string",
            "title" : "String"
          },
          "expectedVersion" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "address" ],
        "title" : "LocationImportConflictDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationImportConflictResponseDto" : {
        "type" : "object",
        "properties" : {
          "conflicts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.topology.contract.location.dto.LocationImportConflictDto"
            },
            "title" : "List<LocationImportConflictDto>"
          },
          "message" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "conflicts", "message" ],
        "title" : "LocationImportConflictResponseDto"
      },
      "ua.wwind.wms.feature.topology.contract.location.dto.LocationLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "LocationLightDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotResponseDto" : {
        "type" : "object",
        "properties" : {
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "expiryAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "hasStockInOtherPackTypes" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "manufacturedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "qualityChecked" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotStatusDto"
          },
          "stockQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "supplierId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "createdAt", "deleted", "name", "number", "productId", "qualityChecked", "status", "version" ],
        "title" : "LotResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotStatusDto" : {
        "type" : "string",
        "enum" : [ "OK", "HOLD", "REJECTED", "QUARANTINE" ],
        "title" : "LotStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.lot.dto.LotResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotResponseDto"
            },
            "title" : "List<LotResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<LotResponseDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotTranslationDto" : {
        "type" : "object",
        "properties" : {
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "language" : {
            "type" : "string",
            "title" : "String"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "language" ],
        "title" : "LotTranslationDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotResponseFullDto" : {
        "type" : "object",
        "properties" : {
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "expiryAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "manufacturedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "qualityChecked" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotStatusDto"
          },
          "supplierId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotTranslationDto"
            },
            "title" : "List<LotTranslationDto>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "createdAt", "deleted", "name", "number", "productId", "qualityChecked", "status", "translations", "version" ],
        "title" : "LotResponseFullDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotIncomeDto" : {
        "type" : "object",
        "properties" : {
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "expiryAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "manufacturedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "qualityChecked" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotStatusDto"
          },
          "supplierId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotTranslationDto"
            },
            "title" : "List<LotTranslationDto>"
          },
          "updateTranslations" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "name", "productId", "qualityChecked", "status", "translations", "updateTranslations", "version" ],
        "title" : "LotIncomeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotFieldRefDto" : {
        "type" : "object",
        "properties" : {
          "attribute" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "field" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotFieldDto"
          }
        },
        "required" : [ "field" ],
        "title" : "LotFieldRefDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotFieldDto" : {
        "type" : "string",
        "enum" : [ "MANUFACTURED_AT", "EXPIRY_AT", "ATTRIBUTE" ],
        "title" : "LotFieldDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotResolveRequestDto" : {
        "type" : "object",
        "properties" : {
          "attributes" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "Map<String,JsonElement>"
          },
          "expectedVersion" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "expiryAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "manufacturedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "replace" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotFieldRefDto"
            },
            "title" : "List<LotFieldRefDto>"
          },
          "supplierId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "name", "productId", "replace", "warehouseId" ],
        "title" : "LotResolveRequestDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotDifferenceDto" : {
        "type" : "object",
        "properties" : {
          "applied" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "current" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            } ]
          },
          "field" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotFieldRefDto"
          },
          "incoming" : {
            "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
          },
          "kind" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotDifferenceKindDto"
          }
        },
        "required" : [ "applied", "field", "incoming", "kind" ],
        "title" : "LotDifferenceDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotDifferenceKindDto" : {
        "type" : "string",
        "enum" : [ "ADD", "REPLACE" ],
        "title" : "LotDifferenceKindDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotResolveResponseDto" : {
        "type" : "object",
        "properties" : {
          "canUpdate" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "candidates" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotResponseDto"
            },
            "title" : "List<LotResponseDto>"
          },
          "created" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "differences" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotDifferenceDto"
            },
            "title" : "List<LotDifferenceDto>"
          },
          "lot" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotResponseDto"
            } ]
          }
        },
        "required" : [ "canUpdate", "candidates", "created", "differences" ],
        "title" : "LotResolveResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "LotLightDto"
      },
      "ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleResponseDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PlacementRuleId"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "packTypeHandlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeHandlingGroupId"
            } ]
          },
          "priority" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "productHandlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductHandlingGroupId"
            } ]
          },
          "storageAreaId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "deleted", "id", "number", "priority", "storageAreaId", "version", "warehouseId" ],
        "title" : "PlacementRuleResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.PlacementRuleId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "PlacementRuleId",
        "example" : null
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleResponseDto"
            },
            "title" : "List<PlacementRuleResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<PlacementRuleResponseDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleIncomeDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PlacementRuleId"
            } ]
          },
          "packTypeHandlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.PackTypeHandlingGroupId"
            } ]
          },
          "priority" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "productHandlingGroupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductHandlingGroupId"
            } ]
          },
          "storageAreaId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "priority", "storageAreaId", "version", "warehouseId" ],
        "title" : "PlacementRuleIncomeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.placement.dto.PlacementRuleLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PlacementRuleId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "PlacementRuleLightDto"
      },
      "ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.CarrierId"
            } ]
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierStatusDto"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierTypeDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "code", "createdAt", "deleted", "number", "status", "type", "version", "warehouseId" ],
        "title" : "CarrierDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.CarrierId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "CarrierId",
        "example" : null
      },
      "ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierStatusDto" : {
        "type" : "string",
        "enum" : [ "ACTIVE", "INACTIVE", "DECOMMISSIONED" ],
        "title" : "CarrierStatusDto"
      },
      "ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierTypeDto" : {
        "type" : "string",
        "enum" : [ "CART", "FORKLIFT", "ROBOT" ],
        "title" : "CarrierTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierDto"
            },
            "title" : "List<CarrierDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<CarrierDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierByCodeRequestDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "code", "warehouseId" ],
        "title" : "CarrierByCodeRequestDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.WarehouseParametersDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          }
        },
        "title" : "WarehouseParametersDto"
      },
      "ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierIncomeDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.CarrierId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierStatusDto"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierTypeDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "code", "status", "type", "version", "warehouseId" ],
        "title" : "CarrierIncomeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.carrier.dto.CarrierLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.CarrierId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "CarrierLightDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeResponseDto" : {
        "type" : "object",
        "properties" : {
          "canContainOtherContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "codePattern" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "defaultMaxVolume" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "defaultMaxWeight" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "isNestable" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "requiresPackaging" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "returnable" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "storable" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "temporary" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "canContainOtherContainers", "deleted", "id", "isNestable", "name", "number", "requiresPackaging", "storable", "temporary", "version" ],
        "title" : "ContainerTypeResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeResponseDto"
            },
            "title" : "List<ContainerTypeResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ContainerTypeResponseDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeIncomeDto" : {
        "type" : "object",
        "properties" : {
          "canContainOtherContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "codePattern" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "defaultMaxVolume" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "defaultMaxWeight" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
            } ]
          },
          "isNestable" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "requiresPackaging" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "returnable" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "storable" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "temporary" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "canContainOtherContainers", "isNestable", "name", "requiresPackaging", "version" ],
        "title" : "ContainerTypeIncomeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeCodePatternCheckRequestDto" : {
        "type" : "object",
        "properties" : {
          "codePattern" : {
            "type" : "string",
            "title" : "String"
          },
          "containerTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
            } ]
          },
          "sampleCode" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "codePattern", "sampleCode" ],
        "title" : "ContainerTypeCodePatternCheckRequestDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeCodePatternConflictDto" : {
        "type" : "object",
        "properties" : {
          "codePattern" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "codePattern", "id", "name" ],
        "title" : "ContainerTypeCodePatternConflictDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeCodePatternCheckResponseDto" : {
        "type" : "object",
        "properties" : {
          "conflicts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeCodePatternConflictDto"
            },
            "title" : "List<ContainerTypeCodePatternConflictDto>"
          },
          "matchesSample" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "conflicts", "matchesSample" ],
        "title" : "ContainerTypeCodePatternCheckResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTypeLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "ContainerTypeLightDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyDto" : {
        "type" : "object",
        "properties" : {
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotTrackingPolicyId"
            } ]
          },
          "indicateOnInbound" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "indicateOnOutbound" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "minRemainingShelfLifeDaysOnReceipt" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "specificationStage" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotSpecificationStageDto"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.TrackingPolicyTypeDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "createdAt", "deleted", "indicateOnInbound", "indicateOnOutbound", "name", "number", "specificationStage", "type", "version" ],
        "title" : "LotTrackingPolicyDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotSpecificationStageDto" : {
        "type" : "string",
        "enum" : [ "AT_SHIPMENT_PLANNING", "AT_PICK_PLANNING", "AT_PICKING" ],
        "title" : "LotSpecificationStageDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.TrackingPolicyTypeDto" : {
        "type" : "string",
        "enum" : [ "SERIAL_REFERENCE", "STOCK_CONTROL", "FEFO" ],
        "title" : "TrackingPolicyTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyDto"
            },
            "title" : "List<LotTrackingPolicyDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<LotTrackingPolicyDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyIncomeDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotTrackingPolicyId"
            } ]
          },
          "indicateOnInbound" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "indicateOnOutbound" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "minRemainingShelfLifeDaysOnReceipt" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "specificationStage" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotSpecificationStageDto"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.TrackingPolicyTypeDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "indicateOnInbound", "indicateOnOutbound", "name", "specificationStage", "type", "version" ],
        "title" : "LotTrackingPolicyIncomeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotTrackingPolicyLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotTrackingPolicyId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "LotTrackingPolicyLightDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDto" : {
        "type" : "object",
        "properties" : {
          "closedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "containerTypeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "documentId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "documentType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDocumentTypeDto"
            } ]
          },
          "hasStock" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "hasStockInOtherPackTypes" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "maxVolume" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "maxWeight" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "packagingId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "packagingOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "purpose" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerPurposeDto"
          },
          "returnable" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerStatusDto"
          },
          "stockQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "tareWeight" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "code", "containerTypeId", "createdAt", "deleted", "number", "purpose", "status", "version", "warehouseId" ],
        "title" : "ContainerDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDocumentTypeDto" : {
        "type" : "string",
        "enum" : [ "INBOUND_ORDER", "RECEIPT", "PUTAWAY", "OUTBOUND_ORDER", "WAVE", "PICKING", "CONTAINER_CIRCULATION", "RETURNABLE_OPENING_BALANCE" ],
        "title" : "ContainerDocumentTypeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerPurposeDto" : {
        "type" : "string",
        "enum" : [ "STORAGE", "LPN_SHIPMENT", "PICK_CART", "PUTAWAY_CART", "RETURNS", "EMPTY_RTI" ],
        "title" : "ContainerPurposeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerStatusDto" : {
        "type" : "string",
        "enum" : [ "ACTIVE", "CLOSED", "IN_TRANSIT", "EMPTY", "SHIPPED", "DECOMMISSIONED" ],
        "title" : "ContainerStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDto"
            },
            "title" : "List<ContainerDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ContainerDto>"
      },
      "ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "OutboundOrderId",
        "example" : null
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerPlacementFailureDto" : {
        "type" : "string",
        "enum" : [ "NO_APPLICABLE_RULE", "NO_LOCATION_SELECTED" ],
        "title" : "ContainerPlacementFailureDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTargetSourceDto" : {
        "type" : "string",
        "enum" : [ "DOCUMENT", "PLACEMENT" ],
        "title" : "ContainerTargetSourceDto"
      },
      "ua.wwind.wms.core.shared.idtypes.outbound.WaveId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "WaveId",
        "example" : null
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerWithStateDto" : {
        "type" : "object",
        "properties" : {
          "carrierId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.CarrierId"
            } ]
          },
          "closedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "containerTypeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "currentVolume" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "currentWeight" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "decommissionedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "decommissionedReason" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "documentId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "documentType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDocumentTypeDto"
            } ]
          },
          "dominantProductId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "isTemporary" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "lastActivityAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "lineCount" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "maxVolume" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "maxWeight" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "outboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "packagingId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "packagingOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "parentContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "placementFailure" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerPlacementFailureDto"
            } ]
          },
          "purpose" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerPurposeDto"
          },
          "returnable" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerStatusDto"
          },
          "tareWeight" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "targetSource" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTargetSourceDto"
            } ]
          },
          "topLevelParentId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "waveId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.WaveId"
            } ]
          }
        },
        "required" : [ "code", "containerTypeId", "createdAt", "currentVolume", "currentWeight", "deleted", "id", "isTemporary", "number", "purpose", "status", "version", "warehouseId" ],
        "title" : "ContainerWithStateDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.container.dto.ContainerWithStateDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerWithStateDto"
            },
            "title" : "List<ContainerWithStateDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ContainerWithStateDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerMovementDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "documentId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "documentType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerMovementDocumentTypeDto"
            } ]
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ContainerMovementId"
          },
          "movementType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerMovementTypeDto"
          },
          "performedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "performedById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "registeredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "containerId", "id", "movementType", "performedAt", "performedById", "registeredAt", "warehouseId" ],
        "title" : "ContainerMovementDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerMovementDocumentTypeDto" : {
        "type" : "string",
        "enum" : [ "RECEIPT", "PICKING", "CONTAINER_TRANSFER", "WAVE", "SHIPMENT", "CONTAINER_CIRCULATION", "RETURNABLE_OPENING_BALANCE" ],
        "title" : "ContainerMovementDocumentTypeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerMovementTypeDto" : {
        "type" : "string",
        "enum" : [ "CREATED", "MOVED", "NESTED", "UNNESTED", "CLOSED", "REOPENED", "SHIPPED", "UNSHIPPED" ],
        "title" : "ContainerMovementTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.container.dto.ContainerMovementDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerMovementDto"
            },
            "title" : "List<ContainerMovementDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ContainerMovementDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerByCodeRequestDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "code", "warehouseId" ],
        "title" : "ContainerByCodeRequestDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerIncomeDto" : {
        "type" : "object",
        "properties" : {
          "closedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "containerTypeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "documentId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "documentType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerDocumentTypeDto"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "maxVolume" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "maxWeight" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "packagingId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "packagingOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.container.dto.ContainerStatusDto"
          },
          "tareWeight" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "code", "containerTypeId", "status", "version", "warehouseId" ],
        "title" : "ContainerIncomeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "ContainerLightDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerInfoDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "containerTypeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "packagingId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          }
        },
        "required" : [ "code", "containerTypeId", "id" ],
        "title" : "ContainerInfoDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTransferToLocationDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "performedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "performedById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "targetLocationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        },
        "required" : [ "containerId", "performedAt", "performedById", "targetLocationId" ],
        "title" : "ContainerTransferToLocationDto"
      },
      "ua.wwind.wms.feature.inventory.contract.container.port.ContainerTransferResult" : {
        "type" : "object",
        "properties" : {
          "arrivedAtTarget" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "waveId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.WaveId"
            } ]
          }
        },
        "required" : [ "arrivedAtTarget", "containerId" ],
        "title" : "ContainerTransferResult"
      },
      "ua.wwind.wms.feature.inventory.contract.container.dto.ContainerTransferToCarrierDto" : {
        "type" : "object",
        "properties" : {
          "carrierId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.CarrierId"
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "performedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "performedById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          }
        },
        "required" : [ "carrierId", "containerId", "performedAt", "performedById" ],
        "title" : "ContainerTransferToCarrierDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.RelocationId"
          },
          "initiatorDocumentId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "initiatorDocumentType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationInitiatorDocumentTypeDto"
            } ]
          },
          "isAdhoc" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "linesCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "linesLeft" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "purpose" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationPurposeDto"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "createdAt", "createdById", "date", "deleted", "id", "isAdhoc", "linesCount", "linesLeft", "number", "purpose", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "RelocationHeaderResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.RelocationId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "RelocationId",
        "example" : null
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationInitiatorDocumentTypeDto" : {
        "type" : "string",
        "enum" : [ "PICKING" ],
        "title" : "RelocationInitiatorDocumentTypeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationPurposeDto" : {
        "type" : "string",
        "enum" : [ "STANDARD", "REPLENISHMENT", "SORTING", "CONSOLIDATION", "PICKING_REPACK", "REVERSAL", "PACK_TO_BASE" ],
        "title" : "RelocationPurposeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "PLANNED", "IN_PROGRESS", "PARTIALLY_COMPLETED", "COMPLETED", "CANCELLED" ],
        "title" : "RelocationStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationHeaderResponseDto"
            },
            "title" : "List<RelocationHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<RelocationHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationLineExecutionResponseDto" : {
        "type" : "object",
        "properties" : {
          "facts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationFactResponseDto"
            },
            "title" : "List<RelocationFactResponseDto>"
          },
          "instructionPackQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "instructionPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationLineResponseDto"
            },
            "title" : "List<RelocationLineResponseDto>"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantityExecuted" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityPlan" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceContainerLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourcePackQuantityExecuted" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourcePackQuantityPlan" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourcePackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "targetPackQuantityExecuted" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "targetPackQuantityPlan" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "targetPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          }
        },
        "required" : [ "facts", "lineNumber", "lines", "productId", "quantityExecuted", "quantityPlan", "sourcePackQuantityExecuted", "sourcePackQuantityPlan", "sourceType", "targetPackQuantityExecuted", "targetPackQuantityPlan", "targetType" ],
        "title" : "RelocationLineExecutionResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationFactResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "executedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "executedById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "RelocationFactId"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "referencePack" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "relocationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.RelocationId"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourcePackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourcePackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          },
          "stockStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "targetPackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "targetPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          }
        },
        "required" : [ "accountingDate", "executedAt", "executedById", "id", "productId", "quantity", "referencePack", "relocationId", "sourcePackQuantity", "sourceType", "stockStatus", "targetPackQuantity", "targetType" ],
        "title" : "RelocationFactResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto" : {
        "type" : "string",
        "enum" : [ "LOCATION", "CONTAINER" ],
        "title" : "RelocationEndpointTypeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto" : {
        "type" : "string",
        "enum" : [ "AVAILABLE", "QUARANTINE", "DAMAGED", "PENDING_QC", "IN_QC", "REJECTED", "EXPIRED" ],
        "title" : "StockStatusDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "instructionPackQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "instructionPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourcePackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourcePackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          },
          "specificationStage" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotSpecificationStageDto"
            } ]
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "targetPackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "targetPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          }
        },
        "required" : [ "lineNumber", "productId", "quantity", "sourcePackQuantity", "sourceType", "targetPackQuantity", "targetType" ],
        "title" : "RelocationLineResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationFullResponseDto" : {
        "type" : "object",
        "properties" : {
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "executions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationLineExecutionResponseDto"
            },
            "title" : "List<RelocationLineExecutionResponseDto>"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.RelocationId"
          },
          "initiatorDocumentId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "initiatorDocumentType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationInitiatorDocumentTypeDto"
            } ]
          },
          "isAdhoc" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "linesCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "linesLeft" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "purpose" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationPurposeDto"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "createdAt", "createdById", "date", "deleted", "executions", "id", "isAdhoc", "linesCount", "linesLeft", "number", "purpose", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "RelocationFullResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationLineIncomeDto" : {
        "type" : "object",
        "properties" : {
          "instructionPackQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "instructionPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourcePackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourcePackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          },
          "specificationStage" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotSpecificationStageDto"
            } ]
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "targetPackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "targetPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          }
        },
        "required" : [ "lineNumber", "productId", "quantity", "sourcePackQuantity", "sourceType", "targetPackQuantity", "targetType" ],
        "title" : "RelocationLineIncomeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationIncomeDto" : {
        "type" : "object",
        "properties" : {
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.RelocationId"
            } ]
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationLineIncomeDto"
            },
            "title" : "List<RelocationLineIncomeDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationStatusDto"
          },
          "version" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "date", "lines", "status", "warehouseId" ],
        "title" : "RelocationIncomeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.ChangeRelocationStatusRequestDto" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationStatusDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "status", "version" ],
        "title" : "ChangeRelocationStatusRequestDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationReversalRequestDto" : {
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "version" ],
        "title" : "RelocationReversalRequestDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationFactIncomeDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "relocationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.RelocationId"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourcePackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourcePackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "targetPackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "targetPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          }
        },
        "required" : [ "accountingDate", "productId", "quantity", "relocationId", "sourcePackQuantity", "sourceType", "targetPackQuantity", "targetType" ],
        "title" : "RelocationFactIncomeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationWithFactIdDto" : {
        "type" : "object",
        "properties" : {
          "factId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "RelocationFactId"
          },
          "relocation" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationFullResponseDto"
          }
        },
        "required" : [ "factId", "relocation" ],
        "title" : "RelocationWithFactIdDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.AdhocRelocationFactIncomeDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourcePackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourcePackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "targetPackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "targetPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "productId", "quantity", "sourcePackQuantity", "sourceType", "targetPackQuantity", "targetType", "warehouseId" ],
        "title" : "AdhocRelocationFactIncomeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.AdhocRelocationFactSearchRequestDto" : {
        "type" : "object",
        "properties" : {
          "afterId" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "RelocationFactId"
          },
          "limit" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "limit", "warehouseId" ],
        "title" : "AdhocRelocationFactSearchRequestDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.AdhocRelocationFactResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "executedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "executedById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "RelocationFactId"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "referencePack" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourcePackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourcePackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          },
          "stockStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "targetPackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "targetPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationEndpointTypeDto"
          }
        },
        "required" : [ "accountingDate", "executedAt", "executedById", "id", "productId", "quantity", "referencePack", "sourcePackQuantity", "sourceType", "stockStatus", "targetPackQuantity", "targetType" ],
        "title" : "AdhocRelocationFactResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.AdhocRelocationFactSearchResponseDto" : {
        "type" : "object",
        "properties" : {
          "hasMore" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.relocation.dto.AdhocRelocationFactResponseDto"
            },
            "title" : "List<AdhocRelocationFactResponseDto>"
          },
          "nextAfterId" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "RelocationFactId"
          }
        },
        "required" : [ "hasMore", "items" ],
        "title" : "AdhocRelocationFactSearchResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.RelocationId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "RelocationLightDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationLotRequirementRequestDto" : {
        "type" : "object",
        "properties" : {
          "productCategoryId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "productCategoryId", "warehouseId" ],
        "title" : "RelocationLotRequirementRequestDto"
      },
      "ua.wwind.wms.feature.inventory.contract.lot.dto.LotInputModeDto" : {
        "type" : "string",
        "enum" : [ "NOT_TRACKED", "OPTIONAL", "REQUIRED" ],
        "title" : "LotInputModeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.relocation.dto.RelocationLotRequirementResponseDto" : {
        "type" : "object",
        "properties" : {
          "inputMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotInputModeDto"
          }
        },
        "required" : [ "inputMode" ],
        "title" : "RelocationLotRequirementResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "balanceSnapshotAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "executorAggregationMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.ExecutorAggregationModeDto"
          },
          "hasVariance" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.InventoryCountId"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "locationScopeType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.LocationScopeTypeDto"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "ownerScopeEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "scopeFilter" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            } ]
          },
          "scopeFilterDisplay" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountStatusDto"
          },
          "storageAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
            } ]
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountTypeDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "createdAt", "createdById", "date", "deleted", "executorAggregationMode", "hasVariance", "id", "locationScopeType", "number", "ownerScopeEnabled", "status", "type", "updatedAt", "version", "warehouseId" ],
        "title" : "InventoryCountHeaderResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.ExecutorAggregationModeDto" : {
        "type" : "string",
        "enum" : [ "SUM_BY_EXECUTOR", "LAST_SNAPSHOT_ONLY" ],
        "title" : "ExecutorAggregationModeDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.InventoryCountId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "InventoryCountId",
        "example" : null
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.LocationScopeTypeDto" : {
        "type" : "string",
        "enum" : [ "SINGLE_LOCATION", "SINGLE_CONTAINER", "STORAGE_AREA", "WHOLE_WAREHOUSE", "FILTER" ],
        "title" : "LocationScopeTypeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "IN_PROGRESS", "ENTERING_RESULTS", "PENDING_CONFIRMATION", "COMPLETED", "CANCELLED" ],
        "title" : "InventoryCountStatusDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountTypeDto" : {
        "type" : "string",
        "enum" : [ "BLIND", "ASSISTED", "VARIANCE" ],
        "title" : "InventoryCountTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountHeaderResponseDto"
            },
            "title" : "List<InventoryCountHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<InventoryCountHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountExecutionResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "matchedFacts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountFactResponseDto"
            },
            "title" : "List<InventoryCountFactResponseDto>"
          },
          "matchedLines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountLineResponseDto"
            },
            "title" : "List<InventoryCountLineResponseDto>"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantityFact" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packQuantityPlan" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packQuantityVariance" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantityFact" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityPlan" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityVariance" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "stockStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          }
        },
        "required" : [ "matchedFacts", "matchedLines", "packQuantityFact", "packQuantityPlan", "packQuantityVariance", "productId", "quantityFact", "quantityPlan", "quantityVariance", "stockStatus" ],
        "title" : "InventoryCountExecutionResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountFactResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "countedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "endpointType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryEndpointTypeDto"
          },
          "executorId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "InventoryCountFactId"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "referencePack" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "stockStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          }
        },
        "required" : [ "countedAt", "createdAt", "createdById", "endpointType", "executorId", "id", "packQuantity", "productId", "quantity", "referencePack", "stockStatus" ],
        "title" : "InventoryCountFactResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryEndpointTypeDto" : {
        "type" : "string",
        "enum" : [ "LOCATION", "CONTAINER" ],
        "title" : "InventoryEndpointTypeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "endpointType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryEndpointTypeDto"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "stockStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          }
        },
        "required" : [ "endpointType", "packQuantity", "productId", "quantity", "stockStatus" ],
        "title" : "InventoryCountLineResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountScopeLocationDto" : {
        "type" : "object",
        "properties" : {
          "heldByInventoryCountId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.InventoryCountId"
            } ]
          },
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "origin" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountScopeLocationOriginDto"
          }
        },
        "required" : [ "locationId", "origin" ],
        "title" : "InventoryCountScopeLocationDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountScopeLocationOriginDto" : {
        "type" : "string",
        "enum" : [ "ROUTE", "ADDED", "DROPPED" ],
        "title" : "InventoryCountScopeLocationOriginDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountFullResponseDto" : {
        "type" : "object",
        "properties" : {
          "balanceSnapshotAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "executions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountExecutionResponseDto"
            },
            "title" : "List<InventoryCountExecutionResponseDto>"
          },
          "executorAggregationMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.ExecutorAggregationModeDto"
          },
          "hasVariance" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.InventoryCountId"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "locationScopeType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.LocationScopeTypeDto"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "ownerScopeEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "scopeFilter" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            } ]
          },
          "scopeFilterDisplay" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "scopeLocations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountScopeLocationDto"
            },
            "title" : "List<InventoryCountScopeLocationDto>"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountStatusDto"
          },
          "storageAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
            } ]
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountTypeDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "createdAt", "createdById", "date", "deleted", "executions", "executorAggregationMode", "hasVariance", "id", "locationScopeType", "number", "ownerScopeEnabled", "scopeLocations", "status", "type", "updatedAt", "version", "warehouseId" ],
        "title" : "InventoryCountFullResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountActiveLookupStatusDto" : {
        "type" : "string",
        "enum" : [ "NOT_FOUND", "SINGLE", "MULTIPLE" ],
        "title" : "InventoryCountActiveLookupStatusDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountActiveLookupResponseDto" : {
        "type" : "object",
        "properties" : {
          "inventoryCountId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.InventoryCountId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountActiveLookupStatusDto"
          }
        },
        "required" : [ "status" ],
        "title" : "InventoryCountActiveLookupResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountCreateDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "executorAggregationMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.ExecutorAggregationModeDto"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.InventoryCountId"
            } ]
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "locationScopeType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.LocationScopeTypeDto"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "ownerScopeEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "scopeFilter" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            } ]
          },
          "scopeFilterDisplay" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "storageAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
            } ]
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountTypeDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "date", "executorAggregationMode", "locationScopeType", "ownerScopeEnabled", "type", "warehouseId" ],
        "title" : "InventoryCountCreateDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountUpdateDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "executorAggregationMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.ExecutorAggregationModeDto"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "locationScopeType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.LocationScopeTypeDto"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "ownerScopeEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "scopeFilter" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            } ]
          },
          "scopeFilterDisplay" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "storageAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.StorageAreaId"
            } ]
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountTypeDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "date", "executorAggregationMode", "locationScopeType", "ownerScopeEnabled", "type", "version", "warehouseId" ],
        "title" : "InventoryCountUpdateDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountStatusChangeDto" : {
        "type" : "object",
        "properties" : {
          "targetStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountStatusDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "targetStatus", "version" ],
        "title" : "InventoryCountStatusChangeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountFactIncomeDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "countedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "endpointType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryEndpointTypeDto"
          },
          "inventoryCountId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.InventoryCountId"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "stockStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          }
        },
        "required" : [ "countedAt", "endpointType", "inventoryCountId", "packQuantity", "productId", "quantity", "stockStatus" ],
        "title" : "InventoryCountFactIncomeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountRecalculateDto" : {
        "type" : "object",
        "properties" : {
          "balanceSnapshotAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "balanceSnapshotAt", "version" ],
        "title" : "InventoryCountRecalculateDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.InventoryCountId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "InventoryCountLightDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountLotRequirementRequestDto" : {
        "type" : "object",
        "properties" : {
          "productCategoryId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "productCategoryId", "warehouseId" ],
        "title" : "InventoryCountLotRequirementRequestDto"
      },
      "ua.wwind.wms.feature.inventory.contract.inventorycount.dto.InventoryCountLotRequirementResponseDto" : {
        "type" : "object",
        "properties" : {
          "inputMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.lot.dto.LotInputModeDto"
          }
        },
        "required" : [ "inputMode" ],
        "title" : "InventoryCountLotRequirementResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceResponseDto" : {
        "type" : "object",
        "properties" : {
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "defaultLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.OpeningBalanceId"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceLineResponseDto"
            },
            "title" : "List<OpeningBalanceLineResponseDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "createdAt", "createdById", "date", "deleted", "id", "lines", "number", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "OpeningBalanceResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.OpeningBalanceId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "OpeningBalanceId",
        "example" : null
      },
      "ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "referencePack" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          }
        },
        "required" : [ "lineNumber", "packQuantity", "productId", "referencePack", "status" ],
        "title" : "OpeningBalanceLineResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "CONFIRMED" ],
        "title" : "OpeningBalanceStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceResponseDto"
            },
            "title" : "List<OpeningBalanceResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<OpeningBalanceResponseDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceLineDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          }
        },
        "required" : [ "lineNumber", "packQuantity", "productId", "status" ],
        "title" : "OpeningBalanceLineDto"
      },
      "ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceIncomeDto" : {
        "type" : "object",
        "properties" : {
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "defaultLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.OpeningBalanceId"
            } ]
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceLineDto"
            },
            "title" : "List<OpeningBalanceLineDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceStatusDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "date", "lines", "status", "warehouseId" ],
        "title" : "OpeningBalanceIncomeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.openingbalance.dto.OpeningBalanceLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.OpeningBalanceId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "OpeningBalanceLightDto"
      },
      "ua.wwind.wms.feature.inventory.contract.location.dto.LocationBlockingRequestDto" : {
        "type" : "object",
        "properties" : {
          "blockedById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "blockingType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.location.dto.LocationBlockingTypeDto"
          }
        },
        "required" : [ "blockedById", "blockingType" ],
        "title" : "LocationBlockingRequestDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerBalanceDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          },
          "topContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "packQuantity", "productId", "status", "updatedAt", "warehouseId" ],
        "title" : "StockLedgerBalanceDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerBalanceDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerBalanceDto"
            },
            "title" : "List<StockLedgerBalanceDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<StockLedgerBalanceDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerEntryDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "documentId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "documentType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerDocumentTypeDto"
          },
          "entryType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerEntryTypeDto"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "StockLedgerEntryId"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "registeredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "registeredById" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "documentId", "documentType", "entryType", "id", "packQuantity", "productId", "registeredAt", "status", "warehouseId" ],
        "title" : "StockLedgerEntryDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerDocumentTypeDto" : {
        "type" : "string",
        "enum" : [ "RECEIPT", "RELOCATION", "PUTAWAY", "PICKING", "SHIPMENT", "INVENTORY_COUNT", "OPENING_BALANCE", "CONTAINER_CIRCULATION", "CONTAINER_DECOMMISSION" ],
        "title" : "StockLedgerDocumentTypeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerEntryTypeDto" : {
        "type" : "string",
        "enum" : [ "RECEIPT_EXTERNAL", "RECEIPT_TRANSFER", "SHIPMENT_EXTERNAL", "SHIPMENT_TRANSFER", "ADJUSTMENT", "OPENING_BALANCE" ],
        "title" : "StockLedgerEntryTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerEntryDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerEntryDto"
            },
            "title" : "List<StockLedgerEntryDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<StockLedgerEntryDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.ExternalStockMovementResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "documentId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "documentType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerDocumentTypeDto"
          },
          "externalDocumentId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "externalDocumentType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.ExternalDocumentTypeDto"
            } ]
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ExternalStockMovementId"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "movementType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.ExternalMovementTypeDto"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "partyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "registeredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "registeredById" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "documentId", "documentType", "id", "movementType", "packQuantity", "productId", "quantity", "registeredAt", "status", "warehouseId" ],
        "title" : "ExternalStockMovementResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.ExternalDocumentTypeDto" : {
        "type" : "string",
        "enum" : [ "INBOUND_ORDER", "RECEIPT", "OUTBOUND_ORDER" ],
        "title" : "ExternalDocumentTypeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.ExternalMovementTypeDto" : {
        "type" : "string",
        "enum" : [ "RECEIPT", "ADJUSTMENT", "SHIPMENT" ],
        "title" : "ExternalMovementTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.ExternalStockMovementResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.ExternalStockMovementResponseDto"
            },
            "title" : "List<ExternalStockMovementResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ExternalStockMovementResponseDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.IncomingStockLedgerEntryResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "entryType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.IncomingStockLedgerEntryTypeDto"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "registeredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "registeredById" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "sourceDocumentId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "sourceDocumentType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.IncomingStockSourceDocumentTypeDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "entryType", "id", "packQuantity", "productId", "registeredAt", "sourceDocumentId", "sourceDocumentType", "warehouseId" ],
        "title" : "IncomingStockLedgerEntryResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.IncomingStockLedgerEntryTypeDto" : {
        "type" : "string",
        "enum" : [ "PUTAWAY", "REPLENISHMENT", "PRODUCTION", "RELOCATION" ],
        "title" : "IncomingStockLedgerEntryTypeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.IncomingStockSourceDocumentTypeDto" : {
        "type" : "string",
        "enum" : [ "PUTAWAY", "RELOCATION" ],
        "title" : "IncomingStockSourceDocumentTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.IncomingStockLedgerEntryResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.IncomingStockLedgerEntryResponseDto"
            },
            "title" : "List<IncomingStockLedgerEntryResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<IncomingStockLedgerEntryResponseDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerEntryResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "entryType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerEntryTypeDto"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "registeredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "registeredById" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "sourceDocumentId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "sourceDocumentType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationSourceDocumentTypeDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "entryType", "id", "packQuantity", "productId", "registeredAt", "sourceDocumentId", "sourceDocumentType", "warehouseId" ],
        "title" : "ReservationLedgerEntryResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerEntryTypeDto" : {
        "type" : "string",
        "enum" : [ "PUTAWAY", "OUTBOUND", "QC", "HOLD", "RELOCATION" ],
        "title" : "ReservationLedgerEntryTypeDto"
      },
      "ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationSourceDocumentTypeDto" : {
        "type" : "string",
        "enum" : [ "PUTAWAY", "RELOCATION", "PICKING" ],
        "title" : "ReservationSourceDocumentTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerEntryResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerEntryResponseDto"
            },
            "title" : "List<ReservationLedgerEntryResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ReservationLedgerEntryResponseDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerBalanceDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "sourceDocumentId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "sourceDocumentType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationSourceDocumentTypeDto"
          },
          "topContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "packQuantity", "productId", "sourceDocumentId", "sourceDocumentType", "updatedAt", "warehouseId" ],
        "title" : "ReservationLedgerBalanceDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerBalanceDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.reservation.dto.ReservationLedgerBalanceDto"
            },
            "title" : "List<ReservationLedgerBalanceDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ReservationLedgerBalanceDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.InternalStockMovementResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "corContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "corLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "corPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "corStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          },
          "corWarehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "documentId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "documentType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerDocumentTypeDto"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "InternalStockMovementId"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "registeredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "registeredById" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "corStatus", "corWarehouseId", "documentId", "documentType", "id", "packQuantity", "productId", "quantity", "registeredAt", "status", "warehouseId" ],
        "title" : "InternalStockMovementResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.InternalStockMovementResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.InternalStockMovementResponseDto"
            },
            "title" : "List<InternalStockMovementResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<InternalStockMovementResponseDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.TimeBasisDto" : {
        "type" : "string",
        "enum" : [ "ACCOUNTING_DATE", "REGISTRATION_DATE" ],
        "title" : "TimeBasisDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerBalanceAsOfDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "packQuantity", "productId", "status", "warehouseId" ],
        "title" : "StockLedgerBalanceAsOfDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerBalanceAsOfDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerBalanceAsOfDto"
            },
            "title" : "List<StockLedgerBalanceAsOfDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<StockLedgerBalanceAsOfDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.StockBalanceWithAvailabilityDto" : {
        "type" : "object",
        "properties" : {
          "availableQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "onHandQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "reservedQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          },
          "topContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "availableQuantity", "onHandQuantity", "productId", "reservedQuantity", "status", "updatedAt", "warehouseId" ],
        "title" : "StockBalanceWithAvailabilityDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.StockTurnoverSheetRowDto" : {
        "type" : "object",
        "properties" : {
          "closingBalance" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "externalReceipts" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "externalShipments" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "internalReceipts" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "internalShipments" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "openingBalance" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "closingBalance", "externalReceipts", "externalShipments", "internalReceipts", "internalShipments", "openingBalance", "productId", "status", "warehouseId" ],
        "title" : "StockTurnoverSheetRowDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.StockMovementDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "documentId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "documentType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockLedgerDocumentTypeDto"
          },
          "issuePackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "issueQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "receiptPackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "receiptQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "registeredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "registeredById" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "source" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockMovementSourceDto"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockStatusDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "documentId", "documentType", "issuePackQuantity", "issueQuantity", "productId", "receiptPackQuantity", "receiptQuantity", "registeredAt", "source", "status", "warehouseId" ],
        "title" : "StockMovementDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.StockMovementSourceDto" : {
        "type" : "string",
        "enum" : [ "EXTERNAL", "INTERNAL" ],
        "title" : "StockMovementSourceDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inventory.contract.stock.dto.StockMovementDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.StockMovementDto"
            },
            "title" : "List<StockMovementDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<StockMovementDto>"
      },
      "ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionFailure" : {
        "type" : "string",
        "enum" : [ "BLOCKED", "REFERENCE_MODE", "ERROR" ],
        "title" : "PackConversionFailure"
      },
      "ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionRelocationDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.RelocationId"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          }
        },
        "required" : [ "id", "number" ],
        "title" : "PackConversionRelocationDto"
      },
      "ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionStage" : {
        "type" : "string",
        "enum" : [ "READING", "WRITING", "POSTING" ],
        "title" : "PackConversionStage"
      },
      "ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionRunStatus" : {
        "type" : "string",
        "enum" : [ "IDLE", "RUNNING", "COMPLETED", "FAILED" ],
        "title" : "PackConversionRunStatus"
      },
      "ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionStatusDto" : {
        "type" : "object",
        "properties" : {
          "convertedRows" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "failure" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionFailure"
            } ]
          },
          "finishedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "initiatorName" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "initiatorUserId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "relocations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionRelocationDto"
            },
            "title" : "List<PackConversionRelocationDto>"
          },
          "runId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "stage" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionStage"
            } ]
          },
          "startedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionRunStatus"
          },
          "totalRows" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "convertedRows", "relocations", "status", "totalRows", "warehouseId" ],
        "title" : "PackConversionStatusDto"
      },
      "ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionPreviewDto" : {
        "type" : "object",
        "properties" : {
          "containers" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "locations" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "notAvailableRows" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "products" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "relocations" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "rows" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "containers", "locations", "notAvailableRows", "products", "relocations", "rows", "warehouseId" ],
        "title" : "PackConversionPreviewDto"
      },
      "ua.wwind.wms.feature.inventory.contract.packconversion.dto.PackConversionAcceptedDto" : {
        "type" : "object",
        "properties" : {
          "runId" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "runId" ],
        "title" : "PackConversionAcceptedDto"
      },
      "ua.wwind.wms.feature.party.contract.dto.PartyResponseDto" : {
        "type" : "object",
        "properties" : {
          "carrier" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "code" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "customer" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : "string",
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "owner" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "supplier" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "carrier", "customer", "deleted", "description", "id", "name", "number", "owner", "supplier", "version" ],
        "title" : "PartyResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.party.contract.dto.PartyResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.party.contract.dto.PartyResponseDto"
            },
            "title" : "List<PartyResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<PartyResponseDto>"
      },
      "ua.wwind.wms.feature.party.contract.dto.PartyTranslationDto" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "language" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "language" ],
        "title" : "PartyTranslationDto"
      },
      "ua.wwind.wms.feature.party.contract.dto.PartyResponseFullDto" : {
        "type" : "object",
        "properties" : {
          "carrier" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "code" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "customer" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : "string",
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "owner" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "supplier" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.party.contract.dto.PartyTranslationDto"
            },
            "title" : "List<PartyTranslationDto>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "carrier", "customer", "deleted", "description", "id", "name", "number", "owner", "supplier", "translations", "version" ],
        "title" : "PartyResponseFullDto"
      },
      "ua.wwind.wms.feature.party.contract.dto.PartyIncomeDto" : {
        "type" : "object",
        "properties" : {
          "carrier" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "code" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "customer" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : "string",
            "title" : "String"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "owner" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "supplier" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.party.contract.dto.PartyTranslationDto"
            },
            "title" : "List<PartyTranslationDto>"
          },
          "updateTranslations" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "carrier", "customer", "description", "name", "owner", "supplier", "translations", "updateTranslations" ],
        "title" : "PartyIncomeDto"
      },
      "ua.wwind.wms.feature.party.contract.dto.PartyLightDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "PartyLightDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowAutoConfirmation" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowOverReceiving" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "containerOwnerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "expectedArrivalDate" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.InboundOrderId"
          },
          "isCrossDock" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "operation" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.shared.dto.InboundOperationTypeDto"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "receivingContainerRequirement" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceivingContainerRequirementDto"
          },
          "returnableContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "senderContainerHandlingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.container.dto.SenderContainerHandlingModeDto"
          },
          "senderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderStatusDto"
          },
          "tolerancePercent" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "allowAutoConfirmation", "allowOverReceiving", "createdAt", "createdById", "date", "deleted", "id", "isCrossDock", "number", "operation", "receivingContainerRequirement", "returnableContainers", "senderContainerHandlingMode", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "InboundOrderHeaderResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inbound.InboundOrderId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "InboundOrderId",
        "example" : null
      },
      "ua.wwind.wms.feature.inbound.contract.shared.dto.InboundOperationTypeDto" : {
        "type" : "string",
        "enum" : [ "SUPPLIER_RECEIPT", "PRODUCTION_RECEIPT", "CUSTOMER_RETURN", "TRANSFER_IN", "ADJUSTMENT_IN", "SHIPMENT_CANCELLATION" ],
        "title" : "InboundOperationTypeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceivingContainerRequirementDto" : {
        "type" : "string",
        "enum" : [ "NONE", "OPTIONAL_SENDER_ONLY", "REQUIRED" ],
        "title" : "ReceivingContainerRequirementDto"
      },
      "ua.wwind.wms.feature.inbound.contract.container.dto.SenderContainerHandlingModeDto" : {
        "type" : "string",
        "enum" : [ "ACCEPT_FOR_STORAGE", "ACCEPT_FOR_PUTAWAY", "REFERENCE_ONLY", "NOT_USED" ],
        "title" : "SenderContainerHandlingModeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "CONFIRMED", "IN_PROGRESS", "PARTIALLY_RECEIVED", "FULLY_RECEIVED", "CANCELLED", "CLOSED" ],
        "title" : "InboundOrderStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderHeaderResponseDto"
            },
            "title" : "List<InboundOrderHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<InboundOrderHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderContainerResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerCode" : {
            "type" : "string",
            "title" : "String"
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "containerTypeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "packagingId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "packagingOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "parentContainerCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "returnable" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          }
        },
        "required" : [ "containerCode", "containerId", "containerTypeId", "lineNumber" ],
        "title" : "InboundOrderContainerResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "lineNumber", "packQuantity", "productId", "quantity" ],
        "title" : "InboundOrderLineResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowAutoConfirmation" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowOverReceiving" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "containerOwnerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "containers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderContainerResponseDto"
            },
            "title" : "List<InboundOrderContainerResponseDto>"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "expectedArrivalDate" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.InboundOrderId"
          },
          "isCrossDock" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLineResponseDto"
            },
            "title" : "List<InboundOrderLineResponseDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "operation" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.shared.dto.InboundOperationTypeDto"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "receivingContainerRequirement" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceivingContainerRequirementDto"
          },
          "returnableContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "senderContainerHandlingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.container.dto.SenderContainerHandlingModeDto"
          },
          "senderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderStatusDto"
          },
          "tolerancePercent" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "allowAutoConfirmation", "allowOverReceiving", "containers", "createdAt", "createdById", "date", "deleted", "id", "isCrossDock", "lines", "number", "operation", "receivingContainerRequirement", "returnableContainers", "senderContainerHandlingMode", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "InboundOrderResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderContainerDto" : {
        "type" : "object",
        "properties" : {
          "containerCode" : {
            "type" : "string",
            "title" : "String"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "containerTypeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "packagingId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          },
          "packagingOwnerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "parentContainerCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "returnable" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          }
        },
        "required" : [ "containerCode", "containerTypeId", "lineNumber" ],
        "title" : "InboundOrderContainerDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLineDto" : {
        "type" : "object",
        "properties" : {
          "containerCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "lineNumber", "packQuantity", "productId", "quantity" ],
        "title" : "InboundOrderLineDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderIncomeDto" : {
        "type" : "object",
        "properties" : {
          "allowAutoConfirmation" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowOverReceiving" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "containerOwnerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "containers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderContainerDto"
            },
            "title" : "List<InboundOrderContainerDto>"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "expectedArrivalDate" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.InboundOrderId"
            } ]
          },
          "isCrossDock" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLineDto"
            },
            "title" : "List<InboundOrderLineDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "operation" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.shared.dto.InboundOperationTypeDto"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "receivingContainerRequirement" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceivingContainerRequirementDto"
          },
          "returnableContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "senderContainerHandlingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.container.dto.SenderContainerHandlingModeDto"
          },
          "senderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderStatusDto"
          },
          "tolerancePercent" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "allowAutoConfirmation", "allowOverReceiving", "containers", "date", "isCrossDock", "lines", "operation", "receivingContainerRequirement", "returnableContainers", "senderContainerHandlingMode", "status", "warehouseId" ],
        "title" : "InboundOrderIncomeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.InboundOrderId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "InboundOrderLightDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLedgerEntryResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "entryType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLedgerEntryTypeDto"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "inboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.InboundOrderId"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "receiptId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.ReceiptId"
            } ]
          },
          "registeredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "registeredById" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "toCreateReceipts" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "toReceive" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "accountingDate", "entryType", "id", "inboundOrderId", "productId", "registeredAt", "toCreateReceipts", "toReceive" ],
        "title" : "InboundOrderLedgerEntryResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLedgerEntryTypeDto" : {
        "type" : "string",
        "enum" : [ "ORDER", "RECEIPT", "FACT" ],
        "title" : "InboundOrderLedgerEntryTypeDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inbound.ReceiptId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ReceiptId",
        "example" : null
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLedgerEntryResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLedgerEntryResponseDto"
            },
            "title" : "List<InboundOrderLedgerEntryResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<InboundOrderLedgerEntryResponseDto>"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowAutoConfirmation" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowOverReceiving" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "barcode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "containerOwnerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.ReceiptId"
          },
          "inboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.InboundOrderId"
            } ]
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "operation" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.shared.dto.InboundOperationTypeDto"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "qcRequired" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "receivingContainerRequirement" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceivingContainerRequirementDto"
          },
          "receivingZoneId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "returnableContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "senderContainerHandlingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.container.dto.SenderContainerHandlingModeDto"
          },
          "senderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "singleLine" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "sourceOutboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptStatusDto"
          },
          "tolerancePercent" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "linesCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "linesLeft" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "singleLineSubject" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptSingleLineSubjectDto"
            } ]
          }
        },
        "required" : [ "allowAutoConfirmation", "allowOverReceiving", "createdAt", "createdById", "deleted", "id", "linesCount", "linesLeft", "number", "operation", "qcRequired", "receivingContainerRequirement", "receivingZoneId", "returnableContainers", "senderContainerHandlingMode", "singleLine", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "ReceiptHeaderResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "TO_RECEIVE", "RECEIVED", "CANCELLED" ],
        "title" : "ReceiptStatusDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptSingleLineSubjectDto" : {
        "anyOf" : [ {
          "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptSingleLineSubjectDto.Container"
        }, {
          "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptSingleLineSubjectDto.Line"
        } ],
        "title" : "ReceiptSingleLineSubjectDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptSingleLineSubjectDto.Container" : {
        "type" : "object",
        "properties" : {
          "container" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptContainerResponseDto"
          },
          "productCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "container", "productCount" ],
        "title" : "ReceiptSingleLineSubjectDto.Container"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptContainerResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "parentContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          }
        },
        "required" : [ "containerId", "lineNumber" ],
        "title" : "ReceiptContainerResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptSingleLineSubjectDto.Line" : {
        "type" : "object",
        "properties" : {
          "line" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLineResponseDto"
          }
        },
        "required" : [ "line" ],
        "title" : "ReceiptSingleLineSubjectDto.Line"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "lineNumber", "packQuantity", "productId", "quantity" ],
        "title" : "ReceiptLineResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptHeaderResponseDto"
            },
            "title" : "List<ReceiptHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ReceiptHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptContainerFactResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "deliveredByPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "releasedDebtorPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "returnable" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "reversalOfFactId" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "reversalReason" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "accountingDate", "containerId", "id", "returnable" ],
        "title" : "ReceiptContainerFactResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLineExecutionResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "facts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptFactResponseDto"
            },
            "title" : "List<ReceiptFactResponseDto>"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLineResponseDto"
            },
            "title" : "List<ReceiptLineResponseDto>"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantityExecuted" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packQuantityPlan" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantityExecuted" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityPlan" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          }
        },
        "required" : [ "facts", "lineNumber", "lines", "packQuantityExecuted", "packQuantityPlan", "productId", "quantityExecuted", "quantityPlan" ],
        "title" : "ReceiptLineExecutionResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptFactResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ReceiptFactId"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "receivedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "receivedById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "referencePack" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptEndpointTypeDto"
          }
        },
        "required" : [ "accountingDate", "id", "packQuantity", "productId", "quantity", "receivedAt", "receivedById", "referencePack", "targetType" ],
        "title" : "ReceiptFactResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptEndpointTypeDto" : {
        "type" : "string",
        "enum" : [ "LOCATION", "CONTAINER" ],
        "title" : "ReceiptEndpointTypeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.policy.dto.WarehouseReceivingPolicyResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowUnknownBarcodeRegistration" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "assignExecutorRequired" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "defaultReceivingContainerRequirement" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceivingContainerRequirementDto"
          },
          "defaultReceivingZoneId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "putawayBufferContainerTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
            } ]
          },
          "putawayOnReceiving" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "qcRequiredByDefault" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "temporaryContainersEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "allowUnknownBarcodeRegistration", "assignExecutorRequired", "defaultReceivingContainerRequirement", "putawayOnReceiving", "qcRequiredByDefault", "temporaryContainersEnabled", "warehouseId" ],
        "title" : "WarehouseReceivingPolicyResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptFullResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowAutoConfirmation" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowOverReceiving" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "barcode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "containerOwnerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.ReceiptId"
          },
          "inboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.InboundOrderId"
            } ]
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "operation" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.shared.dto.InboundOperationTypeDto"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "qcRequired" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "receivingContainerRequirement" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceivingContainerRequirementDto"
          },
          "receivingZoneId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "returnableContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "senderContainerHandlingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.container.dto.SenderContainerHandlingModeDto"
          },
          "senderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "singleLine" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "sourceOutboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptStatusDto"
          },
          "tolerancePercent" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "completedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "containerFacts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptContainerFactResponseDto"
            },
            "title" : "List<ReceiptContainerFactResponseDto>"
          },
          "containers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptContainerResponseDto"
            },
            "title" : "List<ReceiptContainerResponseDto>"
          },
          "executions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLineExecutionResponseDto"
            },
            "title" : "List<ReceiptLineExecutionResponseDto>"
          },
          "linesCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "linesLeft" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "startedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "warehousePolicy" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.policy.dto.WarehouseReceivingPolicyResponseDto"
          }
        },
        "required" : [ "allowAutoConfirmation", "allowOverReceiving", "containerFacts", "containers", "createdAt", "createdById", "deleted", "executions", "id", "linesCount", "linesLeft", "number", "operation", "qcRequired", "receivingContainerRequirement", "receivingZoneId", "returnableContainers", "senderContainerHandlingMode", "singleLine", "status", "updatedAt", "version", "warehouseId", "warehousePolicy" ],
        "title" : "ReceiptFullResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.PendingInboundOrderResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowOverReceiving" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "expectedArrivalDate" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.InboundOrderId"
          },
          "isCrossDock" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "operation" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.shared.dto.InboundOperationTypeDto"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "receivingContainerRequirement" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceivingContainerRequirementDto"
          },
          "receivingStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceivingStatusDto"
          },
          "senderContainerHandlingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.container.dto.SenderContainerHandlingModeDto"
          },
          "senderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderStatusDto"
          },
          "tolerancePercent" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "allowOverReceiving", "createdAt", "createdById", "date", "deleted", "id", "isCrossDock", "number", "operation", "receivingContainerRequirement", "receivingStatus", "senderContainerHandlingMode", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "PendingInboundOrderResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceivingStatusDto" : {
        "type" : "string",
        "enum" : [ "RECEIVING_IN_PROGRESS", "AWAITING_RECEIPT" ],
        "title" : "ReceivingStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.inboundorder.dto.PendingInboundOrderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.PendingInboundOrderResponseDto"
            },
            "title" : "List<PendingInboundOrderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<PendingInboundOrderResponseDto>"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptBarcodeLookupRequestDto" : {
        "type" : "object",
        "properties" : {
          "barcode" : {
            "type" : "string",
            "title" : "String"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "barcode", "warehouseId" ],
        "title" : "ReceiptBarcodeLookupRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptBarcodeLookupResultDto" : {
        "type" : "object",
        "properties" : {
          "receipts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptHeaderResponseDto"
            },
            "title" : "List<ReceiptHeaderResponseDto>"
          }
        },
        "required" : [ "receipts" ],
        "title" : "ReceiptBarcodeLookupResultDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderLedgerSummaryResponseDto" : {
        "type" : "object",
        "properties" : {
          "allocatedToReceipts" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "expectedQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "receivedQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "remainingToCreateReceipts" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "remainingToReceive" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "allocatedToReceipts", "expectedQuantity", "productId", "receivedQuantity", "remainingToCreateReceipts", "remainingToReceive" ],
        "title" : "InboundOrderLedgerSummaryResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptContainerIncomeDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "parentContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          }
        },
        "required" : [ "containerId", "lineNumber" ],
        "title" : "ReceiptContainerIncomeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLineIncomeDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "lineNumber", "packQuantity", "productId", "quantity" ],
        "title" : "ReceiptLineIncomeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptIncomeDto" : {
        "type" : "object",
        "properties" : {
          "allowAutoConfirmation" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowOverReceiving" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "barcode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "containerOwnerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "containers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptContainerIncomeDto"
            },
            "title" : "List<ReceiptContainerIncomeDto>"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.ReceiptId"
            } ]
          },
          "inboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.InboundOrderId"
            } ]
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLineIncomeDto"
            },
            "title" : "List<ReceiptLineIncomeDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "operation" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.shared.dto.InboundOperationTypeDto"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "qcRequired" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "receivingContainerRequirement" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceivingContainerRequirementDto"
          },
          "receivingZoneId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "returnableContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "senderContainerHandlingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.container.dto.SenderContainerHandlingModeDto"
          },
          "senderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "singleLine" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "sourceOutboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "tolerancePercent" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "version" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "allowAutoConfirmation", "allowOverReceiving", "containers", "date", "lines", "operation", "qcRequired", "receivingContainerRequirement", "receivingZoneId", "returnableContainers", "senderContainerHandlingMode", "singleLine", "warehouseId" ],
        "title" : "ReceiptIncomeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptFactIncomeDto" : {
        "type" : "object",
        "properties" : {
          "acceptShortShelfLife" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "receiptId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.ReceiptId"
          },
          "receivedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptEndpointTypeDto"
          }
        },
        "required" : [ "acceptShortShelfLife", "accountingDate", "packQuantity", "productId", "quantity", "receiptId", "receivedAt", "targetType" ],
        "title" : "ReceiptFactIncomeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptWithFactIdDto" : {
        "type" : "object",
        "properties" : {
          "factId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ReceiptFactId"
          },
          "receipt" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptFullResponseDto"
          }
        },
        "required" : [ "factId", "receipt" ],
        "title" : "ReceiptWithFactIdDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.RegisterContainerForReceiptRequestDto" : {
        "type" : "object",
        "properties" : {
          "barcode" : {
            "type" : "string",
            "title" : "String"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "containerTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
            } ]
          },
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "performedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "receiptId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.ReceiptId"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "barcode", "locationId", "performedAt", "receiptId", "warehouseId" ],
        "title" : "RegisterContainerForReceiptRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptContainerCustodyHintDto" : {
        "type" : "object",
        "properties" : {
          "closesDebtOfPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "ownerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "returnable" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "returnable" ],
        "title" : "ReceiptContainerCustodyHintDto"
      },
      "ua.wwind.wms.feature.inbound.contract.container.dto.RegisterContainerForReceiptResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "containerTypeChoice" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
            },
            "title" : "List<IdNamePreviewDto>"
          },
          "isNewlyCreated" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "returnableContainer" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptContainerCustodyHintDto"
            } ]
          }
        },
        "required" : [ "containerTypeChoice", "isNewlyCreated" ],
        "title" : "RegisterContainerForReceiptResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.AcceptSenderContainerRequestDto" : {
        "type" : "object",
        "properties" : {
          "acceptShortShelfLife" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "receiptId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.ReceiptId"
          },
          "senderContainerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "acceptShortShelfLife", "accountingDate", "locationId", "receiptId", "senderContainerId", "warehouseId" ],
        "title" : "AcceptSenderContainerRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.AcceptSenderContainerResponseDto" : {
        "type" : "object",
        "properties" : {
          "createdFactIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int64",
              "title" : "ReceiptFactId"
            },
            "title" : "List<ReceiptFactId>"
          },
          "receipt" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptFullResponseDto"
          },
          "returnableContainer" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptContainerCustodyHintDto"
            } ]
          }
        },
        "required" : [ "createdFactIds", "receipt" ],
        "title" : "AcceptSenderContainerResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.CloseContainerRequestDto" : {
        "type" : "object",
        "properties" : {
          "closedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          }
        },
        "required" : [ "closedAt", "containerId" ],
        "title" : "CloseContainerRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReverseContainerFactRequestDto" : {
        "type" : "object",
        "properties" : {
          "factId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "reason" : {
            "type" : "string",
            "title" : "String"
          },
          "receiptId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.ReceiptId"
          }
        },
        "required" : [ "factId", "reason", "receiptId" ],
        "title" : "ReverseContainerFactRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderProductKeyRequestDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        },
        "required" : [ "productId" ],
        "title" : "InboundOrderProductKeyRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptNewRequestDto" : {
        "type" : "object",
        "properties" : {
          "inboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.InboundOrderId"
            } ]
          },
          "outboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "productKeys" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.inboundorder.dto.InboundOrderProductKeyRequestDto"
            },
            "title" : "List<InboundOrderProductKeyRequestDto>"
          },
          "warehouseId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          }
        },
        "title" : "ReceiptNewRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptNewResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowAutoConfirmation" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowOverReceiving" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "containerOwnerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "containers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptContainerResponseDto"
            },
            "title" : "List<ReceiptContainerResponseDto>"
          },
          "date" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "executions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLineExecutionResponseDto"
            },
            "title" : "List<ReceiptLineExecutionResponseDto>"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "inboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.InboundOrderId"
            } ]
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "operation" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.shared.dto.InboundOperationTypeDto"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "qcRequired" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "receivingContainerRequirement" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceivingContainerRequirementDto"
          },
          "receivingZoneId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "returnableContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "senderContainerHandlingMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.container.dto.SenderContainerHandlingModeDto"
          },
          "senderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "sourceOutboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptStatusDto"
          },
          "tolerancePercent" : {
            "type" : [ "null", "number" ],
            "format" : "double",
            "title" : "Double"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "allowAutoConfirmation", "allowOverReceiving", "containers", "executions", "operation", "qcRequired", "receivingContainerRequirement", "returnableContainers", "senderContainerHandlingMode", "status", "warehouseId" ],
        "title" : "ReceiptNewResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ChangeReceiptStatusRequestDto" : {
        "type" : "object",
        "properties" : {
          "targetStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptStatusDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "targetStatus", "version" ],
        "title" : "ChangeReceiptStatusRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.ReceiptId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "ReceiptLightDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLotRequirementRequestDto" : {
        "type" : "object",
        "properties" : {
          "productCategoryId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "productCategoryId", "warehouseId" ],
        "title" : "ReceiptLotRequirementRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLotInputModeDto" : {
        "type" : "string",
        "enum" : [ "NOT_TRACKED", "POLICY_MISSING", "NOT_ON_INBOUND", "REQUIRED" ],
        "title" : "ReceiptLotInputModeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLotRequirementResponseDto" : {
        "type" : "object",
        "properties" : {
          "inputMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.receipt.dto.ReceiptLotInputModeDto"
          },
          "minRemainingShelfLifeDaysOnReceipt" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "inputMode" ],
        "title" : "ReceiptLotRequirementResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "bufferContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "carrierId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.CarrierId"
            } ]
          },
          "completedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.PutawayId"
          },
          "linesCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "linesLeft" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayEndpointTypeDto"
          },
          "startedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "createdAt", "createdById", "date", "deleted", "id", "linesCount", "linesLeft", "number", "sourceType", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "PutawayHeaderResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inbound.PutawayId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "PutawayId",
        "example" : null
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayEndpointTypeDto" : {
        "type" : "string",
        "enum" : [ "LOCATION", "CONTAINER" ],
        "title" : "PutawayEndpointTypeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayStatusDto" : {
        "type" : "string",
        "enum" : [ "PLANNED", "IN_PROGRESS", "COMPLETED", "CLOSED_PARTIALLY_COMPLETED", "CANCELLED" ],
        "title" : "PutawayStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayHeaderResponseDto"
            },
            "title" : "List<PutawayHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<PutawayHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayLineExecutionResponseDto" : {
        "type" : "object",
        "properties" : {
          "facts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayFactResponseDto"
            },
            "title" : "List<PutawayFactResponseDto>"
          },
          "instructionPackQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "instructionPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayLineResponseDto"
            },
            "title" : "List<PutawayLineResponseDto>"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantityExecuted" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packQuantityPlan" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          }
        },
        "required" : [ "facts", "lineNumber", "lines", "packQuantityExecuted", "packQuantityPlan", "productId" ],
        "title" : "PutawayLineExecutionResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayFactResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "executedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "executedById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "PutawayFactId"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "referencePack" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayEndpointTypeDto"
          }
        },
        "required" : [ "accountingDate", "executedAt", "executedById", "id", "packQuantity", "productId", "quantity", "referencePack", "targetType" ],
        "title" : "PutawayFactResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "instructionPackQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "instructionPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayEndpointTypeDto"
          }
        },
        "required" : [ "lineNumber", "packQuantity", "productId", "targetType" ],
        "title" : "PutawayLineResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayFullResponseDto" : {
        "type" : "object",
        "properties" : {
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "bufferContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "carrierId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.CarrierId"
            } ]
          },
          "completedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "executions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayLineExecutionResponseDto"
            },
            "title" : "List<PutawayLineExecutionResponseDto>"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.PutawayId"
          },
          "linesCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "linesLeft" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayEndpointTypeDto"
          },
          "startedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "warehousePolicy" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.policy.dto.WarehouseReceivingPolicyResponseDto"
          }
        },
        "required" : [ "createdAt", "createdById", "date", "deleted", "executions", "id", "linesCount", "linesLeft", "number", "sourceType", "status", "updatedAt", "version", "warehouseId", "warehousePolicy" ],
        "title" : "PutawayFullResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawaySourcesRequestDto" : {
        "type" : "object",
        "properties" : {
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "locationId", "warehouseId" ],
        "title" : "PutawaySourcesRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawaySourceContainerDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawaySourceItemDto"
            },
            "title" : "List<PutawaySourceItemDto>"
          }
        },
        "required" : [ "containerId", "items" ],
        "title" : "PutawaySourceContainerDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawaySourceItemDto" : {
        "type" : "object",
        "properties" : {
          "availableQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "reservedQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "totalQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "availableQuantity", "productId", "reservedQuantity", "totalQuantity" ],
        "title" : "PutawaySourceItemDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawaySourcesResponseDto" : {
        "type" : "object",
        "properties" : {
          "containers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawaySourceContainerDto"
            },
            "title" : "List<PutawaySourceContainerDto>"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawaySourceItemDto"
            },
            "title" : "List<PutawaySourceItemDto>"
          }
        },
        "required" : [ "containers", "items" ],
        "title" : "PutawaySourcesResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayPlanItemRequestDto" : {
        "type" : "object",
        "properties" : {
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          }
        },
        "required" : [ "productId" ],
        "title" : "PutawayPlanItemRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayLocationPreviewRequestDto" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayPlanItemRequestDto"
            },
            "title" : "List<PutawayPlanItemRequestDto>"
          },
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "items", "locationId", "warehouseId" ],
        "title" : "PutawayLocationPreviewRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayPreviewIdDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "id" ],
        "title" : "PutawayPreviewIdDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayContainerPreviewRequestDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "containerId", "locationId", "warehouseId" ],
        "title" : "PutawayContainerPreviewRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayPlanPreviewResponseDto" : {
        "type" : "object",
        "properties" : {
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "executions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayLineExecutionResponseDto"
            },
            "title" : "List<PutawayLineExecutionResponseDto>"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayEndpointTypeDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "date", "executions", "sourceType", "warehouseId" ],
        "title" : "PutawayPlanPreviewResponseDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayLineIncomeDto" : {
        "type" : "object",
        "properties" : {
          "instructionPackQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "instructionPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayEndpointTypeDto"
          }
        },
        "required" : [ "lineNumber", "packQuantity", "productId", "targetType" ],
        "title" : "PutawayLineIncomeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayIncomeDto" : {
        "type" : "object",
        "properties" : {
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.PutawayId"
            } ]
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayLineIncomeDto"
            },
            "title" : "List<PutawayLineIncomeDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayEndpointTypeDto"
          },
          "version" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "date", "lines", "sourceType", "warehouseId" ],
        "title" : "PutawayIncomeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayFactIncomeDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "executedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "putawayId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.PutawayId"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "targetLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "targetType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayEndpointTypeDto"
          }
        },
        "required" : [ "accountingDate", "executedAt", "packQuantity", "productId", "putawayId", "targetType" ],
        "title" : "PutawayFactIncomeDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayWithFactIdDto" : {
        "type" : "object",
        "properties" : {
          "factId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "PutawayFactId"
          },
          "putaway" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayFullResponseDto"
          }
        },
        "required" : [ "factId", "putaway" ],
        "title" : "PutawayWithFactIdDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.SetCarrierRequestDto" : {
        "type" : "object",
        "properties" : {
          "carrierId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.CarrierId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "carrierId", "version" ],
        "title" : "SetCarrierRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.ChangePutawayStatusRequestDto" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayStatusDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "status", "version" ],
        "title" : "ChangePutawayStatusRequestDto"
      },
      "ua.wwind.wms.feature.inbound.contract.putaway.dto.PutawayLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inbound.PutawayId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "PutawayLightDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "createdAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "createdById" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "deduplicationMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.DeduplicationModeDto"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.integrations.ExternalSystemId"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownershipConflictPolicy" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.OwnershipConflictPolicyDto"
          },
          "technicalUserId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "updatedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "updatedById" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "code", "deduplicationMode", "deleted", "enabled", "name", "number", "ownershipConflictPolicy", "version" ],
        "title" : "ExternalSystemHeaderResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalsystem.dto.DeduplicationModeDto" : {
        "type" : "string",
        "enum" : [ "STRICT", "RELAXED" ],
        "title" : "DeduplicationModeDto"
      },
      "ua.wwind.wms.core.shared.idtypes.integrations.ExternalSystemId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ExternalSystemId",
        "example" : null
      },
      "ua.wwind.wms.feature.integration.contract.externalsystem.dto.OwnershipConflictPolicyDto" : {
        "type" : "string",
        "enum" : [ "STRICT", "RELAXED" ],
        "title" : "OwnershipConflictPolicyDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemHeaderResponseDto"
            },
            "title" : "List<ExternalSystemHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ExternalSystemHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationCapabilityDto" : {
        "type" : "string",
        "enum" : [ "REFERENCE_IMPORT", "DOCUMENT_IMPORT", "CHANGE_FEED_READ", "WEBHOOK_DELIVERY" ],
        "title" : "IntegrationCapabilityDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemFullResponseDto" : {
        "type" : "object",
        "properties" : {
          "capabilities" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationCapabilityDto"
            },
            "title" : "Set<IntegrationCapabilityDto>",
            "uniqueItems" : true
          },
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "deduplicationMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.DeduplicationModeDto"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "globalWarehouseAccess" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.integrations.ExternalSystemId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownershipConflictPolicy" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.OwnershipConflictPolicyDto"
          },
          "technicalUserId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "updatedById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseScope" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            },
            "title" : "Set<WarehouseId>",
            "uniqueItems" : true
          }
        },
        "required" : [ "capabilities", "code", "createdAt", "createdById", "deduplicationMode", "deleted", "enabled", "globalWarehouseAccess", "id", "name", "number", "ownershipConflictPolicy", "updatedAt", "updatedById", "version", "warehouseScope" ],
        "title" : "ExternalSystemFullResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalsystem.dto.CreateExternalSystemIncomeDto" : {
        "type" : "object",
        "properties" : {
          "capabilities" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationCapabilityDto"
            },
            "title" : "Set<IntegrationCapabilityDto>",
            "uniqueItems" : true
          },
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "deduplicationMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.DeduplicationModeDto"
          },
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "globalWarehouseAccess" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "ownershipConflictPolicy" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.OwnershipConflictPolicyDto"
          },
          "technicalUserId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "warehouseScope" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            },
            "title" : "Set<WarehouseId>",
            "uniqueItems" : true
          }
        },
        "required" : [ "capabilities", "code", "deduplicationMode", "enabled", "globalWarehouseAccess", "name", "ownershipConflictPolicy", "warehouseScope" ],
        "title" : "CreateExternalSystemIncomeDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalsystem.dto.UpdateExternalSystemIncomeDto" : {
        "type" : "object",
        "properties" : {
          "capabilities" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationCapabilityDto"
            },
            "title" : "Set<IntegrationCapabilityDto>",
            "uniqueItems" : true
          },
          "deduplicationMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.DeduplicationModeDto"
          },
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "globalWarehouseAccess" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "ownershipConflictPolicy" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.OwnershipConflictPolicyDto"
          },
          "technicalUserId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseScope" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            },
            "title" : "Set<WarehouseId>",
            "uniqueItems" : true
          }
        },
        "required" : [ "capabilities", "deduplicationMode", "enabled", "globalWarehouseAccess", "name", "ownershipConflictPolicy", "version", "warehouseScope" ],
        "title" : "UpdateExternalSystemIncomeDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalsystem.dto.ExternalSystemLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.integrations.ExternalSystemId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "ExternalSystemLightDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceResponseDto" : {
        "type" : "object",
        "properties" : {
          "entityType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationEntityTypeDto"
          },
          "externalEntityId" : {
            "type" : "string",
            "title" : "String"
          },
          "externalRepresentation" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalSystemId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.integrations.ExternalSystemId"
          },
          "hasConflict" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ExternalReferenceId"
          },
          "internalEntityId" : {
            "type" : "string",
            "title" : "String"
          },
          "isOwner" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "isPrimary" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "entityType", "externalEntityId", "externalSystemId", "hasConflict", "id", "internalEntityId", "isOwner", "isPrimary", "version" ],
        "title" : "ExternalReferenceResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationEntityTypeDto" : {
        "type" : "string",
        "enum" : [ "WAREHOUSE", "PARTY", "PRODUCT", "PRODUCT_SET", "PRODUCT_FEATURE", "PRODUCT_CATEGORY", "PRODUCT_HANDLING_GROUP", "ATTRIBUTE", "UNIT_OF_MEASURE", "PACK_TYPE", "PACK_TYPE_SET", "PACK_TYPE_HANDLING_GROUP", "LOCATION", "CONTAINER_TYPE", "CONTAINER", "LOT_TRACKING_POLICY", "LOT", "BARCODE", "INBOUND_ORDER", "RECEIPT", "INVENTORY_COUNT", "OUTBOUND_ORDER", "OPENING_BALANCE", "UNPLANNED_PICKING", "DISPATCH", "RETURNABLE_CONTAINER_OPENING_BALANCE", "CONTAINER_DEBT_SETTLEMENT" ],
        "title" : "IntegrationEntityTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceResponseDto"
            },
            "title" : "List<ExternalReferenceResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ExternalReferenceResponseDto>"
      },
      "ua.wwind.wms.feature.integration.contract.externalreference.dto.MarkExternalReferenceSecondaryRequestDto" : {
        "type" : "object",
        "properties" : {
          "externalReferenceId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ExternalReferenceId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "externalReferenceId", "version" ],
        "title" : "MarkExternalReferenceSecondaryRequestDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceVersionDto" : {
        "type" : "object",
        "properties" : {
          "externalReferenceId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ExternalReferenceId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "externalReferenceId", "version" ],
        "title" : "ExternalReferenceVersionDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalreference.dto.SetExternalReferencePrimaryBatchRequestDto" : {
        "type" : "object",
        "properties" : {
          "primaryExternalReferenceId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ExternalReferenceId"
          },
          "references" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceVersionDto"
            },
            "title" : "List<ExternalReferenceVersionDto>"
          }
        },
        "required" : [ "primaryExternalReferenceId", "references" ],
        "title" : "SetExternalReferencePrimaryBatchRequestDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalreference.dto.RebindExternalReferenceRequestDto" : {
        "type" : "object",
        "properties" : {
          "externalReferenceId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ExternalReferenceId"
          },
          "targetInternalEntityId" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "externalReferenceId", "targetInternalEntityId", "version" ],
        "title" : "RebindExternalReferenceRequestDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalreference.dto.TransferExternalReferenceOwnershipRequestDto" : {
        "type" : "object",
        "properties" : {
          "currentOwnerExternalReferenceId" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "ExternalReferenceId"
          },
          "references" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceVersionDto"
            },
            "title" : "List<ExternalReferenceVersionDto>"
          },
          "targetOwnerExternalReferenceId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ExternalReferenceId"
          }
        },
        "required" : [ "references", "targetOwnerExternalReferenceId" ],
        "title" : "TransferExternalReferenceOwnershipRequestDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalreference.dto.TransferExternalReferenceOwnershipResponseDto" : {
        "type" : "object",
        "properties" : {
          "references" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.ExternalReferenceResponseDto"
            },
            "title" : "List<ExternalReferenceResponseDto>"
          }
        },
        "required" : [ "references" ],
        "title" : "TransferExternalReferenceOwnershipResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalreference.dto.RegisterExternalReferenceBatchItemDto" : {
        "type" : "object",
        "properties" : {
          "entityType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationEntityTypeDto"
          },
          "externalEntityId" : {
            "type" : "string",
            "title" : "String"
          },
          "externalRepresentation" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "internalEntityId" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "entityType", "externalEntityId", "internalEntityId" ],
        "title" : "RegisterExternalReferenceBatchItemDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalreference.dto.RegisterExternalReferenceBatchRequestDto" : {
        "type" : "object",
        "properties" : {
          "externalSystemCode" : {
            "type" : "string",
            "title" : "String"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.RegisterExternalReferenceBatchItemDto"
            },
            "title" : "List<RegisterExternalReferenceBatchItemDto>"
          }
        },
        "required" : [ "externalSystemCode", "items" ],
        "title" : "RegisterExternalReferenceBatchRequestDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalreference.dto.RegisterExternalReferenceBatchItemResultDto" : {
        "type" : "object",
        "properties" : {
          "errors" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.importing.dto.ImportItemErrorDto"
            },
            "title" : "List<ImportItemErrorDto>"
          },
          "externalReferenceId" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "ExternalReferenceId"
          },
          "itemIndex" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.RegisterExternalReferenceBatchItemStatusDto"
          }
        },
        "required" : [ "errors", "itemIndex", "status" ],
        "title" : "RegisterExternalReferenceBatchItemResultDto"
      },
      "ua.wwind.wms.feature.integration.contract.importing.dto.ImportItemErrorDto" : {
        "type" : "object",
        "properties" : {
          "message" : {
            "type" : "string",
            "title" : "String"
          },
          "path" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "message", "path" ],
        "title" : "ImportItemErrorDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalreference.dto.RegisterExternalReferenceBatchItemStatusDto" : {
        "type" : "string",
        "enum" : [ "REGISTERED", "SKIPPED" ],
        "title" : "RegisterExternalReferenceBatchItemStatusDto"
      },
      "ua.wwind.wms.feature.integration.contract.externalreference.dto.RegisterExternalReferenceBatchResponseDto" : {
        "type" : "object",
        "properties" : {
          "externalSystemId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.integrations.ExternalSystemId"
          },
          "processed" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "processedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "registered" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "results" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalreference.dto.RegisterExternalReferenceBatchItemResultDto"
            },
            "title" : "List<RegisterExternalReferenceBatchItemResultDto>"
          },
          "skipped" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "externalSystemId", "processed", "processedAt", "registered", "results", "skipped" ],
        "title" : "RegisterExternalReferenceBatchResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.importing.dto.ImportItemDto" : {
        "type" : "object",
        "properties" : {
          "entityType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationEntityTypeDto"
          },
          "importMode" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.importing.dto.ImportModeDto"
            } ]
          },
          "payload" : {
            "type" : "object",
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "JsonObject"
          }
        },
        "required" : [ "entityType", "payload" ],
        "title" : "ImportItemDto"
      },
      "ua.wwind.wms.feature.integration.contract.importing.dto.ImportModeDto" : {
        "type" : "string",
        "enum" : [ "CREATE_ONLY", "UPSERT", "MATCH_ONLY", "ENRICHMENT", "DELETE" ],
        "title" : "ImportModeDto"
      },
      "ua.wwind.wms.feature.integration.contract.importing.dto.ImportRequestDto" : {
        "type" : "object",
        "properties" : {
          "externalSystemCode" : {
            "type" : "string",
            "title" : "String"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.importing.dto.ImportItemDto"
            },
            "title" : "List<ImportItemDto>"
          }
        },
        "required" : [ "externalSystemCode", "items" ],
        "title" : "ImportRequestDto"
      },
      "ua.wwind.wms.feature.integration.contract.importing.dto.ImportItemResultDto" : {
        "type" : "object",
        "properties" : {
          "entityType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationEntityTypeDto"
          },
          "errors" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.importing.dto.ImportItemErrorDto"
            },
            "title" : "List<ImportItemErrorDto>"
          },
          "internalEntityId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "itemIndex" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.importing.dto.ImportItemStatusDto"
          }
        },
        "required" : [ "entityType", "errors", "itemIndex", "status" ],
        "title" : "ImportItemResultDto"
      },
      "ua.wwind.wms.feature.integration.contract.importing.dto.ImportItemStatusDto" : {
        "type" : "string",
        "enum" : [ "CREATED", "UPDATED", "SKIPPED", "DELETED", "RESTORED" ],
        "title" : "ImportItemStatusDto"
      },
      "ua.wwind.wms.feature.integration.contract.importing.dto.ImportCountsDto" : {
        "type" : "object",
        "properties" : {
          "created" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "deleted" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "restored" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "skipped" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "updated" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "created", "deleted", "restored", "skipped", "updated" ],
        "title" : "ImportCountsDto"
      },
      "ua.wwind.wms.feature.integration.contract.importing.dto.ImportResponseDto" : {
        "type" : "object",
        "properties" : {
          "externalSystemId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.integrations.ExternalSystemId"
          },
          "processedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "results" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.importing.dto.ImportItemResultDto"
            },
            "title" : "List<ImportItemResultDto>"
          },
          "summary" : {
            "type" : "object",
            "additionalProperties" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.importing.dto.ImportCountsDto"
            },
            "title" : "Map<IntegrationEntityTypeDto,ImportCountsDto>"
          }
        },
        "required" : [ "externalSystemId", "processedAt", "results", "summary" ],
        "title" : "ImportResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.changefeed.dto.OutboundChangeFeedEventResponseDto" : {
        "type" : "object",
        "properties" : {
          "event" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.changefeed.dto.ChangeFeedEventResponseDto"
          },
          "payload" : {
            "type" : "object",
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "JsonObject"
          }
        },
        "required" : [ "event", "payload" ],
        "title" : "OutboundChangeFeedEventResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.changefeed.dto.ChangeFeedEventResponseDto" : {
        "type" : "object",
        "properties" : {
          "entityType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationEntityTypeDto"
          },
          "entityVersion" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "eventId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ChangeFeedEventId"
          },
          "internalEntityId" : {
            "type" : "string",
            "title" : "String"
          },
          "occurredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "scopeType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.changefeed.dto.IntegrationScopeTypeDto"
          },
          "warehouseId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          }
        },
        "required" : [ "entityType", "entityVersion", "eventId", "internalEntityId", "occurredAt", "scopeType" ],
        "title" : "ChangeFeedEventResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.changefeed.dto.IntegrationScopeTypeDto" : {
        "type" : "string",
        "enum" : [ "GLOBAL", "WAREHOUSE" ],
        "title" : "IntegrationScopeTypeDto"
      },
      "ua.wwind.wms.feature.integration.contract.changefeed.dto.OutboundChangeFeedResponseDto" : {
        "type" : "object",
        "properties" : {
          "events" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.changefeed.dto.OutboundChangeFeedEventResponseDto"
            },
            "title" : "List<OutboundChangeFeedEventResponseDto>"
          },
          "externalSystemCode" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "events", "externalSystemCode" ],
        "title" : "OutboundChangeFeedResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.changefeed.dto.CheckpointResponseDto" : {
        "type" : "object",
        "properties" : {
          "externalSystemCode" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "IntegrationCheckpointId"
          },
          "lastAcknowledgedEventId" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "ChangeFeedEventId"
          }
        },
        "required" : [ "externalSystemCode", "id" ],
        "title" : "CheckpointResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.changefeed.dto.AcknowledgeCheckpointIncomeDto" : {
        "type" : "object",
        "properties" : {
          "checkpointId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "IntegrationCheckpointId"
          },
          "eventId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ChangeFeedEventId"
          }
        },
        "required" : [ "checkpointId", "eventId" ],
        "title" : "AcknowledgeCheckpointIncomeDto"
      },
      "ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionStartRequestDto" : {
        "type" : "object",
        "properties" : {
          "entityTypes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationEntityTypeDto"
            },
            "title" : "Set<IntegrationEntityTypeDto>",
            "uniqueItems" : true
          },
          "externalSystemCode" : {
            "type" : "string",
            "title" : "String"
          },
          "warehouseScope" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            },
            "title" : "Set<WarehouseId>",
            "uniqueItems" : true
          }
        },
        "required" : [ "entityTypes", "externalSystemCode", "warehouseScope" ],
        "title" : "ResyncSessionStartRequestDto"
      },
      "ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionStatusDto" : {
        "type" : "string",
        "enum" : [ "CREATED", "IN_PROGRESS", "SNAPSHOT_COMPLETED", "COMPLETED", "FAILED", "EXPIRED" ],
        "title" : "ResyncSessionStatusDto"
      },
      "ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionStartResponseDto" : {
        "type" : "object",
        "properties" : {
          "expiresAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "sessionId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ResyncSessionId"
          },
          "snapshotWatermarkEventId" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "ChangeFeedEventId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionStatusDto"
          }
        },
        "required" : [ "expiresAt", "sessionId", "status" ],
        "title" : "ResyncSessionStartResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionStatusResponseDto" : {
        "type" : "object",
        "properties" : {
          "completedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "entityTypes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationEntityTypeDto"
            },
            "title" : "Set<IntegrationEntityTypeDto>",
            "uniqueItems" : true
          },
          "expiresAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "externalSystemCode" : {
            "type" : "string",
            "title" : "String"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ResyncSessionId"
          },
          "lastAccessAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "snapshotWatermarkEventId" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "ChangeFeedEventId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionStatusDto"
          },
          "warehouseScope" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            },
            "title" : "Set<WarehouseId>",
            "uniqueItems" : true
          }
        },
        "required" : [ "createdAt", "entityTypes", "expiresAt", "externalSystemCode", "id", "lastAccessAt", "status", "warehouseScope" ],
        "title" : "ResyncSessionStatusResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSnapshotItemDto" : {
        "type" : "object",
        "properties" : {
          "entityType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationEntityTypeDto"
          },
          "internalEntityId" : {
            "type" : "string",
            "title" : "String"
          },
          "payload" : {
            "type" : "object",
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "JsonObject"
          },
          "scopeType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.changefeed.dto.IntegrationScopeTypeDto"
          },
          "warehouseId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          }
        },
        "required" : [ "entityType", "internalEntityId", "payload", "scopeType" ],
        "title" : "ResyncSnapshotItemDto"
      },
      "ua.wwind.wms.feature.integration.contract.resync.dto.ResyncPageResponseDto" : {
        "type" : "object",
        "properties" : {
          "hasMore" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSnapshotItemDto"
            },
            "title" : "List<ResyncSnapshotItemDto>"
          },
          "nextCursor" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "sessionId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ResyncSessionId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionStatusDto"
          }
        },
        "required" : [ "hasMore", "items", "sessionId", "status" ],
        "title" : "ResyncPageResponseDto"
      },
      "ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionCompletionRequestDto" : {
        "type" : "object",
        "properties" : {
          "expectedStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionStatusDto"
          }
        },
        "required" : [ "expectedStatus" ],
        "title" : "ResyncSessionCompletionRequestDto"
      },
      "ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionCompletionResponseDto" : {
        "type" : "object",
        "properties" : {
          "completedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "sessionId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "ResyncSessionId"
          },
          "snapshotWatermarkEventId" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "ChangeFeedEventId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.resync.dto.ResyncSessionStatusDto"
          }
        },
        "required" : [ "sessionId", "status" ],
        "title" : "ResyncSessionCompletionResponseDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.AsOfRequestDto" : {
        "type" : "object",
        "properties" : {
          "date" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "timeBasis" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.TimeBasisDto"
          }
        },
        "required" : [ "timeBasis" ],
        "title" : "AsOfRequestDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.StockBalanceAsOfExportRequestDto" : {
        "type" : "object",
        "properties" : {
          "asOf" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.inventory.contract.stock.dto.AsOfRequestDto"
          },
          "cursor" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalSystemCode" : {
            "type" : "string",
            "title" : "String"
          },
          "limit" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "warehouseIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            },
            "title" : "List<WarehouseId>"
          }
        },
        "required" : [ "asOf", "externalSystemCode", "limit", "warehouseIds" ],
        "title" : "StockBalanceAsOfExportRequestDto"
      },
      "ua.wwind.wms.feature.inventory.contract.stock.dto.StockBalanceAsOfExportPageDto" : {
        "type" : "object",
        "properties" : {
          "hasMore" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "type" : "object",
              "additionalProperties" : {
                "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
              },
              "title" : "JsonObject"
            },
            "title" : "List<JsonObject>"
          },
          "nextCursor" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "hasMore", "items" ],
        "title" : "StockBalanceAsOfExportPageDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.ledger.model.ContainerDebtDirection" : {
        "type" : "string",
        "enum" : [ "RECEIVABLE", "PAYABLE" ],
        "title" : "ContainerDebtDirection"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.export.dto.ContainerDebtAsOfExportRequestDto" : {
        "type" : "object",
        "properties" : {
          "asOf" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "cursor" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "direction" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.ledger.model.ContainerDebtDirection"
            } ]
          },
          "externalSystemCode" : {
            "type" : "string",
            "title" : "String"
          },
          "limit" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "warehouseIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            },
            "title" : "List<WarehouseId>"
          }
        },
        "required" : [ "asOf", "externalSystemCode", "limit", "warehouseIds" ],
        "title" : "ContainerDebtAsOfExportRequestDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.export.dto.ContainerDebtAsOfExportPageDto" : {
        "type" : "object",
        "properties" : {
          "hasMore" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "type" : "object",
              "additionalProperties" : {
                "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
              },
              "title" : "JsonObject"
            },
            "title" : "List<JsonObject>"
          },
          "nextCursor" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "hasMore", "items" ],
        "title" : "ContainerDebtAsOfExportPageDto"
      },
      "ua.wwind.wms.feature.integration.contract.exportpayload.dto.ExportPayloadResponseDto" : {
        "type" : "object",
        "properties" : {
          "entityType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.integration.contract.externalsystem.dto.IntegrationEntityTypeDto"
          },
          "internalEntityId" : {
            "type" : "string",
            "title" : "String"
          },
          "payload" : {
            "type" : "object",
            "additionalProperties" : {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            },
            "title" : "JsonObject"
          }
        },
        "required" : [ "entityType", "internalEntityId", "payload" ],
        "title" : "ExportPayloadResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.ExecutorAssignmentModeDto" : {
        "type" : "string",
        "enum" : [ "PARALLEL_WORK", "FREE_AND_OWN", "ASSIGNED_ONLY" ],
        "title" : "ExecutorAssignmentModeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.policy.NoWaveReplanningDocumentFillModeDto" : {
        "type" : "string",
        "enum" : [ "EXTEND_EXISTING_PICKINGS", "CREATE_NEW_PICKINGS", "DO_NOT_CREATE_NEW_PICKINGS_AFTER_START" ],
        "title" : "NoWaveReplanningDocumentFillModeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.policy.OutboundCompletionModeDto" : {
        "type" : "string",
        "enum" : [ "STANDARD_SHIPMENT", "PICKING_AS_FINAL_OPERATION" ],
        "title" : "OutboundCompletionModeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.policy.WarehousePickingPolicyResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowStorageContainersForPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "defaultShippingZoneId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "enableUnplannedPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "executorAssignmentMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.ExecutorAssignmentModeDto"
          },
          "executorTimeoutMinutes" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "freePickingWithoutReservation" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "noWaveReplanningDocumentFillMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.NoWaveReplanningDocumentFillModeDto"
          },
          "outboundCompletionMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.OutboundCompletionModeDto"
          },
          "requireContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "splitByWorkZones" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "temporaryContainersEnabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useWaves" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "allowStorageContainersForPicking", "enableUnplannedPicking", "executorAssignmentMode", "freePickingWithoutReservation", "noWaveReplanningDocumentFillMode", "outboundCompletionMode", "requireContainers", "splitByWorkZones", "temporaryContainersEnabled", "useWaves", "warehouseId" ],
        "title" : "WarehousePickingPolicyResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.policy.ShortfallClosurePolicyDto" : {
        "type" : "string",
        "enum" : [ "AUTOMATIC", "BY_OPERATOR" ],
        "title" : "ShortfallClosurePolicyDto"
      },
      "ua.wwind.wms.feature.outbound.contract.policy.WarehouseShippingPolicyResponseDto" : {
        "type" : "object",
        "properties" : {
          "expectedZoneCourierId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "expectedZoneInterWarehouseId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "expectedZoneSelfPickupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "expectedZoneVehicleRouteId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "shortfallClosure" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.ShortfallClosurePolicyDto"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "shortfallClosure", "warehouseId" ],
        "title" : "WarehouseShippingPolicyResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.policy.OutboundLocationSettingsResponseDto" : {
        "type" : "object",
        "properties" : {
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "restrictionProductSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductSetId"
            } ]
          }
        },
        "required" : [ "locationId" ],
        "title" : "OutboundLocationSettingsResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.policy.OutboundLocationSettingsIncomeDto" : {
        "type" : "object",
        "properties" : {
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "restrictionProductSetId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductSetId"
            } ]
          }
        },
        "required" : [ "locationId" ],
        "title" : "OutboundLocationSettingsIncomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowAdditionalPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "clusterContainerCount" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "clusterContainerTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.WavePickingPolicyId"
          },
          "methodology" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.PickingMethodologyDto"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "requireReplenishmentBeforePicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "usePacking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useSorting" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          }
        },
        "required" : [ "allowAdditionalPicking", "createdAt", "createdById", "deleted", "id", "methodology", "name", "number", "requireReplenishmentBeforePicking", "updatedAt", "usePacking", "useSorting", "version" ],
        "title" : "WavePickingPolicyResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.outbound.WavePickingPolicyId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "WavePickingPolicyId",
        "example" : null
      },
      "ua.wwind.wms.feature.outbound.contract.wave.dto.PickingMethodologyDto" : {
        "type" : "string",
        "enum" : [ "DISCRETE", "BATCH", "CLUSTER" ],
        "title" : "PickingMethodologyDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyResponseDto"
            },
            "title" : "List<WavePickingPolicyResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<WavePickingPolicyResponseDto>"
      },
      "ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyIncomeDto" : {
        "type" : "object",
        "properties" : {
          "allowAdditionalPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "clusterContainerCount" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "clusterContainerTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.WavePickingPolicyId"
            } ]
          },
          "methodology" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.PickingMethodologyDto"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "requireReplenishmentBeforePicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "usePacking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "useSorting" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          }
        },
        "required" : [ "allowAdditionalPicking", "methodology", "name", "requireReplenishmentBeforePicking", "usePacking", "useSorting", "version" ],
        "title" : "WavePickingPolicyIncomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.WavePickingPolicyId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "WavePickingPolicyLightDto"
      },
      "ua.wwind.wms.feature.outbound.contract.wave.dto.WaveHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "completedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.WaveId"
          },
          "launchedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packingLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "pickingPolicyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.WavePickingPolicyId"
            } ]
          },
          "sortingLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WaveStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "createdAt", "date", "deleted", "id", "number", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "WaveHeaderResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.wave.dto.WaveStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "PLANNED", "REPLENISHMENT", "PICKING", "SORTING", "PACKING", "MOVEMENT", "COMPLETED", "CANCELLED" ],
        "title" : "WaveStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.wave.dto.WaveHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WaveHeaderResponseDto"
            },
            "title" : "List<WaveHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<WaveHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.outbound.contract.wave.dto.WaveResponseDto" : {
        "type" : "object",
        "properties" : {
          "completedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.WaveId"
          },
          "launchedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packingLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "pickingPolicyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WavePickingPolicyResponseDto"
            } ]
          },
          "sortingLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.WaveStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "createdAt", "date", "deleted", "id", "number", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "WaveResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowOverpick" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowPickingLineCancellation" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "barcode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "carrierPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "channel" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.shipping.dto.ShippingChannelDto"
          },
          "containerResponsiblePartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "expectedShipmentDate" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "includeFullDemandInPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "incompleteCompletionPolicy" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.IncompleteCompletionPolicyDto"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "operation" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.shared.dto.OutboundOperationTypeDto"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "plannedWaybillNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "planningGroup" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "recipientId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "requirePickingOrder" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "returnableContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "shippingZoneId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "shortfallClosure" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.ShortfallClosurePolicyDto"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "allowOverpick", "allowPickingLineCancellation", "channel", "createdAt", "createdById", "date", "deleted", "id", "includeFullDemandInPicking", "incompleteCompletionPolicy", "number", "operation", "requirePickingOrder", "returnableContainers", "shortfallClosure", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "OutboundOrderHeaderResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.shipping.dto.ShippingChannelDto" : {
        "type" : "string",
        "enum" : [ "VEHICLE_ROUTE", "COURIER", "SELF_PICKUP", "INTER_WAREHOUSE" ],
        "title" : "ShippingChannelDto"
      },
      "ua.wwind.wms.feature.outbound.contract.policy.IncompleteCompletionPolicyDto" : {
        "type" : "string",
        "enum" : [ "ALLOWED", "REQUIRES_PERMISSION", "NOT_ALLOWED" ],
        "title" : "IncompleteCompletionPolicyDto"
      },
      "ua.wwind.wms.feature.outbound.contract.shared.dto.OutboundOperationTypeDto" : {
        "type" : "string",
        "enum" : [ "INTERNAL_CONSUMPTION", "PRODUCTION_ISSUE", "CUSTOMER_SALE", "ADJUSTMENT_OUT", "SUPPLIER_RETURN" ],
        "title" : "OutboundOperationTypeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "PENDING", "IN_WAVE", "FULLY_PLANNED", "PARTIALLY_PLANNED", "NOT_PLANNED", "SHIPPED", "PARTIALLY_SHIPPED", "CLOSED_SHORT", "CANCELLED" ],
        "title" : "OutboundOrderStatusDto"
      },
      "ua.wwind.wms.feature.outbound.contract.wave.dto.WaveLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.WaveId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "WaveLightDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowOverpick" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "completedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.PickingId"
          },
          "incompleteCompletionPolicy" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.IncompleteCompletionPolicyDto"
          },
          "isAdditionalPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "lineOrdering" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLineOrderingDto"
          },
          "linesCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "linesLeft" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "methodology" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.PickingMethodologyDto"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "outboundCompletionMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.OutboundCompletionModeDto"
          },
          "outboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "outboundOrderName" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "outboundOrderNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "startedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingStatusDto"
          },
          "targetLocationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingTypeDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "waveId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.WaveId"
            } ]
          },
          "workAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
            } ]
          }
        },
        "required" : [ "allowOverpick", "createdAt", "createdById", "date", "deleted", "id", "incompleteCompletionPolicy", "isAdditionalPicking", "lineOrdering", "linesCount", "linesLeft", "methodology", "number", "outboundCompletionMode", "status", "targetLocationId", "type", "updatedAt", "version", "warehouseId" ],
        "title" : "PickingHeaderResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.outbound.PickingId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "PickingId",
        "example" : null
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLineOrderingDto" : {
        "type" : "string",
        "enum" : [ "ORDER", "ROUTE" ],
        "title" : "PickingLineOrderingDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "PLANNED", "IN_PROGRESS", "COMPLETED", "PARTIALLY_COMPLETED", "CANCELLED" ],
        "title" : "PickingStatusDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingTypeDto" : {
        "type" : "string",
        "enum" : [ "PLANNED", "UNPLANNED" ],
        "title" : "PickingTypeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.picking.dto.PickingHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingHeaderResponseDto"
            },
            "title" : "List<PickingHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<PickingHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLineExecutionResponseDto" : {
        "type" : "object",
        "properties" : {
          "facts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFactResponseDto"
            },
            "title" : "List<PickingFactResponseDto>"
          },
          "instructionPackQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "instructionPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLineResponseDto"
            },
            "title" : "List<PickingLineResponseDto>"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantityCancelled" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packQuantityExecuted" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packQuantityPlan" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantityCancelled" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityExecuted" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityPlan" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "repackable" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceContainerLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingEndpointTypeDto"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          }
        },
        "required" : [ "facts", "lineNumber", "lines", "packQuantityCancelled", "packQuantityExecuted", "packQuantityPlan", "productId", "quantityCancelled", "quantityExecuted", "quantityPlan", "repackable", "sourceType" ],
        "title" : "PickingLineExecutionResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFactResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "cancelled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "executedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "executedById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "PickingFactId"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "pickingId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.PickingId"
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "referencePack" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingEndpointTypeDto"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          }
        },
        "required" : [ "accountingDate", "cancelled", "executedAt", "executedById", "id", "packQuantity", "pickingId", "productId", "quantity", "referencePack", "sourceType" ],
        "title" : "PickingFactResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingEndpointTypeDto" : {
        "type" : "string",
        "enum" : [ "LOCATION", "CONTAINER" ],
        "title" : "PickingEndpointTypeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "instructionPackQuantity" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "instructionPackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingEndpointTypeDto"
          },
          "specificationStage" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.LotSpecificationStageDto"
            } ]
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          }
        },
        "required" : [ "lineNumber", "packQuantity", "productId", "quantity", "sourceType" ],
        "title" : "PickingLineResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.LotSpecificationStageDto" : {
        "type" : "string",
        "enum" : [ "AT_SHIPMENT_PLANNING", "AT_PICK_PLANNING", "AT_PICKING" ],
        "title" : "LotSpecificationStageDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSettingsDto" : {
        "type" : "object",
        "properties" : {
          "freePickingWithoutReservation" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "freePickingWithoutReservation" ],
        "title" : "PickingSettingsDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFullResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowOverpick" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowPickingLineCancellation" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "completedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "executions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLineExecutionResponseDto"
            },
            "title" : "List<PickingLineExecutionResponseDto>"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.PickingId"
          },
          "incompleteCompletionPolicy" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.IncompleteCompletionPolicyDto"
          },
          "isAdditionalPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "lineOrdering" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLineOrderingDto"
          },
          "linesCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "linesLeft" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "methodology" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.wave.dto.PickingMethodologyDto"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "outboundCompletionMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.OutboundCompletionModeDto"
          },
          "outboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "outboundOrderName" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "outboundOrderNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "pickingSettings" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSettingsDto"
          },
          "startedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingStatusDto"
          },
          "targetLocationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingTypeDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "useContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          },
          "waveId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.WaveId"
            } ]
          },
          "workAreaId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WorkAreaId"
            } ]
          }
        },
        "required" : [ "allowOverpick", "allowPickingLineCancellation", "createdAt", "createdById", "date", "deleted", "executions", "id", "incompleteCompletionPolicy", "isAdditionalPicking", "lineOrdering", "linesCount", "linesLeft", "methodology", "number", "outboundCompletionMode", "pickingSettings", "status", "targetLocationId", "type", "updatedAt", "useContainers", "version", "warehouseId" ],
        "title" : "PickingFullResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.SourceContainerBlockDto" : {
        "type" : "string",
        "enum" : [ "NESTED_CONTAINERS", "FOREIGN_RESERVATION", "NOT_ELIGIBLE" ],
        "title" : "SourceContainerBlockDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.SourceContainerIneligibilityDto" : {
        "type" : "string",
        "enum" : [ "WRONG_PURPOSE", "WRONG_STATUS", "EMPTY", "ASSIGNED_ELSEWHERE" ],
        "title" : "SourceContainerIneligibilityDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSourceContainerRowDto" : {
        "type" : "object",
        "properties" : {
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "lots" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSourceContainerLotDto"
            },
            "title" : "List<PickingSourceContainerLotDto>"
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packQuantityDemanded" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packQuantityReserved" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityDemanded" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityReserved" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "lots", "packQuantity", "packQuantityDemanded", "packQuantityReserved", "productId", "quantity", "quantityDemanded", "quantityReserved" ],
        "title" : "PickingSourceContainerRowDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSourceContainerLotDto" : {
        "type" : "object",
        "properties" : {
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packQuantityReserved" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityReserved" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "packQuantity", "packQuantityReserved", "quantity", "quantityReserved" ],
        "title" : "PickingSourceContainerLotDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSourceContainerDto" : {
        "type" : "object",
        "properties" : {
          "block" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.SourceContainerBlockDto"
            } ]
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "ineligibility" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.SourceContainerIneligibilityDto"
            } ]
          },
          "nestedIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            },
            "title" : "List<ContainerId>"
          },
          "rows" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSourceContainerRowDto"
            },
            "title" : "List<PickingSourceContainerRowDto>"
          }
        },
        "required" : [ "containerId", "nestedIds", "rows" ],
        "title" : "PickingSourceContainerDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingBarcodeLookupRequestDto" : {
        "type" : "object",
        "properties" : {
          "barcode" : {
            "type" : "string",
            "title" : "String"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "barcode", "warehouseId" ],
        "title" : "PickingBarcodeLookupRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingBarcodeLookupResultDto" : {
        "type" : "object",
        "properties" : {
          "pickings" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingHeaderResponseDto"
            },
            "title" : "List<PickingHeaderResponseDto>"
          }
        },
        "required" : [ "pickings" ],
        "title" : "PickingBarcodeLookupResultDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.UnplannedPickingCreateIncomeDto" : {
        "type" : "object",
        "properties" : {
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "targetLocationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "date", "targetLocationId", "warehouseId" ],
        "title" : "UnplannedPickingCreateIncomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.UnplannedPickingUpdateIncomeDto" : {
        "type" : "object",
        "properties" : {
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "targetLocationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "date", "targetLocationId", "version", "warehouseId" ],
        "title" : "UnplannedPickingUpdateIncomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingMissingReservationDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "documentId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "documentType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingReservationDocumentTypeDto"
          },
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "ownPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "pickingNumber" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "zone" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingStockZoneDto"
          }
        },
        "required" : [ "documentId", "documentType", "locationId", "ownPicking", "packQuantity", "quantity", "zone" ],
        "title" : "PickingMissingReservationDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingReservationDocumentTypeDto" : {
        "type" : "string",
        "enum" : [ "PICKING", "RELOCATION", "PUTAWAY" ],
        "title" : "PickingReservationDocumentTypeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingStockZoneDto" : {
        "type" : "string",
        "enum" : [ "PICKING", "STORAGE" ],
        "title" : "PickingStockZoneDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingMissingStockRowDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "expiryAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "freePackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "freeQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "repack" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingRepackProposalDto"
            } ]
          },
          "replanRequired" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "zone" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingStockZoneDto"
          }
        },
        "required" : [ "freePackQuantity", "freeQuantity", "locationId", "replanRequired", "zone" ],
        "title" : "PickingMissingStockRowDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingRepackProposalDto" : {
        "type" : "object",
        "properties" : {
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourcePackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "targetPackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "quantity", "sourcePackQuantity", "targetPackQuantity" ],
        "title" : "PickingRepackProposalDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingMissingUnavailableRowDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "expiryAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "lotStatus" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLotStatusDto"
            } ]
          },
          "otherFeature" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "otherLot" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "stockStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingStockStatusDto"
          },
          "zone" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingStockZoneDto"
          }
        },
        "required" : [ "locationId", "otherFeature", "otherLot", "packQuantity", "quantity", "stockStatus", "zone" ],
        "title" : "PickingMissingUnavailableRowDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLotStatusDto" : {
        "type" : "string",
        "enum" : [ "OK", "HOLD", "REJECTED", "QUARANTINE" ],
        "title" : "PickingLotStatusDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingStockStatusDto" : {
        "type" : "string",
        "enum" : [ "AVAILABLE", "QUARANTINE", "DAMAGED", "PENDING_QC", "IN_QC", "REJECTED", "EXPIRED" ],
        "title" : "PickingStockStatusDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingMissingPositionResponseDto" : {
        "type" : "object",
        "properties" : {
          "freeQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "outstandingPackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "outstandingQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "reservations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingMissingReservationDto"
            },
            "title" : "List<PickingMissingReservationDto>"
          },
          "reservedQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "stock" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingMissingStockRowDto"
            },
            "title" : "List<PickingMissingStockRowDto>"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "totalQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "unavailable" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingMissingUnavailableRowDto"
            },
            "title" : "List<PickingMissingUnavailableRowDto>"
          }
        },
        "required" : [ "freeQuantity", "outstandingPackQuantity", "outstandingQuantity", "productId", "reservations", "reservedQuantity", "stock", "totalQuantity", "unavailable" ],
        "title" : "PickingMissingPositionResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingTerminalStatusDto" : {
        "type" : "string",
        "enum" : [ "COMPLETED", "PARTIALLY_COMPLETED", "CANCELLED" ],
        "title" : "PickingTerminalStatusDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.ChangePickingStatusRequestDto" : {
        "type" : "object",
        "properties" : {
          "targetStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingTerminalStatusDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "targetStatus", "version" ],
        "title" : "ChangePickingStatusRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.ChangePickingStatusResponseDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.PickingId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingStatusDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "id", "status", "version" ],
        "title" : "ChangePickingStatusResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFactInputDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "pickingId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.PickingId"
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingEndpointTypeDto"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          }
        },
        "required" : [ "accountingDate", "packQuantity", "pickingId", "productId", "quantity", "sourceType" ],
        "title" : "PickingFactInputDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingWithFactIdDto" : {
        "type" : "object",
        "properties" : {
          "factId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "PickingFactId"
          },
          "picking" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFullResponseDto"
          }
        },
        "required" : [ "factId", "picking" ],
        "title" : "PickingWithFactIdDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLineCancelInputDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "accountingDate", "productId", "quantity" ],
        "title" : "PickingLineCancelInputDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingRepackIncomeDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceLotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "sourcePackQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourcePackTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingEndpointTypeDto"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          }
        },
        "required" : [ "accountingDate", "productId", "sourcePackQuantity", "sourceType" ],
        "title" : "PickingRepackIncomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingPickAllSnapshotDto" : {
        "type" : "object",
        "properties" : {
          "facts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingPickAllFactDto"
            },
            "title" : "List<PickingPickAllFactDto>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "facts", "version" ],
        "title" : "PickingPickAllSnapshotDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingPickAllFactDto" : {
        "type" : "object",
        "properties" : {
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingEndpointTypeDto"
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          }
        },
        "required" : [ "packQuantity", "productId", "quantity", "sourceType" ],
        "title" : "PickingPickAllFactDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingPickAllRequestDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "snapshot" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingPickAllSnapshotDto"
            } ]
          },
          "targetContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          }
        },
        "required" : [ "accountingDate" ],
        "title" : "PickingPickAllRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingPickAllResponseDto" : {
        "type" : "object",
        "properties" : {
          "factIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int64",
              "title" : "PickingFactId"
            },
            "title" : "List<PickingFactId>"
          },
          "picking" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFullResponseDto"
          }
        },
        "required" : [ "factIds", "picking" ],
        "title" : "PickingPickAllResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSourceContainerEchoRowDto" : {
        "type" : "object",
        "properties" : {
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "packQuantity", "productId", "quantity" ],
        "title" : "PickingSourceContainerEchoRowDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSourceContainerPickRequestDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "rows" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSourceContainerEchoRowDto"
            },
            "title" : "List<PickingSourceContainerEchoRowDto>"
          }
        },
        "required" : [ "accountingDate", "rows" ],
        "title" : "PickingSourceContainerPickRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingSourceContainerPickResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "factIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int64",
              "title" : "PickingFactId"
            },
            "title" : "List<PickingFactId>"
          },
          "picking" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFullResponseDto"
          }
        },
        "required" : [ "containerId", "factIds", "picking" ],
        "title" : "PickingSourceContainerPickResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.RegisterContainerForPickingRequestDto" : {
        "type" : "object",
        "properties" : {
          "barcode" : {
            "type" : "string",
            "title" : "String"
          },
          "carrierId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.CarrierId"
            } ]
          },
          "containerTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
            } ]
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "pickingId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.PickingId"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "barcode", "pickingId", "warehouseId" ],
        "title" : "RegisterContainerForPickingRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.RegisterContainerForPickingResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "containerTypeChoice" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.dto.IdNamePreviewDto"
            },
            "title" : "List<IdNamePreviewDto>"
          },
          "isNewlyCreated" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "registeredGoodsCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "containerTypeChoice", "isNewlyCreated", "registeredGoodsCount" ],
        "title" : "RegisterContainerForPickingResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.ClosePickingContainerRequestDto" : {
        "type" : "object",
        "properties" : {
          "closedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "pickingId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.PickingId"
            } ]
          }
        },
        "required" : [ "closedAt", "containerId" ],
        "title" : "ClosePickingContainerRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.ClosePickingContainerResponseDto" : {
        "type" : "object",
        "properties" : {
          "pickingCompleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "pickingCompleted" ],
        "title" : "ClosePickingContainerResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.PickingId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "PickingLightDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLotRequirementRequestDto" : {
        "type" : "object",
        "properties" : {
          "productCategoryId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "productCategoryId", "warehouseId" ],
        "title" : "PickingLotRequirementRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.lot.dto.OutboundLotInputModeDto" : {
        "type" : "string",
        "enum" : [ "NOT_TRACKED", "POLICY_MISSING", "NOT_ON_OUTBOUND", "REQUIRED" ],
        "title" : "OutboundLotInputModeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.picking.dto.PickingLotRequirementResponseDto" : {
        "type" : "object",
        "properties" : {
          "inputMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.lot.dto.OutboundLotInputModeDto"
          },
          "specificationStage" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.LotSpecificationStageDto"
            } ]
          }
        },
        "required" : [ "inputMode" ],
        "title" : "PickingLotRequirementResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "carrierPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "channel" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.shipping.dto.ShippingChannelDto"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "gateLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.DispatchId"
          },
          "linesCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "linesLeft" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "planMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchPlanModeDto"
          },
          "plannedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "receiverRef" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "channel", "createdAt", "createdById", "date", "deleted", "id", "linesCount", "linesLeft", "number", "planMode", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "DispatchHeaderResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.outbound.DispatchId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "DispatchId",
        "example" : null
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchPlanModeDto" : {
        "type" : "string",
        "enum" : [ "STRICT", "OPEN" ],
        "title" : "DispatchPlanModeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "TO_SHIP", "IN_PROGRESS", "SHIPPED", "CANCELLED" ],
        "title" : "DispatchStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHeaderResponseDto"
            },
            "title" : "List<DispatchHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<DispatchHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchLineExecutionResponseDto" : {
        "type" : "object",
        "properties" : {
          "facts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFactResponseDto"
            },
            "title" : "List<DispatchFactResponseDto>"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchLineResponseDto"
            },
            "title" : "List<DispatchLineResponseDto>"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "outboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "packQuantityExecuted" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packQuantityPlan" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantityExecuted" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityPlan" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "sourceType" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchEndpointTypeDto"
            } ]
          }
        },
        "required" : [ "facts", "lineNumber", "lines", "outboundOrderId", "packQuantityExecuted", "packQuantityPlan", "productId", "quantityExecuted", "quantityPlan" ],
        "title" : "DispatchLineExecutionResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFactResponseDto" : {
        "type" : "object",
        "properties" : {
          "handlingUnitId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "DispatchHandlingUnitId"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "DispatchFactId"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "referencePack" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          }
        },
        "required" : [ "handlingUnitId", "id", "lineNumber", "packQuantity", "productId", "quantity", "referencePack" ],
        "title" : "DispatchFactResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "outboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "lineNumber", "outboundOrderId", "packQuantity", "productId", "quantity" ],
        "title" : "DispatchLineResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchEndpointTypeDto" : {
        "type" : "string",
        "enum" : [ "LOCATION", "CONTAINER" ],
        "title" : "DispatchEndpointTypeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHandlingUnitResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "actualWaybillNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "containerOwnerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "dispatchId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.DispatchId"
          },
          "facts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFactResponseDto"
            },
            "title" : "List<DispatchFactResponseDto>"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "DispatchHandlingUnitId"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "outboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "registeredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "registeredById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "responsiblePartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "returnable" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "reversalOfHandlingUnitId" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "DispatchHandlingUnitId"
          },
          "reversalReason" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "sourceContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHandlingUnitStatusDto"
          },
          "unitType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchUnitTypeDto"
          }
        },
        "required" : [ "accountingDate", "dispatchId", "facts", "id", "lineNumber", "outboundOrderId", "registeredAt", "registeredById", "status", "unitType" ],
        "title" : "DispatchHandlingUnitResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHandlingUnitStatusDto" : {
        "type" : "string",
        "enum" : [ "OPEN", "FINALIZED" ],
        "title" : "DispatchHandlingUnitStatusDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchUnitTypeDto" : {
        "type" : "string",
        "enum" : [ "CONTAINER", "LOOSE" ],
        "title" : "DispatchUnitTypeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchPlanEntryDto" : {
        "type" : "object",
        "properties" : {
          "loadingSequence" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "outboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          }
        },
        "required" : [ "loadingSequence", "outboundOrderId" ],
        "title" : "DispatchPlanEntryDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchPlannedContainerDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "outboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          }
        },
        "required" : [ "containerId", "lineNumber", "outboundOrderId" ],
        "title" : "DispatchPlannedContainerDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFullResponseDto" : {
        "type" : "object",
        "properties" : {
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "carrierPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "channel" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.shipping.dto.ShippingChannelDto"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "executions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchLineExecutionResponseDto"
            },
            "title" : "List<DispatchLineExecutionResponseDto>"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "gateLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "handlingUnits" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHandlingUnitResponseDto"
            },
            "title" : "List<DispatchHandlingUnitResponseDto>"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.DispatchId"
          },
          "linesCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "linesLeft" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "planEntries" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchPlanEntryDto"
            },
            "title" : "List<DispatchPlanEntryDto>"
          },
          "planMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchPlanModeDto"
          },
          "plannedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "plannedContainers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchPlannedContainerDto"
            },
            "title" : "List<DispatchPlannedContainerDto>"
          },
          "receiverRef" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "channel", "createdAt", "createdById", "date", "deleted", "executions", "handlingUnits", "id", "linesCount", "linesLeft", "number", "planEntries", "planMode", "plannedContainers", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "DispatchFullResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchContainerBlockDto" : {
        "type" : "string",
        "enum" : [ "NOT_TOP_LEVEL", "NOT_ELIGIBLE" ],
        "title" : "DispatchContainerBlockDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchContainerIneligibilityDto" : {
        "type" : "string",
        "enum" : [ "NOT_IN_PLAN", "WRONG_STATUS", "EMPTY", "BEING_PICKED", "RUN_SETTLED", "RUN_NOT_RELEASED" ],
        "title" : "DispatchContainerIneligibilityDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchContainerCardRowDto" : {
        "type" : "object",
        "properties" : {
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packQuantityDemanded" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityDemanded" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
            } ]
          }
        },
        "required" : [ "packQuantity", "productId", "quantity" ],
        "title" : "DispatchContainerCardRowDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchContainerCardDto" : {
        "type" : "object",
        "properties" : {
          "block" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchContainerBlockDto"
            } ]
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "ineligibility" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchContainerIneligibilityDto"
            } ]
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "outboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "parentContainerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "rows" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchContainerCardRowDto"
            },
            "title" : "List<DispatchContainerCardRowDto>"
          }
        },
        "required" : [ "containerId", "rows" ],
        "title" : "DispatchContainerCardDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchReadyOrderDto" : {
        "type" : "object",
        "properties" : {
          "allInExpectedZone" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "carrierPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "channel" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.shipping.dto.ShippingChannelDto"
          },
          "containers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchReadyContainerDto"
            },
            "title" : "List<DispatchReadyContainerDto>"
          },
          "expectedZoneId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "looseLines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchReadyLooseLineDto"
            },
            "title" : "List<DispatchReadyLooseLineDto>"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "outboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderStatusDto"
          }
        },
        "required" : [ "allInExpectedZone", "channel", "containers", "looseLines", "outboundOrderId", "status" ],
        "title" : "DispatchReadyOrderDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchReadyContainerDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "inExpectedZone" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        },
        "required" : [ "code", "containerId", "locationId" ],
        "title" : "DispatchReadyContainerDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchReadyLooseLineDto" : {
        "type" : "object",
        "properties" : {
          "inExpectedZone" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "locationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "locationId", "packQuantity", "productId", "quantity" ],
        "title" : "DispatchReadyLooseLineDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchReadyOrderDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchReadyOrderDto"
            },
            "title" : "List<DispatchReadyOrderDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<DispatchReadyOrderDto>"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.DispatchId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "DispatchLightDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchLineIncomeDto" : {
        "type" : "object",
        "properties" : {
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "outboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "lineNumber", "outboundOrderId", "packQuantity", "productId", "quantity" ],
        "title" : "DispatchLineIncomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchIncomeDto" : {
        "type" : "object",
        "properties" : {
          "assignedToId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "carrierPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "channel" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.shipping.dto.ShippingChannelDto"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "gateLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.DispatchId"
            } ]
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchLineIncomeDto"
            },
            "title" : "List<DispatchLineIncomeDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "planEntries" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchPlanEntryDto"
            },
            "title" : "List<DispatchPlanEntryDto>"
          },
          "planMode" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchPlanModeDto"
            } ]
          },
          "plannedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "receiverRef" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "version" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "channel", "date", "lines", "planEntries", "warehouseId" ],
        "title" : "DispatchIncomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.SelfPickupDispatchOpenIncomeDto" : {
        "type" : "object",
        "properties" : {
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "outboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          }
        },
        "required" : [ "date", "outboundOrderId" ],
        "title" : "SelfPickupDispatchOpenIncomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchContainerUnitInputDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "actualWaybillNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "outboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "responsiblePartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "returnable" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          }
        },
        "required" : [ "accountingDate", "containerId", "outboundOrderId" ],
        "title" : "DispatchContainerUnitInputDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchWithHandlingUnitIdDto" : {
        "type" : "object",
        "properties" : {
          "dispatch" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFullResponseDto"
          },
          "handlingUnitId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "DispatchHandlingUnitId"
          }
        },
        "required" : [ "dispatch", "handlingUnitId" ],
        "title" : "DispatchWithHandlingUnitIdDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchLooseUnitInputDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "actualWaybillNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "outboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "sourceLocationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        },
        "required" : [ "accountingDate", "outboundOrderId", "sourceLocationId" ],
        "title" : "DispatchLooseUnitInputDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFactRegisterInputDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "outboundOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "sourceLocationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "unitId" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "DispatchHandlingUnitId"
          }
        },
        "required" : [ "packQuantity", "productId", "quantity" ],
        "title" : "DispatchFactRegisterInputDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchRegisteredFactDto" : {
        "type" : "object",
        "properties" : {
          "handlingUnitId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "DispatchHandlingUnitId"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "DispatchFactId"
          },
          "outboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "referencePack" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "handlingUnitId", "id", "outboundOrderId", "packQuantity", "quantity", "referencePack" ],
        "title" : "DispatchRegisteredFactDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchWithRegisteredFactsDto" : {
        "type" : "object",
        "properties" : {
          "dispatch" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFullResponseDto"
          },
          "facts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchRegisteredFactDto"
            },
            "title" : "List<DispatchRegisteredFactDto>"
          }
        },
        "required" : [ "dispatch", "facts" ],
        "title" : "DispatchWithRegisteredFactsDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHandlingUnitFinalizeInputDto" : {
        "type" : "object",
        "properties" : {
          "actualWaybillNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "title" : "DispatchHandlingUnitFinalizeInputDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchHandlingUnitReverseIncomeDto" : {
        "type" : "object",
        "properties" : {
          "reason" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "reason" ],
        "title" : "DispatchHandlingUnitReverseIncomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchTargetStatusDto" : {
        "type" : "string",
        "enum" : [ "TO_SHIP", "SHIPPED", "CANCELLED" ],
        "title" : "DispatchTargetStatusDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.ChangeDispatchStatusRequestDto" : {
        "type" : "object",
        "properties" : {
          "acknowledgeShortShipment" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "targetStatus" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchTargetStatusDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "acknowledgeShortShipment", "targetStatus", "version" ],
        "title" : "ChangeDispatchStatusRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchCloseOrderOutcomeDto" : {
        "type" : "object",
        "properties" : {
          "closedShort" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "outboundOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderStatusDto"
          }
        },
        "required" : [ "closedShort", "outboundOrderId", "status" ],
        "title" : "DispatchCloseOrderOutcomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.dispatch.dto.ChangeDispatchStatusResponseDto" : {
        "type" : "object",
        "properties" : {
          "dispatch" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFullResponseDto"
          },
          "orderOutcomes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchCloseOrderOutcomeDto"
            },
            "title" : "List<DispatchCloseOrderOutcomeDto>"
          }
        },
        "required" : [ "dispatch", "orderOutcomes" ],
        "title" : "ChangeDispatchStatusResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderHeaderResponseDto"
            },
            "title" : "List<OutboundOrderHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<OutboundOrderHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderContainerShipmentResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "ownerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "pickingId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.PickingId"
          },
          "registeredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "responsiblePartyId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          },
          "returnable" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "accountingDate", "containerId", "id", "pickingId", "registeredAt", "responsiblePartyId", "returnable" ],
        "title" : "OutboundOrderContainerShipmentResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderContainerResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "containerId", "lineNumber" ],
        "title" : "OutboundOrderContainerResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLineExecutionResponseDto" : {
        "type" : "object",
        "properties" : {
          "dispatchFacts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.dispatch.dto.DispatchFactResponseDto"
            },
            "title" : "List<DispatchFactResponseDto>"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLineResponseDto"
            },
            "title" : "List<OutboundOrderLineResponseDto>"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "pickingFacts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFactResponseDto"
            },
            "title" : "List<PickingFactResponseDto>"
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantityCancelled" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityOrdered" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityPicked" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityPlanned" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityShipped" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "quantityStaged" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "dispatchFacts", "lineNumber", "lines", "pickingFacts", "productId", "quantityCancelled", "quantityOrdered", "quantityPicked", "quantityPlanned", "quantityShipped", "quantityStaged" ],
        "title" : "OutboundOrderLineExecutionResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "lineNumber", "packQuantity", "productId", "quantity" ],
        "title" : "OutboundOrderLineResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderResponseDto" : {
        "type" : "object",
        "properties" : {
          "allowOverpick" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowPickingLineCancellation" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "barcode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "carrierPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "channel" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.shipping.dto.ShippingChannelDto"
          },
          "containerResponsiblePartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "containerShipments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderContainerShipmentResponseDto"
            },
            "title" : "List<OutboundOrderContainerShipmentResponseDto>"
          },
          "containers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderContainerResponseDto"
            },
            "title" : "List<OutboundOrderContainerResponseDto>"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "executions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLineExecutionResponseDto"
            },
            "title" : "List<OutboundOrderLineExecutionResponseDto>"
          },
          "expectedShipmentDate" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "includeFullDemandInPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "incompleteCompletionPolicy" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.IncompleteCompletionPolicyDto"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "operation" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.shared.dto.OutboundOperationTypeDto"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "plannedWaybillNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "planningGroup" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "recipientId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "requirePickingOrder" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "returnableContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "shippingZoneId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "shortfallClosure" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.ShortfallClosurePolicyDto"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "allowOverpick", "allowPickingLineCancellation", "channel", "containerShipments", "containers", "createdAt", "createdById", "date", "deleted", "executions", "id", "includeFullDemandInPicking", "incompleteCompletionPolicy", "number", "operation", "requirePickingOrder", "returnableContainers", "shortfallClosure", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "OutboundOrderResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderContainerIncomeDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "containerId", "lineNumber" ],
        "title" : "OutboundOrderContainerIncomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLineIncomeDto" : {
        "type" : "object",
        "properties" : {
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "packQuantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "packTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.PackTypeId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "lineNumber", "packQuantity", "productId", "quantity" ],
        "title" : "OutboundOrderLineIncomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderIncomeStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "PENDING", "CANCELLED" ],
        "title" : "OutboundOrderIncomeStatusDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderIncomeDto" : {
        "type" : "object",
        "properties" : {
          "allowOverpick" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "allowPickingLineCancellation" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "barcode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "carrierPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "channel" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.shipping.dto.ShippingChannelDto"
            } ]
          },
          "containerResponsiblePartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "containers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderContainerIncomeDto"
            },
            "title" : "List<OutboundOrderContainerIncomeDto>"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "expectedShipmentDate" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "externalType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "includeFullDemandInPicking" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "incompleteCompletionPolicy" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.IncompleteCompletionPolicyDto"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLineIncomeDto"
            },
            "title" : "List<OutboundOrderLineIncomeDto>"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "operation" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.shared.dto.OutboundOperationTypeDto"
          },
          "ownerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "plannedWaybillNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "planningGroup" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "recipientId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "requirePickingOrder" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "returnableContainers" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "shippingZoneId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "shortfallClosure" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.policy.ShortfallClosurePolicyDto"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderIncomeStatusDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "allowOverpick", "allowPickingLineCancellation", "containers", "date", "includeFullDemandInPicking", "incompleteCompletionPolicy", "lines", "operation", "requirePickingOrder", "returnableContainers", "status", "version", "warehouseId" ],
        "title" : "OutboundOrderIncomeDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.DirectOrderPlanRequestDto" : {
        "type" : "object",
        "properties" : {
          "orderIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            },
            "title" : "List<OutboundOrderId>"
          }
        },
        "required" : [ "orderIds" ],
        "title" : "DirectOrderPlanRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.DirectOrderSkippedOrderDto" : {
        "type" : "object",
        "properties" : {
          "currentStatus" : {
            "type" : "string",
            "title" : "String"
          },
          "orderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "orderNumber" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "currentStatus", "orderId", "orderNumber" ],
        "title" : "DirectOrderSkippedOrderDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.DirectOrderPlanResponseDto" : {
        "type" : "object",
        "properties" : {
          "plannedOrders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderResponseDto"
            },
            "title" : "List<OutboundOrderResponseDto>"
          },
          "skippedOrders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.DirectOrderSkippedOrderDto"
            },
            "title" : "List<DirectOrderSkippedOrderDto>"
          }
        },
        "required" : [ "plannedOrders", "skippedOrders" ],
        "title" : "DirectOrderPlanResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.DirectOrderPlanDryRunRequestDto" : {
        "type" : "object",
        "properties" : {
          "orderIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            },
            "title" : "List<OutboundOrderId>"
          }
        },
        "required" : [ "orderIds" ],
        "title" : "DirectOrderPlanDryRunRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.DirectOrderPlanDryRunResponseDto" : {
        "type" : "object",
        "properties" : {
          "skippedOrders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.DirectOrderSkippedOrderDto"
            },
            "title" : "List<DirectOrderSkippedOrderDto>"
          },
          "virtualPickings" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.PickingFullResponseDto"
            },
            "title" : "List<PickingFullResponseDto>"
          }
        },
        "required" : [ "skippedOrders", "virtualPickings" ],
        "title" : "DirectOrderPlanDryRunResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.FreePickingAvailabilityDto" : {
        "type" : "object",
        "properties" : {
          "available" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "available" ],
        "title" : "FreePickingAvailabilityDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLotRequirementRequestDto" : {
        "type" : "object",
        "properties" : {
          "productCategoryId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductCategoryId"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "productCategoryId", "warehouseId" ],
        "title" : "OutboundOrderLotRequirementRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLotRequirementResponseDto" : {
        "type" : "object",
        "properties" : {
          "inputMode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.lot.dto.OutboundLotInputModeDto"
          },
          "specificationStage" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.picking.dto.LotSpecificationStageDto"
            } ]
          }
        },
        "required" : [ "inputMode" ],
        "title" : "OutboundOrderLotRequirementResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderLightDto" : {
        "type" : "object",
        "properties" : {
          "carrierPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "channel" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.shipping.dto.ShippingChannelDto"
            } ]
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "plannedWaybillNumber" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "OutboundOrderLightDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderCloseShortInputDto" : {
        "type" : "object",
        "properties" : {
          "reason" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "version" ],
        "title" : "OutboundOrderCloseShortInputDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderShortfallLineDto" : {
        "type" : "object",
        "properties" : {
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.LotId"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "quantity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "productId", "quantity" ],
        "title" : "OutboundOrderShortfallLineDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderCloseShortResponseDto" : {
        "type" : "object",
        "properties" : {
          "order" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderResponseDto"
          },
          "shortfall" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.OutboundOrderShortfallLineDto"
            },
            "title" : "List<OutboundOrderShortfallLineDto>"
          }
        },
        "required" : [ "order", "shortfall" ],
        "title" : "OutboundOrderCloseShortResponseDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.ProductCompetingDemandDto" : {
        "type" : "object",
        "properties" : {
          "availableBase" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "demandingOrders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.dto.CompetingOrderDemandDto"
            },
            "title" : "List<CompetingOrderDemandDto>"
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductFeatureId"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "shortage" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "totalNetDemand" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          }
        },
        "required" : [ "availableBase", "demandingOrders", "productId", "shortage", "totalNetDemand" ],
        "title" : "ProductCompetingDemandDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.CompetingOrderDemandDto" : {
        "type" : "object",
        "properties" : {
          "netDemand" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.model.Quantity"
          },
          "orderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          }
        },
        "required" : [ "netDemand", "orderId" ],
        "title" : "CompetingOrderDemandDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.planning.ReplanProblemOrderDto" : {
        "type" : "object",
        "properties" : {
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "orderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          },
          "reason" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.planning.ReplanSkipReason"
          }
        },
        "required" : [ "number", "orderId", "reason" ],
        "title" : "ReplanProblemOrderDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.planning.ReplanSkipReason" : {
        "type" : "string",
        "enum" : [ "NO_SHIPPING_ZONE" ],
        "title" : "ReplanSkipReason"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.planning.ReplanRunStatus" : {
        "type" : "string",
        "enum" : [ "IDLE", "RUNNING", "COMPLETED", "FAILED" ],
        "title" : "ReplanRunStatus"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.planning.ReplanStatusDto" : {
        "type" : "object",
        "properties" : {
          "finishedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "initiatorUserId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          },
          "plannedCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "problems" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.planning.ReplanProblemOrderDto"
            },
            "title" : "List<ReplanProblemOrderDto>"
          },
          "problemsTruncated" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "processedCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "runId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "skippedCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "startedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.outbound.contract.outboundorder.planning.ReplanRunStatus"
          },
          "totalCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "plannedCount", "problems", "problemsTruncated", "processedCount", "skippedCount", "status", "totalCount", "warehouseId" ],
        "title" : "ReplanStatusDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueReorderRequestDto" : {
        "type" : "object",
        "properties" : {
          "afterOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "beforeOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "orderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          }
        },
        "required" : [ "orderId" ],
        "title" : "PlanningQueueReorderRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueReorderResultDto" : {
        "type" : "object",
        "properties" : {
          "movedOrderIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            },
            "title" : "List<OutboundOrderId>"
          }
        },
        "required" : [ "movedOrderIds" ],
        "title" : "PlanningQueueReorderResultDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueReorderWithinGroupRequestDto" : {
        "type" : "object",
        "properties" : {
          "afterOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "beforeOrderId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            } ]
          },
          "orderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          }
        },
        "required" : [ "orderId" ],
        "title" : "PlanningQueueReorderWithinGroupRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueReorderWithinGroupResultDto" : {
        "type" : "object",
        "properties" : {
          "movedOrderId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
          }
        },
        "required" : [ "movedOrderId" ],
        "title" : "PlanningQueueReorderWithinGroupResultDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueGroupRequestDto" : {
        "type" : "object",
        "properties" : {
          "orderIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            },
            "title" : "List<OutboundOrderId>"
          }
        },
        "required" : [ "orderIds" ],
        "title" : "PlanningQueueGroupRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueGroupResultDto" : {
        "type" : "object",
        "properties" : {
          "orderIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            },
            "title" : "List<OutboundOrderId>"
          },
          "planningGroup" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "orderIds", "planningGroup" ],
        "title" : "PlanningQueueGroupResultDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueRenameGroupRequestDto" : {
        "type" : "object",
        "properties" : {
          "newPlanningGroup" : {
            "type" : "string",
            "title" : "String"
          },
          "planningGroup" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "newPlanningGroup", "planningGroup" ],
        "title" : "PlanningQueueRenameGroupRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueRenameGroupResultDto" : {
        "type" : "object",
        "properties" : {
          "orderIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            },
            "title" : "List<OutboundOrderId>"
          },
          "planningGroup" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "orderIds", "planningGroup" ],
        "title" : "PlanningQueueRenameGroupResultDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueUngroupRequestDto" : {
        "type" : "object",
        "properties" : {
          "orderIds" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            },
            "title" : "List<OutboundOrderId>"
          },
          "planningGroup" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "planningGroup" ],
        "title" : "PlanningQueueUngroupRequestDto"
      },
      "ua.wwind.wms.feature.outbound.contract.outboundorder.dto.PlanningQueueUngroupResultDto" : {
        "type" : "object",
        "properties" : {
          "orderIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.outbound.OutboundOrderId"
            },
            "title" : "List<OutboundOrderId>"
          }
        },
        "required" : [ "orderIds" ],
        "title" : "PlanningQueueUngroupResultDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerCirculationEntryId"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryLineResponseDto"
            },
            "title" : "List<ContainerCirculationEntryLineResponseDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "createdAt", "createdById", "deleted", "id", "lines", "number", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "ContainerCirculationEntryResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.ContainerCirculationEntryId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ContainerCirculationEntryId",
        "example" : null
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerTypeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "containers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.CirculationContainerResponseDto"
            },
            "title" : "List<CirculationContainerResponseDto>"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "sourceLocationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        },
        "required" : [ "containerTypeId", "containers", "lineNumber", "productId", "sourceLocationId" ],
        "title" : "ContainerCirculationEntryLineResponseDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.CirculationContainerResponseDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          }
        },
        "required" : [ "code", "containerId" ],
        "title" : "CirculationContainerResponseDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "POSTED" ],
        "title" : "ContainerCirculationEntryStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryResponseDto"
            },
            "title" : "List<ContainerCirculationEntryResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ContainerCirculationEntryResponseDto>"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryLineIncomeDto" : {
        "type" : "object",
        "properties" : {
          "codes" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "containerTypeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "productId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
          },
          "sourceLocationId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
          }
        },
        "required" : [ "codes", "containerTypeId", "lineNumber", "productId", "sourceLocationId" ],
        "title" : "ContainerCirculationEntryLineIncomeDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryIncomeDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerCirculationEntryId"
            } ]
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryLineIncomeDto"
            },
            "title" : "List<ContainerCirculationEntryLineIncomeDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "lines", "version", "warehouseId" ],
        "title" : "ContainerCirculationEntryIncomeDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryActionDto" : {
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "version" ],
        "title" : "ContainerCirculationEntryActionDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.circulation.dto.ContainerCirculationEntryLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerCirculationEntryId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "ContainerCirculationEntryLightDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ReturnableContainerOpeningBalanceId"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceLineResponseDto"
            },
            "title" : "List<ReturnableContainerOpeningBalanceLineResponseDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "createdAt", "createdById", "deleted", "id", "lines", "number", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "ReturnableContainerOpeningBalanceResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.ReturnableContainerOpeningBalanceId" : {
        "type" : "object",
        "properties" : { },
        "title" : "ReturnableContainerOpeningBalanceId"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "containerId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
            } ]
          },
          "containerTypeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "holderPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "ownerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packagingId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          }
        },
        "required" : [ "code", "containerTypeId", "lineNumber" ],
        "title" : "ReturnableContainerOpeningBalanceLineResponseDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "POSTED" ],
        "title" : "ReturnableContainerOpeningBalanceStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceResponseDto"
            },
            "title" : "List<ReturnableContainerOpeningBalanceResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ReturnableContainerOpeningBalanceResponseDto>"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceLineIncomeDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "title" : "String"
          },
          "containerTypeId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
          },
          "holderPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "ownerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "packagingId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.product.ProductId"
            } ]
          }
        },
        "required" : [ "code", "containerTypeId", "lineNumber" ],
        "title" : "ReturnableContainerOpeningBalanceLineIncomeDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceIncomeDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ReturnableContainerOpeningBalanceId"
            } ]
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceLineIncomeDto"
            },
            "title" : "List<ReturnableContainerOpeningBalanceLineIncomeDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceStatusDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "lines", "status", "version", "warehouseId" ],
        "title" : "ReturnableContainerOpeningBalanceIncomeDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceActionDto" : {
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "version" ],
        "title" : "ReturnableContainerOpeningBalanceActionDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.openingbalance.dto.ReturnableContainerOpeningBalanceLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ReturnableContainerOpeningBalanceId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "ReturnableContainerOpeningBalanceLightDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerDecommissionId"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionLineResponseDto"
            },
            "title" : "List<ContainerDecommissionLineResponseDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "createdAt", "createdById", "deleted", "id", "lines", "number", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "ContainerDecommissionResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.ContainerDecommissionId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ContainerDecommissionId",
        "example" : null
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "containerCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "disposition" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDispositionDto"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "previousStatus" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.RetiredContainerStatusDto"
            } ]
          }
        },
        "required" : [ "containerId", "disposition", "lineNumber" ],
        "title" : "ContainerDecommissionLineResponseDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDispositionDto" : {
        "type" : "string",
        "enum" : [ "RETURN_TO_STOCK", "SCRAP" ],
        "title" : "ContainerDispositionDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.RetiredContainerStatusDto" : {
        "type" : "string",
        "enum" : [ "ACTIVE", "EMPTY", "SHIPPED" ],
        "title" : "RetiredContainerStatusDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "POSTED" ],
        "title" : "ContainerDecommissionStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionResponseDto"
            },
            "title" : "List<ContainerDecommissionResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ContainerDecommissionResponseDto>"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionLineIncomeDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "disposition" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDispositionDto"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          }
        },
        "required" : [ "containerId", "disposition", "lineNumber" ],
        "title" : "ContainerDecommissionLineIncomeDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionIncomeDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerDecommissionId"
            } ]
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionLineIncomeDto"
            },
            "title" : "List<ContainerDecommissionLineIncomeDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "lines", "version", "warehouseId" ],
        "title" : "ContainerDecommissionIncomeDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionActionDto" : {
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "version" ],
        "title" : "ContainerDecommissionActionDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.ContainerDecommissionLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerDecommissionId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "ContainerDecommissionLightDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "createdById" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "direction" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.ledger.model.ContainerDebtDirection"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerDebtSettlementId"
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementLineResponseDto"
            },
            "title" : "List<ContainerDebtSettlementLineResponseDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "partyId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementStatusDto"
          },
          "updatedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "createdAt", "createdById", "deleted", "direction", "id", "lines", "number", "partyId", "status", "updatedAt", "version", "warehouseId" ],
        "title" : "ContainerDebtSettlementResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.inventory.ContainerDebtSettlementId" : {
        "type" : "object",
        "properties" : { },
        "title" : "ContainerDebtSettlementId"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementLineResponseDto" : {
        "type" : "object",
        "properties" : {
          "appliedEffect" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.model.SettlementContainerEffect"
            } ]
          },
          "containerCode" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "previousStatus" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.decommission.dto.RetiredContainerStatusDto"
            } ]
          },
          "reason" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.model.ContainerSettlementReason"
          }
        },
        "required" : [ "containerId", "lineNumber", "reason" ],
        "title" : "ContainerDebtSettlementLineResponseDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.settlement.model.SettlementContainerEffect" : {
        "type" : "string",
        "enum" : [ "NONE", "DECOMMISSIONED", "OWNERSHIP_TAKEN" ],
        "title" : "SettlementContainerEffect"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.settlement.model.ContainerSettlementReason" : {
        "type" : "string",
        "enum" : [ "LOST", "DAMAGED", "BOUGHT_OUT", "COMPENSATED" ],
        "title" : "ContainerSettlementReason"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "POSTED" ],
        "title" : "ContainerDebtSettlementStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementResponseDto"
            },
            "title" : "List<ContainerDebtSettlementResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ContainerDebtSettlementResponseDto>"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementLineIncomeDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "lineNumber" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "reason" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.model.ContainerSettlementReason"
          }
        },
        "required" : [ "containerId", "lineNumber", "reason" ],
        "title" : "ContainerDebtSettlementLineIncomeDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementIncomeDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "direction" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.ledger.model.ContainerDebtDirection"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerDebtSettlementId"
            } ]
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementLineIncomeDto"
            },
            "title" : "List<ContainerDebtSettlementLineIncomeDto>"
          },
          "notes" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "partyId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementStatusDto"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "accountingDate", "direction", "lines", "partyId", "status", "version", "warehouseId" ],
        "title" : "ContainerDebtSettlementIncomeDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.settlement.dto.ContainerDebtSettlementActionDto" : {
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "version" ],
        "title" : "ContainerDebtSettlementActionDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.report.dto.ContainerReceivableRowDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "containerTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
            } ]
          },
          "daysOut" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "openedOn" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "ownerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "partyId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          },
          "sourceDocumentId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "sourceDocumentType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.ledger.model.ReturnableContainerSourceDocumentType"
          }
        },
        "required" : [ "containerId", "daysOut", "openedOn", "partyId", "sourceDocumentId", "sourceDocumentType" ],
        "title" : "ContainerReceivableRowDto"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.ledger.model.ReturnableContainerSourceDocumentType" : {
        "type" : "string",
        "enum" : [ "RECEIPT", "DISPATCH", "PICKING", "CONTAINER_DEBT_SETTLEMENT", "RETURNABLE_CONTAINER_OPENING_BALANCE" ],
        "title" : "ReturnableContainerSourceDocumentType"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.report.dto.ContainerReceivableRowDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.report.dto.ContainerReceivableRowDto"
            },
            "title" : "List<ContainerReceivableRowDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ContainerReceivableRowDto>"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.report.dto.ContainerPayableRowDto" : {
        "type" : "object",
        "properties" : {
          "containerId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerId"
          },
          "containerTypeId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.inventory.ContainerTypeId"
            } ]
          },
          "daysOut" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "holdingPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "locationId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.LocationId"
            } ]
          },
          "openedOn" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "ownerPartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "partyId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          },
          "sourceDocumentId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "sourceDocumentType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.ledger.model.ReturnableContainerSourceDocumentType"
          },
          "warehouseId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          }
        },
        "required" : [ "containerId", "daysOut", "openedOn", "partyId", "sourceDocumentId", "sourceDocumentType" ],
        "title" : "ContainerPayableRowDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.returnablecontainer.contract.report.dto.ContainerPayableRowDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.report.dto.ContainerPayableRowDto"
            },
            "title" : "List<ContainerPayableRowDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ContainerPayableRowDto>"
      },
      "ua.wwind.wms.feature.returnablecontainer.contract.report.dto.ContainerDebtMovementDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "counterpartyId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
            } ]
          },
          "direction" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.ledger.model.ContainerDebtDirection"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "partyId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.party.PartyId"
          },
          "quantity" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "reason" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "registeredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "sourceDocumentId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "sourceDocumentType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.returnablecontainer.contract.ledger.model.ReturnableContainerSourceDocumentType"
          },
          "sourceFactId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "warehouseId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
            } ]
          }
        },
        "required" : [ "accountingDate", "direction", "id", "partyId", "quantity", "registeredAt", "sourceDocumentId", "sourceDocumentType" ],
        "title" : "ContainerDebtMovementDto"
      },
      "ua.wwind.wms.feature.analytics.contract.counter.dto.WarehouseCounterTypeDto" : {
        "type" : "string",
        "enum" : [ "RECEIPT", "PICKING", "PUTAWAY", "RELOCATION", "WAVE", "INVENTORY_COUNT", "DISPATCH", "CONTAINER_EMPTY", "CONTAINER_MOVEMENT" ],
        "title" : "WarehouseCounterTypeDto"
      },
      "ua.wwind.wms.feature.analytics.contract.counter.dto.WarehouseCountersResponseDto" : {
        "type" : "object",
        "properties" : {
          "groups" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "object",
              "additionalProperties" : {
                "type" : "integer",
                "format" : "int64",
                "title" : "Long"
              },
              "title" : "Map<String,Long>"
            },
            "title" : "Map<WarehouseCounterTypeDto,Map<String,Long>>"
          },
          "values" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "integer",
              "format" : "int64",
              "title" : "Long"
            },
            "title" : "Map<WarehouseCounterTypeDto,Long>"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "groups", "values", "warehouseId" ],
        "title" : "WarehouseCountersResponseDto"
      },
      "ua.wwind.wms.feature.analytics.contract.productivity.dto.ProductivityMetricSeriesDto" : {
        "type" : "object",
        "properties" : {
          "grain" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.productivity.dto.ProductivityGrain"
          },
          "metric" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.productivity.dto.ProductivityMetric"
          },
          "points" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.productivity.dto.ProductivityDayPointDto"
            },
            "title" : "List<ProductivityDayPointDto>"
          }
        },
        "required" : [ "grain", "metric", "points" ],
        "title" : "ProductivityMetricSeriesDto"
      },
      "ua.wwind.wms.feature.analytics.contract.productivity.dto.ProductivityGrain" : {
        "type" : "string",
        "enum" : [ "WAREHOUSE", "USER" ],
        "title" : "ProductivityGrain"
      },
      "ua.wwind.wms.feature.analytics.contract.productivity.dto.ProductivityMetric" : {
        "type" : "string",
        "enum" : [ "PICKING_UNITS", "PICKING_LINES", "RECEIPT_UNITS", "PUTAWAY_UNITS", "WAVE_CYCLE_TIME", "ORDER_FULFILLMENT_TIME" ],
        "title" : "ProductivityMetric"
      },
      "ua.wwind.wms.feature.analytics.contract.productivity.dto.ProductivityDayPointDto" : {
        "type" : "object",
        "properties" : {
          "countValue" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "day" : {
            "type" : "string",
            "title" : "String"
          },
          "sumValue" : {
            "type" : "string",
            "title" : "String"
          },
          "value" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          }
        },
        "required" : [ "countValue", "day", "sumValue", "value" ],
        "title" : "ProductivityDayPointDto"
      },
      "ua.wwind.wms.feature.analytics.contract.productivity.dto.ProductivityResponseDto" : {
        "type" : "object",
        "properties" : {
          "series" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.productivity.dto.ProductivityMetricSeriesDto"
            },
            "title" : "List<ProductivityMetricSeriesDto>"
          }
        },
        "required" : [ "series" ],
        "title" : "ProductivityResponseDto"
      },
      "ua.wwind.wms.feature.analytics.contract.dashboard.dto.DashboardLayoutSource" : {
        "type" : "string",
        "enum" : [ "USER", "SHARED", "DEFAULT" ],
        "title" : "DashboardLayoutSource"
      },
      "ua.wwind.wms.feature.analytics.contract.dashboard.dto.DashboardLayoutResponseDto" : {
        "type" : "object",
        "properties" : {
          "payload" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            } ]
          },
          "source" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.dashboard.dto.DashboardLayoutSource"
          },
          "version" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "source" ],
        "title" : "DashboardLayoutResponseDto"
      },
      "ua.wwind.wms.feature.analytics.contract.online.dto.OnlineNowDto" : {
        "type" : "object",
        "properties" : {
          "count" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "count" ],
        "title" : "OnlineNowDto"
      },
      "ua.wwind.wms.feature.analytics.contract.online.dto.OnlineGrain" : {
        "type" : "string",
        "enum" : [ "HOUR", "DAY" ],
        "title" : "OnlineGrain"
      },
      "ua.wwind.wms.feature.analytics.contract.online.dto.OnlineChartPointDto" : {
        "type" : "object",
        "properties" : {
          "bucket" : {
            "type" : "string",
            "title" : "String"
          },
          "distinct" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "peak" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "bucket", "distinct", "peak" ],
        "title" : "OnlineChartPointDto"
      },
      "ua.wwind.wms.feature.analytics.contract.online.dto.OnlineChartResponseDto" : {
        "type" : "object",
        "properties" : {
          "grain" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.online.dto.OnlineGrain"
          },
          "points" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.online.dto.OnlineChartPointDto"
            },
            "title" : "List<OnlineChartPointDto>"
          }
        },
        "required" : [ "grain", "points" ],
        "title" : "OnlineChartResponseDto"
      },
      "ua.wwind.wms.feature.analytics.contract.usage.dto.McpUsageWindowDto" : {
        "type" : "object",
        "properties" : {
          "limit" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "percent" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "resetAtEpochMs" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "used" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "resetAtEpochMs", "used" ],
        "title" : "McpUsageWindowDto"
      },
      "ua.wwind.wms.feature.analytics.contract.usage.dto.McpWindowsDto" : {
        "type" : "object",
        "properties" : {
          "day" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.usage.dto.McpUsageWindowDto"
          },
          "month" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.usage.dto.McpUsageWindowDto"
          },
          "week" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.usage.dto.McpUsageWindowDto"
          }
        },
        "required" : [ "day", "month", "week" ],
        "title" : "McpWindowsDto"
      },
      "ua.wwind.wms.feature.analytics.contract.usage.dto.McpDailyPointDto" : {
        "type" : "object",
        "properties" : {
          "count" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "date" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          }
        },
        "required" : [ "count", "date" ],
        "title" : "McpDailyPointDto"
      },
      "ua.wwind.wms.feature.analytics.contract.usage.dto.McpDailySeriesDto" : {
        "type" : "object",
        "properties" : {
          "dayLimit" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "points" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.usage.dto.McpDailyPointDto"
            },
            "title" : "List<McpDailyPointDto>"
          }
        },
        "required" : [ "points" ],
        "title" : "McpDailySeriesDto"
      },
      "ua.wwind.wms.feature.analytics.contract.account.dto.LicenseStatusDto" : {
        "type" : "string",
        "enum" : [ "NONE", "ACTIVE", "GRACE_WARNING", "GRACE_READONLY", "EXPIRED" ],
        "title" : "LicenseStatusDto"
      },
      "ua.wwind.wms.feature.analytics.contract.account.dto.AccountLicenseStatusDto" : {
        "type" : "object",
        "properties" : {
          "readOnly" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.account.dto.LicenseStatusDto"
          },
          "untilDate" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          }
        },
        "required" : [ "readOnly", "status" ],
        "title" : "AccountLicenseStatusDto"
      },
      "ua.wwind.wms.feature.analytics.contract.account.dto.SeatUsageDto" : {
        "type" : "object",
        "properties" : {
          "limit" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "used" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "used" ],
        "title" : "SeatUsageDto"
      },
      "ua.wwind.wms.feature.analytics.contract.account.dto.AccountSeatsUsageDto" : {
        "type" : "object",
        "properties" : {
          "concurrent" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.account.dto.SeatUsageDto"
          },
          "named" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.account.dto.SeatUsageDto"
          },
          "technical" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.account.dto.SeatUsageDto"
          }
        },
        "required" : [ "concurrent", "named", "technical" ],
        "title" : "AccountSeatsUsageDto"
      },
      "ua.wwind.wms.feature.analytics.contract.account.dto.AccountStorageUsageDto" : {
        "type" : "object",
        "properties" : {
          "limitBytes" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "usedBytes" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "usedBytes" ],
        "title" : "AccountStorageUsageDto"
      },
      "ua.wwind.wms.feature.analytics.contract.fulfillment.dto.FulfillmentMetricDto" : {
        "type" : "string",
        "enum" : [ "INBOUND_RECEIVING", "OUTBOUND_SHIPPING", "INBOUND_COMPLETION", "OUTBOUND_FILL" ],
        "title" : "FulfillmentMetricDto"
      },
      "ua.wwind.wms.feature.analytics.contract.fulfillment.dto.MetricSeriesPointDto" : {
        "type" : "object",
        "properties" : {
          "bucket" : {
            "type" : "string",
            "title" : "String"
          },
          "primary" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "secondary" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "bucket", "primary", "secondary" ],
        "title" : "MetricSeriesPointDto"
      },
      "ua.wwind.wms.feature.analytics.contract.fulfillment.dto.MetricSeriesResponseDto" : {
        "type" : "object",
        "properties" : {
          "metric" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.fulfillment.dto.FulfillmentMetricDto"
          },
          "points" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.fulfillment.dto.MetricSeriesPointDto"
            },
            "title" : "List<MetricSeriesPointDto>"
          }
        },
        "required" : [ "metric", "points" ],
        "title" : "MetricSeriesResponseDto"
      },
      "ua.wwind.wms.feature.analytics.contract.stockstatus.dto.StockStatusEntryDto" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.stockstatus.dto.StockStatusDto"
          },
          "volume" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          },
          "weight" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          }
        },
        "required" : [ "status", "volume", "weight" ],
        "title" : "StockStatusEntryDto"
      },
      "ua.wwind.wms.feature.analytics.contract.stockstatus.dto.StockStatusDto" : {
        "type" : "string",
        "enum" : [ "AVAILABLE", "QUARANTINE", "DAMAGED", "PENDING_QC", "IN_QC", "REJECTED", "EXPIRED" ],
        "title" : "StockStatusDto"
      },
      "ua.wwind.wms.feature.analytics.contract.stockstatus.dto.StockStatusBreakdownResponseDto" : {
        "type" : "object",
        "properties" : {
          "entries" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.stockstatus.dto.StockStatusEntryDto"
            },
            "title" : "List<StockStatusEntryDto>"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.topology.WarehouseId"
          }
        },
        "required" : [ "entries", "warehouseId" ],
        "title" : "StockStatusBreakdownResponseDto"
      },
      "ua.wwind.wms.feature.analytics.contract.actionablelist.dto.ActionableListRowDto" : {
        "anyOf" : [ {
          "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.actionablelist.dto.ExpiringLotRowDto"
        }, {
          "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.actionablelist.dto.OverdueOrderRowDto"
        } ],
        "title" : "ActionableListRowDto"
      },
      "ua.wwind.wms.feature.analytics.contract.actionablelist.dto.ExpiringLotRowDto" : {
        "type" : "object",
        "properties" : {
          "navTarget" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.actionablelist.dto.NavTargetDto"
          },
          "daysLeft" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "expiryAt" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "lotName" : {
            "type" : "string",
            "title" : "String"
          },
          "product" : {
            "type" : "string",
            "title" : "String"
          },
          "quantity" : {
            "type" : "number",
            "format" : "double",
            "title" : "Double"
          }
        },
        "required" : [ "daysLeft", "expiryAt", "lotName", "navTarget", "product", "quantity" ],
        "title" : "ExpiringLotRowDto"
      },
      "ua.wwind.wms.feature.analytics.contract.actionablelist.dto.NavTargetDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "title" : "String"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.actionablelist.dto.NavTargetTypeDto"
          }
        },
        "required" : [ "id", "type" ],
        "title" : "NavTargetDto"
      },
      "ua.wwind.wms.feature.analytics.contract.actionablelist.dto.NavTargetTypeDto" : {
        "type" : "string",
        "enum" : [ "LOT", "OUTBOUND_ORDER" ],
        "title" : "NavTargetTypeDto"
      },
      "ua.wwind.wms.feature.analytics.contract.actionablelist.dto.OverdueOrderRowDto" : {
        "type" : "object",
        "properties" : {
          "navTarget" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.actionablelist.dto.NavTargetDto"
          },
          "daysOverdue" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "expectedShipmentDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "orderRef" : {
            "type" : "string",
            "title" : "String"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.actionablelist.dto.OverdueOrderStatusDto"
          }
        },
        "required" : [ "daysOverdue", "expectedShipmentDate", "navTarget", "orderRef", "status" ],
        "title" : "OverdueOrderRowDto"
      },
      "ua.wwind.wms.feature.analytics.contract.actionablelist.dto.OverdueOrderStatusDto" : {
        "type" : "string",
        "enum" : [ "DRAFT", "PENDING", "IN_WAVE", "FULLY_PLANNED", "PARTIALLY_PLANNED", "NOT_PLANNED", "PARTIALLY_SHIPPED" ],
        "title" : "OverdueOrderStatusDto"
      },
      "ua.wwind.wms.feature.analytics.contract.actionablelist.dto.ListSourceDto" : {
        "type" : "string",
        "enum" : [ "EXPIRING_LOTS", "OVERDUE_ORDERS" ],
        "title" : "ListSourceDto"
      },
      "ua.wwind.wms.feature.analytics.contract.actionablelist.dto.ActionableListResponseDto" : {
        "type" : "object",
        "properties" : {
          "rows" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.actionablelist.dto.ActionableListRowDto"
            },
            "title" : "List<ActionableListRowDto>"
          },
          "source" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.analytics.contract.actionablelist.dto.ListSourceDto"
          }
        },
        "required" : [ "rows", "source" ],
        "title" : "ActionableListResponseDto"
      },
      "ua.wwind.wms.feature.analytics.contract.config.dto.AnalyticsSettingsDto" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "updatedAt" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "enabled" ],
        "title" : "AnalyticsSettingsDto"
      },
      "ua.wwind.wms.feature.analytics.contract.config.dto.AnalyticsSettingsUpdateDto" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "enabled" ],
        "title" : "AnalyticsSettingsUpdateDto"
      },
      "ua.wwind.wms.feature.analytics.contract.config.dto.AnalyticsCleanupRequestDto" : {
        "type" : "object",
        "properties" : {
          "beforeDate" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "beforeDate" ],
        "title" : "AnalyticsCleanupRequestDto"
      },
      "ua.wwind.wms.feature.analytics.contract.config.dto.AnalyticsCleanupResultDto" : {
        "type" : "object",
        "properties" : {
          "deletedCount" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "deletedCount" ],
        "title" : "AnalyticsCleanupResultDto"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "anchorDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "brokenReason" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskBrokenReasonDto"
            } ]
          },
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.scheduler.ScheduledTaskId"
          },
          "lastRunAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "nextRunAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "runAsUserId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "schedule" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduleDto"
          },
          "state" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskStateDto"
          },
          "timeZone" : {
            "type" : "string",
            "title" : "String"
          },
          "type" : {
            "type" : "string",
            "title" : "String"
          },
          "validFrom" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "validTo" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "anchorDate", "enabled", "id", "name", "runAsUserId", "schedule", "state", "timeZone", "type", "version" ],
        "title" : "ScheduledTaskHeaderResponseDto"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskBrokenReasonDto" : {
        "type" : "string",
        "enum" : [ "TYPE_NOT_REGISTERED", "PAYLOAD_INVALID", "PAYLOAD_MIGRATION_FAILED", "SCHEDULE_UNREADABLE", "TIME_ZONE_UNKNOWN", "RUN_AS_USER_INACTIVE", "INTERNAL_ERROR" ],
        "title" : "ScheduledTaskBrokenReasonDto"
      },
      "ua.wwind.wms.core.shared.idtypes.scheduler.ScheduledTaskId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ScheduledTaskId",
        "example" : null
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduleDto" : {
        "anyOf" : [ {
          "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduleDto.Daily"
        }, {
          "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduleDto.Monthly"
        }, {
          "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduleDto.Weekly"
        } ],
        "title" : "ScheduleDto"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduleDto.Daily" : {
        "type" : "object",
        "properties" : {
          "hoursOfDay" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int32",
              "title" : "Int"
            },
            "title" : "Set<Int>",
            "uniqueItems" : true
          },
          "interval" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "hoursOfDay", "interval" ],
        "title" : "ScheduleDto.Daily"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduleDto.Monthly" : {
        "type" : "object",
        "properties" : {
          "hoursOfDay" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int32",
              "title" : "Int"
            },
            "title" : "Set<Int>",
            "uniqueItems" : true
          },
          "interval" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "dayRule" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.DayRuleDto"
          },
          "months" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/kotlinx.datetime.Month"
            },
            "title" : "Set<Month>",
            "uniqueItems" : true
          }
        },
        "required" : [ "dayRule", "hoursOfDay", "interval", "months" ],
        "title" : "ScheduleDto.Monthly"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.DayRuleDto" : {
        "anyOf" : [ {
          "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.DayRuleDto.DayFromEnd"
        }, {
          "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.DayRuleDto.DayOfMonth"
        }, {
          "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.DayRuleDto.NthWeekday"
        } ],
        "title" : "DayRuleDto"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.DayRuleDto.DayFromEnd" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "offset" ],
        "title" : "DayRuleDto.DayFromEnd"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.DayRuleDto.DayOfMonth" : {
        "type" : "object",
        "properties" : {
          "day" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "day" ],
        "title" : "DayRuleDto.DayOfMonth"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.DayRuleDto.NthWeekday" : {
        "type" : "object",
        "properties" : {
          "dayOfWeek" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.DayOfWeek"
          },
          "ordinal" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "dayOfWeek", "ordinal" ],
        "title" : "DayRuleDto.NthWeekday"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduleDto.Weekly" : {
        "type" : "object",
        "properties" : {
          "hoursOfDay" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int32",
              "title" : "Int"
            },
            "title" : "Set<Int>",
            "uniqueItems" : true
          },
          "interval" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "daysOfWeek" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/kotlinx.datetime.DayOfWeek"
            },
            "title" : "Set<DayOfWeek>",
            "uniqueItems" : true
          },
          "months" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/kotlinx.datetime.Month"
            },
            "title" : "Set<Month>",
            "uniqueItems" : true
          }
        },
        "required" : [ "daysOfWeek", "hoursOfDay", "interval", "months" ],
        "title" : "ScheduleDto.Weekly"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskStateDto" : {
        "type" : "string",
        "enum" : [ "OK", "BROKEN" ],
        "title" : "ScheduledTaskStateDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskHeaderResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskHeaderResponseDto"
            },
            "title" : "List<ScheduledTaskHeaderResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ScheduledTaskHeaderResponseDto>"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskResponseDto" : {
        "type" : "object",
        "properties" : {
          "anchorDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "brokenReason" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskBrokenReasonDto"
            } ]
          },
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.scheduler.ScheduledTaskId"
          },
          "lastRunAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "nextRunAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "payload" : {
            "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
          },
          "runAsUserId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "schedule" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduleDto"
          },
          "state" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskStateDto"
          },
          "timeZone" : {
            "type" : "string",
            "title" : "String"
          },
          "type" : {
            "type" : "string",
            "title" : "String"
          },
          "validFrom" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "validTo" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "anchorDate", "enabled", "id", "name", "payload", "runAsUserId", "schedule", "state", "timeZone", "type", "version" ],
        "title" : "ScheduledTaskResponseDto"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskRunResponseDto" : {
        "type" : "object",
        "properties" : {
          "coalescedOccurrences" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "durationMs" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "errorMessage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "finishedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.scheduler.ScheduledTaskRunId"
          },
          "queuedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "result" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            } ]
          },
          "scheduledFor" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "skippedReason" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "startedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskRunStatusDto"
          },
          "taskId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.scheduler.ScheduledTaskId"
          },
          "taskType" : {
            "type" : "string",
            "title" : "String"
          },
          "taskVersion" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "trigger" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskRunTriggerDto"
          },
          "triggeredByUserId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
            } ]
          }
        },
        "required" : [ "coalescedOccurrences", "id", "queuedAt", "scheduledFor", "status", "taskId", "taskType", "taskVersion", "trigger" ],
        "title" : "ScheduledTaskRunResponseDto"
      },
      "ua.wwind.wms.core.shared.idtypes.scheduler.ScheduledTaskRunId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ScheduledTaskRunId",
        "example" : null
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskRunStatusDto" : {
        "type" : "string",
        "enum" : [ "QUEUED", "RUNNING", "SUCCEEDED", "PARTIAL", "FAILED", "SKIPPED", "LOST" ],
        "title" : "ScheduledTaskRunStatusDto"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskRunTriggerDto" : {
        "type" : "string",
        "enum" : [ "SCHEDULED", "MANUAL", "CATCH_UP" ],
        "title" : "ScheduledTaskRunTriggerDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskRunResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskRunResponseDto"
            },
            "title" : "List<ScheduledTaskRunResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ScheduledTaskRunResponseDto>"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskTypeDto" : {
        "type" : "object",
        "properties" : {
          "currentPayloadVersion" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "key" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "currentPayloadVersion", "key" ],
        "title" : "ScheduledTaskTypeDto"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskTypesResponseDto" : {
        "type" : "object",
        "properties" : {
          "defaultTimeZone" : {
            "type" : "string",
            "title" : "String"
          },
          "types" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskTypeDto"
            },
            "title" : "List<ScheduledTaskTypeDto>"
          }
        },
        "required" : [ "defaultTimeZone", "types" ],
        "title" : "ScheduledTaskTypesResponseDto"
      },
      "ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduledTaskIncomeDto" : {
        "type" : "object",
        "properties" : {
          "anchorDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "payload" : {
            "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
          },
          "runAsUserId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "schedule" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.scheduler.contract.task.dto.ScheduleDto"
          },
          "timeZone" : {
            "type" : "string",
            "title" : "String"
          },
          "type" : {
            "type" : "string",
            "title" : "String"
          },
          "validFrom" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "validTo" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
            } ]
          },
          "version" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "anchorDate", "name", "payload", "runAsUserId", "schedule", "timeZone", "type" ],
        "title" : "ScheduledTaskIncomeDto"
      },
      "ua.wwind.wms.feature.pdt.contract.operation.dto.PdtOperationMode" : {
        "type" : "string",
        "enum" : [ "ONLINE", "OFFLINE" ],
        "title" : "PdtOperationMode"
      },
      "ua.wwind.wms.feature.pdt.contract.operation.dto.PdtOperationType" : {
        "type" : "string",
        "enum" : [ "RECEIPT_FACT", "PUTAWAY_FACT", "PICK_FACT", "DISPATCH_FACT", "RELOCATION_FACT", "ADHOC_RELOCATION", "RELOCATION_COMPLETE", "RECEIPT_COMPLETE", "RECEIPT_CONTAINER_ACCEPT", "PUTAWAY_COMPLETE", "BARCODE_REGISTER" ],
        "title" : "PdtOperationType"
      },
      "ua.wwind.wms.feature.pdt.contract.operation.dto.PdtOperationEnvelopeDto" : {
        "type" : "object",
        "properties" : {
          "baseVersion" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "clockOffsetMs" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "deviceId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "deviceSeq" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "mode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.operation.dto.PdtOperationMode"
          },
          "occurredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "opId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "payload" : {
            "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
          },
          "signature" : {
            "type" : "string",
            "title" : "String"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.operation.dto.PdtOperationType"
          },
          "userId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        },
        "required" : [ "clockOffsetMs", "deviceId", "deviceSeq", "mode", "occurredAt", "opId", "payload", "signature", "type", "userId", "warehouseId" ],
        "title" : "PdtOperationEnvelopeDto"
      },
      "ua.wwind.wms.feature.pdt.contract.operation.dto.PdtNotProcessedReason" : {
        "type" : "string",
        "enum" : [ "SEQUENCE_GAP", "SEQUENCE_CONFLICT", "EARLIER_OPERATION_NOT_PROCESSED" ],
        "title" : "PdtNotProcessedReason"
      },
      "ua.wwind.wms.feature.pdt.contract.operation.dto.PdtOperationStatus" : {
        "type" : "string",
        "enum" : [ "ACCEPTED", "ACCEPTED_WITH_DISCREPANCY", "PARKED", "REJECTED", "NOT_PROCESSED" ],
        "title" : "PdtOperationStatus"
      },
      "ua.wwind.wms.feature.pdt.contract.operation.dto.PdtOperationResultDto" : {
        "type" : "object",
        "properties" : {
          "appliedAtCursor" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deviceSeq" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "discrepancyIds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            },
            "title" : "List<Uuid>"
          },
          "document" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            } ]
          },
          "notProcessedReason" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.operation.dto.PdtNotProcessedReason"
            } ]
          },
          "opId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "result" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.operation.dto.PdtOperationStatus"
          }
        },
        "required" : [ "deviceSeq", "discrepancyIds", "opId", "status" ],
        "title" : "PdtOperationResultDto"
      },
      "ua.wwind.wms.feature.pdt.contract.operation.dto.PdtSequenceConflictDto" : {
        "type" : "object",
        "properties" : {
          "lastProcessedSeq" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "reason" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.operation.dto.PdtNotProcessedReason"
          }
        },
        "required" : [ "lastProcessedSeq", "reason" ],
        "title" : "PdtSequenceConflictDto"
      },
      "ua.wwind.wms.feature.pdt.contract.operation.dto.PdtBatchRequestDto" : {
        "type" : "object",
        "properties" : {
          "operations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.operation.dto.PdtOperationEnvelopeDto"
            },
            "title" : "List<PdtOperationEnvelopeDto>"
          }
        },
        "required" : [ "operations" ],
        "title" : "PdtBatchRequestDto"
      },
      "ua.wwind.wms.feature.pdt.contract.operation.dto.PdtBatchResponseDto" : {
        "type" : "object",
        "properties" : {
          "lastProcessedSeq" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "results" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.operation.dto.PdtOperationResultDto"
            },
            "title" : "List<PdtOperationResultDto>"
          }
        },
        "required" : [ "lastProcessedSeq", "results" ],
        "title" : "PdtBatchResponseDto"
      },
      "ua.wwind.wms.feature.pdt.contract.sync.dto.SyncChangeDto" : {
        "type" : "object",
        "properties" : {
          "action" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.SyncAction"
          },
          "data" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
            } ]
          },
          "entity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.SyncEntityType"
          },
          "id" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "action", "entity", "id" ],
        "title" : "SyncChangeDto"
      },
      "ua.wwind.wms.feature.pdt.contract.sync.SyncAction" : {
        "type" : "string",
        "enum" : [ "UPSERT", "EVICT" ],
        "title" : "SyncAction"
      },
      "ua.wwind.wms.feature.pdt.contract.sync.SyncEntityType" : {
        "type" : "string",
        "enum" : [ "RECEIPT", "PUTAWAY", "PICKING", "DISPATCH", "RELOCATION", "LOT", "STOCK", "RESERVATION", "LOCATION", "LOCATION_STATE", "CONTAINER", "CONTAINER_RESERVATION", "CONTAINER_TYPE", "PRODUCT", "PRODUCT_GROUP", "PACK_TYPE_SET", "UOM", "LOT_ATTRIBUTE", "RECEIVING_POLICY", "PICKING_POLICY", "SHIPPING_POLICY", "BARCODE_POLICY", "LOT_TRACKING_POLICY", "TENANT_SETTINGS", "PARTY", "USER", "ACCESS_GROUP", "ACCESS_PROFILE", "OUTBOUND_ORDER", "PRODUCT_FEATURE", "BARCODE", "WAREHOUSE", "CONTAINER_REFERENCE" ],
        "title" : "SyncEntityType"
      },
      "ua.wwind.wms.feature.pdt.contract.sync.dto.SyncChangesResponseDto" : {
        "type" : "object",
        "properties" : {
          "changes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.dto.SyncChangeDto"
            },
            "title" : "List<SyncChangeDto>"
          },
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "hasMore" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "nextCursor" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "changes", "hasMore", "nextCursor" ],
        "title" : "SyncChangesResponseDto"
      },
      "ua.wwind.wms.feature.pdt.contract.sync.dto.SyncLookupRequestDto" : {
        "type" : "object",
        "properties" : {
          "entity" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.SyncEntityType"
          },
          "ids" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        },
        "required" : [ "entity", "ids", "warehouseId" ],
        "title" : "SyncLookupRequestDto"
      },
      "ua.wwind.wms.feature.pdt.contract.sync.dto.SyncLookupResponseDto" : {
        "type" : "object",
        "properties" : {
          "changes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.dto.SyncChangeDto"
            },
            "title" : "List<SyncChangeDto>"
          },
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "changes" ],
        "title" : "SyncLookupResponseDto"
      },
      "ua.wwind.wms.feature.pdt.contract.sync.dto.SyncCombinationDto" : {
        "type" : "object",
        "properties" : {
          "lotId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "productFeatureId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "productId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        },
        "required" : [ "productId" ],
        "title" : "SyncCombinationDto"
      },
      "ua.wwind.wms.feature.pdt.contract.sync.dto.SyncBarcodesRequestDto" : {
        "type" : "object",
        "properties" : {
          "combinations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.dto.SyncCombinationDto"
            },
            "title" : "List<SyncCombinationDto>"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        },
        "required" : [ "combinations", "warehouseId" ],
        "title" : "SyncBarcodesRequestDto"
      },
      "ua.wwind.wms.feature.pdt.contract.sync.dto.SyncSnapshotResponseDto" : {
        "type" : "object",
        "properties" : {
          "changes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.dto.SyncChangeDto"
            },
            "title" : "List<SyncChangeDto>"
          },
          "cursor" : {
            "type" : "string",
            "title" : "String"
          },
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "nextPage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "changes", "cursor" ],
        "title" : "SyncSnapshotResponseDto"
      },
      "ua.wwind.wms.feature.pdt.contract.sync.dto.PdtParkedCountDto" : {
        "type" : "object",
        "properties" : {
          "count" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "userId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        },
        "required" : [ "count", "userId" ],
        "title" : "PdtParkedCountDto"
      },
      "ua.wwind.wms.feature.pdt.contract.sync.dto.PdtParkedCountsDto" : {
        "type" : "object",
        "properties" : {
          "counts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.sync.dto.PdtParkedCountDto"
            },
            "title" : "List<PdtParkedCountDto>"
          }
        },
        "required" : [ "counts" ],
        "title" : "PdtParkedCountsDto"
      },
      "ua.wwind.wms.feature.pdt.contract.syncsession.dto.DeviceWipedRequestDto" : {
        "type" : "object",
        "properties" : {
          "signature" : {
            "type" : "string",
            "title" : "String"
          },
          "signedAtEpochMs" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "signature", "signedAtEpochMs" ],
        "title" : "DeviceWipedRequestDto"
      },
      "ua.wwind.wms.feature.pdt.contract.syncsession.dto.DeviceSyncSessionIssueRequestDto" : {
        "type" : "object",
        "properties" : {
          "signature" : {
            "type" : "string",
            "title" : "String"
          },
          "signedAtEpochMs" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        },
        "required" : [ "signature", "signedAtEpochMs", "warehouseId" ],
        "title" : "DeviceSyncSessionIssueRequestDto"
      },
      "ua.wwind.wms.feature.pdt.contract.syncsession.dto.DeviceSyncSessionDto" : {
        "type" : "object",
        "properties" : {
          "accessExpiresInSeconds" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "accessToken" : {
            "type" : "string",
            "title" : "String"
          },
          "refreshExpiresAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "refreshToken" : {
            "type" : "string",
            "title" : "String"
          },
          "syncSessionId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        },
        "required" : [ "accessExpiresInSeconds", "accessToken", "refreshExpiresAt", "refreshToken", "syncSessionId", "warehouseId" ],
        "title" : "DeviceSyncSessionDto"
      },
      "ua.wwind.wms.feature.pdt.contract.syncsession.dto.DeviceSyncSessionRefreshRequestDto" : {
        "type" : "object",
        "properties" : {
          "refreshToken" : {
            "type" : "string",
            "title" : "String"
          },
          "signature" : {
            "type" : "string",
            "title" : "String"
          },
          "signedAtEpochMs" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "refreshToken", "signature", "signedAtEpochMs" ],
        "title" : "DeviceSyncSessionRefreshRequestDto"
      },
      "ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResponseDto" : {
        "type" : "object",
        "properties" : {
          "accountingDate" : {
            "$ref" : "#/components/schemas/kotlinx.datetime.LocalDate"
          },
          "createdAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "deviceId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "documentId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "documentType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "occurredAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "opId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "payload" : {
            "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
          },
          "resolution" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "resolvedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "resolvedBy" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "severity" : {
            "type" : "string",
            "title" : "String"
          },
          "status" : {
            "type" : "string",
            "title" : "String"
          },
          "subject" : {
            "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
          },
          "type" : {
            "type" : "string",
            "title" : "String"
          },
          "userId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          },
          "warehouseId" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          }
        },
        "required" : [ "accountingDate", "createdAt", "deviceId", "id", "occurredAt", "opId", "payload", "severity", "status", "subject", "type", "userId", "version", "warehouseId" ],
        "title" : "OfflineDiscrepancyResponseDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResponseDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResponseDto"
            },
            "title" : "List<OfflineDiscrepancyResponseDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<OfflineDiscrepancyResponseDto>"
      },
      "ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResolveRequestDto" : {
        "type" : "object",
        "properties" : {
          "comment" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "version" ],
        "title" : "OfflineDiscrepancyResolveRequestDto"
      },
      "ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResolveItemDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "id", "version" ],
        "title" : "OfflineDiscrepancyResolveItemDto"
      },
      "ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyBulkResolveRequestDto" : {
        "type" : "object",
        "properties" : {
          "comment" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResolveItemDto"
            },
            "title" : "List<OfflineDiscrepancyResolveItemDto>"
          }
        },
        "required" : [ "items" ],
        "title" : "OfflineDiscrepancyBulkResolveRequestDto"
      },
      "ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResolveResultDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
          },
          "outcome" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResolveOutcome"
          },
          "version" : {
            "type" : [ "null", "integer" ],
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "id", "outcome" ],
        "title" : "OfflineDiscrepancyResolveResultDto"
      },
      "ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResolveOutcome" : {
        "type" : "string",
        "enum" : [ "RESOLVED", "VERSION_CONFLICT", "NOT_OPEN", "NOT_FOUND" ],
        "title" : "OfflineDiscrepancyResolveOutcome"
      },
      "ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyBulkResolveResponseDto" : {
        "type" : "object",
        "properties" : {
          "results" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.pdt.contract.discrepancy.dto.OfflineDiscrepancyResolveResultDto"
            },
            "title" : "List<OfflineDiscrepancyResolveResultDto>"
          }
        },
        "required" : [ "results" ],
        "title" : "OfflineDiscrepancyBulkResolveResponseDto"
      },
      "ua.wwind.wms.feature.attribute.contract.dto.AttributeHeaderDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.shared.AttributeId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.shared.AttributeId"
            } ]
          },
          "identifier" : {
            "type" : "string",
            "title" : "String"
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "scopedTables" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "type" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeTypeDto"
            } ]
          },
          "unscopedTables" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "values" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeValueDto"
            },
            "title" : "List<AttributeValueDto>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "identifier", "isGroup", "name", "number", "scopedTables", "unscopedTables", "version" ],
        "title" : "AttributeHeaderDto"
      },
      "ua.wwind.wms.feature.attribute.contract.dto.AttributeTypeDto" : {
        "type" : "string",
        "enum" : [ "STRING", "NUMBER", "BOOLEAN", "DATE", "ENUM" ],
        "title" : "AttributeTypeDto"
      },
      "ua.wwind.wms.feature.attribute.contract.dto.AttributeValueDto" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "value" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "name", "value" ],
        "title" : "AttributeValueDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.attribute.contract.dto.AttributeHeaderDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeHeaderDto"
            },
            "title" : "List<AttributeHeaderDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<AttributeHeaderDto>"
      },
      "ua.wwind.wms.feature.attribute.contract.dto.AttributeTranslationDto" : {
        "type" : "object",
        "properties" : {
          "language" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "values" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "Map<String,String>"
          }
        },
        "required" : [ "language" ],
        "title" : "AttributeTranslationDto"
      },
      "ua.wwind.wms.feature.attribute.contract.dto.AttributeFullDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.shared.AttributeId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.shared.AttributeId"
            } ]
          },
          "identifier" : {
            "type" : "string",
            "title" : "String"
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "scopedTables" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeTranslationDto"
            },
            "title" : "List<AttributeTranslationDto>"
          },
          "type" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeTypeDto"
            } ]
          },
          "unscopedTables" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "values" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeValueDto"
            },
            "title" : "List<AttributeValueDto>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "identifier", "isGroup", "name", "number", "scopedTables", "translations", "unscopedTables", "version" ],
        "title" : "AttributeFullDto"
      },
      "ua.wwind.wms.feature.attribute.contract.dto.AttributeIncomeDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "externalId" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.shared.AttributeId"
            } ]
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.shared.AttributeId"
            } ]
          },
          "identifier" : {
            "type" : "string",
            "title" : "String"
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "scopedTables" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "translations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeTranslationDto"
            },
            "title" : "List<AttributeTranslationDto>"
          },
          "type" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeTypeDto"
            } ]
          },
          "unscopedTables" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "updateTranslations" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "values" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeValueDto"
            },
            "title" : "List<AttributeValueDto>"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "identifier", "isGroup", "name", "scopedTables", "translations", "unscopedTables", "updateTranslations", "version" ],
        "title" : "AttributeIncomeDto"
      },
      "ua.wwind.wms.feature.attribute.contract.dto.AttributeDefinitionDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.shared.AttributeId"
          },
          "identifier" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "type" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeTypeDto"
          },
          "values" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.attribute.contract.dto.AttributeValueDto"
            },
            "title" : "List<AttributeValueDto>"
          }
        },
        "required" : [ "deleted", "id", "identifier", "name", "type" ],
        "title" : "AttributeDefinitionDto"
      },
      "ua.wwind.wms.feature.attribute.contract.dto.AttributeParametersDto" : {
        "type" : "object",
        "properties" : {
          "groupId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.uuid.Uuid"
            } ]
          },
          "isGroup" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "isGroup" ],
        "title" : "AttributeParametersDto"
      },
      "ua.wwind.wms.feature.attribute.contract.dto.AttributeIdentifierNameDto" : {
        "type" : "object",
        "properties" : {
          "identifier" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "identifier", "name" ],
        "title" : "AttributeIdentifierNameDto"
      },
      "ua.wwind.wms.feature.attribute.contract.dto.AttributeLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.shared.AttributeId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "AttributeLightDto"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDto" : {
        "type" : "object",
        "properties" : {
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.printform.PrintFormId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "number" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "purpose" : {
            "type" : "string",
            "title" : "String"
          },
          "table" : {
            "type" : "string",
            "title" : "String"
          },
          "templateName" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "number", "purpose", "table", "templateName", "version" ],
        "title" : "PrintFormDto"
      },
      "ua.wwind.wms.core.shared.idtypes.printform.PrintFormId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "PrintFormId",
        "example" : null
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDto"
            },
            "title" : "List<PrintFormDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<PrintFormDto>"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormRequest" : {
        "type" : "object",
        "properties" : {
          "includeLibrary" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "purpose" : {
            "type" : "string",
            "title" : "String"
          },
          "table" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "includeLibrary", "purpose", "table" ],
        "title" : "PrintFormRequest"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormIncomeDto" : {
        "type" : "object",
        "properties" : {
          "dataLanguage" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.printform.PrintFormId"
            } ]
          },
          "libraryFormId" : {
            "type" : [ "null", "string" ],
            "title" : "LibraryPrintFormId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "purpose" : {
            "type" : "string",
            "title" : "String"
          },
          "table" : {
            "type" : "string",
            "title" : "String"
          },
          "template" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "templateName" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "name", "purpose", "table", "templateName", "version" ],
        "title" : "PrintFormIncomeDto"
      },
      "ua.wwind.wms.core.shared.idtypes.printform.EntityId" : {
        "anyOf" : [ {
          "type" : "integer",
          "format" : "int64",
          "title" : "EntityId.Long"
        }, {
          "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.printform.EntityId.Uuid"
        } ],
        "title" : "EntityId"
      },
      "ua.wwind.wms.core.shared.idtypes.printform.EntityId.Uuid" : {
        "type" : "object",
        "properties" : { },
        "title" : "EntityId.Uuid"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormPdfRequest" : {
        "type" : "object",
        "properties" : {
          "copies" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "entityId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.printform.EntityId"
          },
          "formId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.printform.PrintFormId"
            } ]
          },
          "libraryFormId" : {
            "type" : [ "null", "string" ],
            "title" : "LibraryPrintFormId"
          },
          "params" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "Map<String,String>"
          }
        },
        "required" : [ "copies", "entityId" ],
        "title" : "PrintFormPdfRequest"
      },
      "ua.wwind.wms.core.shared.idtypes.printform.PrintArtifactId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "PrintArtifactId",
        "example" : null
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormArtifactResponse" : {
        "type" : "object",
        "properties" : {
          "artifactId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.printform.PrintArtifactId"
          },
          "fileName" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "artifactId", "fileName" ],
        "title" : "PrintFormArtifactResponse"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormBatchEntityDto" : {
        "type" : "object",
        "properties" : {
          "copies" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "entityId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.printform.EntityId"
          }
        },
        "required" : [ "copies", "entityId" ],
        "title" : "PrintFormBatchEntityDto"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormBatchPdfRequest" : {
        "type" : "object",
        "properties" : {
          "entities" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormBatchEntityDto"
            },
            "title" : "List<PrintFormBatchEntityDto>"
          },
          "formId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.printform.PrintFormId"
            } ]
          },
          "libraryFormId" : {
            "type" : [ "null", "string" ],
            "title" : "LibraryPrintFormId"
          },
          "params" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "Map<String,String>"
          }
        },
        "required" : [ "entities" ],
        "title" : "PrintFormBatchPdfRequest"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormPreviewRequest" : {
        "type" : "object",
        "properties" : {
          "entityId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.printform.EntityId"
          },
          "params" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "Map<String,String>"
          },
          "table" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "entityId", "table" ],
        "title" : "PrintFormPreviewRequest"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintDataWrapper" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
          },
          "params" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "Map<String,String>"
          }
        },
        "required" : [ "data" ],
        "title" : "PrintDataWrapper"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDtoExpandRequest" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "$ref" : "#/components/schemas/kotlinx.serialization.json.JsonElement"
          },
          "depth" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "dtoFqn" : {
            "type" : "string",
            "title" : "String"
          },
          "expandNulls" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "data", "depth", "dtoFqn", "expandNulls" ],
        "title" : "PrintFormDtoExpandRequest"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDtoExpandTreeRequest" : {
        "type" : "object",
        "properties" : {
          "depth" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "dtoFqn" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "depth", "dtoFqn" ],
        "title" : "PrintFormDtoExpandTreeRequest"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormLightDto" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.printform.PrintFormId"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "version" : {
            "type" : "integer",
            "maximum" : 32767,
            "minimum" : -32768,
            "title" : "Short"
          }
        },
        "required" : [ "deleted", "id", "name", "version" ],
        "title" : "PrintFormLightDto"
      },
      "ua.wwind.wms.feature.printform.contract.library.dto.AvailablePrintFormDto" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "libraryFormId" : {
            "type" : [ "null", "string" ],
            "title" : "LibraryPrintFormId"
          },
          "locale" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "source" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.printform.contract.library.dto.AvailablePrintFormSource"
          },
          "tenantFormId" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.printform.PrintFormId"
            } ]
          }
        },
        "required" : [ "name", "source" ],
        "title" : "AvailablePrintFormDto"
      },
      "ua.wwind.wms.feature.printform.contract.library.dto.AvailablePrintFormSource" : {
        "type" : "string",
        "enum" : [ "TENANT", "LIBRARY" ],
        "title" : "AvailablePrintFormSource"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintableTableDto" : {
        "type" : "object",
        "properties" : {
          "purposes" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "table" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "purposes", "table" ],
        "title" : "PrintableTableDto"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormTableMetadataRequest" : {
        "type" : "object",
        "properties" : {
          "depth" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "table" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "depth", "table" ],
        "title" : "PrintFormTableMetadataRequest"
      },
      "ua.wwind.wms.core.shared.metadata.TableFieldMetadata" : {
        "type" : "object",
        "properties" : {
          "dataType" : {
            "type" : "string",
            "title" : "String"
          },
          "discriminatorProperty" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "discriminatorTargets" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "Map<String,String>"
          },
          "enumType" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "isNullable" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "propertyName" : {
            "type" : "string",
            "title" : "String"
          },
          "references" : {
            "type" : [ "null", "array" ],
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "sources" : {
            "type" : [ "null", "array" ],
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "valueKind" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.metadata.FieldValueKind"
            } ]
          }
        },
        "required" : [ "dataType", "isNullable", "name", "propertyName" ],
        "title" : "TableFieldMetadata"
      },
      "ua.wwind.wms.core.shared.metadata.FieldValueKind" : {
        "type" : "string",
        "enum" : [ "ENUM", "BOOLEAN", "INSTANT", "DATE" ],
        "title" : "FieldValueKind"
      },
      "ua.wwind.wms.core.shared.metadata.TableMetadataNode" : {
        "anyOf" : [ {
          "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.metadata.MergedTableMetadata"
        }, {
          "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.metadata.TableMetadata"
        } ],
        "title" : "TableMetadataNode"
      },
      "ua.wwind.wms.core.shared.metadata.MergedTableMetadata" : {
        "type" : "object",
        "properties" : {
          "fields" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.metadata.TableFieldMetadata"
            },
            "title" : "List<TableFieldMetadata>"
          },
          "included" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.metadata.TableMetadataNode"
            },
            "title" : "List<TableMetadataNode>"
          },
          "origin" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.metadata.PolymorphicOrigin"
          },
          "sources" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          }
        },
        "required" : [ "fields", "origin", "sources" ],
        "title" : "MergedTableMetadata"
      },
      "ua.wwind.wms.core.shared.metadata.PolymorphicOrigin" : {
        "anyOf" : [ {
          "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.metadata.ExplicitPolymorphicOrigin"
        }, {
          "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.metadata.ImplicitPolymorphicOrigin"
        } ],
        "title" : "PolymorphicOrigin"
      },
      "ua.wwind.wms.core.shared.metadata.ExplicitPolymorphicOrigin" : {
        "type" : "object",
        "properties" : {
          "parentField" : {
            "type" : "string",
            "title" : "String"
          },
          "parentTable" : {
            "type" : "string",
            "title" : "String"
          },
          "discriminatorProperty" : {
            "type" : "string",
            "title" : "String"
          },
          "discriminatorTargets" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "Map<String,String>"
          }
        },
        "required" : [ "discriminatorProperty", "discriminatorTargets", "parentField", "parentTable" ],
        "title" : "ExplicitPolymorphicOrigin"
      },
      "ua.wwind.wms.core.shared.metadata.ImplicitPolymorphicOrigin" : {
        "type" : "object",
        "properties" : {
          "parentField" : {
            "type" : "string",
            "title" : "String"
          },
          "parentTable" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "parentField", "parentTable" ],
        "title" : "ImplicitPolymorphicOrigin"
      },
      "ua.wwind.wms.core.shared.metadata.TableMetadata" : {
        "type" : "object",
        "properties" : {
          "fields" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.metadata.TableFieldMetadata"
            },
            "title" : "List<TableFieldMetadata>"
          },
          "included" : {
            "type" : [ "null", "array" ],
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.metadata.TableMetadataNode"
            },
            "title" : "List<TableMetadataNode>"
          },
          "table" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "fields", "table" ],
        "title" : "TableMetadata"
      },
      "ua.wwind.wms.feature.printform.contract.printform.dto.PrintFormDtoMetadataRequest" : {
        "type" : "object",
        "properties" : {
          "depth" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "dtoFqn" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "depth", "dtoFqn" ],
        "title" : "PrintFormDtoMetadataRequest"
      },
      "ua.wwind.wms.feature.printform.contract.library.dto.LibraryPrintFormDto" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "title" : "LibraryPrintFormId"
          },
          "locale" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "purpose" : {
            "type" : "string",
            "title" : "String"
          },
          "table" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "id", "locale", "name", "purpose", "table" ],
        "title" : "LibraryPrintFormDto"
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.ImportJobDto" : {
        "type" : "object",
        "properties" : {
          "completedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "filesCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.dataimport.ImportJobId"
          },
          "initiatedByUserId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          },
          "mode" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportModeDto"
          },
          "startedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportJobStatusDto"
          },
          "uploadedFileName" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "filesCount", "id", "initiatedByUserId", "mode", "startedAt", "status", "uploadedFileName" ],
        "title" : "ImportJobDto"
      },
      "ua.wwind.wms.core.shared.idtypes.dataimport.ImportJobId" : {
        "type" : "string",
        "format" : "uuid",
        "title" : "ImportJobId",
        "example" : null
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.ImportModeDto" : {
        "type" : "string",
        "enum" : [ "UPSERT", "CREATE_ONLY", "UPDATE_ONLY" ],
        "title" : "ImportModeDto"
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.ImportJobStatusDto" : {
        "type" : "string",
        "enum" : [ "QUEUED", "PROCESSING", "COMPLETED", "COMPLETED_WITH_ERRORS", "FAILED", "CANCELLED" ],
        "title" : "ImportJobStatusDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.dataimport.contract.dto.ImportJobDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportJobDto"
            },
            "title" : "List<ImportJobDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<ImportJobDto>"
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.FileImportResultDto" : {
        "type" : "object",
        "properties" : {
          "createdRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "errors" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportErrorDto"
            },
            "title" : "List<ImportErrorDto>"
          },
          "failedRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "fileName" : {
            "type" : "string",
            "title" : "String"
          },
          "processedRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "skippedRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.FileImportStatusDto"
          },
          "updatedRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "createdRecords", "errors", "failedRecords", "fileName", "processedRecords", "skippedRecords", "status", "updatedRecords" ],
        "title" : "FileImportResultDto"
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.ImportErrorDto" : {
        "type" : "object",
        "properties" : {
          "errorType" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportErrorTypeDto"
          },
          "field" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "message" : {
            "type" : "string",
            "title" : "String"
          },
          "recordIdentifier" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "recordIndex" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "stackTrace" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "errorType", "message" ],
        "title" : "ImportErrorDto"
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.ImportErrorTypeDto" : {
        "type" : "string",
        "enum" : [ "REFERENCE_NOT_FOUND", "AMBIGUOUS_REFERENCE", "VALIDATION_ERROR", "DUPLICATE_ERROR", "PARSING_ERROR", "UNKNOWN_ERROR" ],
        "title" : "ImportErrorTypeDto"
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.FileImportStatusDto" : {
        "type" : "string",
        "enum" : [ "COMPLETED", "COMPLETED_WITH_ERRORS", "FAILED" ],
        "title" : "FileImportStatusDto"
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.ImportProgressDto" : {
        "type" : "object",
        "properties" : {
          "createdRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "currentFile" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "currentFileIndex" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "failedRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "processedRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "skippedRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "totalFiles" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "updatedRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "createdRecords", "currentFileIndex", "failedRecords", "processedRecords", "skippedRecords", "totalFiles", "updatedRecords" ],
        "title" : "ImportProgressDto"
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.ImportSummaryDto" : {
        "type" : "object",
        "properties" : {
          "createdRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "failedRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "processedFiles" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "skippedRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "totalFiles" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "totalRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "updatedRecords" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "createdRecords", "failedRecords", "processedFiles", "skippedRecords", "totalFiles", "totalRecords", "updatedRecords" ],
        "title" : "ImportSummaryDto"
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.ImportStatusResponseDto" : {
        "type" : "object",
        "properties" : {
          "completedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "fileResults" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.FileImportResultDto"
            },
            "title" : "List<FileImportResultDto>"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.dataimport.ImportJobId"
          },
          "progress" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportProgressDto"
            } ]
          },
          "startedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportJobStatusDto"
          },
          "summary" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportSummaryDto"
            } ]
          }
        },
        "required" : [ "fileResults", "id", "startedAt", "status" ],
        "title" : "ImportStatusResponseDto"
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.ImportUploadResponseDto" : {
        "type" : "object",
        "properties" : {
          "filesCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "id" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.dataimport.ImportJobId"
          },
          "startedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportJobStatusDto"
          }
        },
        "required" : [ "filesCount", "id", "startedAt", "status" ],
        "title" : "ImportUploadResponseDto"
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.DemoScenarioDto" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "title" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "description", "name", "title" ],
        "title" : "DemoScenarioDto"
      },
      "ua.wwind.wms.feature.dataimport.contract.dto.ImportCancelResponseDto" : {
        "type" : "object",
        "properties" : {
          "importId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.dataimport.ImportJobId"
          },
          "message" : {
            "type" : "string",
            "title" : "String"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.dataimport.contract.dto.ImportJobStatusDto"
          }
        },
        "required" : [ "importId", "message", "status" ],
        "title" : "ImportCancelResponseDto"
      },
      "ua.wwind.wms.feature.mcp.contract.dto.McpUsageWindowDto" : {
        "type" : "object",
        "properties" : {
          "limit" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "percent" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "resetAtEpochMs" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "used" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "resetAtEpochMs", "used" ],
        "title" : "McpUsageWindowDto"
      },
      "ua.wwind.wms.feature.mcp.contract.dto.McpUsageConsumerItemDto" : {
        "type" : "object",
        "properties" : {
          "requestCount" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "userId" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.core.shared.idtypes.security.UserId"
          }
        },
        "required" : [ "requestCount", "userId" ],
        "title" : "McpUsageConsumerItemDto"
      },
      "ua.wwind.wms.feature.mcp.contract.dto.McpUsageResponseDto" : {
        "type" : "object",
        "properties" : {
          "day" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.mcp.contract.dto.McpUsageWindowDto"
          },
          "month" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.mcp.contract.dto.McpUsageWindowDto"
          },
          "topConsumers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.mcp.contract.dto.McpUsageConsumerItemDto"
            },
            "title" : "List<McpUsageConsumerItemDto>"
          },
          "week" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.mcp.contract.dto.McpUsageWindowDto"
          }
        },
        "required" : [ "day", "month", "topConsumers", "week" ],
        "title" : "McpUsageResponseDto"
      },
      "ua.wwind.wms.core.rest.policy.PolicyRevisionsDto" : {
        "type" : "object",
        "properties" : {
          "revisions" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "integer",
              "maximum" : 32767,
              "minimum" : -32768,
              "title" : "Short"
            },
            "title" : "Map<PolicyKind,Short>"
          }
        },
        "required" : [ "revisions" ],
        "title" : "PolicyRevisionsDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.TenantUsageDto" : {
        "type" : "object",
        "properties" : {
          "computedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "concurrentUsed" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "mcpCallsMonthUsed" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "namedUsed" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "offlineDevicesReleasing" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "offlineDevicesUsed" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "offlineNextReleaseAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "storageUsedBytes" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "technicalUsed" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          }
        },
        "required" : [ "computedAt", "concurrentUsed", "mcpCallsMonthUsed", "namedUsed", "offlineDevicesReleasing", "offlineDevicesUsed", "storageUsedBytes", "technicalUsed" ],
        "title" : "TenantUsageDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.OwnerTotpResetActorKind" : {
        "type" : "string",
        "enum" : [ "ACCOUNT", "STAFF" ],
        "title" : "OwnerTotpResetActorKind"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.OwnerTotpResetRequestDto" : {
        "type" : "object",
        "properties" : {
          "actorEmail" : {
            "type" : "string",
            "title" : "String"
          },
          "actorKind" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.OwnerTotpResetActorKind"
          },
          "actorName" : {
            "type" : "string",
            "title" : "String"
          },
          "reason" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "actorEmail", "actorKind", "actorName" ],
        "title" : "OwnerTotpResetRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.OwnerTotpResetDto" : {
        "type" : "object",
        "properties" : {
          "ownerEmail" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "resetAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          }
        },
        "required" : [ "resetAt" ],
        "title" : "OwnerTotpResetDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.DemoPasswordsRequestDto" : {
        "type" : "object",
        "properties" : {
          "password" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "password" ],
        "title" : "DemoPasswordsRequestDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.DemoStaffLoginDto" : {
        "type" : "object",
        "properties" : {
          "login" : {
            "type" : "string",
            "title" : "String"
          },
          "profiles" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          }
        },
        "required" : [ "login", "profiles" ],
        "title" : "DemoStaffLoginDto"
      },
      "ua.wwind.wms.feature.iam.contract.tenant.dto.DemoPasswordsDto" : {
        "type" : "object",
        "properties" : {
          "users" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.iam.contract.tenant.dto.DemoStaffLoginDto"
            },
            "title" : "List<DemoStaffLoginDto>"
          }
        },
        "required" : [ "users" ],
        "title" : "DemoPasswordsDto"
      },
      "ua.wwind.wms.tenancy.contract.ops.dto.TenantBackupClass" : {
        "type" : "string",
        "enum" : [ "ROUTINE", "MIGRATION", "SAFETY", "FAREWELL" ],
        "title" : "TenantBackupClass"
      },
      "ua.wwind.wms.tenancy.contract.ops.dto.TenantBackupTrigger" : {
        "type" : "string",
        "enum" : [ "AUTO", "MANUAL" ],
        "title" : "TenantBackupTrigger"
      },
      "ua.wwind.wms.tenancy.contract.ops.dto.TenantOperationKind" : {
        "type" : "string",
        "enum" : [ "MIGRATE", "CHECK", "ADMIT", "RELEASE", "OWNER", "BACKUP", "RESTORE", "VERIFY", "DEMO", "EXPORT" ],
        "title" : "TenantOperationKind"
      },
      "ua.wwind.wms.tenancy.contract.ops.dto.TenantOperationStatus" : {
        "type" : "string",
        "enum" : [ "RUNNING", "SUCCEEDED", "FAILED" ],
        "title" : "TenantOperationStatus"
      },
      "ua.wwind.wms.tenancy.contract.ops.dto.TenantCheckVerdict" : {
        "type" : "string",
        "enum" : [ "OK", "NOT_SERVED", "UNAVAILABLE", "VERSION_MISMATCH", "UNREACHABLE" ],
        "title" : "TenantCheckVerdict"
      },
      "ua.wwind.wms.tenancy.contract.ops.dto.TenantOperationDto" : {
        "type" : "object",
        "properties" : {
          "appVersion" : {
            "type" : "string",
            "title" : "String"
          },
          "artifactRef" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "backupClass" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.TenantBackupClass"
            } ]
          },
          "backupTrigger" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.TenantBackupTrigger"
            } ]
          },
          "coldStartedSchemas" : {
            "type" : [ "null", "array" ],
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "demoScenario" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "expectedVersion" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "finishedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "foundVersion" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "kind" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.TenantOperationKind"
          },
          "log" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "migrationLevel" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "migrationState" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "migrationsApplied" : {
            "type" : [ "null", "boolean" ],
            "title" : "Boolean"
          },
          "operationId" : {
            "type" : "string",
            "title" : "String"
          },
          "poolCode" : {
            "type" : "string",
            "title" : "String"
          },
          "reason" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "restoredVersion" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "schemaBaselines" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "type" : "integer",
              "format" : "int32",
              "title" : "Int"
            },
            "title" : "Map<String,Int>"
          },
          "sizeBytes" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "startedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.TenantOperationStatus"
          },
          "tenantId" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "verdict" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.TenantCheckVerdict"
            } ]
          }
        },
        "required" : [ "appVersion", "kind", "log", "operationId", "poolCode", "startedAt", "status", "tenantId" ],
        "title" : "TenantOperationDto"
      },
      "ua.wwind.wms.tenancy.contract.ops.dto.TenantVerifyRequestDto" : {
        "type" : "object",
        "properties" : {
          "artifactRef" : {
            "type" : "string",
            "title" : "String"
          },
          "dbHost" : {
            "type" : "string",
            "title" : "String"
          },
          "dbName" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "artifactRef", "dbHost", "dbName" ],
        "title" : "TenantVerifyRequestDto"
      },
      "ua.wwind.wms.tenancy.contract.ops.dto.DemoScenarioDto" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "title" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "description", "name", "title" ],
        "title" : "DemoScenarioDto"
      },
      "ua.wwind.wms.tenancy.contract.ops.dto.ExportFormatTableDto" : {
        "type" : "object",
        "properties" : {
          "columns" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.ExportFormatColumnDto"
            },
            "title" : "List<ExportFormatColumnDto>"
          },
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "primaryKey" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "columns", "name", "primaryKey", "schema" ],
        "title" : "ExportFormatTableDto"
      },
      "ua.wwind.wms.tenancy.contract.ops.dto.ExportFormatColumnDto" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "title" : "String"
          },
          "notNull" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "type" : {
            "type" : "string",
            "title" : "String"
          }
        },
        "required" : [ "name", "notNull", "type" ],
        "title" : "ExportFormatColumnDto"
      },
      "ua.wwind.wms.tenancy.contract.ops.dto.ExportFormatDto" : {
        "type" : "object",
        "properties" : {
          "formatVersion" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "serverVersion" : {
            "type" : "string",
            "title" : "String"
          },
          "tables" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.tenancy.contract.ops.dto.ExportFormatTableDto"
            },
            "title" : "List<ExportFormatTableDto>"
          }
        },
        "required" : [ "formatVersion", "serverVersion", "tables" ],
        "title" : "ExportFormatDto"
      },
      "ua.wwind.wms.feature.datamigration.contract.migration.dto.DataMigrationBatchDto" : {
        "type" : "object",
        "properties" : {
          "durationMs" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "error" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "outcome" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.datamigration.contract.migration.dto.BatchOutcomeDto"
          },
          "processed" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "seq" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "startedAt" : {
            "$ref" : "#/components/schemas/kotlin.time.Instant"
          }
        },
        "required" : [ "durationMs", "outcome", "processed", "seq", "startedAt" ],
        "title" : "DataMigrationBatchDto"
      },
      "ua.wwind.wms.feature.datamigration.contract.migration.dto.BatchOutcomeDto" : {
        "type" : "string",
        "enum" : [ "SUCCEEDED", "FAILED" ],
        "title" : "BatchOutcomeDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.datamigration.contract.migration.dto.DataMigrationBatchDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.datamigration.contract.migration.dto.DataMigrationBatchDto"
            },
            "title" : "List<DataMigrationBatchDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<DataMigrationBatchDto>"
      },
      "ua.wwind.wms.feature.datamigration.contract.migration.dto.DataMigrationMigrationDto" : {
        "type" : "object",
        "properties" : {
          "appVersion" : {
            "type" : "string",
            "title" : "String"
          },
          "attempts" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "finishedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "key" : {
            "type" : "string",
            "title" : "String"
          },
          "lastError" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "ordinal" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "priorityMode" : {
            "type" : "boolean",
            "title" : "Boolean"
          },
          "processed" : {
            "type" : "integer",
            "format" : "int64",
            "title" : "Long"
          },
          "requiredBy" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "startedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          },
          "status" : {
            "$ref" : "#/components/schemas/ua.wwind.wms.feature.datamigration.contract.migration.dto.MigrationStatusDto"
          },
          "throttleReason" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.datamigration.contract.migration.model.ThrottleReason"
            } ]
          },
          "totalEstimate" : {
            "type" : [ "null", "integer" ],
            "format" : "int64",
            "title" : "Long"
          },
          "updatedAt" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.time.Instant"
            } ]
          }
        },
        "required" : [ "appVersion", "attempts", "key", "priorityMode", "processed", "status" ],
        "title" : "DataMigrationMigrationDto"
      },
      "ua.wwind.wms.feature.datamigration.contract.migration.dto.MigrationStatusDto" : {
        "type" : "string",
        "enum" : [ "PENDING", "RUNNING", "THROTTLED", "FAILED", "COMPLETED", "FINALIZED", "SUPERSEDED" ],
        "title" : "MigrationStatusDto"
      },
      "ua.wwind.wms.feature.datamigration.contract.migration.model.ThrottleReason" : {
        "type" : "string",
        "enum" : [ "POOL_SATURATED", "DB_UNAVAILABLE", "WORKLOAD_PEAK", "BATCH_OVER_BUDGET", "BATCH_FAILED" ],
        "title" : "ThrottleReason"
      },
      "ua.wwind.wms.feature.datamigration.contract.migration.dto.MigrationStandingDto" : {
        "type" : "object",
        "properties" : {
          "focus" : {
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.datamigration.contract.migration.dto.DataMigrationMigrationDto"
            } ]
          },
          "level" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "minRequiredBy" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          },
          "nextRequiredKey" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "state" : {
            "type" : "string",
            "title" : "String"
          },
          "unfinishedCount" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "level", "state", "unfinishedCount" ],
        "title" : "MigrationStandingDto"
      },
      "io.perracodex.exposed.pagination.Page_ua.wwind.wms.feature.datamigration.contract.migration.dto.DataMigrationMigrationDto" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.datamigration.contract.migration.dto.DataMigrationMigrationDto"
            },
            "title" : "List<DataMigrationMigrationDto>"
          },
          "details" : {
            "$ref" : "#/components/schemas/io.perracodex.exposed.pagination.Page.PageDetails"
          }
        },
        "required" : [ "content", "details" ],
        "title" : "Page<DataMigrationMigrationDto>"
      },
      "ua.wwind.wms.feature.datamigration.contract.migration.dto.MigrationPrioritySetDto" : {
        "type" : "object",
        "properties" : {
          "enabled" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        },
        "required" : [ "enabled" ],
        "title" : "MigrationPrioritySetDto"
      },
      "ua.wwind.wms.feature.datamigration.contract.migration.dto.MigrationScaleRecordDto" : {
        "type" : "object",
        "properties" : {
          "key" : {
            "type" : "string",
            "title" : "String"
          },
          "ordinal" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "requiredBy" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "title" : "Int"
          }
        },
        "required" : [ "key", "ordinal" ],
        "title" : "MigrationScaleRecordDto"
      },
      "ua.wwind.wms.feature.datamigration.contract.migration.dto.MigrationScaleDto" : {
        "type" : "object",
        "properties" : {
          "baseline" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "buildOrdinal" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ua.wwind.wms.feature.datamigration.contract.migration.dto.MigrationScaleRecordDto"
            },
            "title" : "List<MigrationScaleRecordDto>"
          }
        },
        "required" : [ "baseline", "buildOrdinal", "records" ],
        "title" : "MigrationScaleDto"
      },
      "ua.wwind.wms.app.loadtest.LoadtestErpAccessDto" : {
        "type" : "object",
        "properties" : { },
        "title" : "LoadtestErpAccessDto"
      }
    },
    "examples" : { }
  },
  "webhooks" : { }
}