Request for Comments: 3998 H. Lewis
Category: Standards Track IBM Corporation
T. Hastings, Ed.
Xerox Corporation
March 2005
Internet Printing Protocol (IPP):
Job and Printer Administrative Operations
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
This document specifies the following 16 additional OPTIONAL system
administration operations for use with the Internet Printing
Protocol/1.1 (IPP), plus a few associated attributes, values, and
status codes, and using the IPP Printer object to manage printer
fan-out and fan-in.
Printer operations: Job operations:
Enable-Printer and Disable-Printer Reprocess-Job
Pause-Printer-After-Current-Job Cancel-Current-Job
Hold-New-Jobs and Release-Held-New-Jobs Suspend-Current-Job
Deactivate-Printer and Activate-Printer Resume-Job
Restart-Printer Promote-Job
Shutdown-Printer and Startup-Printer Schedule-Job-After
Table of Contents
1. Introduction.................................................. 4
2. Terminology................................................... 4
2.1. Conformance Terminology................................. 4
2.2. Other Terminology....................................... 5
3. Definition of the Printer Operations.......................... 6
3.1. The Disable and Enable Printer Operations............... 7
3.1.1. Disable-Printer Operation....................... 7
3.1.2. Enable-Printer Operation........................ 8
3.2. The Pause and Resume Printer Operations................. 8
3.2.1. Pause-Printer-After-Current-Job Operation....... 9
3.3. Hold and Release New Jobs Operations.................... 11
3.3.1. Hold-New-Jobs Operation......................... 11
3.3.2. Release-Held-New-Jobs Operation................. 12
3.4. Deactivate and Activate Printer Operations.............. 12
3.4.1. Deactivate-Printer Operation.................... 13
3.4.2. Activate-Printer Operation...................... 13
3.5. Restart-Printer, Shutdown-Printer,
and Startup-Printer Operations.......................... 14
3.5.1. Restart-Printer Operation....................... 14
3.5.2. Shutdown-Printer Operation...................... 14
3.5.3. Startup-Printer Operation....................... 15
4. Definition of the Job Operations.............................. 16
4.1. Reprocess-Job Operation................................. 17
4.2. Cancel-Current-Job Operation............................ 17
4.3. Suspend and Resume Job Operations....................... 18
4.3.1. Suspend-Current-Job Operation................... 19
4.3.2. Resume-Job Operation............................ 20
4.4. Job Scheduling Operations............................... 20
4.4.1. Promote-Job Operation........................... 20
4.4.2. Schedule-Job-After Operation.................... 21
5. Additional Status Codes....................................... 23
5.1. ’server-error-printer-is-deactivated’ (0x050A).......... 23
6. Use of Operation Attributes
That Are Messages from the Operator........................... 23
7. New Printer Description Attributes............................ 26
7.1. subordinate-printers-supported (1setOf uri)............. 26
7.2. parent-printers-supported (1setOf uri).................. 26
8. Additional Values for
the "printer-state-reasons" Printer Description Attribute..... 26
8.1. ’hold-new-jobs’ Value................................... 27
8.2. ’deactivated’ Value..................................... 27
9. Additional Values for
the "job-state-reasons" Job Description attribute............. 27
9.1. ’job-suspended’ Value................................... 27
10. Use of the Printer Object to Represent
IPP Printer Fan-Out and IPP Printer Fan-In.................... 27
10.1. IPP Printer Fan-Out..................................... 28
10.2. IPP Printer Fan-In...................................... 28
10.3. Printer Object Attributes Used
to Represent Printer Fan-Out and Printer Fan-In......... 29
10.4. Subordinate Printer URI................................. 29
10.5. Printer Object Attributes Used
to Represent Output Device Fan-Out...................... 30
10.6. Figures to Show All Possible Configurations............. 30
10.7. Forwarding Requests..................................... 33
10.7.1. Forwarding Requests
that Affect Printer Objects..................... 33
10.7.2. Forwarding Requests that Affect Jobs............ 35
10.8. Additional Attributes to Help with Fan-Out.............. 37
10.8.1. output-device-assigned (name(127))
Job Description Attribute - from [RFC2911]...... 37
10.8.2. original-requesting-user-name (name(MAX))
Operation and Job Description Attribute......... 37
10.8.3. requesting-user-name (name(MAX))
Operation Attribute - Additional Semantics...... 38
10.8.4. job-originating-user-name (name(MAX))
Job Description Attribute -
Additional Semantics............................ 38
11. Conformance Requirements...................................... 38
12. Normative References.......................................... 39
13. Informative References........................................ 40
14. IANA Considerations........................................... 40
14.1. Attribute Registrations................................. 41
14.2. Attribute Value Registrations........................... 41
14.3. Additional Enum Attribute Value Registrations........... 41
14.4. Operation Registrations................................. 42
14.5. Status Code Registrations............................... 43
15. Internationalization Considerations........................... 43
16. Security Considerations....................................... 43
17. Summary of Base IPP Documents................................. 44
Authors’ Addresses................................................ 45
Full Copyright Statement.......................................... 46
List of Tables
Table 1. Printer Operation Operation-Id Assignments.............. 6
Table 2. Pause and Resume Printer Operations..................... 9
Table 3. State Transition Table for
Pause-Printer-After-Current-Job Operation............... 10
Table 4. Job Operation Operation-Id Assignments.................. 16
Table 5. Operation Attribute Support for Printer Operations...... 24
Table 6. Operation Attribute Support for Job Operations.......... 25
Table 7. Forwarding Operations that Affect Printer Objects....... 34
Table 8. Forwarding Operations that Affect Jobs Objects.......... 36
Table 9. Conformance Requirement Dependencies for Operations..... 38
Table 10. Conformance Requirement Dependencies
for "printer-state-reasons" Values...................... 39
Table 11. Conformance Requirement Dependencies
for "job-state-reasons" Values.......................... 39
List of Figures
Figure 1. Embedded Printer Object................................ 31
Figure 2. Hosted Printer Object.................................. 31
Figure 3. Output Device Fan-Out.................................. 31
Figure 4. Chained IPP Printer Objects............................ 32
Figure 5. IPP Printer Object Fan-Out............................. 32
Figure 6. IPP Printer Object Fan-In.............................. 33
1. Introduction
The Internet Printing Protocol (IPP) is an application level protocol
that can be used for distributed printing using Internet tools and
technologies. IPP version 1.1 ([RFC2911, RFC2910]) focuses on end-
user functionality, with a few administrative operations included.
This document defines additional OPTIONAL end user, operator, and
administrator operations used to control Jobs and Printers. In
addition, this document extends the semantic model of the Printer
object by allowing them to be configured into trees and/or inverted
trees that represent Printer object Fan-Out and Printer object Fan-
In, respectively. The special case of a tree with only a single
Subordinate node represents Chained Printers. This document is a
registration proposal for an extension to IPP/1.0 and IPP/1.1
following the registration procedures in those documents.
The requirements and use cases for this document are defined in
[RFC3239].
2. Terminology
This section defines the terminology used throughout this document.
2.1. Conformance Terminology
Capitalized terms such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD
NOT, MAY, NEED NOT, and OPTIONAL have special meaning relating to
conformance as defined in RFC 2119 [RFC2119] and [RFC2911], section
12.1. If an implementation supports the extension defined in this
document, then these terms apply; otherwise, they do not. These
terms define conformance to this document only; they do not affect
conformance to other documents, unless explicitly stated otherwise.
2.2. Other Terminology
This document uses terms such as "client", "Printer", "Job",
"attributes", "keywords", "operation", and "support". These terms
have special meaning and are defined in the model terminology
([RFC2911], section 12.2).
In addition, the following capitalized terms are defined:
IPP Printer object (or Printer for short) - A software abstraction
defined by [RFC2911].
Printer Operation - An operation whose target is an IPP Printer
object and whose effect is on the Printer object.
Output Device - The physical imaging mechanism that an IPP Printer
controls. Note: although this term is capitalized in this
specification (but not in [RFC2911]), there is no formal object
called an Output Device defined in this document (or in [RFC2911]).
Output Device Fan-Out - A configuration in which an IPP Printer
controls more than one Output Device.
Printer Fan-Out - A configuration in which an IPP Printer object
controls more than one Subordinate IPP Printer object.
Printer Fan-In - A configuration in which an IPP Printer object is
controlled by more than one IPP Printer object.
Subordinate Printer - An IPP Printer object that is controlled by
another IPP Printer object. Such a Subordinate Printer MAY have zero
or more Subordinate Printers.
Leaf Printer - An IPP Printer object that has no Subordinate
Printers.
Non-Leaf Printer - An IPP Printer object that has one or more
Subordinate Printers. A Non-Leaf Printer is also called a Parent
Printer.
Chained Printer - a Non-Leaf Printer that has exactly one Subordinate
Printer.
Job Creation operations - IPP operations that create a Job object:
Print-Job, Print-URI, and Create-Job.
3. Definition of the Printer Operations
All Printer Operations are directed at Printer objects. A client
MUST always supply the "printer-uri" operation attribute in order to
identify the correct target of the operation. These descriptions
assume all of the common semantics of the IPP/1.1 Model and Semantics
document ([RFC2911], section 3.1).
The Printer Operations defined in this document are summarized in
Table 1.
Table 1. Printer Operation Operation-Id Assignments
Operation Name Operation-Id Brief Description
--------------------------------------------------------------------
Enable-Printer 0x22 Allows the target Printer to accept
Job Creation operations.
Disable-Printer 0x23 Prevents the target Printer from
accepting Job Creation operations.
Pause-Printer- 0x24 Pauses the Printer after the current
After-Current- job has been sent to the Output
Job Device.
Hold-New-Jobs 0x25 Finishes processing all currently
pending jobs. Any new jobs are
placed in the ’pending-held’ state.
Release-Held- 0x26 Releases all jobs to the ’pending’
New-Jobs state that had been held by the
effect of a previous Hold-New-Jobs
operation and condition the Printer
so that it no longer holds new jobs.
Deactivate- 0x27 Puts the Printer into a read-only
Printer deactivated state.
Activate- 0x28 Restores the Printer to normal
Printer activity.
Restart-Printer 0x29 Restarts the target Printer and re-
initializes the software.
Shutdown- 0x2A Shuts down the target Printer so that
Printer it cannot be restarted or queried.
Startup-Printer 0x2B Starts up the instance of the Printer
object.
All of the operations in this document are OPTIONAL for an IPP object
to support. Unless the specification of an OPTIONAL operation
requires support of another OPTIONAL operation, conforming
implementations may support any combination of these operations.
Many of the operations come in pairs, so both are REQUIRED if either
one is implemented.
3.1. The Disable and Enable Printer Operations
This section defines the OPTIONAL Disable-Printer and Enable-Printer
operations that stop and start the IPP Printer object from accepting
new IPP jobs. If either of these operations are supported, both MUST
be supported.
These operations allow the operator to control whether the Printer
will accept new Job Creation (Print-Job, Print-URI, and Create-Job)
operations. These operations have no other effect on the Printer, so
the Printer continues to accept all other operations and continues to
schedule and process jobs normally. In other words, these operations
control the "input of new jobs" to the IPP Printer, and the Pause and
Resume operations (see section 3.2) independently control the "output
of new jobs" from the IPP Printer to the Output Device.
3.1.1. Disable-Printer Operation
This OPTIONAL operation allows a client to stop the Printer object
from accepting new jobs; i.e., it causes the Printer to reject
subsequent Job Creation operations and return the ’server-error-not-
accepting-jobs’ status code. The Printer still accepts all other
operations, including Validate-Job, Send-Document, and Send-URI
operations. Thus a Disable-Printer operation allows a client to
continue submitting multiple documents of a multiple document job if
the Create-Job operation had already been accepted. All previously
created or submitted Jobs and all Jobs currently processing continue
unaffected.
The IPP Printer MUST accept the request in any state. The Printer
sets the value of its "printer-is-accepting-jobs" READ-ONLY Printer
Description attribute to ’false’ (see [RFC2911], section 4.4.20), no
matter what the previous value was. This operation has no immediate
or direct effect on the Printer’s "printer-state" and "printer-
state-reasons" attributes.
Access Rights: The authenticated user (see [RFC2911], section 8.3)
performing this operation must be an operator or administrator of the
Printer object (see [RFC2911] sections 1 and 8.5).
The Disable-Printer Request and Disable-Printer Response have the
same attribute groups and attributes as do the Pause-Printer
operation (see [RFC2911], sections 3.2.7.1 and 3.2.7.2), including
the new "printer-message-from-operator" operation attribute (see
section 6).
3.1.2. Enable-Printer Operation
This OPTIONAL operation allows a client to start the Printer object
accepting jobs; i.e., it causes the Printer to accept subsequent Job
Creation operations. The Printer still accepts all other operations.
All previously submitted and currently processing Jobs continue
unaffected.
The IPP Printer MUST accept the request in any state. The Printer
sets the value of its "printer-is-accepting-jobs" READ-ONLY Printer
Description attribute to ’true’ (see [RFC2911], section 4.4.20), no
matter what the previous value was. This operation has no immediate
or direct effect on the Printer’s "printer-state" and "printer-
state-reasons" attributes.
Access Rights: The authenticated user (see [RFC2911], section 8.3)
performing this operation must be an operator or administrator of the
Printer object (see [RFC2911] sections 1 and 8.5).
The Enable-Printer Request and Enable-Printer Response have the same
attribute groups and attributes as does the Pause-Printer operation
(see [RFC2911], sections 3.2.8.1 and 3.2.8.2), including the new
"printer-message-from-operator" operation attribute (see section 6).
3.2. The Pause and Resume Printer Operations
This section leaves the OPTIONAL IPP/1.1 Pause-Printer (see
[RFC2911], sections 3.2.7) ambiguous as to whether it stops the
Printer immediately or after the current job. It also defines the
OPTIONAL Pause-Printer-After-Current-Job operation as following the
current job. These operations affect the scheduling of IPP jobs. If
either of these Pause Printer operations are supported, then the
Resume-Printer operation MUST be supported.
These operations allow the operator to control whether the Printer
will send new IPP jobs to the associated Output Device(s) that the
IPP Printer object represents. These operations have no other effect
on the Printer, so the Printer continues to accept all operations.
In other words, these operations control the "output of new jobs" to
the Output Device(s), and the Disable and Enable Printer Operations
(see section 3.1) independently control the "input of new jobs" to
the IPP Printer.
Table 2. Pause and Resume Printer Operations
Pause and Resume Printers Description
--------------------------------------------------------------------
IPP/1.1 Pause Printer Stops the IPP Printer from sending
new IPP Jobs to the Output Device(s)
either immediately or after the
current job completes, depending on
implementation, as defined in
[RFC2911].
Pause-Printer-After- Stops the IPP Printer from sending
Current-Job new IPP Jobs to the Output Device(s)
after the current jobs finish.
Resume-Printer Starts the IPP Printer sending IPP
Jobs to the Output Device again.
3.2.1. Pause-Printer-After-Current-Job Operation
This OPTIONAL operation allows a client to stop the Printer object
from sending IPP jobs to any of its Output Devices or Subordinate
Printers. If the IPP Printer is in the middle of sending an IPP job
to an Output Device or Subordinate Printer, the IPP Printer MUST
complete sending that Job. However, after receiving this operation,
the IPP Printer MUST NOT send any additional IPP jobs to any of its
Output Devices or Subordinate Printers. In addition, after having
received this operation, the IPP Printer MUST NOT start processing
any more jobs, so additional jobs MUST NOT enter the ’processing’
state.
If the IPP Printer is not sending an IPP Job to the Output Device or
Subordinate Printer (whether or not the Output Device or Subordinate
Printer is busy processing any jobs), the IPP Printer object
transitions immediately to the ’stopped’ state by setting its
"printer-state" attribute to ’stopped’, removing the ’moving-to-
paused’ value, if present, from its "printer-state-reasons"
attribute, and adding the ’paused’ value to its "printer-state-
reasons" attribute.
If the implementation will take appreciable time to complete sending
an IPP job that it has started sending to an Output Device or
Subordinate Printer, the IPP Printer adds the ’moving-to-paused’
value to the Printer object’s "printer-state-reasons" attribute (see
section [RFC2911], 4.4.12). When the IPP Printer has completed
sending IPP jobs that it was in the process of sending, the Printer
object transitions to the ’stopped’ state by setting its "printer-
state" attribute to ’stopped’, removing the ’moving-to-paused’ value,
if present, from its "printer-state-reasons" attribute, and adding
the ’paused’ value to its "printer-state-reasons" attribute.
This operation MUST NOT affect the acceptance of Job Creation
requests (see Disable-Printer Operation, section 3.1.1).
For any jobs that are ’pending’ or ’pending-held’, the ’printer-
stopped’ values of the jobs’ "job-state-reasons" attribute also
apply. However, the IPP Printer NEED NOT update those jobs’ "job-
state-reasons" attributes and only have to return the ’printer-
stopped’ value when those jobs are queried by using the Get-Job-
Attributes or Get-Jobs operations (so-called "lazy evaluation").
The IPP Printer MUST accept the request in any state and transition
the Printer to the indicated new "printer-state", and it MUST add the
indicated value to "printer-state-reasons" attribute before returning
as follows:
Table 3. State Transition Table for Pause-Printer-After-Current-Job
Operation
Current New "printer IPP Printer’s response status
"printer- "printer- -state- code and action (REQUIRED/
state" state" reasons" OPTIONAL state transition for
a Printer to support):
--------------------------------------------------------------------
’idle’ ’stopped’ ’paused’ REQUIRED: ’successful-ok’
’processing’ ’processing’ ’moving- OPTIONAL: ’successful-ok’;
to- Later, when the IPP Printer
paused’ has finished sending IPP jobs