openapi: 3.0.1
info:
  title: Zimark Integration API
  version: v1
servers:
  - url: https://api.zimark-staging.link
    variables: {}
  - url: https://api.zimark.link
    variables: {}
security:
  - X-AUTH-KEY: []
paths:
  /integration/rest/api/v1/user/{uuid}:
    put:
      tags:
        - User
      summary: Update user
      operationId: updateUser
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserRequestV1Dto'
        required: true
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/UserResponseV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
    delete:
      tags:
        - User
      summary: Delete user
      operationId: deleteUser
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Ok
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/manifest/{manifestExternalId}:
    get:
      tags:
        - Manifest
      summary: Get manifest by external ID
      description: >-
        Retrieves a single manifest by its unique external identifier. Returns
        the manifest details without the associated assets/tracks.
      operationId: getManifestByExternalId
      parameters:
        - name: manifestExternalId
          in: path
          description: >-
            Unique external id of the manifest. External id is often an id based
            on the WMS Zimark is integrated with, e.g. an order id.
          required: true
          schema:
            type: string
          example: MAN-2024-001
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ManifestV1Dto'
        '404':
          description: Manifest not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
    put:
      tags:
        - Manifest
      summary: Update manifest
      description: >-
        Updates an existing manifest's assets and/or custom fields.This update
        endpoint uses a declarative updates, meaning Zimark will automatically
        handle deleting, adding, or updating 

        assets and/or custom fields for you.

         For updating other properties like status and gate assignment, use the specific endpoints.
      operationId: updateManifest
      parameters:
        - name: manifestExternalId
          in: path
          description: >-
            Unique external id of the manifest. AnE eternal id is often an id
            based on the WMS Zimark is integrated with, e.g. an order id.
          required: true
          schema:
            type: string
          example: MAN-2024-001
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateManifestRequestV1Dto'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Invalid request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '404':
          description: Manifest not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/user:
    get:
      tags:
        - User
      summary: Get users
      operationId: getUsers
      parameters:
        - name: role
          in: query
          description: Filter users by role
          required: false
          schema:
            type: string
        - name: pageNumber
          in: query
          description: Page number (1-based)
          required: false
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          description: Page size
          required: false
          schema:
            maximum: 100
            type: integer
            format: int32
        - name: sort.sortBy
          in: query
          description: Sorting field
          required: false
          schema:
            type: string
        - name: sort.direction
          in: query
          description: Sorting direction
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PageResponseUserResponseV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
    post:
      tags:
        - User
      summary: Create user
      operationId: createUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserRequestV1Dto'
        required: true
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CreateUserResponseV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/track/{trackId}/comments:
    get:
      tags:
        - Track
      summary: Get track comments
      operationId: getComments
      parameters:
        - name: trackId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TrackMetadataResponseV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/IntegrationErrorReply'
    post:
      tags:
        - Track
      summary: Add track comment
      operationId: addTrackComments
      parameters:
        - name: trackId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrackCommentRequestV1Dto'
        required: true
      responses:
        '200':
          description: Ok
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/scanner/{scannerUuid}/printing-batch:
    get:
      tags:
        - Printing Batch
      summary: Get batches
      operationId: getBatches
      parameters:
        - name: scannerUuid
          in: path
          required: true
          schema:
            type: string
        - name: createDateAfter
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: createDateBefore
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: pageNumber
          in: query
          description: Page number (1-based)
          required: false
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          description: Page size
          required: false
          schema:
            maximum: 100
            type: integer
            format: int32
        - name: sort.sortBy
          in: query
          description: Sorting field
          required: false
          schema:
            type: string
        - name: sort.direction
          in: query
          description: Sorting direction
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PageResponsePrintingBatchV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
    post:
      tags:
        - Printing Batch
      summary: Create printing batch
      operationId: createBatch
      parameters:
        - name: scannerUuid
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePrintingBatchRequest'
        required: true
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PrintingBatchV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/manifest:
    get:
      tags:
        - Manifest
      summary: Get manifests
      description: >-
        Retrieves a paginated list of manifests with optional filtering by
        status and gate. Supports sorting and pagination through query
        parameters.
      operationId: getManifests
      parameters:
        - name: manifestStatuses
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - PLANNED
                - TO_DO
                - IN_PROGRESS
                - COMPLETED
                - CANCELLED
        - name: gateUuid
          in: query
          required: false
          schema:
            type: string
        - name: q
          in: query
          required: false
          schema:
            type: string
        - name: createDateAfter
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: createDateBefore
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: pageNumber
          in: query
          description: Page number (1-based)
          required: false
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          description: Page size
          required: false
          schema:
            maximum: 100
            type: integer
            format: int32
        - name: sort.sortBy
          in: query
          description: Sorting field
          required: false
          schema:
            type: string
        - name: sort.direction
          in: query
          description: Sorting direction
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PageResponseManifestV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
    post:
      tags:
        - Manifest
      summary: Create manifest
      description: >-
        Creates a new manifest with the provided details including external ID,
        status, gate, custom fields, and optional asset associations.Returns the
        created manifest's internal and external identifiers.
      operationId: createManifest
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateManifestRequestV1Dto'
        required: true
      responses:
        '200':
          description: ' OK'
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CreateResponseV1Dto'
        '400':
          description: Invalid request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/manifest/{manifestExternalId}/upsert-assets:
    post:
      tags:
        - Manifest
      summary: Upsert manifest assets
      operationId: upsertManifestAssets
      parameters:
        - name: manifestExternalId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertManifestAssetsRequestV1Dto'
        required: true
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CreateResponseV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
      deprecated: true
  /integration/rest/api/v1/manifest/{manifestExternalId}/track-record/{trackIdentifier}:
    post:
      tags:
        - Manifest
      summary: Add track record to manifest
      description: >-
        Add a track record with a manifest. A track associates your WMS pallet
        identifier with the corresponding Zimark marker, linking the WMS pallet
        ID to Zimark's scannable marker.
      operationId: addTrackRecordToManifest
      parameters:
        - name: manifestExternalId
          in: path
          description: Unique external identifier of the manifest
          required: true
          schema:
            type: string
          example: MAN-2024-001
        - name: trackIdentifier
          in: path
          description: Unique identifier of the track record to associate with the manifest
          required: true
          schema:
            type: string
          example: TRACK-123456
      responses:
        '200':
          description: OK
        '404':
          description: Manifest not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
    delete:
      tags:
        - Manifest
      summary: Delete manifest track record
      description: >-
        Removes a specific track record association from a manifest. This does
        not delete the track record itself, only its association with the
        manifest.
      operationId: deleteManifestTrackRecord
      parameters:
        - name: manifestExternalId
          in: path
          description: Unique external identifier of the manifest
          required: true
          schema:
            type: string
          example: MAN-2024-001
        - name: trackIdentifier
          in: path
          description: Unique identifier of the track record to remove from the manifest
          required: true
          schema:
            type: string
          example: TRACK-123456
      responses:
        '200':
          description: OK
        '404':
          description: Manifest not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/manifest/{manifestExternalId}/status/{manifestStatus}:
    post:
      tags:
        - Manifest
      summary: Update manifest status
      description: Updates the status of a manifest.
      operationId: updateManifestStatus
      parameters:
        - name: manifestExternalId
          in: path
          description: Unique external identifier of the manifest
          required: true
          schema:
            type: string
          example: MAN-2024-001
        - name: manifestStatus
          in: path
          description: New status for the manifest
          required: true
          schema:
            type: string
            enum:
              - PLANNED
              - TO_DO
              - IN_PROGRESS
              - COMPLETED
              - CANCELLED
          example: IN_PROGRESS
      responses:
        '200':
          description: OK
        '404':
          description: Manifest not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/manifest/{manifestExternalId}/gate/{gateExternalId}:
    post:
      tags:
        - Manifest
      summary: Update manifest gate assignment
      description: >-
        Associates a manifest with a specific gate location. Gates typically
        represent physical locations such as loading docks, entry/exit points,
        or work areas where the manifest operations take place.
      operationId: createManifestGate
      parameters:
        - name: manifestExternalId
          in: path
          description: Unique external identifier of the manifest
          required: true
          schema:
            type: string
          example: MAN-2024-001
        - name: gateExternalId
          in: path
          description: Unique external identifier of the gate to assign
          required: true
          schema:
            type: string
          example: GATE-A1
      responses:
        '200':
          description: OK
        '404':
          description: Manifest not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/manifest/{manifestExternalId}/custom-field:
    post:
      tags:
        - Manifest
      summary: Create or update manifest custom field
      description: >-
        Adds a new custom field to a manifest or updates an existing one. Custom
        fields allow storing additional metadata key-value pairs specific to
        your integration needs.
      operationId: updateManifestCustomFields
      parameters:
        - name: manifestExternalId
          in: path
          description: Unique external identifier of the manifest
          required: true
          schema:
            type: string
          example: MAN-2024-001
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManifestCustomFieldV1Dto'
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Invalid request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '404':
          description: Manifest not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/camera/{hardwareId}/calibration/{type}:
    get:
      tags:
        - Calibration Integration
      summary: Download calibration file (external)
      description: >-
        Retrieve calibration file content. Requires X-Auth-Token header with
        CAMERA_READ scope.
      operationId: downloadCalibration
      parameters:
        - name: hardwareId
          in: path
          description: Camera hardware identifier
          required: true
          schema:
            type: string
          example: CAM-001
        - name: type
          in: path
          description: Calibration type
          required: true
          schema:
            type: string
            enum:
              - INTRINSIC
              - GATE
          example: INTRINSIC
      responses:
        '200':
          description: Calibration file content
          content:
            application/json: {}
        '401':
          description: Missing, invalid, or inactive API token
          content:
            '*/*':
              schema:
                type: string
        '403':
          description: Insufficient permissions for the requested operation
          content:
            '*/*':
              schema:
                type: string
        '404':
          description: Calibration file not found
          content:
            '*/*':
              schema:
                type: string
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                type: string
      security:
        - tokenAuth: []
    post:
      tags:
        - Calibration Integration
      summary: Upload calibration file (external)
      description: >-
        Upload or overwrite a calibration file. Requires X-Auth-Token header
        with CAMERA_WRITE scope. Returns 201 for new uploads, 200 for
        overwrites.
      operationId: uploadCalibration
      parameters:
        - name: hardwareId
          in: path
          description: Camera hardware identifier
          required: true
          schema:
            type: string
          example: CAM-001
        - name: type
          in: path
          description: Calibration type
          required: true
          schema:
            type: string
            enum:
              - INTRINSIC
              - GATE
          example: INTRINSIC
      requestBody:
        description: Raw JSON calibration file content
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Calibration overwritten successfully
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CalibrationResponseDto'
        '201':
          description: Calibration created successfully
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CalibrationResponseDto'
        '400':
          description: Invalid JSON content or validation failure
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CalibrationResponseDto'
        '401':
          description: Missing, invalid, or inactive API token
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CalibrationResponseDto'
        '403':
          description: Insufficient permissions for the requested operation
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CalibrationResponseDto'
        '413':
          description: File size exceeds 10 MB limit
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CalibrationResponseDto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CalibrationResponseDto'
      security:
        - tokenAuth: []
    delete:
      tags:
        - Calibration Integration
      summary: Delete calibration file (external)
      description: >-
        Delete calibration file. Requires X-Auth-Token header with CAMERA_WRITE
        scope.
      operationId: deleteCalibration
      parameters:
        - name: hardwareId
          in: path
          description: Camera hardware identifier
          required: true
          schema:
            type: string
          example: CAM-001
        - name: type
          in: path
          description: Calibration type
          required: true
          schema:
            type: string
            enum:
              - INTRINSIC
              - GATE
          example: INTRINSIC
      responses:
        '200':
          description: Calibration deleted successfully
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CalibrationResponseDto'
        '401':
          description: Missing, invalid, or inactive API token
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CalibrationResponseDto'
        '403':
          description: Insufficient permissions for the requested operation
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CalibrationResponseDto'
        '404':
          description: Calibration file not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CalibrationResponseDto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CalibrationResponseDto'
      security:
        - tokenAuth: []
  /integration/rest/api/v1/track/{trackId}/revert-retirement:
    patch:
      tags:
        - Track
      summary: Reactivate track
      operationId: revertTrackRetirement
      parameters:
        - name: trackId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Ok
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/track/{trackId}/retire:
    patch:
      tags:
        - Track
      summary: Retire track
      operationId: retireTrack
      parameters:
        - name: trackId
          in: path
          required: true
          schema:
            type: string
        - name: force
          in: query
          required: false
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Ok
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/track:
    get:
      tags:
        - Track
      summary: Get track
      operationId: getTracks
      parameters:
        - name: wmsId
          in: query
          required: false
          schema:
            type: string
        - name: damagedTracks
          in: query
          required: false
          schema:
            type: boolean
        - name: trackStatus
          in: query
          required: false
          schema:
            type: string
            enum:
              - SCHEDULED_FOR_RETIREMENT
              - ACTIVE
              - NOT_ACTIVE
              - FLAGGED
        - name: manifestExternalIds
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
        - name: q
          in: query
          required: false
          schema:
            type: string
        - name: createDateAfter
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: createDateBefore
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: pageNumber
          in: query
          description: Page number (1-based)
          required: false
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          description: Page size
          required: false
          schema:
            maximum: 100
            type: integer
            format: int32
        - name: sort.sortBy
          in: query
          description: Sorting field
          required: false
          schema:
            type: string
        - name: sort.direction
          in: query
          description: Sorting direction
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PageResponseTrackV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/track/{trackId}/activity:
    get:
      tags:
        - Track
      summary: Get track activity timeline
      operationId: getTimeline
      parameters:
        - name: trackId
          in: path
          required: true
          schema:
            type: string
        - name: pageNumber
          in: query
          description: Page number (1-based)
          required: false
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          description: Page size
          required: false
          schema:
            maximum: 100
            type: integer
            format: int32
        - name: sort.sortBy
          in: query
          description: Sorting field
          required: false
          schema:
            type: string
        - name: sort.direction
          in: query
          description: Sorting direction
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PageResponseTrackActivityV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/scanner:
    get:
      tags:
        - Scanner
      summary: Get scanners
      operationId: getScanners
      parameters:
        - name: pageNumber
          in: query
          description: Page number (1-based)
          required: false
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          description: Page size
          required: false
          schema:
            maximum: 100
            type: integer
            format: int32
        - name: sort.sortBy
          in: query
          description: Sorting field
          required: false
          schema:
            type: string
        - name: sort.direction
          in: query
          description: Sorting direction
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PageResponseScannerV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/scanner/{scannerUuid}/printing-batch/{batchUuid}:
    get:
      tags:
        - Printing Batch
      summary: Get printing batch
      operationId: getBatchByUuid
      parameters:
        - name: scannerUuid
          in: path
          required: true
          schema:
            type: string
        - name: batchUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PrintingBatchV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
    delete:
      tags:
        - Printing Batch
      summary: Delete printing batch
      operationId: deleteBatch
      parameters:
        - name: scannerUuid
          in: path
          required: true
          schema:
            type: string
        - name: batchUuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                type: string
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/scanner/{scannerUuid}/printing-batch/{batchUuid}/status/{status}:
    get:
      tags:
        - Printing Batch
      summary: Complete printing batch
      operationId: updateBatchStatus
      parameters:
        - name: scannerUuid
          in: path
          required: true
          schema:
            type: string
        - name: batchUuid
          in: path
          required: true
          schema:
            type: string
        - name: status
          in: path
          required: true
          schema:
            type: string
            enum:
              - PENDING
              - PRINTING
              - COMPLETED
              - INCOMPLETE
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PrintingBatchV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/manifest/{manifestExternalId}/asset:
    get:
      tags:
        - Manifest
      summary: Get manifest assets
      description: >-
        Retrieves all assets associated with a specific manifest. Assets
        represent items, equipment, or materials included in the manifest work
        order.
      operationId: getManifestAssets
      parameters:
        - name: manifestExternalId
          in: path
          description: Unique external identifier of the manifest
          required: true
          schema:
            type: string
          example: MAN-2024-001
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ManifestAssetV1Dto'
        '404':
          description: Manifest not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/manifest/{manifestExternalId}/asset-loading:
    get:
      tags:
        - Manifest
      summary: Get manifest asset loading details
      description: >-
        Retrieves asset loading details for a manifest. Details contain the
        loading status, track and gate details of the asset per asset.
      operationId: getManifestAssetLoading
      parameters:
        - name: manifestExternalId
          in: path
          description: Unique external identifier of the manifest
          required: true
          schema:
            type: string
          example: MAN-2024-001
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AssetLoadingRecordV1Dto'
        '404':
          description: Manifest not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/local-manager:
    get:
      tags:
        - Local Manager
      summary: Get local managers
      operationId: getLocalManagers
      parameters:
        - name: pageNumber
          in: query
          description: Page number (1-based)
          required: false
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          description: Page size
          required: false
          schema:
            maximum: 100
            type: integer
            format: int32
        - name: sort.sortBy
          in: query
          description: Sorting field
          required: false
          schema:
            type: string
        - name: sort.direction
          in: query
          description: Sorting direction
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PageResponseLocalManagerV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/gate:
    get:
      tags:
        - Gate
      summary: Get gates
      operationId: getGates
      parameters:
        - name: externalIdentifier
          in: query
          required: false
          schema:
            type: string
        - name: q
          in: query
          required: false
          schema:
            type: string
        - name: createDateAfter
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: createDateBefore
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: pageNumber
          in: query
          description: Page number (1-based)
          required: false
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          description: Page size
          required: false
          schema:
            maximum: 100
            type: integer
            format: int32
        - name: sort.sortBy
          in: query
          description: Sorting field
          required: false
          schema:
            type: string
        - name: sort.direction
          in: query
          description: Sorting direction
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PageResponseGateV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/authority:
    get:
      tags:
        - User
      summary: Get authorities
      operationId: getAuthorities
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AuthorityV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/audit-log:
    get:
      tags:
        - Audit Log
      summary: Get audit log records
      operationId: getAuditLogRecords
      parameters:
        - name: createDateAfter
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: createDateBefore
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: auditType
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - AGENT
                - SCANNER
                - LOCATION
                - USER
                - TRACK
                - CONNECTOR
                - CONFIGURATION
                - WAREHOUSE_MAP
                - ZONE
                - ALERT
                - NOTIFICATION
                - CUSTOM_FIELDS
                - MARKER
                - TRACK_LABEL
                - LOCAL_MANAGER
                - MANIFEST
                - GATE
                - EVIDENCE
                - EXTERNAL_API_TOKEN
                - SHIPMENT
                - PRIVACY_AND_SECURITY
                - GENERAL_SETTINGS
                - WEBHOOK
        - name: severity
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - ERROR
                - WARNING
                - INFO
        - name: eventName
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - AGENT_CREATE
                - AGENT_ACTIVATE
                - AGENT_RESET
                - AGENT_DELETED
                - AGENT_REPLACE
                - AGENT_LOCATION_MAPPING_ADDED
                - AGENT_LOCATION_MAPPING_REMOVED
                - AGENT_RULES_APPLIED
                - AGENT_RULES_APPLY_ERROR
                - AGENT_OFFLINE
                - AGENT_TRIGGER_SEND
                - AGENT_MAINTENANCE_ON
                - AGENT_MAINTENANCE_OFF
                - TRACK_CREATED
                - TRACK_CODE_ADDED
                - TRACK_LOCATION_UPDATED
                - TRACK_DEACTIVATED
                - TRACK_DELETED_MANUALLY
                - TRACK_DELETED_AUTOMATICALLY
                - TRACK_MARKED_TO_RETIREMENT
                - TRACK_MARKED_AS_FLAGGED
                - TRACK_FLAGGED_MARK_REMOVED
                - TRACK_BACK_TO_ACTIVE
                - LOCATION_CREATED
                - LOCATION_DELETED
                - USER_CREATED
                - USER_DELETED
                - USER_ACTIVATED
                - CONNECTOR_COMMAND_SEND
                - CONNECTOR_WMS_RECEIVE_ERROR
                - CONNECTOR_CANNOT_SEND_COMMAND
                - DEVICE_CONFIG_GROUP_CREATED
                - DEVICE_CONFIG_GROUP_UPDATED
                - DEVICE_CONFIG_GROUP_ASSIGNED
                - WAREHOUSE_MAP_CREATED
                - WAREHOUSE_MAP_DELETED
                - WAREHOUSE_MAP_AGENT_ADDED
                - WAREHOUSE_MAP_AGENT_REMOVED
                - ZONE_CREATED
                - ZONE_DELETED
                - ZONE_RULE_CREATED
                - ZONE_RULE_UPDATED
                - ZONE_LOCATION_ADDED
                - ZONE_LOCATION_CHANGED
                - ALERT_TRIGGERED
                - ALERT_RESOLVED
                - SUPER_ADMIN_ALERT_TRIGGERED
                - SUPER_ADMIN_ALERT_RESOLVED
                - ALERT_NOTIFICATION_SEND
                - ALERT_CONFIG_CREATED
                - ALERT_CONFIG_UPDATED
                - ALERT_CONFIG_DELETED
                - NOTIFICATION_CONFIG_CREATED
                - NOTIFICATION_CONFIG_UPDATED
                - NOTIFICATION_CONFIG_DELETED
                - CUSTOM_FIELD_ADDED
                - CUSTOM_FIELD_UPDATED
                - CUSTOM_FIELD_DELETED
                - UNUSED_MARKER_DETECTED
                - UNUSED_MARKER_UNOBSERVED
                - UNUSED_MARKER_DELETED
                - TRACK_LABEL_CREATED
                - TRACK_LABEL_DELETED
                - TRACK_LABEL_ADDED_TO_TRACK
                - TRACK_LABEL_REMOVED_FROM_TRACK
                - TRACK_LABEL_ADDED_TO_CONDITION
                - LOCAL_MANAGER_CREATED
                - LOCAL_MANAGER_DELETED
                - LOCAL_MANAGER_OFFLINE
                - LOCAL_MANAGER_CAMERA_ADDED
                - LOCAL_MANAGER_CAMERA_DELETED
                - LOCAL_MANAGER_CAMERA_OFFLINE
                - CCTV_AGENT_CREATE
                - CCTV_AGENT_DELETE
                - CCTV_AGENT_CAMERA_REPLACE
                - CCTV_AGENT_LOCATION_MAPPING_ADDED
                - CCTV_AGENT_LOCATION_MAPPING_REMOVED
                - AGENT_REGISTERED
                - AGENT_REGISTRATION_REMOVED
                - AGENT_AUTOMATIC_CAPTURE_ENABLED
                - AGENT_AUTOMATIC_CAPTURE_DISABLED
                - TRACK_LOCATION_RESET
                - LOCATION_RULE_CREATED
                - LOCATION_RULE_UPDATED
                - PRESET_NAME_CHANGED
                - TRACK_IMAGE_SAVING_STRATEGY_UPDATED
                - MOBILE_APP_LOGIN
                - BACK_OFFICE_LOGIN
                - LOCAL_MANAGER_LOGIN
                - LOCAL_MANAGER_BACKUP_RESTORE_CONFLICT_DETECTED
                - LOCAL_MANAGER_REPLACED
                - SCANNER_MAINTENANCE_ON
                - SCANNER_MAINTENANCE_OFF
                - SCANNER_OFFLINE
                - SCANNER_ONLINE
                - SCANNER_REPLACE
                - MARKER_DEACTIVATED
                - SERIES_CREATED
                - PRINTING_BATCH_CREATE
                - PRINTING_BATCH_DELETE
                - PRINTING_BATCH_COMPLETE
                - PRINTING_BATCH_INCOMPLETE
                - MANIFEST_CREATED
                - MANIFEST_DELETED
                - MANIFEST_STATUS_CHANGED
                - MANIFEST_TRACK_ADDED
                - MANIFEST_TRACK_REMOVED
                - MANIFEST_ASSIGNED_TO_GATE
                - MANIFEST_ACTIVATED
                - GATE_CREATED
                - GATE_UPDATED
                - GATE_DELETED
                - AGENT_ASSIGNED_TO_GATE
                - AGENT_REMOVED_FROM_GATE
                - AGENT_LOADING_ZONE_EDITED
                - AGENT_CYCLING_BUFFER_EDITED
                - AGENT_SCALE_COMPENSATION_ZONE_EDITED
                - AGENT_MARKER_SIZE_THRESHOLD_EDITED
                - ASSET_LOADED
                - ASSET_UNLOADED
                - ASSET_UNKNOWN_LOADED
                - ASSET_UNKNOWN_UNLOADED
                - INCORRECT_ASSET_UNLOADED
                - INCORRECT_ASSET_OFFLOADED
                - ASSET_WRONGLY_LOADED
                - ASSET_STATUS_CHANGED_MANIFEST
                - INCOMPLETE_SHIPMENT_COMPLETED
                - INCOMPLETE_MANIFEST_COMPLETED
                - ASSET_CHANGED_MANUALLY
                - ASSET_DISASSEMBLED_AND_LOADED
                - ASSET_DELETED_MANUALLY
                - MANIFEST_CUSTOM_FIELD_ADDED
                - MANIFEST_CUSTOM_FIELD_UPDATED
                - MANIFEST_CUSTOM_FIELD_DELETED
                - EVIDENCE_MATCH_ERROR
                - DAMAGE_REPORT_CREATED
                - DAMAGE_REPORT_EDITED
                - DAMAGE_REPORT_DELETED
                - UNAUTHORIZED_ASSET_UNLOADED
                - UNAUTHORIZED_ASSET_LOADED
                - EXTERNAL_API_TOKEN_CREATED
                - EXTERNAL_API_TOKEN_DELETED
                - EXTERNAL_API_TOKEN_INCORRECT_IP
                - SHIPMENT_CREATED
                - SHIPMENT_DELETED
                - SHIPMENT_STATUS_CHANGED
                - SHIPMENT_MANIFEST_ADDED
                - SHIPMENT_MANIFEST_REMOVED
                - SHIPMENT_ASSIGNED_TO_GATE
                - SHIPMENT_ACTIVATED
                - GATE_OUT_OF_SERVICE
                - GATE_AVAILABLE
                - DISPATCH_ALERT_TRIGGERED
                - DISPATCH_ALERT_RESOLVED
                - PROOF_OF_SHIPMENT_CREATED
                - GATE_UNAUTHORIZED_LOADING_ISSUE_RESOLVED
                - GATE_UNAUTHORIZED_LOADING_ISSUE_CLOSED
                - PAIR_NOT_SENT
                - CREATE_TRACK_ERROR
                - CODE_ADD_ERROR
                - UNAUTHORIZED_ASSET_ADDED_TO_MANIFEST
                - MANIFEST_UPDATED
                - MANIFEST_LOADING_PROGRESS_CHANGED
                - PHOTO_SAVING_STRATEGY_CHANGED
                - RETENTION_POLICY_CHANGED
                - AUTOMATIC_TRACK_REMOVAL_CHANGED
                - TWO_FACTOR_AUTHENTICATION_DISABLED
                - TWO_FACTOR_AUTHENTICATION_ENABLED
                - RETENTION_POLICY_LOCAL_MANAGER_CHANGED
                - INVENTORY_LIST_REMOVAL_POLICY_CHANGED
                - MANIFEST_REMOVAL_POLICY_CHANGED
                - SUPPORTED_CODE_TYPE_CHANGED
                - MIN_REQUIRED_MARKERS_FOR_TRACK_CHANGED
                - SCANNER_FUNCTIONALITY_CHANGED
                - TIMEZONE_CHANGED
                - TRACK_RETIREMENT_POSTPONE_CHANGED
                - EVENT_EVIDENCE_CHANGED
                - MAINTENANCE_WINDOW_CHANGED
                - MANIFEST_IMPORT_CHANGED
                - TRACK_WMS_COLUMN_NAME_CHANGED
                - WMS_MINIMUM_REQUIRED_MARKER_COUNT_CHANGED
                - WMS_COMPARISON_ENABLED
                - WMS_COMPARISON_DISABLED
                - GATE_DASHBOARD_SETTING_CHANGED
                - MANUAL_EVALUATION_UNAUTHORIZED_LOADING_ISSUES
                - MANIFEST_ACTIVATION_ON_OOS_GATE
                - WEBHOOK_CONFIGURATION_CREATED
                - WEBHOOK_CONFIGURATION_UPDATED
                - WEBHOOK_CONFIGURATION_DELETED
                - WEBHOOK_CONFIGURATION_ENABLED
                - WEBHOOK_CONFIGURATION_DISABLED
                - MANUAL_LOADING_EVIDENCE_ADDED
                - EVIDENCE_SUCCESSFULLY_UPLOADED
        - name: author
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
        - name: user
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
        - name: localManager
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
        - name: location
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
        - name: agent
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
        - name: manifest
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
        - name: gate
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
        - name: pageNumber
          in: query
          description: Page number (1-based)
          required: false
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          description: Page size
          required: false
          schema:
            maximum: 100
            type: integer
            format: int32
        - name: sort.sortBy
          in: query
          description: Sorting field
          required: false
          schema:
            type: string
        - name: sort.direction
          in: query
          description: Sorting direction
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PageResponseAuditLogRecordV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/alert-event:
    get:
      tags:
        - Alert Events
      summary: Get alert event records
      operationId: getAlertEvents
      parameters:
        - name: createDateAfter
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: createDateBefore
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: status
          in: query
          required: false
          schema:
            type: string
            enum:
              - TRIGGERED
              - RESOLVED
        - name: subject
          in: query
          required: false
          schema:
            type: string
        - name: pageNumber
          in: query
          description: Page number (1-based)
          required: false
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          description: Page size
          required: false
          schema:
            maximum: 100
            type: integer
            format: int32
        - name: sort.sortBy
          in: query
          description: Sorting field
          required: false
          schema:
            type: string
        - name: sort.direction
          in: query
          description: Sorting direction
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PageResponseAlertEventV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/agent:
    get:
      tags:
        - Agent
      summary: Get agents
      operationId: getAgents
      parameters:
        - name: agentTypes
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - SMART_AGENT
                - SINGLE_VIEW_AGENT
                - MULTIVIEW_AGENT
        - name: agentStatuses
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - PENDING
                - ONLINE
                - OFFLINE
        - name: operationModes
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - OPERATIONAL
                - MAINTENANCE
        - name: q
          in: query
          required: false
          schema:
            type: string
        - name: createDateAfter
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: createDateBefore
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: pageNumber
          in: query
          description: Page number (1-based)
          required: false
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          description: Page size
          required: false
          schema:
            maximum: 100
            type: integer
            format: int32
        - name: sort.sortBy
          in: query
          description: Sorting field
          required: false
          schema:
            type: string
        - name: sort.direction
          in: query
          description: Sorting direction
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: Ok
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PageResponseAgentV1Dto'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/user/{uuid}/reset-password:
    delete:
      tags:
        - User
      summary: Reset user password
      operationId: resetPassword
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Ok
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/track/{trackId}:
    delete:
      tags:
        - Track
      summary: Delete track
      operationId: deleteTrack
      parameters:
        - name: trackId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Ok
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
  /integration/rest/api/v1/manifest/{manifestExternalId}/custom-field/{fieldKey}:
    delete:
      tags:
        - Manifest
      summary: Delete manifest custom field
      description: >-
        Removes a specific custom field from a manifest by its key. The field
        and its value will be permanently deleted from the manifest.
      operationId: deleteManifestCustomField
      parameters:
        - name: manifestExternalId
          in: path
          description: Unique external identifier of the manifest
          required: true
          schema:
            type: string
          example: MAN-2024-001
        - name: fieldKey
          in: path
          description: Key of the custom field to delete
          required: true
          schema:
            type: string
          example: priority
      responses:
        '200':
          description: OK
        '404':
          description: Manifest not found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
        '500':
          description: Internal server error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationErrorReply'
components:
  schemas:
    AuthorityRefDto:
      type: object
      properties:
        uuid:
          type: string
        authorityName:
          type: string
    UpdateUserRequestV1Dto:
      required:
        - authority
        - email
        - firstName
        - lastName
      type: object
      properties:
        firstName:
          maxLength: 100
          minLength: 2
          type: string
        lastName:
          maxLength: 100
          minLength: 2
          type: string
        email:
          pattern: >-
            ^[_A-Za-z0-9-']+[#\+\.\*_A-Za-z0-9-']*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,})$
          type: string
        phoneNumber:
          type: string
        authority:
          $ref: '#/components/schemas/AuthorityRefDto'
    IntegrationErrorReply:
      type: object
      properties:
        code:
          type: string
          description: Error code
        message:
          type: string
          description: Error message
        timeStamp:
          type: integer
          description: Timestamp
          format: int64
        correlationId:
          type: string
          description: Correlation id
    AuthorityResponseV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        authorityName:
          type: string
        internal:
          type: boolean
        permissions:
          type: array
          items:
            type: string
            enum:
              - BACKOFFICE_LOGIN
              - LOCAL_MANAGER_LOGIN
              - APP_LOGIN
              - OPERATIONAL_APP_LOGIN
              - ROLE_MANAGEMENT
              - LOCAL_MANAGER_REMOTE_ACCESS
              - USER_MANAGEMENT_READ
              - USER_MANAGEMENT_WRITE
              - AGENT_MANAGEMENT_READ
              - AGENT_MANAGEMENT_WRITE
              - AGENT_MANAGEMENT_PRESET
              - TROUBLESHOOT_ACCESS
              - AGENT_MANAGEMENT_MONITORING
              - TRACK_MANAGEMENT_READ
              - TRACK_MANAGEMENT_WRITE
              - TRACK_MANAGEMENT_MANUAL_TRACK_DELETION
              - TRACK_MANAGEMENT_MANUAL_TRACK_DEACTIVATION
              - LOCATION_MANAGEMENT_READ
              - LOCATION_MANAGEMENT_WRITE
              - LOCATION_ZONE_MANAGEMENT_READ
              - LOCATION_ZONE_MANAGEMENT_WRITE
              - MAP_MANAGEMENT_READ
              - MAP_MANAGEMENT_WRITE
              - MAP_MANAGEMENT_LOCATION_MAPPING
              - GENERAL_SETTINGS_READ
              - GENERAL_SETTINGS_WRITE
              - PRIVACY_AND_SECURITY_SETTINGS_READ
              - PRIVACY_AND_SECURITY_SETTINGS_WRITE
              - ALERTS_SETTINGS_READ
              - ALERTS_SETTINGS_WRITE
              - NOTIFICATIONS_SETTINGS_READ
              - NOTIFICATIONS_SETTINGS_WRITE
              - AGENT_CONFIGURATION_GROUPS_SETTINGS_READ
              - AGENT_CONFIGURATION_GROUPS_SETTINGS_WRITE
              - TRACK_CUSTOM_FIELDS_SETTINGS_READ
              - TRACK_CUSTOM_FIELDS_SETTINGS_WRITE
              - MANIFEST_CUSTOM_FIELDS_SETTINGS_READ
              - MANIFEST_CUSTOM_FIELDS_SETTINGS_WRITE
              - TRACK_LABELS_SETTINGS_READ
              - TRACK_LABELS_SETTINGS_WRITE
              - LOCAL_MANAGER_MANAGEMENT_READ
              - LOCAL_MANAGER_MANAGEMENT_WRITE
              - SCANNER_MANAGEMENT_READ
              - SCANNER_MANAGEMENT_WRITE
              - AUDIT_LOG_MANAGEMENT
              - SUBSCRIPTION_MANAGEMENT
              - ALERT_EVENTS
              - ANALYTICAL_DASHBOARD_MANAGEMENT
              - OPERATIONAL_DASHBOARD_MANAGEMENT
              - MARKER_MANAGEMENT_WRITE
              - MARKER_MANAGEMENT_READ
              - MANIFEST_MANAGEMENT_READ
              - MANIFEST_MANAGEMENT_WRITE
              - MANIFEST_REPORT_READ
              - MANIFEST_REPORT_WRITE
              - GATE_MANAGEMENT_READ
              - GATE_MANAGEMENT_WRITE
              - AGENT_GATE_ASSIGNMENT_READ
              - AGENT_GATE_ASSIGNMENT_WRITE
              - GATE_RULE_CONFIGURATION_READ
              - GATE_RULE_CONFIGURATION_WRITE
              - EXTERNAL_API_WRITE
              - EXTERNAL_API_READ
              - DAMAGE_REPORT_READ
              - DAMAGE_REPORT_WRITE
              - DAMAGE_CONTROL_SETTINGS_READ
              - DAMAGE_CONTROL_SETTINGS_WRITE
              - EVIDENCE_OVERLAY_TEMPLATE_READ
              - EVIDENCE_OVERLAY_TEMPLATE_WRITE
              - INTEGRATION_API_EXECUTION
              - SHIPMENT_MANAGEMENT_READ
              - SHIPMENT_MANAGEMENT_WRITE
              - INVENTORY_LIST_MANAGEMENT_READ
              - INVENTORY_LIST_MANAGEMENT_WRITE
              - WEBHOOK_CONFIGURATION_READ
              - WEBHOOK_CONFIGURATION_WRITE
              - CREATE_TRACKS_MANUAL_VIA_BACKOFFICE
              - RACK_MANAGEMENT_READ
              - RACK_MANAGEMENT_WRITE
      description: User's authority with full details
    UserResponseV1Dto:
      required:
        - authority
        - email
        - firstName
        - lastName
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        firstName:
          maxLength: 100
          minLength: 2
          type: string
          description: User's first name
          example: John
        lastName:
          maxLength: 100
          minLength: 2
          type: string
          description: User's last name
          example: Doe
        email:
          pattern: >-
            ^[_A-Za-z0-9-']+[#\+\.\*_A-Za-z0-9-']*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,})$
          type: string
          description: User's email address
          example: john.doe@example.com
        authority:
          $ref: '#/components/schemas/AuthorityResponseV1Dto'
        phoneNumber:
          type: string
          description: User's phone number
          example: '+1234567890'
      description: User response DTO with audit fields
    ManifestCustomFieldV1Dto:
      type: object
      properties:
        fieldKey:
          type: string
          description: >-
            Unique key (name) of the custom field. This must match the
            configured field name.
        fieldValue:
          type: string
          description: >-
            Value of the custom field as a string. For numeric fields, send the
            number as a string.
      description: Custom field key-value pair to add or update
    UpdateManifestRequestV1Dto:
      type: object
      properties:
        assets:
          type: array
          description: >-
            Optional list of asset (track) identifiers to set or update for the
            manifest.
          items:
            type: string
            description: >-
              Optional list of asset (track) identifiers to set or update for
              the manifest.
        customFields:
          type: array
          description: Optional custom fields to set or update for the manifest.
          items:
            $ref: '#/components/schemas/ManifestCustomFieldV1Dto'
      description: Manifest update request containing fields to be modified
    CreateUserRequestV1Dto:
      required:
        - authority
        - email
        - firstName
        - lastName
        - passwordPolicyMode
      type: object
      properties:
        firstName:
          maxLength: 100
          minLength: 2
          type: string
        lastName:
          maxLength: 100
          minLength: 2
          type: string
        email:
          pattern: >-
            ^[_A-Za-z0-9-']+[#\+\.\*_A-Za-z0-9-']*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,})$
          type: string
        phoneNumber:
          type: string
        authority:
          $ref: '#/components/schemas/AuthorityRefDto'
        passwordPolicyMode:
          type: string
          enum:
            - INVITE_LINK
            - TEMP_PASSWORD
        password:
          maxLength: 2147483647
          minLength: 6
          type: string
    CreateUserResponseV1Dto:
      required:
        - authority
        - email
        - firstName
        - lastName
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        firstName:
          maxLength: 100
          minLength: 2
          type: string
          description: User's first name
          example: John
        lastName:
          maxLength: 100
          minLength: 2
          type: string
          description: User's last name
          example: Doe
        email:
          pattern: >-
            ^[_A-Za-z0-9-']+[#\+\.\*_A-Za-z0-9-']*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,})$
          type: string
          description: User's email address
          example: john.doe@example.com
        authority:
          $ref: '#/components/schemas/AuthorityResponseV1Dto'
        phoneNumber:
          type: string
          description: User's phone number
          example: '+1234567890'
        password:
          type: string
          description: User's password
      description: User response DTO with audit fields
    AttachmentV1Dto:
      type: object
      properties:
        link:
          type: string
        fileName:
          type: string
        author:
          $ref: '#/components/schemas/AuthorRequestV1Dto'
        description:
          type: string
    AuthorRequestV1Dto:
      required:
        - email
        - firstName
        - lastName
      type: object
      properties:
        firstName:
          maxLength: 100
          minLength: 2
          type: string
        lastName:
          maxLength: 100
          minLength: 2
          type: string
        email:
          pattern: >-
            ^[_A-Za-z0-9-']+[#\+\.\*_A-Za-z0-9-']*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,})$
          type: string
        phoneNumber:
          type: string
    TrackCommentRequestV1Dto:
      type: object
      properties:
        additionalInfo:
          type: string
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/AttachmentV1Dto'
    CreatePrintingBatchRequest:
      type: object
      properties:
        wmsIds:
          type: array
          items:
            type: string
    PrintingBatchV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        status:
          type: string
          enum:
            - PENDING
            - PRINTING
            - COMPLETED
            - INCOMPLETE
        startDate:
          type: string
          format: date-time
        completeDate:
          type: string
          format: date-time
    CreateManifestRequestV1Dto:
      required:
        - assets
        - identifier
      type: object
      properties:
        identifier:
          type: string
          description: External unique identifier for the manifest to create.
        assets:
          type: array
          description: >-
            Initial list of asset (track) identifiers to include in the
            manifest.
          items:
            type: string
            description: >-
              Initial list of asset (track) identifiers to include in the
              manifest.
        customFields:
          type: array
          description: Optional custom fields to set on the manifest upon creation.
          items:
            $ref: '#/components/schemas/ManifestCustomFieldV1Dto'
        gateExternalId:
          type: string
          description: >-
            Optional external identifier of the gate to associate with the
            manifest.
      description: >-
        Manifest creation request containing external ID, status, gate, and
        optional custom fields
    CreateResponseV1Dto:
      type: object
      properties:
        uuid:
          type: string
    UpsertManifestAssetsRequestV1Dto:
      required:
        - assets
      type: object
      properties:
        assets:
          type: array
          description: List of asset (track) identifiers to add or update on the manifest.
          items:
            type: string
            description: >-
              List of asset (track) identifiers to add or update on the
              manifest.
        customFields:
          type: array
          description: >-
            Optional custom fields to apply to the manifest during the upsert
            operation.
          items:
            $ref: '#/components/schemas/ManifestCustomFieldV1Dto'
      description: Request to upsert manifest assets and optional custom fields.
    CalibrationResponseDto:
      type: object
      properties:
        cameraId:
          type: string
        type:
          type: string
        checksumSha256:
          type: string
        message:
          type: string
    PageRequest:
      type: object
      properties:
        pageNumber:
          type: integer
          format: int32
        pageSize:
          maximum: 100
          type: integer
          format: int32
        sort:
          $ref: '#/components/schemas/Sort'
    PageResponseUserResponseV1Dto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/UserResponseV1Dto'
        pageRequest:
          $ref: '#/components/schemas/PageRequest'
        totalElements:
          type: integer
          format: int32
    Sort:
      type: object
      properties:
        sortBy:
          type: string
        direction:
          type: string
          enum:
            - ASC
            - DESC
    PageResponseTrackV1Dto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/TrackV1Dto'
        pageRequest:
          $ref: '#/components/schemas/PageRequest'
        totalElements:
          type: integer
          format: int32
    TrackCustomFieldV1Dto:
      type: object
      properties:
        fieldCaption:
          type: string
          description: Human-readable caption of the custom field.
        fieldName:
          type: string
          description: System key of the custom field.
        fieldValue:
          type: string
          description: Assigned value for this custom field.
      description: Custom property attached to a track.
    TrackLabelV1Dto:
      type: object
      properties:
        name:
          type: string
          description: Human-readable label name.
      description: Label or tag assigned to a track.
    TrackManifestDto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        externalIdentifier:
          type: string
          description: External unique identifier for this manifest.
        manifestStatus:
          type: string
          description: Current status of the manifest.
          enum:
            - PLANNED
            - TO_DO
            - IN_PROGRESS
            - COMPLETED
            - CANCELLED
        deleted:
          type: boolean
          description: Indicates whether the manifest is soft-deleted.
      description: Manifests that include this track.
    TrackV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        trackCode:
          type: string
          description: Unique track code.
        wmsId:
          type: string
          description: External asset identifier provided by WMS.
        status:
          type: string
          description: Current status of the track.
          enum:
            - SCHEDULED_FOR_RETIREMENT
            - ACTIVE
            - NOT_ACTIVE
            - FLAGGED
        zimarkCodes:
          type: array
          description: Associated Zimark codes for this track.
          items:
            $ref: '#/components/schemas/ZimarkCodeV1Dto'
        manifests:
          type: array
          description: Manifests that include this track.
          items:
            $ref: '#/components/schemas/TrackManifestDto'
        customFields:
          type: array
          description: Custom fields attached to this track.
          items:
            $ref: '#/components/schemas/TrackCustomFieldV1Dto'
        labels:
          type: array
          description: Labels assigned to this track.
          items:
            $ref: '#/components/schemas/TrackLabelV1Dto'
        retirementDate:
          type: string
          description: Date when the track was retired.
          format: date-time
      description: Track resource exposed via the integration API.
    ZimarkCodeV1Dto:
      type: object
      properties:
        zimarkMarkerValue:
          type: string
          description: Unique Zimark marker value encoded/printed on the label.
      description: Zimark code associated with a track for identification and scanning.
    AuthorResponseV1Dto:
      required:
        - email
        - firstName
        - lastName
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        firstName:
          maxLength: 100
          minLength: 2
          type: string
          description: User's first name
          example: John
        lastName:
          maxLength: 100
          minLength: 2
          type: string
          description: User's last name
          example: Doe
        email:
          pattern: >-
            ^[_A-Za-z0-9-']+[#\+\.\*_A-Za-z0-9-']*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,})$
          type: string
          description: User's email address
          example: john.doe@example.com
        phoneNumber:
          type: string
          description: User's phone number
          example: '+1234567890'
      description: Author who created this metadata
    TrackMetadataResponseV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        additionalInfo:
          type: string
          description: Additional information about the track
          example: Track is in good condition
        author:
          $ref: '#/components/schemas/AuthorResponseV1Dto'
        attachments:
          type: array
          description: Attachments related to the track metadata
          items:
            $ref: '#/components/schemas/AttachmentV1Dto'
      description: Track metadata response DTO with audit fields
    PageResponseTrackActivityV1Dto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/TrackActivityV1Dto'
        pageRequest:
          $ref: '#/components/schemas/PageRequest'
        totalElements:
          type: integer
          format: int32
    TrackActivityV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        trackActivityType:
          type: string
          enum:
            - TRACK_CREATED
            - TRACK_RETIRED
            - TRACK_MARKER_ADDED
            - TRACK_METADATA_ADDED
            - TRACK_LOCATION_CHANGED
            - TRACK_LOCATION_RESET
            - TRACK_SCHEDULED_FOR_RETIREMENT
            - TRACK_ADDED_TO_MANIFEST
            - TRACK_REVERTED_FROM_RETIREMENT
            - TRACK_REMOVED_FROM_MANIFEST
            - TRACK_LOADED_IN_MANIFEST
            - TRACK_WRONGLY_LOADED_IN_MANIFEST
            - TRACK_LOADING_STATUS_CHANGED
            - TRACK_UNLOADED
            - TRACK_OFFLOADED
            - TRACK_MARKED_AS_UNLOADED
            - TRACK_MARKED_AS_NOT_LOADED
            - TRACK_MARKED_AS_LOADED
            - TRACK_DISASSEMBLED_AND_LOADED
            - DAMAGE_REPORT_CREATED
            - DAMAGE_REPORT_EDITED
            - DAMAGE_REPORT_DELETED
            - UNAUTHORIZED_ASSET_LOADED
            - UNAUTHORIZED_ASSET_UNLOADED
            - UNAUTHORIZED_ASSET_STATUS_CHANGED
            - TRACK_FLAGGED
            - TRACK_FLAG_REMOVED
        activityProperties:
          type: object
          additionalProperties:
            type: object
    PageResponseScannerV1Dto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/ScannerV1Dto'
        pageRequest:
          $ref: '#/components/schemas/PageRequest'
        totalElements:
          type: integer
          format: int32
    ScannerV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        scannerName:
          type: string
        scannerStatus:
          type: string
          enum:
            - PENDING
            - ONLINE
            - OFFLINE
        operationMode:
          type: string
          enum:
            - OPERATIONAL
            - MAINTENANCE
    PageResponsePrintingBatchV1Dto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/PrintingBatchV1Dto'
        pageRequest:
          $ref: '#/components/schemas/PageRequest'
        totalElements:
          type: integer
          format: int32
    DuplicatedTracksErrorDto:
      type: object
      properties:
        trackIdentifier:
          type: string
          description: Business identifier of the duplicated track.
        addedToManifests:
          type: array
          description: List of manifest identifiers where this track is already present.
          items:
            type: string
            description: List of manifest identifiers where this track is already present.
      description: >-
        Information about a duplicated track, including where it is already
        assigned.
    GateV1Dto:
      type: object
      properties:
        name:
          type: string
          description: Human-readable gate name.
        externalIdentifier:
          type: string
          description: External unique identifier of the gate.
        status:
          type: string
          description: Current operational status of the gate.
          enum:
            - AVAILABLE
            - LOADING
            - OUT_OF_SERVICE
      description: Gate details used by the Zimark Integration API.
    ManifestV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        externalIdentifier:
          type: string
          description: External unique identifier for this manifest.
        manifestStatus:
          type: string
          description: Current status of the manifest.
          enum:
            - PLANNED
            - TO_DO
            - IN_PROGRESS
            - COMPLETED
            - CANCELLED
        closeDate:
          type: string
          description: Timestamp when the manifest was closed/completed.
          format: date-time
        activateDate:
          type: string
          description: Timestamp when the manifest was activated.
          format: date-time
        tracksCount:
          type: integer
          description: Total number of assets (tracks) currently included in this manifest.
          format: int32
        gate:
          $ref: '#/components/schemas/GateV1Dto'
        customFields:
          type: array
          description: Custom key–value fields attached to the manifest.
          items:
            $ref: '#/components/schemas/ManifestCustomFieldV1Dto'
        validationErrors:
          $ref: '#/components/schemas/ManifestValidationErrorsV1Dto'
        proofOfShipmentUrl:
          type: string
          description: URL to the proof-of-shipment document.
        deleted:
          type: boolean
          description: Indicates whether the manifest is soft-deleted.
      description: Manifest details returned by the Zimark Integration API.
    ManifestValidationErrorsV1Dto:
      type: object
      properties:
        duplicatedTracks:
          type: array
          description: >-
            List of duplicated track issues (same asset added multiple times to
            the manifest).
          items:
            $ref: '#/components/schemas/DuplicatedTracksErrorDto'
        nonExistingTracks:
          type: array
          description: Asset identifiers that could not be found.
          items:
            type: string
            description: Asset identifiers that could not be found.
        deactivatedTracks:
          type: array
          description: Asset identifiers that are deactivated and cannot be added.
          items:
            type: string
            description: Asset identifiers that are deactivated and cannot be added.
      description: Container for validation issues detected when processing a manifest.
    PageResponseManifestV1Dto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/ManifestV1Dto'
        pageRequest:
          $ref: '#/components/schemas/PageRequest'
        totalElements:
          type: integer
          format: int32
    ManifestAssetV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        trackIdentifier:
          type: string
          description: >-
            Business identifier of the asset (track) associated with the
            manifest.
        track:
          $ref: '#/components/schemas/ManifestTrackV1Dto'
        loadingStatus:
          type: string
          description: Loading status of the asset in the manifest workflow.
          enum:
            - NOT_LOADED
            - LOADED
            - WRONGLY_LOADED
            - UNKNOWN_LOADING
            - UNLOADED
            - OFFLOADED
      description: Asset linked to a manifest with its track data and loading status.
    ManifestTrackV1Dto:
      type: object
      properties:
        trackCode:
          type: string
          description: Unique track code.
        wmsId:
          type: string
          description: External asset identifier provided by WMS.
        status:
          type: string
          description: Current status of the track.
          enum:
            - SCHEDULED_FOR_RETIREMENT
            - ACTIVE
            - NOT_ACTIVE
            - FLAGGED
      description: Track associated with this loading record.
    AssetLoadingRecordV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        track:
          $ref: '#/components/schemas/ManifestTrackV1Dto'
        gate:
          $ref: '#/components/schemas/GateV1Dto'
        trackIdentifier:
          type: string
          description: Business identifier of the track linked to this record.
        markerValue:
          type: string
          description: Marker value captured during the loading operation.
        loadedDate:
          type: string
          description: Date and time when the asset was marked as loaded.
          format: date-time
        loadingStatus:
          type: string
          description: Current loading status of the asset.
          enum:
            - NOT_LOADED
            - LOADED
            - WRONGLY_LOADED
            - UNKNOWN_LOADING
            - UNLOADED
            - OFFLOADED
      description: >-
        Loading record for a manifest asset, including gate context and
        evidence.
    LocalManagerV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        managerName:
          type: string
        managerType:
          type: string
          enum:
            - BIG_PC
            - DEEPSTREAM
            - FORKLIFT_DEEPSTREAM
        managerStatus:
          type: string
          enum:
            - PENDING
            - ONLINE
            - OFFLINE
        organizationName:
          type: string
        appMajorVersion:
          type: string
        appMinorVersion:
          type: string
        appBuildNumber:
          type: string
    PageResponseLocalManagerV1Dto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/LocalManagerV1Dto'
        pageRequest:
          $ref: '#/components/schemas/PageRequest'
        totalElements:
          type: integer
          format: int32
    PageResponseGateV1Dto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/GateV1Dto'
        pageRequest:
          $ref: '#/components/schemas/PageRequest'
        totalElements:
          type: integer
          format: int32
    AuthorityV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        authorityName:
          type: string
    AgentV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        agentStatus:
          type: string
          enum:
            - PENDING
            - ONLINE
            - OFFLINE
        operationMode:
          type: string
          enum:
            - OPERATIONAL
            - MAINTENANCE
        agentName:
          type: string
    AuditLogRecordV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        message:
          type: string
        auditType:
          type: string
          enum:
            - AGENT
            - SCANNER
            - LOCATION
            - USER
            - TRACK
            - CONNECTOR
            - CONFIGURATION
            - WAREHOUSE_MAP
            - ZONE
            - ALERT
            - NOTIFICATION
            - CUSTOM_FIELDS
            - MARKER
            - TRACK_LABEL
            - LOCAL_MANAGER
            - MANIFEST
            - GATE
            - EVIDENCE
            - EXTERNAL_API_TOKEN
            - SHIPMENT
            - PRIVACY_AND_SECURITY
            - GENERAL_SETTINGS
            - WEBHOOK
        auditTypeTitle:
          type: string
        severity:
          type: string
          enum:
            - ERROR
            - WARNING
            - INFO
        eventName:
          type: string
          enum:
            - AGENT_CREATE
            - AGENT_ACTIVATE
            - AGENT_RESET
            - AGENT_DELETED
            - AGENT_REPLACE
            - AGENT_LOCATION_MAPPING_ADDED
            - AGENT_LOCATION_MAPPING_REMOVED
            - AGENT_RULES_APPLIED
            - AGENT_RULES_APPLY_ERROR
            - AGENT_OFFLINE
            - AGENT_TRIGGER_SEND
            - AGENT_MAINTENANCE_ON
            - AGENT_MAINTENANCE_OFF
            - TRACK_CREATED
            - TRACK_CODE_ADDED
            - TRACK_LOCATION_UPDATED
            - TRACK_DEACTIVATED
            - TRACK_DELETED_MANUALLY
            - TRACK_DELETED_AUTOMATICALLY
            - TRACK_MARKED_TO_RETIREMENT
            - TRACK_MARKED_AS_FLAGGED
            - TRACK_FLAGGED_MARK_REMOVED
            - TRACK_BACK_TO_ACTIVE
            - LOCATION_CREATED
            - LOCATION_DELETED
            - USER_CREATED
            - USER_DELETED
            - USER_ACTIVATED
            - CONNECTOR_COMMAND_SEND
            - CONNECTOR_WMS_RECEIVE_ERROR
            - CONNECTOR_CANNOT_SEND_COMMAND
            - DEVICE_CONFIG_GROUP_CREATED
            - DEVICE_CONFIG_GROUP_UPDATED
            - DEVICE_CONFIG_GROUP_ASSIGNED
            - WAREHOUSE_MAP_CREATED
            - WAREHOUSE_MAP_DELETED
            - WAREHOUSE_MAP_AGENT_ADDED
            - WAREHOUSE_MAP_AGENT_REMOVED
            - ZONE_CREATED
            - ZONE_DELETED
            - ZONE_RULE_CREATED
            - ZONE_RULE_UPDATED
            - ZONE_LOCATION_ADDED
            - ZONE_LOCATION_CHANGED
            - ALERT_TRIGGERED
            - ALERT_RESOLVED
            - SUPER_ADMIN_ALERT_TRIGGERED
            - SUPER_ADMIN_ALERT_RESOLVED
            - ALERT_NOTIFICATION_SEND
            - ALERT_CONFIG_CREATED
            - ALERT_CONFIG_UPDATED
            - ALERT_CONFIG_DELETED
            - NOTIFICATION_CONFIG_CREATED
            - NOTIFICATION_CONFIG_UPDATED
            - NOTIFICATION_CONFIG_DELETED
            - CUSTOM_FIELD_ADDED
            - CUSTOM_FIELD_UPDATED
            - CUSTOM_FIELD_DELETED
            - UNUSED_MARKER_DETECTED
            - UNUSED_MARKER_UNOBSERVED
            - UNUSED_MARKER_DELETED
            - TRACK_LABEL_CREATED
            - TRACK_LABEL_DELETED
            - TRACK_LABEL_ADDED_TO_TRACK
            - TRACK_LABEL_REMOVED_FROM_TRACK
            - TRACK_LABEL_ADDED_TO_CONDITION
            - LOCAL_MANAGER_CREATED
            - LOCAL_MANAGER_DELETED
            - LOCAL_MANAGER_OFFLINE
            - LOCAL_MANAGER_CAMERA_ADDED
            - LOCAL_MANAGER_CAMERA_DELETED
            - LOCAL_MANAGER_CAMERA_OFFLINE
            - CCTV_AGENT_CREATE
            - CCTV_AGENT_DELETE
            - CCTV_AGENT_CAMERA_REPLACE
            - CCTV_AGENT_LOCATION_MAPPING_ADDED
            - CCTV_AGENT_LOCATION_MAPPING_REMOVED
            - AGENT_REGISTERED
            - AGENT_REGISTRATION_REMOVED
            - AGENT_AUTOMATIC_CAPTURE_ENABLED
            - AGENT_AUTOMATIC_CAPTURE_DISABLED
            - TRACK_LOCATION_RESET
            - LOCATION_RULE_CREATED
            - LOCATION_RULE_UPDATED
            - PRESET_NAME_CHANGED
            - TRACK_IMAGE_SAVING_STRATEGY_UPDATED
            - MOBILE_APP_LOGIN
            - BACK_OFFICE_LOGIN
            - LOCAL_MANAGER_LOGIN
            - LOCAL_MANAGER_BACKUP_RESTORE_CONFLICT_DETECTED
            - LOCAL_MANAGER_REPLACED
            - SCANNER_MAINTENANCE_ON
            - SCANNER_MAINTENANCE_OFF
            - SCANNER_OFFLINE
            - SCANNER_ONLINE
            - SCANNER_REPLACE
            - MARKER_DEACTIVATED
            - SERIES_CREATED
            - PRINTING_BATCH_CREATE
            - PRINTING_BATCH_DELETE
            - PRINTING_BATCH_COMPLETE
            - PRINTING_BATCH_INCOMPLETE
            - MANIFEST_CREATED
            - MANIFEST_DELETED
            - MANIFEST_STATUS_CHANGED
            - MANIFEST_TRACK_ADDED
            - MANIFEST_TRACK_REMOVED
            - MANIFEST_ASSIGNED_TO_GATE
            - MANIFEST_ACTIVATED
            - GATE_CREATED
            - GATE_UPDATED
            - GATE_DELETED
            - AGENT_ASSIGNED_TO_GATE
            - AGENT_REMOVED_FROM_GATE
            - AGENT_LOADING_ZONE_EDITED
            - AGENT_CYCLING_BUFFER_EDITED
            - AGENT_SCALE_COMPENSATION_ZONE_EDITED
            - AGENT_MARKER_SIZE_THRESHOLD_EDITED
            - ASSET_LOADED
            - ASSET_UNLOADED
            - ASSET_UNKNOWN_LOADED
            - ASSET_UNKNOWN_UNLOADED
            - INCORRECT_ASSET_UNLOADED
            - INCORRECT_ASSET_OFFLOADED
            - ASSET_WRONGLY_LOADED
            - ASSET_STATUS_CHANGED_MANIFEST
            - INCOMPLETE_SHIPMENT_COMPLETED
            - INCOMPLETE_MANIFEST_COMPLETED
            - ASSET_CHANGED_MANUALLY
            - ASSET_DISASSEMBLED_AND_LOADED
            - ASSET_DELETED_MANUALLY
            - MANIFEST_CUSTOM_FIELD_ADDED
            - MANIFEST_CUSTOM_FIELD_UPDATED
            - MANIFEST_CUSTOM_FIELD_DELETED
            - EVIDENCE_MATCH_ERROR
            - DAMAGE_REPORT_CREATED
            - DAMAGE_REPORT_EDITED
            - DAMAGE_REPORT_DELETED
            - UNAUTHORIZED_ASSET_UNLOADED
            - UNAUTHORIZED_ASSET_LOADED
            - EXTERNAL_API_TOKEN_CREATED
            - EXTERNAL_API_TOKEN_DELETED
            - EXTERNAL_API_TOKEN_INCORRECT_IP
            - SHIPMENT_CREATED
            - SHIPMENT_DELETED
            - SHIPMENT_STATUS_CHANGED
            - SHIPMENT_MANIFEST_ADDED
            - SHIPMENT_MANIFEST_REMOVED
            - SHIPMENT_ASSIGNED_TO_GATE
            - SHIPMENT_ACTIVATED
            - GATE_OUT_OF_SERVICE
            - GATE_AVAILABLE
            - DISPATCH_ALERT_TRIGGERED
            - DISPATCH_ALERT_RESOLVED
            - PROOF_OF_SHIPMENT_CREATED
            - GATE_UNAUTHORIZED_LOADING_ISSUE_RESOLVED
            - GATE_UNAUTHORIZED_LOADING_ISSUE_CLOSED
            - PAIR_NOT_SENT
            - CREATE_TRACK_ERROR
            - CODE_ADD_ERROR
            - UNAUTHORIZED_ASSET_ADDED_TO_MANIFEST
            - MANIFEST_UPDATED
            - MANIFEST_LOADING_PROGRESS_CHANGED
            - PHOTO_SAVING_STRATEGY_CHANGED
            - RETENTION_POLICY_CHANGED
            - AUTOMATIC_TRACK_REMOVAL_CHANGED
            - TWO_FACTOR_AUTHENTICATION_DISABLED
            - TWO_FACTOR_AUTHENTICATION_ENABLED
            - RETENTION_POLICY_LOCAL_MANAGER_CHANGED
            - INVENTORY_LIST_REMOVAL_POLICY_CHANGED
            - MANIFEST_REMOVAL_POLICY_CHANGED
            - SUPPORTED_CODE_TYPE_CHANGED
            - MIN_REQUIRED_MARKERS_FOR_TRACK_CHANGED
            - SCANNER_FUNCTIONALITY_CHANGED
            - TIMEZONE_CHANGED
            - TRACK_RETIREMENT_POSTPONE_CHANGED
            - EVENT_EVIDENCE_CHANGED
            - MAINTENANCE_WINDOW_CHANGED
            - MANIFEST_IMPORT_CHANGED
            - TRACK_WMS_COLUMN_NAME_CHANGED
            - WMS_MINIMUM_REQUIRED_MARKER_COUNT_CHANGED
            - WMS_COMPARISON_ENABLED
            - WMS_COMPARISON_DISABLED
            - GATE_DASHBOARD_SETTING_CHANGED
            - MANUAL_EVALUATION_UNAUTHORIZED_LOADING_ISSUES
            - MANIFEST_ACTIVATION_ON_OOS_GATE
            - WEBHOOK_CONFIGURATION_CREATED
            - WEBHOOK_CONFIGURATION_UPDATED
            - WEBHOOK_CONFIGURATION_DELETED
            - WEBHOOK_CONFIGURATION_ENABLED
            - WEBHOOK_CONFIGURATION_DISABLED
            - MANUAL_LOADING_EVIDENCE_ADDED
            - EVIDENCE_SUCCESSFULLY_UPLOADED
        eventTitle:
          type: string
        author:
          $ref: '#/components/schemas/UserV1Dto'
        tokenDto:
          $ref: '#/components/schemas/ExternalApiTokenV1Dto'
        loggedOnBehalf:
          type: boolean
        track:
          $ref: '#/components/schemas/TrackV1Dto'
        user:
          $ref: '#/components/schemas/UserV1Dto'
        agent:
          $ref: '#/components/schemas/AgentV1Dto'
        localManager:
          $ref: '#/components/schemas/LocalManagerV1Dto'
        scanner:
          $ref: '#/components/schemas/ScannerV1Dto'
        manifest:
          $ref: '#/components/schemas/ManifestV1Dto'
        gate:
          $ref: '#/components/schemas/GateV1Dto'
    AuthorityDto:
      type: object
      properties:
        uuid:
          type: string
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        authorityName:
          type: string
        internal:
          type: boolean
        permissions:
          type: array
          items:
            type: string
            enum:
              - BACKOFFICE_LOGIN
              - LOCAL_MANAGER_LOGIN
              - APP_LOGIN
              - OPERATIONAL_APP_LOGIN
              - ROLE_MANAGEMENT
              - LOCAL_MANAGER_REMOTE_ACCESS
              - USER_MANAGEMENT_READ
              - USER_MANAGEMENT_WRITE
              - AGENT_MANAGEMENT_READ
              - AGENT_MANAGEMENT_WRITE
              - AGENT_MANAGEMENT_PRESET
              - TROUBLESHOOT_ACCESS
              - AGENT_MANAGEMENT_MONITORING
              - TRACK_MANAGEMENT_READ
              - TRACK_MANAGEMENT_WRITE
              - TRACK_MANAGEMENT_MANUAL_TRACK_DELETION
              - TRACK_MANAGEMENT_MANUAL_TRACK_DEACTIVATION
              - LOCATION_MANAGEMENT_READ
              - LOCATION_MANAGEMENT_WRITE
              - LOCATION_ZONE_MANAGEMENT_READ
              - LOCATION_ZONE_MANAGEMENT_WRITE
              - MAP_MANAGEMENT_READ
              - MAP_MANAGEMENT_WRITE
              - MAP_MANAGEMENT_LOCATION_MAPPING
              - GENERAL_SETTINGS_READ
              - GENERAL_SETTINGS_WRITE
              - PRIVACY_AND_SECURITY_SETTINGS_READ
              - PRIVACY_AND_SECURITY_SETTINGS_WRITE
              - ALERTS_SETTINGS_READ
              - ALERTS_SETTINGS_WRITE
              - NOTIFICATIONS_SETTINGS_READ
              - NOTIFICATIONS_SETTINGS_WRITE
              - AGENT_CONFIGURATION_GROUPS_SETTINGS_READ
              - AGENT_CONFIGURATION_GROUPS_SETTINGS_WRITE
              - TRACK_CUSTOM_FIELDS_SETTINGS_READ
              - TRACK_CUSTOM_FIELDS_SETTINGS_WRITE
              - MANIFEST_CUSTOM_FIELDS_SETTINGS_READ
              - MANIFEST_CUSTOM_FIELDS_SETTINGS_WRITE
              - TRACK_LABELS_SETTINGS_READ
              - TRACK_LABELS_SETTINGS_WRITE
              - LOCAL_MANAGER_MANAGEMENT_READ
              - LOCAL_MANAGER_MANAGEMENT_WRITE
              - SCANNER_MANAGEMENT_READ
              - SCANNER_MANAGEMENT_WRITE
              - AUDIT_LOG_MANAGEMENT
              - SUBSCRIPTION_MANAGEMENT
              - ALERT_EVENTS
              - ANALYTICAL_DASHBOARD_MANAGEMENT
              - OPERATIONAL_DASHBOARD_MANAGEMENT
              - MARKER_MANAGEMENT_WRITE
              - MARKER_MANAGEMENT_READ
              - MANIFEST_MANAGEMENT_READ
              - MANIFEST_MANAGEMENT_WRITE
              - MANIFEST_REPORT_READ
              - MANIFEST_REPORT_WRITE
              - GATE_MANAGEMENT_READ
              - GATE_MANAGEMENT_WRITE
              - AGENT_GATE_ASSIGNMENT_READ
              - AGENT_GATE_ASSIGNMENT_WRITE
              - GATE_RULE_CONFIGURATION_READ
              - GATE_RULE_CONFIGURATION_WRITE
              - EXTERNAL_API_WRITE
              - EXTERNAL_API_READ
              - DAMAGE_REPORT_READ
              - DAMAGE_REPORT_WRITE
              - DAMAGE_CONTROL_SETTINGS_READ
              - DAMAGE_CONTROL_SETTINGS_WRITE
              - EVIDENCE_OVERLAY_TEMPLATE_READ
              - EVIDENCE_OVERLAY_TEMPLATE_WRITE
              - INTEGRATION_API_EXECUTION
              - SHIPMENT_MANAGEMENT_READ
              - SHIPMENT_MANAGEMENT_WRITE
              - INVENTORY_LIST_MANAGEMENT_READ
              - INVENTORY_LIST_MANAGEMENT_WRITE
              - WEBHOOK_CONFIGURATION_READ
              - WEBHOOK_CONFIGURATION_WRITE
              - CREATE_TRACKS_MANUAL_VIA_BACKOFFICE
              - RACK_MANAGEMENT_READ
              - RACK_MANAGEMENT_WRITE
    ExternalApiTokenV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        name:
          type: string
        note:
          type: string
    PageResponseAuditLogRecordV1Dto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/AuditLogRecordV1Dto'
        pageRequest:
          $ref: '#/components/schemas/PageRequest'
        totalElements:
          type: integer
          format: int32
    UserV1Dto:
      required:
        - authority
        - email
        - firstName
        - lastName
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        firstName:
          maxLength: 100
          minLength: 2
          type: string
        lastName:
          maxLength: 100
          minLength: 2
          type: string
        email:
          pattern: >-
            ^[_A-Za-z0-9-']+[#\+\.\*_A-Za-z0-9-']*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,})$
          type: string
        authority:
          $ref: '#/components/schemas/AuthorityDto'
        phoneNumber:
          type: string
    AlertEventV1Dto:
      type: object
      properties:
        createDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        configurationName:
          type: string
        subject:
          type: string
        status:
          type: string
          enum:
            - TRIGGERED
            - RESOLVED
        eventDate:
          type: string
          format: date-time
        resolutionDate:
          type: string
          format: date-time
        metric:
          type: string
        metricValue:
          type: number
          format: double
        comparisonRule:
          type: string
          enum:
            - GREATER
            - GREATER_OR_EQUAL
            - LESS
            - LESS_OR_EQUAL
            - EQUAL
        thresholdValue:
          type: number
          format: double
        noInfoBreach:
          type: boolean
        alertSource:
          type: string
        alertSourceName:
          type: string
    PageResponseAlertEventV1Dto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/AlertEventV1Dto'
        pageRequest:
          $ref: '#/components/schemas/PageRequest'
        totalElements:
          type: integer
          format: int32
    PageResponseAgentV1Dto:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/AgentV1Dto'
        pageRequest:
          $ref: '#/components/schemas/PageRequest'
        totalElements:
          type: integer
          format: int32
  securitySchemes:
    X-AUTH-KEY:
      type: apiKey
      name: X-AUTH-KEY
      in: header
