openapi: 3.0.1
info:
  title: seal-rest
  version: 14.37.2
  contact:
    name: SEAL Systems AG
    email: support@sealsystems.de
    url: http://www.sealsystems.de
  license:
    name: SEAL End User License
servers:
  - url: http://localhost:8080/
    description: Default development server
  - url: https://localhost:8080/
    description: Default production server
components:
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
    BearerAuth:
      type: http
      scheme: bearer
security:
  - BearerAuth: []
    BasicAuth: []
paths:
  /:
    parameters: []
    get:
      summary: GET /
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: API Root
  /v3/:
    parameters: []
    get:
      summary: GET /v3/
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: API v3 Root
  /v3/auth/userroles:
    parameters: []
    get:
      summary: GET /v3/auth/userroles
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  admin:
                    type: object
                    properties:
                      areas:
                        type: object
                        properties:
                          dashboard:
                            type: object
                          jobs:
                            type: object
                          printers:
                            type: object
                      set-all:
                        type: object
                        properties:
                          views:
                            type: array
                            items:
                              type: string
                          permissions:
                            type: array
                            items:
                              type: string
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get user roles for the authenticated user
  /v3/configs/:
    parameters: []
    get:
      summary: GET /v3/configs/
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    key:
                      type: string
                      format: uri
                    value:
                      type: object
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get all user configuration information
    put:
      summary: PUT /v3/configs/
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Change user configuration information
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                key:
                  type: string
                  format: uri
                value:
                  type: object
    delete:
      summary: DELETE /v3/configs/
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Delete all user configuration information
  /v3/flows/:
    parameters: []
    get:
      summary: GET /v3/flows/
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    standard:
                      type: boolean
                    flow:
                      type: string
                      format: style
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get list of all flows
    post:
      summary: POST /v3/flows/
      responses:
        '200':
          description: 200 OK
        '400':
          description: 400 Bad Request
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Create a new customer specific flow
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                standard:
                  type: boolean
                flow:
                  type: string
                  format: style
  /v3/flows/{name}:
    parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
    get:
      summary: GET /v3/flows/:name
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  name:
                    type: string
                  standard:
                    type: boolean
                  flow:
                    type: string
                    format: style
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get full flow definition
    delete:
      summary: DELETE /v3/flows/:name
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Delete customer specific flow
  /v3/jobs/:
    parameters: []
    get:
      summary: GET /v3/jobs/
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    _id:
                      type: string
                    orig:
                      type: object
                      properties:
                        jobName:
                          type: string
                        printerName:
                          type: string
                        userName:
                          type: string
                        fileName:
                          type: string
                        fileFormat:
                          type: string
                        copies:
                          type: integer
                        checkinType:
                          type: string
                        server:
                          type: string
                        creator:
                          type: string
                        arrivedTime:
                          type: integer
                        checkinTime:
                          type: integer
                        fileSize:
                          type: integer
                    current:
                      type: object
                      properties:
                        jobName:
                          type: string
                        printerName:
                          type: string
                        userName:
                          type: string
                        fileName:
                          type: string
                        fileFormat:
                          type: string
                        copies:
                          type: integer
                        checkinType:
                          type: string
                        server:
                          type: string
                        creator:
                          type: string
                        arrivedTime:
                          type: integer
                        checkinTime:
                          type: integer
                        fileSize:
                          type: integer
                    refId:
                      type: string
                    fileName:
                      type: array
                      items:
                        type: string
                    status:
                      type: string
                    stages:
                      type: array
                      items:
                        type: object
                        properties:
                          fileName:
                            type: string
                          mimeType:
                            type: string
                          createdBy:
                            type: string
                          createdAt:
                            type: integer
                          context:
                            type: object
                            properties:
                              type:
                                type: string
                    lcCurrent:
                      type: object
                      properties:
                        jobName:
                          type: string
                        printerName:
                          type: string
                        userName:
                          type: string
                        fileName:
                          type: string
                        fileFormat:
                          type: string
                        copies:
                          type: integer
                        checkinType:
                          type: string
                        server:
                          type: string
                        creator:
                          type: string
                        arrivedTime:
                          type: integer
                        checkinTime:
                          type: integer
                        fileSize:
                          type: integer
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get full job information for queried jobs
      parameters:
        - in: query
          name: $filter
          schema:
            type: string
          required: false
        - in: query
          name: $top
          schema:
            type: string
          required: false
        - in: query
          name: $skip
          schema:
            type: string
          required: false
        - in: query
          name: $select
          schema:
            type: string
          required: false
        - in: query
          name: $inlinecount
          schema:
            type: string
          required: false
        - in: query
          name: $orderby
          schema:
            type: string
          required: false
  /v3/jobs/{id}:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    get:
      summary: GET /v3/jobs/:id
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  _id:
                    type: string
                  orig:
                    type: object
                    properties:
                      jobName:
                        type: string
                      printerName:
                        type: string
                      userName:
                        type: string
                      fileName:
                        type: string
                      fileFormat:
                        type: string
                      copies:
                        type: integer
                      checkinType:
                        type: string
                      server:
                        type: string
                      creator:
                        type: string
                      arrivedTime:
                        type: integer
                      checkinTime:
                        type: integer
                      fileSize:
                        type: integer
                  current:
                    type: object
                    properties:
                      jobName:
                        type: string
                      printerName:
                        type: string
                      userName:
                        type: string
                      fileName:
                        type: string
                      fileFormat:
                        type: string
                      copies:
                        type: integer
                      checkinType:
                        type: string
                      server:
                        type: string
                      creator:
                        type: string
                      arrivedTime:
                        type: integer
                      checkinTime:
                        type: integer
                      fileSize:
                        type: integer
                  refId:
                    type: string
                  fileName:
                    type: array
                    items:
                      type: string
                  status:
                    type: string
                  stages:
                    type: array
                    items:
                      type: object
                      properties:
                        fileName:
                          type: string
                        mimeType:
                          type: string
                        createdBy:
                          type: string
                        createdAt:
                          type: integer
                        context:
                          type: object
                          properties:
                            type:
                              type: string
                  lcCurrent:
                    type: object
                    properties:
                      jobName:
                        type: string
                      printerName:
                        type: string
                      userName:
                        type: string
                      fileName:
                        type: string
                      fileFormat:
                        type: string
                      copies:
                        type: integer
                      checkinType:
                        type: string
                      server:
                        type: string
                      creator:
                        type: string
                      arrivedTime:
                        type: integer
                      checkinTime:
                        type: integer
                      fileSize:
                        type: integer
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get full job information
    delete:
      summary: DELETE /v3/jobs/:id
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Delete job
  /v3/jobs/{id}/cancel:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/jobs/:id/cancel
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '412':
          description: 412 Precondition Failed
        '500':
          description: 500 Internal Server Error
      description: Cancel job
  /v3/jobs/{id}/collect:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    get:
      summary: GET /v3/jobs/:id/collect
      responses:
        '200':
          description: 200 OK
          content:
            application/gzip:
              schema:
                type: string
                format: binary
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Download collected job files as a gzip archive
  /v3/jobs/{id}/logs:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    get:
      summary: GET /v3/jobs/:id/logs
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  messages:
                    type: array
                    items:
                      type: object
                      properties:
                        '@timestamp':
                          type: string
                          format: date-time
                        timestamp:
                          type: integer
                        level:
                          type: string
                        message:
                          type: string
                        metadata:
                          type: object
                        application:
                          type: object
                        host:
                          type: object
                          properties:
                            name:
                              type: string
                        id:
                          type: integer
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get logs for a single job
  /v3/jobs/{id}/logfile:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    get:
      summary: GET /v3/jobs/:id/logfile
      responses:
        '200':
          description: 200 OK
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
              example: |2-

                      2025-11-18 13:03:41.439 [I] New job arrived.
                                                  Application: seal-ipp-checkin
                                                  Host: 9d45c56a038d
                      2025-11-18 13:03:41.853 [I] Job received.
                                                  Application: seal-ipp-checkin
                                                  Host: 9d45c56a038d
                      2025-11-18 13:03:41.853 [I] Job metadata.
                                                  Application: seal-ipp-checkin
                                                  Host: 9d45c56a038d
                      2025-11-18 13:03:42.084 [I] Job accepted.
                                                  Application: seal-ipp-checkin
                                                  Host: 9d45c56a038d
                      ...
                      2025-11-18 13:03:42.656 [I] Cleanup
                                                  Application: seal-bodyscanner
                                                  Host: 5e0e4db04d46
                      2025-11-18 13:03:42.664 [I] Stop polling stream properties
                                                  Application: seal-controller
                                                  Host: ed35a3a31f9f
                      2025-11-18 13:03:42.684 [I] Set job status
                                                  Application: seal-controller
                                                  Host: ed35a3a31f9f
                      
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Download extended job log
  /v3/jobs/{id}/move:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/jobs/:id/move
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '412':
          description: 412 Precondition Failed
        '500':
          description: 500 Internal Server Error
      description: Move job to another printer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                targetPrinter:
                  type: string
                targetServer:
                  type: string
  /v3/jobs/{id}/pause:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/jobs/:id/pause
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '412':
          description: 412 Precondition Failed
        '500':
          description: 500 Internal Server Error
      description: Pause job
  /v3/jobs/{id}/repeat:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/jobs/:id/repeat
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '412':
          description: 412 Precondition Failed
        '500':
          description: 500 Internal Server Error
      description: Repeat job
  /v3/jobs/{id}/resume:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/jobs/:id/resume
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '412':
          description: 412 Precondition Failed
        '500':
          description: 500 Internal Server Error
      description: Resume job
  /v3/jobs/{id}/tempfiles:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/jobs/:id/tempfiles
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Set whether to save temporary files for the job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                saveTempFiles:
                  type: boolean
  /v3/jobs/{id}/pageinfo:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    get:
      summary: GET /v3/jobs/:id/pageinfo
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get page information for a job
  /v3/jobs/{id}/preview:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    get:
      summary: GET /v3/jobs/:id/preview
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  pages:
                    type: integer
                  mimeType:
                    type: string
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get preview information for a job
  /v3/jobs/metadata:
    parameters: []
    get:
      summary: GET /v3/jobs/metadata
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get metadata for jobs
  /v3/printers/:
    parameters: []
    get:
      summary: GET /v3/printers/
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    _id:
                      type: string
                    config:
                      type: object
                      properties:
                        connection:
                          type: string
                          format: uri
                        printer:
                          type: string
                        printerDepartment:
                          type: string
                        pickup:
                          type: boolean
                        printerComment:
                          type: string
                        useCopier:
                          type: string
                        template:
                          type: object
                        nativeQueue:
                          type: boolean
                        printerLocation:
                          type: string
                        monitorConnection:
                          type: string
                          format: uri
                        rotateLandscapeA3:
                          type: boolean
                        adjustStapleType:
                          type: boolean
                        colorType:
                          type: string
                        adjustPunchType:
                          type: boolean
                        type:
                          type: object
                          properties:
                            manufacturer:
                              type: string
                            model:
                              type: string
                            name:
                              type: string
                            pdl:
                              type: object
                              properties:
                                version:
                                  type: string
                                  format: utc-millisec
                                name:
                                  type: string
                        config:
                          type: string
                        monitorMode:
                          type: string
                        server:
                          type: string
                        webUrl:
                          type: string
                          format: uri
                        connectionHostname:
                          type: string
                          format: ip-address
                    runtime:
                      type: object
                      properties:
                        status:
                          type: string
                        currentPrintingJob:
                          type: string
                        lastPrintedJobTime:
                          type: integer
                        queuedJobs:
                          type: integer
                        redirectedTo:
                          type: object
                          properties:
                            targetPrinter:
                              type: string
                            targetServer:
                              type: string
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get all printer information
      parameters:
        - in: query
          name: $filter
          schema:
            type: string
          required: false
        - in: query
          name: $top
          schema:
            type: string
          required: false
        - in: query
          name: $skip
          schema:
            type: string
          required: false
        - in: query
          name: $select
          schema:
            type: string
          required: false
        - in: query
          name: $inlinecount
          schema:
            type: string
          required: false
        - in: query
          name: $orderby
          schema:
            type: string
          required: false
    post:
      summary: POST /v3/printers/
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Add a new printer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                _id:
                  type: string
                config:
                  type: object
                  properties:
                    connection:
                      type: string
                      format: uri
                    printer:
                      type: string
                    printerDepartment:
                      type: string
                    pickup:
                      type: boolean
                    printerComment:
                      type: string
                    useCopier:
                      type: string
                    template:
                      type: object
                    nativeQueue:
                      type: boolean
                    printerLocation:
                      type: string
                    monitorConnection:
                      type: string
                      format: uri
                    rotateLandscapeA3:
                      type: boolean
                    adjustStapleType:
                      type: boolean
                    colorType:
                      type: string
                    adjustPunchType:
                      type: boolean
                    type:
                      type: object
                      properties:
                        manufacturer:
                          type: string
                        model:
                          type: string
                        name:
                          type: string
                        pdl:
                          type: object
                          properties:
                            version:
                              type: string
                              format: utc-millisec
                            name:
                              type: string
                    config:
                      type: string
                    monitorMode:
                      type: string
                    server:
                      type: string
                    webUrl:
                      type: string
                      format: uri
                    connectionHostname:
                      type: string
                      format: ip-address
                runtime:
                  type: object
                  properties:
                    status:
                      type: string
                    currentPrintingJob:
                      type: string
                    lastPrintedJobTime:
                      type: integer
                    queuedJobs:
                      type: integer
                    redirectedTo:
                      type: object
                      properties:
                        targetPrinter:
                          type: string
                        targetServer:
                          type: string
  /v3/printers/config:
    parameters: []
    get:
      summary: GET /v3/printers/config
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    _id:
                      type: string
                    configName:
                      type: string
                    content:
                      type: string
                    lastChanged:
                      type: integer
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get all printer PPD configuration
    post:
      summary: POST /v3/printers/config
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: printer PPD configuration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                configName:
                  type: string
                content:
                  type: string
  /v3/printers/config/{configName}:
    parameters:
      - name: configName
        in: path
        required: true
        schema:
          type: string
    get:
      summary: GET /v3/printers/config/:configName
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  _id:
                    type: string
                  configName:
                    type: string
                  content:
                    type: string
                  lastChanged:
                    type: integer
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get single printer PPD configuration
    put:
      summary: PUT /v3/printers/config/:configName
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  _id:
                    type: string
                  configName:
                    type: string
                  content:
                    type: string
                  lastChanged:
                    type: integer
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Change single printer PPD configuration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  type: string
    delete:
      summary: DELETE /v3/printers/config/:configName
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Delete single printer PPD configuration
  /v3/printers/{printerName}:
    parameters:
      - name: printerName
        in: path
        required: true
        schema:
          type: string
    get:
      summary: GET /v3/printers/:printerName
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  _id:
                    type: string
                  config:
                    type: object
                    properties:
                      connection:
                        type: string
                        format: uri
                      printer:
                        type: string
                      printerDepartment:
                        type: string
                      pickup:
                        type: boolean
                      printerComment:
                        type: string
                      useCopier:
                        type: string
                      template:
                        type: object
                      nativeQueue:
                        type: boolean
                      printerLocation:
                        type: string
                      monitorConnection:
                        type: string
                        format: uri
                      rotateLandscapeA3:
                        type: boolean
                      adjustStapleType:
                        type: boolean
                      colorType:
                        type: string
                      adjustPunchType:
                        type: boolean
                      type:
                        type: object
                        properties:
                          manufacturer:
                            type: string
                          model:
                            type: string
                          name:
                            type: string
                          pdl:
                            type: object
                            properties:
                              version:
                                type: string
                                format: utc-millisec
                              name:
                                type: string
                      config:
                        type: string
                      monitorMode:
                        type: string
                      server:
                        type: string
                      webUrl:
                        type: string
                        format: uri
                      connectionHostname:
                        type: string
                        format: ip-address
                  runtime:
                    type: object
                    properties:
                      status:
                        type: string
                      currentPrintingJob:
                        type: string
                      lastPrintedJobTime:
                        type: integer
                      queuedJobs:
                        type: integer
                      redirectedTo:
                        type: object
                        properties:
                          targetPrinter:
                            type: string
                          targetServer:
                            type: string
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get information for a single printer
    put:
      summary: PUT /v3/printers/:printerName
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Change printer information
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                _id:
                  type: string
                config:
                  type: object
                  properties:
                    connection:
                      type: string
                      format: uri
                    printer:
                      type: string
                    printerDepartment:
                      type: string
                    pickup:
                      type: boolean
                    printerComment:
                      type: string
                    useCopier:
                      type: string
                    template:
                      type: object
                    nativeQueue:
                      type: boolean
                    printerLocation:
                      type: string
                    monitorConnection:
                      type: string
                      format: uri
                    rotateLandscapeA3:
                      type: boolean
                    adjustStapleType:
                      type: boolean
                    colorType:
                      type: string
                    adjustPunchType:
                      type: boolean
                    type:
                      type: object
                      properties:
                        manufacturer:
                          type: string
                        model:
                          type: string
                        name:
                          type: string
                        pdl:
                          type: object
                          properties:
                            version:
                              type: string
                              format: utc-millisec
                            name:
                              type: string
                    config:
                      type: string
                    monitorMode:
                      type: string
                    server:
                      type: string
                    webUrl:
                      type: string
                      format: uri
                    connectionHostname:
                      type: string
                      format: ip-address
                runtime:
                  type: object
                  properties:
                    status:
                      type: string
                    currentPrintingJob:
                      type: string
                    lastPrintedJobTime:
                      type: integer
                    queuedJobs:
                      type: integer
                    redirectedTo:
                      type: object
                      properties:
                        targetPrinter:
                          type: string
                        targetServer:
                          type: string
    delete:
      summary: DELETE /v3/printers/:printerName
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Delete single printer
  /v3/printers/checkconnection:
    parameters: []
    post:
      summary: POST /v3/printers/checkconnection
      responses:
        '200':
          description: Connection check successfully performed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  code:
                    type: string
                  ipAddress:
                    type: string
                    format: ip-address
                  testedConnection:
                    type: string
                    format: uri
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: Connection check failed because the specified printer was not found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  code:
                    type: string
                  metadata:
                    type: object
                    properties:
                      kbCode:
                        type: string
                      sealSpaceUrl:
                        type: string
                        format: uri
        '500':
          description: 500 Internal Server Error
      description: Checks the connection status of a specific printer.
      parameters:
        - name: printer
          in: query
          required: true
          description: The name of the printer to check the connection for.
          schema:
            type: string
            example: printer1
  /v3/printers/{printerName}/checkPhysical:
    parameters:
      - name: printerName
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/printers/:printerName/checkPhysical
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Check physical connection to printer
  /v3/printers/{printerName}/createTestJob:
    parameters:
      - name: printerName
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/printers/:printerName/createTestJob
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Create a test job on the printer
  /v3/printers/{printerName}/logs:
    parameters:
      - name: printerName
        in: path
        required: true
        schema:
          type: string
    get:
      summary: GET /v3/printers/:printerName/logs
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  messages:
                    type: array
                    items:
                      type: object
                      properties:
                        '@timestamp':
                          type: string
                          format: date-time
                        timestamp:
                          type: integer
                        level:
                          type: string
                        message:
                          type: string
                        metadata:
                          type: object
                        application:
                          type: object
                        host:
                          type: object
                          properties:
                            name:
                              type: string
                        id:
                          type: integer
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get logs for a single printer
  /v3/printers/{printerName}/message:
    parameters:
      - name: printerName
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/printers/:printerName/message
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Set administrator message for a printer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: object
                  properties:
                    message:
                      type: string
                    username:
                      type: string
                    date:
                      type: integer
    delete:
      summary: DELETE /v3/printers/:printerName/message
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Delete administrator message of a printer
  /v3/printers/{printerName}/pause:
    parameters:
      - name: printerName
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/printers/:printerName/pause
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '412':
          description: 412 Precondition Failed
        '500':
          description: 500 Internal Server Error
      description: Pause printer
  /v3/printers/{printerName}/redirect:
    parameters:
      - name: printerName
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/printers/:printerName/redirect
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '412':
          description: 412 Precondition Failed
        '500':
          description: 500 Internal Server Error
      description: Redirect printer to another printer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                targetPrinter:
                  type: string
                targetServer:
                  type: string
  /v3/printers/{printerName}/resume:
    parameters:
      - name: printerName
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/printers/:printerName/resume
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '412':
          description: 412 Precondition Failed
        '500':
          description: 500 Internal Server Error
      description: Resume printer
  /v3/printers/{printerName}/runtime:
    parameters:
      - name: printerName
        in: path
        required: true
        schema:
          type: string
    put:
      summary: PUT /v3/printers/:printerName/runtime
      responses:
        '200':
          description: 200 OK
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Change runtime status of a printer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  type: string
  /v3/printers/metadata:
    parameters: []
    get:
      summary: GET /v3/printers/metadata
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get metadata for printers
  /v3/statistics/job-count:
    parameters: []
    get:
      summary: GET /v3/statistics/job-count
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    status:
                      type: string
                    count:
                      type: integer
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get job count statistics
  /v3/statistics/job-series:
    parameters: []
    get:
      summary: GET /v3/statistics/job-series
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    status:
                      type: string
                    series:
                      type: array
                      items:
                        type: object
                        properties:
                          count:
                            type: integer
                          timestamp:
                            type: integer
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get job series statistics
  /v3/statistics/metadata:
    parameters: []
    get:
      summary: GET /v3/statistics/metadata
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  rows:
                    type: integer
                  columns:
                    type: integer
                  availableWidgetSizes:
                    type: array
                    items:
                      type: array
                      items:
                        type: integer
                  widgets:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                        size:
                          type: array
                          items:
                            type: integer
                        pollingTime:
                          type: integer
                        states:
                          type: array
                          items:
                            type: string
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get statistics metadata information
  /v3/statistics/printer-count:
    parameters: []
    get:
      summary: GET /v3/statistics/printer-count
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    status:
                      type: string
                    count:
                      type: integer
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get printer count statistics
  /openapi:
    parameters: []
    get:
      summary: GET /openapi
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  openapi:
                    type: string
                  info:
                    type: object
                    properties:
                      title:
                        type: string
                      description:
                        type: string
                      version:
                        type: string
                  servers:
                    type: array
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                          format: uri
                        description:
                          type: string
                  paths:
                    type: object
                    properties:
                      /v3/openapi/swaggerfile:
                        type: object
                        properties:
                          get:
                            type: object
                            properties:
                              summary:
                                type: string
                              description:
                                type: string
                              responses:
                                type: object
                                properties:
                                  '200':
                                    type: object
                                    properties:
                                      description:
                                        type: string
                                      content:
                                        type: object
                                        properties:
                                          application/octet-stream:
                                            type: object
                                            properties:
                                              schema:
                                                type: object
                                                properties:
                                                  type:
                                                    type: string
                                                  format:
                                                    type: string
                                          application/json:
                                            type: object
                                            properties:
                                              schema:
                                                type: object
                                                properties:
                                                  type:
                                                    type: string
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get OpenAPI specification in JSON format
  /openapi.yaml:
    parameters: []
    get:
      summary: GET /openapi.yaml
      responses:
        '200':
          description: 200 OK
          content:
            application/yaml:
              schema:
                type: string
                format: binary
              example: |
                openapi: 3.0.3
                info:
                  title: Example API
                  description: This is the OpenAPI specification for the Example API.
                  version: 1.0.0
                servers:
                  - url: https://api.example.com/v1
                    description: Production server
                  - url: https://staging.api.example.com/v1
                    description: Staging server
                paths:
                  /v3/openapi/swaggerfile:
                    get:
                      summary: Download the Swagger file
                      description: This route allows downloading the Swagger file.
                      responses:
                        '200':
                          description: Successful download of the Swagger file
                          content:
                            application/octet-stream:
                              schema:
                                type: string
                                format: binary
                            application/json:
                              schema:
                                type: object
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Download OpenAPI specification in YAML format
  /swagger:
    parameters: []
    get:
      summary: GET /swagger
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  openapi:
                    type: string
                  info:
                    type: object
                    properties:
                      title:
                        type: string
                      description:
                        type: string
                      version:
                        type: string
                  servers:
                    type: array
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                          format: uri
                        description:
                          type: string
                  paths:
                    type: object
                    properties:
                      /v3/openapi/swaggerfile:
                        type: object
                        properties:
                          get:
                            type: object
                            properties:
                              summary:
                                type: string
                              description:
                                type: string
                              responses:
                                type: object
                                properties:
                                  '200':
                                    type: object
                                    properties:
                                      description:
                                        type: string
                                      content:
                                        type: object
                                        properties:
                                          application/octet-stream:
                                            type: object
                                            properties:
                                              schema:
                                                type: object
                                                properties:
                                                  type:
                                                    type: string
                                                  format:
                                                    type: string
                                          application/json:
                                            type: object
                                            properties:
                                              schema:
                                                type: object
                                                properties:
                                                  type:
                                                    type: string
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Get OpenAPI specification in JSON format
  /swagger.yaml:
    parameters: []
    get:
      summary: GET /swagger.yaml
      responses:
        '200':
          description: 200 OK
          content:
            application/yaml:
              schema:
                type: string
                format: binary
              example: |
                openapi: 3.0.3
                info:
                  title: Example API
                  description: This is the OpenAPI specification for the Example API.
                  version: 1.0.0
                servers:
                  - url: https://api.example.com/v1
                    description: Production server
                  - url: https://staging.api.example.com/v1
                    description: Staging server
                paths:
                  /v3/openapi/swaggerfile:
                    get:
                      summary: Download the Swagger file
                      description: This route allows downloading the Swagger file.
                      responses:
                        '200':
                          description: Successful download of the Swagger file
                          content:
                            application/octet-stream:
                              schema:
                                type: string
                                format: binary
                            application/json:
                              schema:
                                type: object
        '401':
          description: 401 Unauthorized
        '403':
          description: 403 Forbidden
        '404':
          description: 404 Not Found
        '500':
          description: 500 Internal Server Error
      description: Download OpenAPI specification in YAML format