openapi: 3.0.1
info:
  title: Vasion External Gateway API
  version: v1.0.0
  contact:
    name: PrinterLogic Support
    url: https://vasion.com/technical-support/
    email: support@printerlogic.com
servers:
  - url: https://external-api.app.printercloud.com
  - url: https://external-api.app.printercloud5.com
  - url: https://external-api.app.printercloud6.com
  - url: https://external-api.app.printercloud10.com
  - url: https://external-api.app.printercloud15.com
  - url: https://external-api.app.printercloud20.com
  - url: https://external-api.app.printercloudnow.com
tags: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
  schemas:
    AdditionalAttributes: 
      type: object
      additionalProperties: true
    Printer:
      type: object
      properties: 
        id: 
          type: integer
          format: int32
        ptype: 
          type: integer
          format: int32
        accountId: 
          type: integer
          format: int32
        title: 
          type: string
        hostAddress: 
          type: string
        protocol: 
          type: string
        portNumber: 
          type: integer
          format: int32
        queueName: 
          type: string
        isSnmpEnabled: 
          type: integer
          format: int32
        isByteCounting: 
          type: integer
          format: int32
        revision: 
          type: integer
          format: int32
        location: 
          type: string
        comment: 
          type: string
        make: 
          type: string
        cpaSubtype: 
          type: string
        distributeAlways: 
          type: integer
          format: int32
        sourceFlags: 
          type: integer
          format: int32
        originalSourceDescription: 
          type: string
        originalPid: 
          type: string
        containerId: 
          type: integer
          format: int32
        lastModified: 
          type: string
        ipSearch: 
          type: string
        model: 
          type: string
        isColor: 
          type: integer
          format: int32
        profilingFlags: 
          type: integer
          format: int32
        lastSnmpAttempt: 
          type: string
        mobilePrintEnabled: 
          type: integer
          format: int32
        mobilePrintEmailAddress: 
          type: string
        supportsDuplex: 
          type: integer
          format: int32
        secureRelease: 
          type: integer
          format: int32
        pullPrint: 
          type: integer
          format: int32
        mobilePrinting: 
          type: integer
          format: int32
        chromebookPrinting: 
          type: integer
          format: int32
        isPullPrinter: 
          type: integer
          format: int32
        consolePrinting: 
          type: integer
          format: int32
        globalConsolePrinting: 
          type: integer
          format: int32
        consoleUsername: 
          type: string
        consoleInstalled: 
          type: integer
          format: int32
        consoleVersion: 
          type: string
        consoleAttempted: 
          type: string
        globalDisableSingleSignOn: 
          type: integer
          format: int32
        disableSingleSignOn: 
          type: integer
          format: int32
        badgeScan: 
          type: integer
          format: int32
        badgeScanInstalled: 
          type: integer
          format: int32
        filterExe: 
          type: string
        directEmailValue: 
          type: integer
          format: int32
        directEmailAddress: 
          type: string
        directEmailGuestValue: 
          type: integer
          format: int32
        hasError: 
          type: integer
          format: int32
        hpReaderBadgeType: 
          type: string
          format: nullable
        fastReleaseEnabled: 
          type: integer
          format: int32
        fastReleaseDevice: 
          type: integer
          format: int32
        fastReleaseType: 
          type: integer
          format: int32
        jobCostTemplate: 
          type: integer
          format: int32
        omplusEnabled: 
          type: integer
          format: int32
        cpaHpNeedsUpdate: 
          type: integer
          format: int32
        cpaHpUpdatedAt: 
          type: string
        cpaHpUpdateError: 
          type: string
        consolePassword: 
          type: string
        directEmailEnabled: 
          type: integer
          format: int32
        directEmailGuestEnabled: 
          type: integer
          format: int32
        parentPath: 
          type: string
        snmp:
          $ref: "#/components/schemas/Snmp"
        additionalAttributes:
          $ref: "#/components/schemas/AdditionalAttributes"
    Printers: 
      type: array
      items: 
        $ref: "#/components/schemas/Printer"
    Snmp: 
      type: object
      properties: 
        enabled: 
          type: boolean
        version: 
          type: string
        settings:
          $ref: "#/components/schemas/SnmpSettings"
        status:
          $ref: "#/components/schemas/SnmpStatus"
    SnmpSettings: 
      type: object
      properties: 
        snmpCommunity: 
          type: string
        snmpCommunityPrivate: 
          type: string
        snmpDeviceindex: 
          type: string
        snmp12Override: 
          type: integer
          format: int32
        snmp12DefaultStateOverride: 
          type: integer
          format: int32
        snmp12CommunityOverride: 
          type: string
        snmp12CommunityPrivateOverride: 
          type: string
        snmpAttemptsOverride: 
          type: integer
          format: int32
        snmpAttemptsIntervalOverride: 
          type: integer
          format: int32
        snmpIntervalOverride: 
          type: integer
          format: int32
        snmpIntervalErrorOverride: 
          type: integer
          format: int32
        snmp3Enabled: 
          type: string
        snmpSecurityLevel: 
          type: string
        snmpUsername: 
          type: string
        snmpAuthenticationKey: 
          type: string
        snmpAuthenticationProtocol: 
          type: string
        snmpPrivacyProtocol: 
          type: string
        snmpPrivacyKey: 
          type: string
        snmpContextName: 
          type: string
        snmpContextEngineID: 
          type: string
    SnmpStatus:
      type: object
      properties: 
        lastUpdated:
          type: string
        lastAttempted:
          type: string
        pingStatus:
          type: integer
        model:
          type: string
        hostname:
          type: string
        snmpProtocolVersion:
          type: integer
        consoleMessage:
          type: string
        operationalState:
          type: string
        currentStatus:
          type: string
        errorCondition:
          type: string
        uptime:
          type: string
        ipAddress:
          type: string
        macAddress:
          type: string
        lifetimePageCount:
          type: integer
        hasColor:
          type: integer
        hasDuplex:
          type: integer
        serialNum:
          type: string
      
paths:
  /v1/jobs/status/{jobID}:
    get:
      security:
        - bearerAuth: []
      summary: Get Job Status
      description: "Retrieve the status of a specific print job by its UUID."
      parameters:
        - name: jobID
          in: path
          required: true
          schema:
            type: string
            pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
          description: UUID of the job to query
          example: 96e31686-daae-4820-9389-5a9d36496bad
      responses:
        200:
          description: Job status retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  jobID:
                    type: string
                    description: UUID of the job
                    example: 96e31686-daae-4820-9389-5a9d36496bad
                  status:
                    type: string
                    description: Current status of the job (created, released, completed, retrying, failed, redirecting, cancelling)
                    example: completed
                  batchID:
                    type: string
                    description: UUID of the batch if job is part of a batch, empty string if not in a batch
                    example: 12e31686-daae-4820-9389-5a9d36496xyz
              examples:
                JobWithBatch:
                  value:
                    jobID: "96e31686-daae-4820-9389-5a9d36496bad"
                    status: "completed"
                    batchID: "12e31686-daae-4820-9389-5a9d36496xyz"
                JobWithoutBatch:
                  value:
                    jobID: "96e31686-daae-4820-9389-5a9d36496bad"
                    status: "processing"
                    batchID: ""
        400:
          description: "Bad Request. Invalid job ID format."
        401:
          description: "Unauthorized. Invalid authorization was used in the request."
        404:
          description: "Not Found. Job ID does not exist."
        500:
          description: "Internal Server Error."