PrintNode Printers API
Discover the printers attached to an account's computers, including printer capabilities, state, and defaults, either across the whole account or scoped to specific computers.
Discover the printers attached to an account's computers, including printer capabilities, state, and defaults, either across the whole account or scoped to specific computers.
openapi: 3.0.1
info:
title: PrintNode API
description: >-
Specification of the PrintNode cloud and remote printing API. PrintNode lets
web and server applications print to physical printers through the PrintNode
Client running on a remote computer. All requests use HTTP Basic
authentication with the API key supplied as the username and an empty
password.
termsOfService: https://www.printnode.com/en/terms
contact:
name: PrintNode Support
url: https://www.printnode.com/en/contact
version: '1.0'
servers:
- url: https://api.printnode.com
security:
- apiKeyBasicAuth: []
paths:
/ping:
get:
operationId: ping
tags:
- Utility
summary: Health check endpoint that confirms the API is reachable.
responses:
'200':
description: OK
/noop:
get:
operationId: noop
tags:
- Utility
summary: No-operation endpoint useful for testing authentication.
responses:
'200':
description: OK
/whoami:
get:
operationId: whoAmI
tags:
- Account
summary: Returns the Account object for the currently authenticated account.
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
/account:
post:
operationId: createAccount
tags:
- Account
summary: Create a child account (Integrator accounts only).
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAccountRequest'
responses:
'201':
description: Created
patch:
operationId: modifyAccount
tags:
- Account
summary: Modify the authenticated or controlled account.
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
'200':
description: OK
delete:
operationId: deleteAccount
tags:
- Account
summary: Delete the controlled child account.
responses:
'200':
description: OK
/account/controllable:
get:
operationId: getControllableAccounts
tags:
- Account
summary: List the child accounts this Integrator account can control.
responses:
'200':
description: OK
/account/tag/{name}:
get:
operationId: getAccountTag
tags:
- Account
summary: View a named tag stored against the account.
parameters:
- $ref: '#/components/parameters/TagName'
responses:
'200':
description: OK
post:
operationId: setAccountTag
tags:
- Account
summary: Create or update a named tag stored against the account.
parameters:
- $ref: '#/components/parameters/TagName'
requestBody:
required: true
content:
application/json:
schema:
type: string
responses:
'200':
description: OK
delete:
operationId: deleteAccountTag
tags:
- Account
summary: Delete a named tag stored against the account.
parameters:
- $ref: '#/components/parameters/TagName'
responses:
'200':
description: OK
/account/apikey/{description}:
get:
operationId: getApiKey
tags:
- API Keys
summary: View an API key by its description (Integrator accounts only).
parameters:
- $ref: '#/components/parameters/ApiKeyDescription'
responses:
'200':
description: OK
post:
operationId: createApiKey
tags:
- API Keys
summary: Create an API key with the given description.
parameters:
- $ref: '#/components/parameters/ApiKeyDescription'
responses:
'200':
description: OK
delete:
operationId: deleteApiKey
tags:
- API Keys
summary: Delete the API key with the given description.
parameters:
- $ref: '#/components/parameters/ApiKeyDescription'
responses:
'200':
description: OK
/computers:
get:
operationId: getComputers
tags:
- Computers
summary: List all computers connected to the account.
parameters:
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/After'
- $ref: '#/components/parameters/Dir'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Computer'
/computers/{computerSet}:
get:
operationId: getComputerSet
tags:
- Computers
summary: Return the computers matching the supplied computer set.
parameters:
- $ref: '#/components/parameters/ComputerSet'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Computer'
/printers:
get:
operationId: getPrinters
tags:
- Printers
summary: List all printers attached to the account.
parameters:
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/After'
- $ref: '#/components/parameters/Dir'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Printer'
/printers/{printerSet}:
get:
operationId: getPrinterSet
tags:
- Printers
summary: Return the printers matching the supplied printer set.
parameters:
- $ref: '#/components/parameters/PrinterSet'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Printer'
/computers/{computerSet}/printers:
get:
operationId: getPrintersByComputer
tags:
- Printers
summary: List printers attached to the given set of computers.
parameters:
- $ref: '#/components/parameters/ComputerSet'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Printer'
/printjobs:
get:
operationId: getPrintJobs
tags:
- PrintJobs
summary: List print jobs associated with the account.
parameters:
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/After'
- $ref: '#/components/parameters/Dir'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PrintJob'
post:
operationId: createPrintJob
tags:
- PrintJobs
summary: Submit a print job to a printer.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePrintJobRequest'
responses:
'201':
description: Created. Returns the new print job id.
content:
application/json:
schema:
type: integer
/printjobs/{printJobSet}:
get:
operationId: getPrintJobSet
tags:
- PrintJobs
summary: Return the print jobs matching the supplied print job set.
parameters:
- $ref: '#/components/parameters/PrintJobSet'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PrintJob'
/printjobs/states:
get:
operationId: getPrintJobStates
tags:
- PrintJobs
summary: Return the state change history for print jobs on the account.
responses:
'200':
description: OK
/printers/{printerSet}/printjobs:
get:
operationId: getPrintJobsByPrinter
tags:
- PrintJobs
summary: List the print jobs sent to the given set of printers.
parameters:
- $ref: '#/components/parameters/PrinterSet'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PrintJob'
/computer/{computerId}/scales:
get:
operationId: getScales
tags:
- Scales
summary: List the scales connected to the given computer.
parameters:
- $ref: '#/components/parameters/ComputerId'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Scale'
/computer/{computerId}/scales/{deviceName}:
get:
operationId: getScalesByDeviceName
tags:
- Scales
summary: List scale measurements for a named device on a computer.
parameters:
- $ref: '#/components/parameters/ComputerId'
- $ref: '#/components/parameters/DeviceName'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Scale'
/computer/{computerId}/scale/{deviceName}/{deviceNumber}:
get:
operationId: getScale
tags:
- Scales
summary: Return a single scale measurement for a named device and number.
parameters:
- $ref: '#/components/parameters/ComputerId'
- $ref: '#/components/parameters/DeviceName'
- $ref: '#/components/parameters/DeviceNumber'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Scale'
/webhook:
get:
operationId: getWebhooks
tags:
- Webhooks
summary: View the webhooks registered on the account.
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Webhook'
post:
operationId: createWebhook
tags:
- Webhooks
summary: Register a new webhook on the account.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
responses:
'201':
description: Created
patch:
operationId: modifyWebhook
tags:
- Webhooks
summary: Modify an existing webhook.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
responses:
'200':
description: OK
delete:
operationId: deleteWebhook
tags:
- Webhooks
summary: Delete a webhook from the account.
responses:
'200':
description: OK
/download/clients:
get:
operationId: getClientDownloads
tags:
- Clients
summary: List the available PrintNode Client download versions.
responses:
'200':
description: OK
components:
securitySchemes:
apiKeyBasicAuth:
type: http
scheme: basic
description: >-
HTTP Basic authentication. Supply the PrintNode API key as the username
and leave the password empty. Integrator accounts may additionally
authenticate on behalf of a child account using the X-Child-Account-By-Id,
X-Child-Account-By-Email, or X-Child-Account-By-CreatorRef header.
parameters:
Limit:
name: limit
in: query
description: Maximum number of rows returned. Default is 100.
required: false
schema:
type: integer
default: 100
After:
name: after
in: query
description: Return records whose id is after this value, for pagination.
required: false
schema:
type: integer
Dir:
name: dir
in: query
description: Ordering of returned records, asc or desc. Default is desc.
required: false
schema:
type: string
enum:
- asc
- desc
default: desc
ComputerSet:
name: computerSet
in: path
description: A set of computer ids, e.g. 123 or 123,456 or a range 100-200.
required: true
schema:
type: string
PrinterSet:
name: printerSet
in: path
description: A set of printer ids, e.g. 123 or 123,456 or a range 100-200.
required: true
schema:
type: string
PrintJobSet:
name: printJobSet
in: path
description: A set of print job ids, e.g. 123 or 123,456 or a range 100-200.
required: true
schema:
type: string
ComputerId:
name: computerId
in: path
description: The id of a single computer.
required: true
schema:
type: integer
DeviceName:
name: deviceName
in: path
description: The device name of a connected scale.
required: true
schema:
type: string
DeviceNumber:
name: deviceNumber
in: path
description: The device number of a connected scale.
required: true
schema:
type: integer
TagName:
name: name
in: path
description: The name of the account tag.
required: true
schema:
type: string
ApiKeyDescription:
name: description
in: path
description: The description identifying the API key.
required: true
schema:
type: string
schemas:
Account:
type: object
properties:
id:
type: integer
description: Unique account identifier.
firstname:
type: string
lastname:
type: string
email:
type: string
canCreateSubAccounts:
type: boolean
creatorEmail:
type: string
nullable: true
creatorRef:
type: string
nullable: true
credits:
type: integer
nullable: true
numComputers:
type: integer
totalPrints:
type: integer
versions:
type: array
items:
type: string
connected:
type: array
items:
type: integer
permissions:
type: array
items:
type: string
Computer:
type: object
properties:
id:
type: integer
name:
type: string
inet:
type: string
nullable: true
inet6:
type: string
nullable: true
hostname:
type: string
nullable: true
version:
type: string
nullable: true
jre:
type: string
nullable: true
createTimestamp:
type: string
format: date-time
state:
type: string
description: Connection state, e.g. connected or disconnected.
Printer:
type: object
properties:
id:
type: integer
computer:
$ref: '#/components/schemas/Computer'
name:
type: string
description:
type: string
capabilities:
type: object
nullable: true
default:
type: boolean
createTimestamp:
type: string
format: date-time
state:
type: string
description: Printer state, e.g. online, offline or deleted.
PrintJob:
type: object
properties:
id:
type: integer
printer:
$ref: '#/components/schemas/Printer'
title:
type: string
contentType:
type: string
source:
type: string
expireAt:
type: string
format: date-time
nullable: true
createTimestamp:
type: string
format: date-time
state:
type: string
CreatePrintJobRequest:
type: object
required:
- printerId
- contentType
- content
properties:
printerId:
type: integer
description: The id of the target printer.
title:
type: string
description: Title displayed in the print queue.
contentType:
type: string
description: The content encoding of the job.
enum:
- pdf_uri
- pdf_base64
- raw_uri
- raw_base64
content:
type: string
description: A URI or base64-encoded payload depending on contentType.
source:
type: string
description: Free-text description of the job origin.
options:
type: object
description: Printer options such as copies, dpi, paper, fit_to_page.
expireAfter:
type: integer
description: Retention period in seconds. Default 1209600.
qty:
type: integer
description: Number of times to deliver the job. Default 1.
authentication:
type: object
description: Optional HTTP credentials for fetching a content URI.
CreateAccountRequest:
type: object
properties:
Account:
type: object
properties:
firstname:
type: string
lastname:
type: string
email:
type: string
password:
type: string
creatorRef:
type: string
ApiKeys:
type: array
items:
type: string
Tags:
type: object
Scale:
type: object
properties:
mass:
type: array
items:
type: integer
nullable: true
description: Measured mass as [grams, micrograms].
deviceName:
type: string
deviceNum:
type: integer
computerId:
type: integer
vendor:
type: string
nullable: true
product:
type: string
nullable: true
count:
type: integer
measurement:
type: object
nullable: true
clientReportedCreateTimestamp:
type: string
format: date-time
ntpOffset:
type: integer
nullable: true
ageOfData:
type: integer
nullable: true
Webhook:
type: object
properties:
id:
type: integer
url:
type: string
description: The HTTPS endpoint that receives event notifications.
enabled:
type: boolean