summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc3998.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc3998.txt')
-rw-r--r--doc/rfc/rfc3998.txt2579
1 files changed, 2579 insertions, 0 deletions
diff --git a/doc/rfc/rfc3998.txt b/doc/rfc/rfc3998.txt
new file mode 100644
index 0000000..f2ba35f
--- /dev/null
+++ b/doc/rfc/rfc3998.txt
@@ -0,0 +1,2579 @@
+
+
+
+
+
+
+Network Working Group C. Kugler
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 1]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+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
+
+
+
+Kugler, et al. Standards Track [Page 2]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ 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
+
+
+
+Kugler, et al. Standards Track [Page 3]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ 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.
+
+
+
+
+Kugler, et al. Standards Track [Page 4]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+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.
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 5]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+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.
+
+
+
+
+
+Kugler, et al. Standards Track [Page 6]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ 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.
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 7]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ 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.
+
+
+
+Kugler, et al. Standards Track [Page 8]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ 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'
+
+
+
+Kugler, et al. Standards Track [Page 9]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ 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
+ to an Output Device, the
+ "printer-state" becomes
+ 'stopped', and the 'paused'
+ value replaces the 'moving-to-
+ paused' value in the "printer-
+ state-reasons" attribute
+
+ 'processing' 'stopped' 'paused' REQUIRED: 'successful-ok';
+ the IPP Printer wasn't in the
+ middle of sending an IPP job
+ to an Output Device
+
+
+
+
+Kugler, et al. Standards Track [Page 10]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ 'stopped' 'stopped' 'paused' REQUIRED: 'successful-ok'
+
+ 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 Pause-Printer-After-Current-Job Request and Pause-Printer-After-
+ Current-Job Response have the same attribute groups and attributes as
+ does 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.3. Hold and Release New Jobs Operations
+
+ This section defines operations to condition the Printer to hold any
+ new jobs and to release them.
+
+3.3.1. Hold-New-Jobs Operation
+
+ This OPTIONAL operation allows a client to condition the Printer to
+ complete the current 'pending' and 'processing' IPP Jobs but not to
+ start processing any subsequently created IPP Jobs. 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.
+ Furthermore, the IPP Printer MUST send all of the current 'pending'
+ IPP Jobs to the Output Device(s) or Subordinate IPP Printer
+ object(s). Any subsequently received Job Creation operations will
+ cause the IPP Printer to put the Job into the 'pending-held' state,
+ with the 'job-held-on-create' value being added to the job's "job-
+ state-reasons" attribute. Thus all newly accepted jobs will be
+ automatically held by the Printer.
+
+ When the Printer completes all the 'pending' and 'processing' jobs,
+ it enters the 'idle' state as usual. An operator monitoring Printer
+ state changes will know when the Printer has completed all current
+ jobs because the Printer enters the 'idle' state.
+
+ This operation MUST NOT affect the acceptance of Job Creation
+ requests (see Disable-Printer Operation, section 3.1.1), except to
+ put the Jobs into the 'pending-held' state, instead of the 'pending'
+ or 'processing' state.
+
+ The IPP Printer MUST accept the request in any state, MUST NOT
+ transition the Printer to any other "printer-state", and MUST add the
+ 'hold-new-jobs' value to the Printer's "printer-state-reasons"
+ attribute (whether the value was present or not).
+
+
+
+
+
+Kugler, et al. Standards Track [Page 11]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ 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 Hold-New-Jobs Request and Hold-New-Jobs Response have the same
+ attribute groups and attributes as does 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.3.2. Release-Held-New-Jobs Operation
+
+ This OPTIONAL operation allows a client to undo the effect of a
+ previous Hold-New-Jobs operation. In particular, the Printer
+ releases all the jobs that it held as a consequence of a Hold-New-
+ Jobs operations; i.e., while the 'hold-new-jobs' value was present in
+ the Printer's "printer-state-reasons" attribute. In addition, the
+ Printer MUST accept this request in any state, MUST NOT transition
+ the Printer to any other "printer-state", and MUST remove the 'hold-
+ new-jobs' value from its "printer-state-reasons" attribute (whether
+ the value was present or not) so that the Printer no longer holds
+ newly created jobs.
+
+ 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 Release-Held-New-Jobs Request and Release-Held-New-Jobs Response
+ have the same attribute groups and attributes as 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.4. Deactivate and Activate Printer Operations
+
+ This section defines the OPTIONAL Deactivate-Printer and Activate-
+ Printer operations that stop and start the IPP Printer object from
+ accepting all requests except queries and performing work. If either
+ of these operations are supported, both MUST be supported.
+
+ These operations allow the operator to put the Printer into a dormant
+ read-only condition and to take it out of this condition.
+
+
+
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 12]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+3.4.1. Deactivate-Printer 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 (Pause-Printer-After-Current-Job) and to stop the Printer
+ object from accepting any requests but query requests. The Printer
+ performs a Disable-Printer and a Pause-Printer-After-Current-Job
+ operation immediately. If these two operations cannot be completed
+ immediately, it includes use of all of the "printer-state-reasons".
+ In addition, the Printer MUST immediately reject all requests, except
+ for Activate-Printer, queries (Get-Printer-Attributes, Get-Job-
+ Attributes, Get-Jobs, etc.), Send-Document, and Send-URI (so that
+ partial job submission can be completed, see section 3.1.1). The
+ Printer MUST then return the 'server-error-service-unavailable'
+ status code.
+
+ The IPP Printer MUST accept the request in any state. Immediately,
+ the Printer MUST set the 'deactivated' value in its "printer-state-
+ reasons" attribute. Note: neither the Disable-Printer nor the
+ Pause-Printer-After-Current-Job set the 'deactivated' value.
+
+ 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 Deactivate-Printer Request and Deactivate-Printer Response have
+ the same attribute groups and attributes as does 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.4.2. Activate-Printer Operation
+
+ This OPTIONAL operation allows a client to undo the effects of the
+ Deactivate-Printer; i.e., it allows the Printer object to start
+ sending IPP jobs to any of its Output Devices or Subordinate Printers
+ (Pause-Printer-After-Current-Job) and starts the Printer object from
+ accepting any requests. The Printer performs an Enable-Printer and a
+ Resume-Printer operation immediately. In addition, the Printer MUST
+ immediately start accepting all requests.
+
+ The IPP Printer MUST accept the request in any state. The Printer
+ MUST immediately remove the 'deactivated' value from its "printer-
+ state-reasons" attribute (whether it is present or not).
+
+ 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).
+
+
+
+Kugler, et al. Standards Track [Page 13]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ The Activate-Printer Request and Activate-Printer Response have the
+ same attribute groups and attributes as 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.5. Restart-Printer, Shutdown-Printer, and Startup-Printer Operations
+
+ This section defines the OPTIONAL Restart-Printer, Shutdown-Printer,
+ and Startup-Printer operations that initialize, shutdown, and start
+ up the Printer object, respectively. Each of these operations is
+ OPTIONAL, and any combination MAY be supported.
+
+3.5.1. Restart-Printer Operation
+
+ This OPTIONAL operation allows a client to restart a Printer object
+ whose operation is in need of initialization because of incorrect or
+ erratic behavior; i.e., perform the effect of a software re-boot.
+ The implementation MUST attempt to save any information about Jobs
+ and the Printer object before re-initializing. However, this
+ operation MAY have drastic consequences on the running system, so the
+ client SHOULD first try the Deactivate-Printer operation to minimize
+ the effect on the current state of the system. The effects of
+ previous Disable-Printer, Pause Printer, and Deactivate-Printer
+ operations are lost.
+
+ The IPP Printer MUST accept the request in any state. The Printer
+ object MUST initialize its Printer's "printer-state" to 'idle',
+ remove the state reasons from its "printer-state-reasons" attribute,
+ and change its "printer-is-accepting-jobs" attribute to 'true'.
+
+ 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 Restart-Printer Request and Restart-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.5.2. Shutdown-Printer Operation
+
+ This OPTIONAL operation allows a client to shutdown a Printer; i.e.,
+ to stop processing jobs without losing any jobs and to make the
+ Printer object unavailable for any operations using the IPP protocol.
+ There is no way to bring the instance of the Printer object back to
+ being used, except for the Startup-Printer (see section 3.5.3), which
+ starts up a new instance of the Printer object for hosted
+
+
+
+Kugler, et al. Standards Track [Page 14]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ implementations. The purpose of Shutdown-Printer is to shutdown the
+ Printer for an extended period, not to reset the device(s) or modify
+ a Printer attribute. See Restart-Printer (section 3.5.1) and
+ Startup-Printer (section 3.5.3) for the way to initialize the
+ software. See the Disable-Printer operation (section 3.1) for a way
+ for the client to stop the Printer from accepting Job Creation
+ requests without stopping processing or shutting down.
+
+ The Printer MUST add the 'shutdown' value (see [RFC2911], section
+ 4.4.11) immediately to its "printer-state-reasons" Printer
+ Description attribute. It then performs a Deactivate-Printer
+ operation (see section 3.4.1), which in turn performs Disable-Printer
+ and Pause-Printer-After-Current-Job operations).
+
+ Note: To shutdown the Printer after all the currently submitted jobs
+ have completed, the operator issues a Disable-Printer operation (see
+ section 3.1.1) and then waits until all the jobs have completed. The
+ Printer goes into the 'idle' state before issuing the Shutdown-
+ Printer operation.
+
+ The Printer object MUST accept this operation in any state and
+ transition the Printer object through the "printer-states" and
+ "printer-state-reasons" defined for the Pause-Printer-After-Current-
+ Job operation until the activity is completed and the Printer object
+ disappears.
+
+ 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 Shutdown-Printer Request and Shutdown-Printer Response have the
+ same attribute groups and attributes as does 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.5.3. Startup-Printer operation
+
+ This OPTIONAL operation allows a client to start up an instance of a
+ Printer object, provided that there isn't one already initiated. The
+ purpose of Startup-Printer is to allow a hosted implementation of the
+ IPP Printer object (i.e., a Server that implements an IPP Printer on
+ behalf of a networked or local Output Device) to be started after the
+ host is available (by means outside this document). See section
+ 3.5.1 for the way to initialize the software or reset the Output
+ Device(s) when the IPP Printer object has already been initiated.
+
+
+
+
+
+Kugler, et al. Standards Track [Page 15]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ The host MUST accept this operation only when the Printer object has
+ not been initiated. If the Printer object already exists, the host
+ must return the 'client-error-not-possible' status code.
+
+ The result of this operation MUST be with the Printer object's
+ "printer-state" set to 'idle', the state reasons removed from its
+ "printer-state-reasons" attribute, and its "printer-is-accepting-
+ jobs" attribute set to 'false'. Then the operator can reconfigure
+ the Printer before performing an Enable-Printer operation. However,
+ when a Printer is first powered up, it is RECOMMENDED that its
+ "printer-is-accepting-jobs" attribute be set to 'true' in order to
+ achieve easy "out of the box" operation.
+
+ 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 Shutdown-Printer Request and Shutdown-Printer Response have the
+ same attribute groups and attributes as does 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).
+
+4. Definition of the Job Operations
+
+ All Job operations are directed at Job objects. A client MUST always
+ supply some means to identify the Job object in order to select the
+ correct target of the operation. That job identification MAY either
+ be a single Job URI or a combination of a Printer URI and a Job ID.
+ The IPP object implementation MUST support both forms of
+ identification for every job.
+
+ The Job Operations defined in this document are summarized in Table
+ 4.
+
+ Table 4. Job Operation Operation-Id Assignments
+
+ Operation Name Operation-Id Brief description
+ --------------------------------------------------------------------
+ Reprocess-Job 0x2C Creates a copy of a completed target
+ job with a new Job ID and processes it.
+
+ Cancel-Current- 0x2D Cancels the current job on the target
+ Job Printer or the specified job if it is
+ the current job.
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 16]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ Suspend- 0x2E Suspends the current processing job on
+ Current-Job the target Printer or the specified
+ job if it is the current job, allowing
+ other jobs to be processed instead.
+
+ Resume-Job 0x2F Resumes the suspended target job.
+
+ Promote-Job 0x30 Promotes the pending target job to be
+ next after the current job(s) complete.
+
+ Schedule-Job- 0x31 Schedules the target job immediately
+ After after the specified job, all other
+ scheduling factors being equal.
+
+4.1. Reprocess-Job Operation
+
+ This OPTIONAL operation is a create job operation that allows a
+ client to re-process a copy of a job that had been retained in the
+ queue after processing was completed, canceled, or aborted (see
+ [RFC2911], section 4.3.7.2). This operation is the same as the
+ Restart-Job operation (see [RFC2911], section 3.3.7), except that the
+ Printer creates a new job that is a copy of the target job and the
+ target job is unchanged. New values are assigned to the "job-uri"
+ and "job-id" attributes. The new job's Job Description attributes
+ that track job progress, such as "job-impressions-completed", "job-
+ media-sheets-completed", and "job-k-octets-processed", are
+ initialized to 0, as with any create job operation. The target job
+ moves to the Job History after a suitable period, independent of
+ whether one or more Reprocess-Job operations have been performed upon
+ it.
+
+ If the Set-Job-Attributes operation is supported, then the "job-
+ hold-until" operation attribute MUST be supported with at least the
+ 'indefinite' value, so that a client can modify the new job before it
+ is scheduled for processing by using the Set-Job-Attributes
+ operation. After modifying the job, the client can release the job
+ for processing by using the Release-Job operation specifying the
+ newly assigned "job-uri" or "job-id" for the new job.
+
+4.2. Cancel-Current-Job Operation
+
+ This OPTIONAL operation allows a client to cancel the current job on
+ the target Printer or the specified job if it is the current job on
+ the Printer. See [RFC2911], section 3.3.3, for the semantics of
+ canceling a job. Since a Job might already be marking by the time a
+ Cancel-Current-Job is received, some media sheet pages might print
+ before the job is actually terminated.
+
+
+
+
+Kugler, et al. Standards Track [Page 17]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ If the client does not supply a "job-id" operation attribute, the
+ Printer MUST accept the request and cancel the current job if there
+ is a current job in the 'processing' or 'processing-stopped' state;
+ otherwise, it MUST reject the request and return the 'client-error-
+ not-possible' status code. If more than one job is in the
+ 'processing' or 'processing-stopped' state, the one that is marking
+ is canceled, and the others are unaffected.
+
+ Warning: On a shared printer, there is a race condition. Between
+ the time when a user issues this operation and the time of its
+ acceptance, the current job might change to a different job. If the
+ user or operator is authenticated to cancel the new job, the wrong
+ job is canceled. To prevent this race from canceling the wrong job,
+ the client MAY supply the "job-id" operation attribute, which is
+ checked against the current job's job-id. If the job identified by
+ the "job-id" attribute is not the current job on the Printer (i.e.,
+ is not in the 'processing' or 'processing-stopped' state), the
+ Printer MUST reject this operation and return the 'client-error-not-
+ possible' status code. Otherwise, the Printer cancels the specified
+ job.
+
+ Access Rights: The authenticated user (see [RFC2911], section 8.3)
+ performing this operation must either be the job owner (as determined
+ in the Job Creation operation) or an operator or administrator of the
+ Printer object (see [RFC2911], sections 1 and 8.5).
+
+ The Cancel-Current-Job Request and Cancel-Current-Job Response have
+ the same attribute groups and attributes as does the Resume-Printer
+ operation (see [RFC2911], section 3.2.8), including the new "job-
+ message-from-operator" operation attribute (see section 6), with the
+ addition of the following Group 1 Operation attribute in the request:
+
+ "job-id" (integer(1:MAX)):
+ The client OPTIONALLY supplies this Operation attribute to verify
+ that the identified job is still the current job on the target
+ Printer object. The IPP object MUST support this operation
+ attribute if it supports this operation.
+
+4.3. Suspend and Resume Job Operations
+
+ This section defines the Suspend-Current-Job and Resume-Job
+ operations. These operations allow an operator or user to suspend a
+ job while it is processing, allowing other jobs to be processed, and
+ to resume the suspended job at a later point without losing any of
+ the output.
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 18]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ If either of these operations is supported, both MUST be supported.
+
+ The Hold-Job and Release-Job operations ([RFC2911], section 3.3.5)
+ are for holding and releasing held jobs, not suspending and resuming
+ suspended jobs.
+
+4.3.1. Suspend-Current-Job Operation
+
+ This OPTIONAL operation allows a client to stop the current job on
+ the target Printer or the specified job if it is the current job on
+ the Printer, to allow other jobs to be processed instead. The
+ Printer moves the current job or the target job to the 'processing-
+ stopped' state and sets the 'job-suspended' value (see section 9.1)
+ in the job's "job-state-reasons" attribute and processes other jobs.
+
+ If the client does not supply a "job-id" operation attribute, the
+ Printer MUST accept the request and suspend the current job if there
+ is a current job in the 'processing' or 'processing-stopped' state.
+ Otherwise, it MUST reject the request and return the 'client-error-
+ not-possible' status code. If more than one job is in the
+ 'processing' or 'processing-stopped' state, all of them are
+ suspended.
+
+ Warning: On a shared printer, there is a race condition. Between
+ the time when a user issues this operation and the time of its
+ acceptance, the current job might change to a different job. If the
+ user or operator is authenticated to suspend the new job, the wrong
+ job is suspended. To prevent this race from pausing the wrong job,
+ the client MAY supply the "job-id" operation attribute, which is
+ checked against the current job's job-id. If the job identified by
+ the "job-id" attribute is not the current job on the Printer (i.e.,
+ is not in the 'processing' or 'processing-stopped' state), the
+ Printer MUST reject this operation and return the 'client-error-not-
+ possible' status code. Otherwise, the Printer suspends the specified
+ job and processed other jobs.
+
+ The Printer MUST reject a Suspend-Current-Job request (and return the
+ 'client-error-not-possible') for a job that has been suspended, i.e.,
+ for a job in the 'processing-stopped' state, with the 'job-suspended'
+ value in its "job-state-reasons" attribute.
+
+ Access Rights: The authenticated user (see [RFC2911], section 8.3)
+ performing this operation must be either the job owner (as determined
+ in the Job Creation operation) or an operator or administrator of the
+ Printer object (see [RFC2911], sections 1 and 8.5).
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 19]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ The Suspend-Current-Job Request and Suspend-Current-Job Response have
+ the same attribute groups and attributes as does the Pause-Printer
+ operation (see [RFC2911], section 3.2.8 ), including the new "job-
+ message-from-operator" operation attribute (see section 6), with the
+ addition of the following Group 1 Operation attribute in the request:
+
+ "job-id" (integer(1:MAX)):
+ The client OPTIONALLY supplies this Operation attribute to verify
+ that the identified job is still the current job on the target
+ Printer object. The IPP object MUST support this operation
+ attribute if it supports this operation.
+
+4.3.2. Resume-Job Operation
+
+ This OPTIONAL operation allows a client to resume the target job at
+ the point where it was suspended. The Printer moves the target job
+ to the 'pending' state and removes the 'job-suspended' value from the
+ job's "job-state-reasons" attribute.
+
+ If the target job is not in the 'processing-stopped' state, with the
+ 'job-suspended' value in the job's "job-state-reasons" attribute, the
+ Printer MUST reject the request and return the 'client-error-not-
+ possible' status code, since the job was not suspended.
+
+ Access Rights: The authenticated user (see [RFC2911], section 8.3)
+ performing this operation must be either the job owner (as determined
+ in the Job Creation operation) or an operator or administrator of the
+ Printer object (see [RFC2911], sections 1 and 8.5).
+
+ The Resume-Job Request and Resume-Job Response have the same
+ attribute groups and attributes as the Release-Job operation (see
+ [RFC2911], section 3.3.6), including the new "job-message-from-
+ operator" operation attribute (see section 6).
+
+4.4. Job Scheduling Operations
+
+ This section defines jobs that allow an operator to control the
+ scheduling of jobs.
+
+4.4.1. Promote-Job Operation
+
+ This OPTIONAL operation allows a client to make the pending target
+ job be processed next after the current job completes. This
+ operation is especially useful in a production printing environment
+ where the operator is involved in job scheduling.
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 20]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ If the target job is in the 'pending' state, this operation does not
+ change the job's state but causes the job to be processed after the
+ current job(s) complete. If the target job is not in the 'pending'
+ state, the Printer MUST reject the request and return the 'client-
+ error-not-possible' status code.
+
+ If the Printer implements the "job-priority" Job Template attribute
+ (see [RFC2911], section 4.2.1), the Printer sets the job's "job-
+ priority" to the highest value supported (so that the job will print
+ before any of the other pending jobs). The Printer returns the
+ target job immediately after the current job(s) in a Get-Jobs
+ response (see [RFC2911], section 3.2.6) for the 'not-completed' jobs.
+
+ When the current job is completed, canceled, suspended (see section
+ 4.3.1), or aborted, the target of this operation is processed next.
+
+ If a client issues this request (again) before the target of the
+ operation of the original request started processing, the target of
+ this new request is processed first.
+
+ IPP is specified not to require queues for job scheduling, as there
+ are other implementation techniques for scheduling multiple jobs,
+ such as re-evaluating a criteria function for each job on a
+ scheduling cycle. However, if an implementation does implement
+ queues for jobs, then the Promote-Job operation puts the specified
+ job at the front of the queue. A subsequent Promote-Job operation
+ prior to the processing of the first job puts that specified job at
+ the front of the queue, so that it is "in front" of the previously
+ promoted job.
+
+ 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 Promote-Job Request and Promote-Job Response have the same
+ attribute groups and attributes as does the Cancel-Job operation (see
+ [RFC2911], section 3.3.3), including the new "job-message-from-
+ operator" operation attribute (see section 6).
+
+4.4.2. Schedule-Job-After Operation
+
+ This OPTIONAL operation allows a client to request that the Printer
+ schedule the target job so that it will be processed immediately
+ after the specified predecessor job, all other scheduling factors
+ being equal. This operation is specially useful in a production
+ printing environment where the operator is involved in job
+ scheduling.
+
+
+
+
+Kugler, et al. Standards Track [Page 21]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ If the target job is in the 'pending' state, this operation does not
+ change the job's state but causes the job to be processed after the
+ preceding job completes. The preceding job can be in the target
+ 'pending', 'processing', or 'processing-stopped' state. If the
+ target job is not in the 'pending' state, or if the predecessor job
+ is not in the 'pending', 'processing', or 'processing-stopped' state,
+ the Printer MUST reject the request, and it returns the 'client-
+ error-not-possible' status code, as the job cannot have its position
+ changed.
+
+ If the Printer implements the "job-priority" Job Template attribute
+ (see [RFC2911], section 4.2.1), the Printer sets the job's "job-
+ priority" to that of the predecessor job (so that the job will print
+ after the predecessor job). The Printer returns the target job
+ immediately after the predecessor in a Get-Jobs response (see
+ [RFC2911], section 3.2.6) for the 'not-completed' jobs.
+
+ When the predecessor job completes processing or is canceled or
+ aborted while processing, the target of this operation is processed
+ next.
+
+ If the client does not supply a predecessor job, this operation has
+ the same semantics as Promote-Job (see section 4.4).
+
+ IPP is specified not to require queues for job scheduling, as there
+ are other implementation techniques for scheduling multiple jobs,
+ such as re-evaluating a criteria function for each job on a
+ scheduling cycle. However, if an implementation does implement
+ queues for jobs, then the Schedule-Job-After operation puts the
+ specified job immediately after the specified job in the queue. A
+ subsequent Schedule-Job-After operation specifying the same job will
+ cause its target job to be placed after that job, even though it is
+ between the first target job and the specified job. For example,
+ suppose the job queue consisted of jobs A, B, C, D, and E, in that
+ order. A Schedule-Job-After with job E as the target and B as the
+ specified job would result in the following queue: A, B, E, C, D. A
+ subsequent Schedule-Job-After with Job D as the target and B as the
+ specified job would result in the following queue: A, B, D, E, C.
+
+ In other words, the link between the two jobs in a Schedule-Job-After
+ operation is not retained; i.e., there is no attribute on either job
+ that points to the other job as a result of this operation.
+
+ 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).
+
+
+
+
+
+Kugler, et al. Standards Track [Page 22]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ The Schedule-Job-After Request have the same attribute groups and
+ attributes as does the Cancel-Job operation (see [RFC2911], section
+ 3.3.3), plus the new "job-message-from-operator" operation attribute
+ (see section 6). In addition, the following operation attribute is
+ defined:
+
+ "predecessor-job-id":
+ The client OPTIONALLY supplies this attribute. The Printer MUST
+ support it, if it supports this operation. This attribute
+ specifies the job after which the target job is to be processed.
+ If the client omits this attribute, the Printer MUST process the
+ target job next, i.e., after the current job, if there is one.
+
+ The Schedule-Job-After Response has the same attribute groups,
+ attributes, and status codes as does the Cancel-Job operation (see
+ [RFC2911], section 3.3.3). The following status codes have
+ particular meaning for this operation:
+
+ 'client-error-not-possible' - The target job was not in the 'pending'
+ state, or the predecessor job was not in the 'pending', 'processing',
+ or 'processing-stopped' state.
+
+ 'client-error-not-found' - Either the target job or the predecessor
+ job was not found.
+
+5. Additional Status Codes
+
+ This section defines new status codes used by the operations defined
+ in this document.
+
+5.1. 'server-error-printer-is-deactivated' (0x050A)
+
+ The Printer has been deactivated by the Deactivate-Printer operation
+ and is only accepting the Activate-Printer (see section 3.5.1), Get-
+ Job-Attributes, Get-Jobs, Get-Printer-Attributes, and any other Get-
+ Xxxx operations. An operator can perform the Activate-Printer
+ operation to allow the Printer to accept other operations.
+
+6. Use of Operation Attributes That Are Messages from the Operator
+
+ This section summarizes the usage of the "printer-message-from-
+ operator" and "job-message-from-operator" operation attributes
+ [RFC3380] that set the corresponding Printer and Job Description
+ attributes (see [RFC2911] for the definition of these). These
+ operation attributes are defined for most of the Printer and Job
+ operations that operators are likely to perform, respectively, so
+ that operators can indicate the reasons for their actions.
+
+
+
+
+Kugler, et al. Standards Track [Page 23]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ Table 5 shows the operation attributes defined for use with the
+ Printer Operations.
+
+ Table 5. Operation Attribute Support for Printer Operations
+
+ Operation Attribute A B
+ ---------------------------------------------
+ attributes-charset REQ REQ
+ attributes-natural-language REQ REQ
+ printer-uri REQ REQ
+ requesting-user-name REQ REQ
+ printer-message-from-operator Note OPT
+
+ Legend:
+ A: Get-Printer-Attributes, Set-Printer-Attributes
+ B: All other Printer administrative operations, including, but
+ not limited to, Pause-Printer, Pause-Printer-After-Current-
+ Job, Resume-Printer, Hold-New-Jobs, Release-Held-New-Jobs,
+ Purge-Jobs, Enable-Print, Disable-Printer, Restart-
+ Printer, Shutdown-Printer, and Startup-Printer.
+ REQ: REQUIRED for a Printer to support.
+ OPT: OPTIONAL for a Printer to support; the Printer ignores the
+ attribute if it is not supported.
+ Note: According to [RFC3380], the Client MUST NOT supply the
+ "printer-message-from-operator" operation attribute in a
+ Get-Printer-Attributes or Set-Printer-Attributes operation;
+ the Printer MUST ignore this operation attribute in these
+ two operations. Instead, when it is used by an
+ operator, the client MUST supply the
+ "printer-message-from-operator" as (one of the) explicit
+ attributes being set on the Printer object with the
+ Set-Printer-Attributes operation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 24]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ Table 6 shows the operation attributes defined for use with the Job
+ operations.
+
+ Table 6. Operation Attribute Support for Job Operations
+
+ Operation Attribute A B C F
+ ---------------------------------------------------------
+ attributes-charset REQ REQ REQ REQ
+ attributes-natural-language REQ REQ REQ REQ
+ printer-uri REQ REQ REQ REQ
+ job-uri REQ REQ REQ
+ job-id REQ REQ REQ REQ
+ requesting-user-name REQ REQ REQ REQ
+ job-message-from-operator OPT OPT OPT Note
+ message** OPT OPT OPT n/a
+ job-hold-until n/a n/a OPT* n/a
+
+ Legend:
+ A: Cancel-Job, Resume-Job, Restart-Job, Promote-Job, Schedule-Job-
+ After
+ B: Cancel-Current-Job, Suspend-Current-Job
+ C: Hold-Job, Release-Job, Reprocess-Job
+ F: Get-Job-Attributes, Set-Job-Attributes
+
+ REQ; REQUIRED for a Printer to support.
+ OPT: OPTIONAL for a Printer to support; the Printer ignores the
+ attribute if it is supplied, but not supported.
+ n/a: not applicable for use with the operation; the Printer ignores
+ the attribute.
+ Note: According to [RFC3380], the Client MUST NOT supply the "job-
+ message-from-operator" operation attribute in a Get-Job-
+ Attributes or Set-Job-Attributes operation; the Printer MUST
+ ignore this operation attribute in these two operations.
+ Instead, when used by an operator, the client MUST supply the
+ "job-message-from-operator" as (one of the) explicit attributes
+ being set on the Job object with the Set-Job-Attributes
+ operation.
+ *: The Printer MUST support the "job-hold-until" operation
+ attribute if it supports the "job-hold-until" Job Template
+ attribute. For the Reprocess-Job operation, the client can
+ hold the job and then modify the job before releasing it to
+ be processed.
+ **: In [RFC2911], the "message" operation attribute is defined to
+ contain a message to the operator, but [RFC2911] does not
+ define a Job Description attribute to store the message.
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 25]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+7. New Printer Description Attributes
+
+ The following new Printer Description attributes are needed to
+ support the new operations defined in this document and the concepts
+ of Printer Fan-Out (see section 10).
+
+7.1. subordinate-printers-supported (1setOf uri)
+
+ This Printer attribute is REQUIRED if an implementation supports
+ Subordinate Printers (see section 10) and contains the URIs of the
+ immediate Subordinate Printer object(s) associated with this Printer
+ object. Each Non-Leaf Printer object MUST support this Printer
+ Description attribute. A Leaf Printer object either does not support
+ the "subordinate-printers-supported" attribute or does so with the
+ 'no-value' out-of-band value (see [RFC2911], section 4.1), depending
+ on the implementation.
+
+ The precise format of the Subordinate Printer URIs is implementation
+ dependent (see section 10.4).
+
+ If the Printer object does not have an associated Output Device, the
+ Printer MAY automatically copy the value of the Subordinate Printer
+ object's "printer-name" attribute to the Job object's "output-
+ device-assigned" attribute (see [RFC2911], section 4.3.13). The
+ "output-device-assigned" Job attribute identifies the Output Device
+ to which the Printer object has assigned a job; for example, when a
+ single Printer object is supporting Device Fan-Out or Printer Fan-
+ Out.
+
+7.2. parent-printers-supported (1setOf uri)
+
+ This Printer attribute is REQUIRED if an implementation supports
+ Subordinate Printers (see section 10) and contains the URI of the
+ Non-Leaf printer object(s) for which this Printer object is the
+ immediate Subordinate; i.e., this Printer's immediate "parent" or
+ "parents". Each Subordinate Printer object MUST support this Printer
+ Description attribute. A Printer that has no parents either does not
+ support the "parent-printers-supported" attribute or does so with the
+ 'no-value' out-of-band value (see [RFC2911], section 4.1), depending
+ on the implementation.
+
+8. Additional Values for the "printer-state-reasons" Printer
+ Description Attribute
+
+ This section defines additional values for the "printer-state-
+ reasons" Printer Description attribute.
+
+
+
+
+
+Kugler, et al. Standards Track [Page 26]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+8.1. 'hold-new-jobs' Value
+
+ 'hold-new-jobs': The operator has issued the Hold-New-Jobs operation
+ (see section 3.3.1) or other means, but the output-device(s) are
+ taking an appreciable time to stop. Later, when all output has
+ stopped, the "printer-state" becomes 'stopped', and the 'paused'
+ value replaces the 'moving-to-paused' value in the "printer-
+ state-reasons" attribute. This value MUST be supported if the
+ Hold-New-Jobs operation is supported and the implementation takes
+ significant time to pause a device in certain circumstances.
+
+8.2. 'deactivated' Value
+
+ 'deactivated': A client has issued a Deactivate-Printer operation
+ for the Printer object (see section 3.4.1), and the Printer is in
+ the process of becoming deactivated or has become deactivated.
+ The Printer MUST reject all requests except for Activate-Printer,
+ queries (Get-Printer-Attributes, Get-Job-Attributes, Get-Jobs,
+ etc.), Send-Document, and Send-URI (so that partial job submission
+ can be completed; see section 3.1.1), and then return the
+ 'server-error-service-unavailable' status code.
+
+9. Additional Values for the "job-state-reasons" Job Description
+ Attribute
+
+ This section defines additional values for the "job-state-reasons"
+ Job Description attribute.
+
+9.1. 'job-suspended' Value
+
+ 'job-suspended': While job processing has been suspended by the
+ Suspend-Current-Job operation, other jobs can be processed on the
+ Printer. The Job can be resumed with the Resume-Job operation,
+ which removes this value.
+
+10. Use of the Printer Object to Represent IPP Printer Fan-Out and IPP
+ Printer Fan-In
+
+ This section defines how the Printer object MAY be used to represent
+ IPP Printer Fan-Out and IPP Printer Fan-In. In Fan-Out, an IPP
+ Printer is used to represent other IPP Printer objects. In Fan-In,
+ several IPP Printer objects are used to represent another IPP Printer
+ object.
+
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 27]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+10.1. IPP Printer Fan-Out
+
+ The IPP/1.1 Model and Semantics introduces the semantic concept of an
+ IPP Printer object that represents more than one Output Device (see
+ [RFC2911], section 2.1). This concept is called "Output Device Fan-
+ Out". However, with Fan-Out there was no way to represent the
+ individual states of the Output Devices or to perform operations on a
+ specific Output Device. This document generalizes the semantics of
+ the Printer object to represent Subordinate Fan-Out Output Devices
+ such as IPP Printer objects. This concept is called "Printer object
+ Fan-Out". A Printer object that has a Subordinate Printer object is
+ called a Non-Leaf Printer object. Thus, a Non-Leaf Printer object
+ supports one or more Subordinate Printer objects in order to
+ represent Printer object Fan-Out. A Printer object that does not
+ have any Subordinate Printer objects is called a Leaf Printer object.
+
+ Each Non-Leaf Printer object submits jobs to its immediate
+ Subordinate Printers and otherwise controls the Subordinate Printers
+ by using IPP or other protocols. Whether pending jobs are kept in
+ the Non-Leaf Printer until a Subordinate Printer can accept them or
+ are kept in the Subordinate Printers depends on implementation and/or
+ configuration policy. Furthermore, a Subordinate Printer object MAY,
+ in turn, have Subordinate Printer objects. Thus a Printer object can
+ be both a Non-Leaf Printer and a Subordinate Printer.
+
+ A Subordinate Printer object MUST be a conforming Printer object, so
+ it MUST support all of the REQUIRED [RFC2911] operations and
+ attributes. However, with access control, the Subordinate Printer
+ MAY be configured so that end-user clients are not permitted to
+ perform any operations (or just Get-Printer-Attributes) while one or
+ more Non-Leaf Printer object(s) are permitted to perform any
+ operation.
+
+10.2. IPP Printer Fan-In
+
+ The IPP/1.1 Model and Semantics did not preclude the semantic concept
+ of multiple IPP Printer objects that represent a single Output Device
+ (see [RFC2911], section 2.1). However, there was no way for the
+ client to determine whether there was a Fan-In configuration; nor was
+ there a way to perform operations on the Subordinate device. This
+ specification generalizes the semantics of the Printer object to
+ allow several Non-Leaf IPP Printer objects to represent a single
+ Subordinate Printer object. Thus a Non-Leaf Printer object MAY share
+ a Subordinate Printer object with one or more other Non-Leaf Printer
+ objects in order to represent IPP Printer Fan-In.
+
+ As with Fan-Out (see section 10.1), when a Printer object is a Non-
+ Leaf Printer, it MUST NOT have an associated Output Device. As with
+
+
+
+Kugler, et al. Standards Track [Page 28]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ Fan-Out, a Leaf Printer object has one or more associated Output
+ Devices. As with Fan-Out, the Non-Leaf Printer objects submit jobs
+ to their Subordinate Printer objects and otherwise control the
+ Subordinate Printer. As with Fan-Out, whether pending jobs are kept
+ in the Non-Leaf Printers until the Subordinate Printer can accept
+ them or are kept in the Subordinate Printer depends on the
+ implementation and/or configuration policy.
+
+10.3. Printer Object Attributes Used to Represent Printer Fan-Out and
+ Printer Fan-In
+
+ The following Printer Description attributes are defined to represent
+ the relationship between Printer object(s) and their Subordinate
+ Printer object(s):
+
+ 1. "subordinate-printers-supported" (1setOf uri) - Contains the
+ URI of the immediate Subordinate Printer object(s).
+
+ 2. "parent-printers-supported (1setOf uri) - Contains the URI of
+ the Non-Leaf printer object(s) for which this Printer object is
+ the immediate Subordinate; i.e., this Printer's immediate
+ "parent" or "parents".
+
+10.4. Subordinate Printer URI
+
+ Each Subordinate Printer object has a URI used as the target of each
+ operation on the Subordinate Printer. The means to configure URIs
+ for Subordinate Printer objects is implementation-dependent, as are
+ all URIs. However, there are two distinct approaches:
+
+ a. When the implementation seeks to make sure that no operation on
+ a Subordinate Printer object "sneaks by" the parent Printer
+ object (or that no Subordinate Printer is fronting for a device
+ that is not networked), the host part of the URI specifies the
+ host of the parent Printer. Then the parent Printer object can
+ easily reflect the state of the Subordinate Printer objects in
+ the parent's Printer object state and state reasons as the
+ operation passes "through" the parent Printer object.
+
+ b. When the Subordinate Printer is networked and the
+ implementation allows operations to go directly to the
+ Subordinate Printer (with proper access control) without
+ knowledge of the parent Printer object, the host part of the
+ URI is different from the host part of the parent Printer
+ object. In this a case, the parent Printer object MAY keep its
+ "printer-state" and "printer-state-reasons" up to date, either
+ by polling the Subordinate Printer object or by subscribing to
+ events with the Subordinate Printer object (see [RFC3995] for
+
+
+
+Kugler, et al. Standards Track [Page 29]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ means to subscribe to event notification when the Subordinate
+ Printer object supports IPP notification). Alternatively, the
+ parent Printer MAY wait until its "printer-state" and
+ "printer-state-reasons" attributes are queried and then query
+ all its Subordinate Printers in order to return the correct
+ values.
+
+10.5. Printer Object Attributes Used to Represent Output Device Fan-Out
+
+ Only Leaf IPP Printer objects are allowed to have one or more
+ associated Output Devices. Each Leaf Printer object MAY support the
+ "output-devices-supported" (1setOf name(127)) to indicate the user-
+ friendly name(s) of the Output Device(s) that the Leaf Printer object
+ represents. It is RECOMMENDED that each Leaf Printer object have
+ only one associated Output Device, so that the individual Output
+ Devices can be represented completely and controlled completely by
+ clients. In other words, the Leaf Printer's "output-devices-
+ supported" attribute SHOULD have only one value.
+
+ Non-Leaf Printer MUST NOT have associated Output Devices. However, a
+ Non-Leaf Printer SHOULD support an "output-devices-supported" (1setOf
+ name(127)) Printer Description attribute that contains all the values
+ of its immediate Subordinate Printers. As these Subordinate Printers
+ MAY be Leaf or Non-Leaf, the same rules apply to them. Thus any
+ Non-Leaf Printer SHOULD have an "output-devices-supported" (1setOf
+ name(127)) attribute that contains all the values of the Output
+ Devices associated with Leaf Printers of its complete sub-tree.
+
+ When a configuration of Printers and Output Devices is added, moved,
+ or changed, there can be moments when the tree structure is not
+ consistent; i.e., times when a Non-Leaf Printer's "subordinate-
+ printers-supported" does not agree with the Subordinate Printer's
+ "parent-printers-supported". Therefore, the operator SHOULD first
+ Deactivate all Printers being configured in this way, update all
+ pointer attributes, and then reactivate them. A useful client tool
+ would validate a tree structure before Activating the Printers
+ involved.
+
+10.6. Figures to Show All Possible Configurations
+
+ Figures 1, 2, and 3 are taken from [RFC2911] to show the
+ configurations possible with IPP/1.0 and IPP/1.1 where all Printer
+ objects are Leaf Printer objects. The remaining figures show
+ additional configurations using Non-Leaf and Leaf Printer objects.
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 30]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ Legend:
+
+ ----> indicates a network protocol with the direction of its requests
+
+ ##### indicates a Printer object that is either
+ embedded in an Output Device, or
+ hosted in a server.
+ The Printer object might or might not be capable
+ of queuing/spooling.
+
+ any indicates any network protocol or direct
+ connect, including IPP.
+
+ Output Device
+ +---------------+
+ | ########### |
+ O +--------+ | # (Leaf) # |
+ /|\ | client |------------IPP-----------------># Printer # |
+ / \ +--------+ | # Object # |
+ | ########### |
+ +---------------+
+
+ Figure 1. Embedded Printer Object
+
+
+ ########### Output Device
+ O +--------+ # (Leaf) # +---------------+
+ /|\ | client |---IPP----># Printer #---any->| |
+ / \ +--------+ # object # | |
+ ########### +---------------+
+
+ Figure 2. Hosted Printer Object
+
+
+ +---------------+
+ | |
+ +->| Output Device |
+ ########### any/ | |
+ O +--------+ # (Leaf) # / +---------------+
+ /|\ | client |---IPP----># Printer #--*
+ / \ +--------+ # Object # \ +---------------+
+ ########### any\ | |
+ +->| Output Device |
+ | |
+ +---------------+
+
+ Figure 3. Output Device Fan-Out
+
+
+
+
+Kugler, et al. Standards Track [Page 31]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ ########### ###########
+ O +--------+ # Non-Leaf# # subord. #
+ /|\ | client |---IPP----># Printer #---IPP----># Printer #
+ / \ +--------+ # object # # object #
+ ########### ###########
+
+ The Subordinate Printer can be a Non-Leaf Printer, as in Figures 4
+ through 6, or can be a Leaf Printer, as in Figures 1 through 3.
+
+ Figure 4. Chained IPP Printer Objects
+
+
+ +------IPP--------------------->###########
+ / +---># subord. #
+ / / # Printer #
+ / ########### IPP # object #
+ O +--------+ # Non-Leaf# / ###########
+ /|\ | client |---IPP----># Printer #--*
+ / \ +--------+ # object # \
+ \ ########### IPP ###########
+ \ \ # subord. #
+ \ +---># Printer #
+ +------IPP---------------------># object #
+ ###########
+
+ The Subordinate Printer can be a Non-Leaf Printer, as in Figures 4
+ through 6, or can be a Leaf Printer, as in Figures 1 through 3.
+
+ Figure 5. IPP Printer Object Fan-Out
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 32]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ ###########
+ # Non-Leaf#
+ +---># Printer #-+
+ / # object # \
+ IPP ########### \ ###########
+ O +--------+ / +-IPP-># subord. #
+ /|\ | client |--+-----------IPP---------------># Printer #
+ / \ +--------+ \ +-IPP-># object #
+ IPP ########### / ###########
+ \ # Non-Leaf# /
+ +---># Printer #-+
+ # object #
+ ###########
+
+ The Subordinate Printer can be a Non-Leaf Printer, as in Figures 4
+ through 6, or can be a Leaf Printer, as in Figures 1 through 3.
+
+ Figure 6. IPP Printer Object Fan-In
+
+10.7. Forwarding Requests
+
+ This section describes the forwarding of Job and Printer requests to
+ Subordinate Printer objects.
+
+10.7.1. Forwarding Requests that Affect Printer Objects
+
+ In Printer Fan-Out, Printer Fan-In, and Chained Printers, the Non-
+ Leaf IPP Printer object MUST NOT forward the operations that affect
+ Printer objects to its Subordinate Printer objects. If a client
+ seeks to explicitly target a Subordinate Printer, the client MUST
+ specify the URI of the Subordinate Printer. The client can determine
+ the URI of any Subordinate Printers by querying the Printer's
+ "subordinate-printers-supported (1setOf uri) attribute (see section
+ 7.1).
+
+ Table 7 lists the operations that affect Printer objects and the
+ forwarding behavior that a Non-Leaf Printer MUST exhibit to its
+ immediate Subordinate Printers. Operations that affect jobs have a
+ different forwarding rule (see section 10.7.2 and Table 8):
+
+
+
+
+
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 33]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ Table 7. Forwarding Operations that Affect Printer Objects
+
+ Printer Operation Non-Leaf Printer Action
+ ---------------------------------------------------------------
+ Printer Operations:
+
+ Enable-Printer MUST NOT forward to any of its Subordinate
+ Printers
+ Disable-Printer MUST NOT forward to any of its Subordinate
+ Printers
+ Hold-New-Jobs MUST NOT forward to any of its Subordinate
+ Printers
+ Release-Held-New- MUST NOT forward to any of its Subordinate
+ Jobs Printers
+ Deactivate-Printer MUST NOT forward to any of its Subordinate
+ Printers
+ Activate-Printer MUST NOT forward to any of its Subordinate
+ Printers
+ Restart-Printer MUST NOT forward to any of its Subordinate
+ Printers
+ Shutdown-Printer MUST NOT forward to any of its Subordinate
+ Printers
+ Startup-Printer MUST NOT forward to any of its Subordinate
+ Printers
+
+ IPP/1.1 Printer See [RFC2911]
+ Operations:
+
+ Get-Printer- MUST NOT forward to any of its Subordinate
+ Attributes Printers
+ Pause-Printer MUST NOT forward to any of its Subordinate
+ Printers
+ Resume-Printer MUST NOT forward to any of its Subordinate
+ Printers
+
+ Set Operations: See [RFC3380]
+
+ Set-Printer- MUST NOT forward to any of its Subordinate
+ Attributes Printers
+
+
+
+
+
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 34]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+10.7.2. Forwarding Requests that Affect Jobs
+
+ Unlike Printer Operations that only affect Printer objects (see
+ section 10.7.1), a Non-Leaf Printer object MUST forward operations
+ that directly affect jobs to the appropriate Job object(s) in one or
+ more of its immediate Subordinate Printer objects. Forwarding is
+ REQUIRED since the purpose of this Job operation is to affect the
+ indicated job, which may have been forwarded itself. This forwarding
+ MAY be immediate or queued, depending on the operation and the
+ implementation. For example, a Non-Leaf Printer object MAY
+ queue/spool jobs, feeding a job at a time to its Subordinate
+ Printer(s), or MAY forward jobs immediately to one of its Subordinate
+ Printers. In either case, the Non-Leaf Printer object forwards Job
+ Creation operations to one of its Subordinate Printers. Only the
+ time of forwarding of the Job Creation operations depends on whether
+ the policy is to queue/spool jobs in the Non-Leaf Printer or the
+ Subordinate Printer.
+
+ When a Non-Leaf Printer object creates a Job object in its
+ Subordinate Printer, whether that Non-Leaf Printer object keeps a
+ fully formed Job object or just keeps a mapping from the "job-ids"
+ that it assigned to those assigned by its Subordinate Printer object
+ is IMPLEMENTATION-DEPENDENT. In either case, the Non-Leaf Printer
+ MUST be able to accept and carry out future Job operations that
+ specify the "job-id" that the Non-Leaf Printer assigned and returned
+ to the job submitting client.
+
+ Table 8 lists the operations that directly affect jobs and the
+ forwarding behavior that a Non-Leaf Printer MUST exhibit to its
+ Subordinate Printers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 35]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ Table 8. Forwarding Operations that Affect Jobs Objects
+
+ Operation Non-Leaf Printer action
+ ---------------------------------------------------------------
+ Job operations:
+
+ Reprocess-Job MUST forward to the appropriate Job in one of
+ its Subordinate Printers
+ Cancel-Current- MUST NOT forward
+ Job
+ Resume-Job MUST forward to the appropriate Job in one of
+ its Subordinate Printers
+ Promote-Job MUST forward to the appropriate Job in one of
+ its Subordinate Printers
+
+ IPP/1.1 Printer
+ operations:
+
+ Print-Job MUST forward immediately or queue to the
+ appropriate Subordinate Printer
+ Print-URI MUST forward immediately or queue to the
+ appropriate Subordinate Printer
+ Validate-Job MUST forward to the appropriate Subordinate
+ Printer
+ Create-Job MUST forward immediately or queue to the
+ appropriate Subordinate Printer
+ Get-Jobs MUST forward to all its Subordinate Printers
+ Purge-Jobs MUST forward to all its Subordinate Printers
+
+ IPP/1.1 Job
+ operations:
+
+ Send-Document MUST forward immediately or queue to the
+ appropriate Job in one of its Subordinate
+ Printers
+ Send-URI MUST forward immediately or queue to the
+ appropriate Job in one of its Subordinate
+ Printers
+ Cancel-Job MUST forward to the appropriate Job in one of
+ its Subordinate Printers
+ Get-Job- MUST forward to the appropriate Job in one of
+ Attributes its Subordinate Printers if the Non-Leaf
+ Printer doesn't know the complete status of the
+ Job object
+ Hold-Job MUST forward to the appropriate Job in one of
+ its Subordinate Printers
+ Release-Job MUST forward to the appropriate Job in one of
+ its Subordinate Printers
+
+
+
+Kugler, et al. Standards Track [Page 36]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ Restart-Job MUST forward to the appropriate Job in one of
+ its Subordinate Printers
+
+ IPP Set operations: See [RFC3380]
+
+ Set-Job- MUST forward to the appropriate Job in one of
+ Attributes its Subordinate Printers
+
+ When a Printer receives a request that REQUIRES forwarding, it does
+ so on a "best efforts basis" and returns a response to its client
+ without waiting for responses from any of its Subordinate Printers.
+ Such forwarded requests could fail.
+
+10.8. Additional Attributes to Help with Fan-Out
+
+ The following operation and Job Description attributes are defined to
+ help represent Job relationships for Fan-Out and forwarding of jobs.
+
+10.8.1. output-device-assigned (name(127)) Job Description Attribute -
+ from [RFC2911]
+
+ [RFC2911] defines "output-device-assigned" as follows: "This
+ attribute identifies the Output Device to which the Printer object
+ has assigned this job. If an Output Device implements an embedded
+ Printer object, the Printer object NEED NOT set this attribute. If a
+ print server implements a Printer object, the value MAY be empty
+ (zero-length string) or not returned until the Printer object assigns
+ an Output Device to the job. This attribute is particularly useful
+ when a single Printer object supports multiple devices (so called
+ "Device Fan-Out" see [RFC2911] section 2.1)." See also section 10.1
+ in this specification.
+
+10.8.2. original-requesting-user-name (name(MAX)) Operation and Job
+ Description Attribute
+
+ The operation attribute containing the user name of the original
+ user; i.e., corresponding to the "requesting-user-name" operation
+ attribute (see [RFC2911], section 3.2.1.1) that the original client
+ supplied to the first Printer object. The Printer copies the
+ "original-requesting-user-name" operation attribute to the
+ corresponding Job Description attribute.
+
+
+
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 37]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+10.8.3. requesting-user-name (name(MAX)) Operation Attribute -
+ Additional Semantics
+
+ The IPP/1.1 "requesting-user-name" operation attribute (see [RFC2911]
+ section 3.2.1.1) is updated by each client to be itself on each hop;
+ i.e., the "requesting-user-name" represents the client forwarding the
+ request, not the original client.
+
+10.8.4. job-originating-user-name (name(MAX)) Job Description Attribute
+ - Additional Semantics
+
+ The "job-originating-user-name" Job Description attribute (see
+ [RFC2911], section 4.3.6) remains as the authenticated original user,
+ not the parent Printer's authenticated host, and is forwarded by each
+ client without changing the value.
+
+11. Conformance Requirements
+
+ The Job and Printer Administrative operations defined in this
+ document are OPTIONAL operations. However, some operations MUST be
+ implemented if others are implemented, as shown in Table 9.
+
+ Table 9. Conformance Requirement Dependencies for Operations
+
+ Operations REQUIRED If any of these operations are
+ supported:
+ --------------------------------------------------------------------
+ Enable-Printer Disable-Printer
+ Disable-Printer Enable-Printer
+ Pause-Printer Resume-Printer
+ Resume-Printer Pause-Printer,
+ Pause-Printer-After-Current-Job
+ Hold-New-Jobs Release-Held-New-Jobs
+ Release-Held-New-Jobs Hold-New-Jobs
+ Activate-Printer, Deactivate-Printer
+ Disable-Printer,
+ Pause-Printer-After-Current-Job
+ Deactivate-Printer, Activate-Printer
+ Enable-Printer,
+ Resume-Printer
+ Restart-Printer none
+ Shutdown-Printer none
+ Startup-Printer none
+ Reprocess-Job none
+ Cancel-Current-Job none
+ Resume-Job Suspend-Current-Job
+ Suspend-Current-Job Resume-Job
+
+
+
+
+Kugler, et al. Standards Track [Page 38]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ Promote-Job none
+ Schedule-Job-After Promote-Job
+
+ Tables 10 and 11 list the "printer-state-reasons" and "job-state-
+ reasons" values that are REQUIRED if the indicated operations are
+ supported.
+
+ Table 10. Conformance Requirement Dependencies for
+ "printer-state-reasons" Values
+
+ "printer-state- Conformance If any of the following Printer
+ reasons" values: Requirement Operations are supported:
+ --------------------------------------------------------------------
+ 'paused' REQUIRED Pause-Printer,
+ Pause-Printer-After-Current-Job,
+ or Deactivate-Printer
+ 'hold-new-jobs' REQUIRED Hold-New-Jobs
+ 'moving-to-paused' OPTIONAL Pause-Printer,
+ Pause-Printer-After-Current-Job,
+ Deactivate-Printer
+ 'deactivated' REQUIRED Deactivate-Printer
+
+
+ Table 11. Conformance Requirement Dependencies for "job-state-
+ reasons" Values
+
+ "job-state-reasons" Conformance If any of the following Job
+ values: Requirement operations are supported:
+
+ 'job-suspended' REQUIRED Suspend-Current-Job
+ 'printer-stopped' REQUIRED Always REQUIRED
+
+12. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
+ RFC 2246, January 1999.
+
+ [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
+ Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
+ Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
+
+ [RFC2910] Herriot, R., Butler, S., Moore, P., Turner, R., and J.
+ Wenn, "Internet Printing Protocol/1.1: Encoding and
+ Transport", RFC 2910, September 2000.
+
+
+
+
+Kugler, et al. Standards Track [Page 39]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ [RFC2911] Hastings, T., Herriot, R., deBry, R., Isaacson, S., and P.
+ Powell, "Internet Printing Protocol/1.1: Model and
+ Semantics", RFC 2911, September 2000.
+
+ [RFC3380] Hastings, T., Herriot, R., Kugler, C., and H. Lewis,
+ "Internet Printing Protocol (IPP): Job and Printer Set
+ Operations", RFC 3380, September 2002.
+
+13. Informative References
+
+ [RFC2567] Wright, F., "Design Goals for an Internet Printing
+ Protocol", RFC 2567, April 1999.
+
+ [RFC2568] Zilles, S., "Rationale for the Structure of the Model and
+ Protocol for the Internet Printing Protocol", RFC 2568,
+ April 1999.
+
+ [RFC2569] Herriot, R., Hastings, T., Jacobs, N., and J. Martin,
+ "Mapping between LPD and IPP Protocols", RFC 2569, April
+ 1999.
+
+ [RFC3196] Hastings, T., Manros, C., Zehler, P., Kugler, C., and H.
+ Holst, "Internet Printing Protocol/1.1: Implementor's
+ Guide", RFC 3196, November 2001.
+
+ [RFC3239] Kugler, C., Lewis, H., and T. Hastings, "Internet Printing
+ Protocol (IPP): Requirements for Job, Printer, and Device
+ Administrative Operations", RFC 3239, February 2002.
+
+ [RFC3995] Herriot, R. and T. Hastings, "Internet Printing Protocol
+ (IPP): Event Notifications and Subscriptions", RFC 3995,
+ February 2005.
+
+14. IANA Considerations
+
+ This section contains the registration information that IANA added to
+ the IPP Registry according to the procedures defined in [RFC2911],
+ section 6, to cover the definitions in this document. The resulting
+ registrations have been published as additions to the
+ http://www.iana.org/assignments/ipp-registrations file.
+
+
+
+
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 40]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+14.1. Attribute Registrations
+
+ The following table lists all the attributes defined in this
+ document. These have been registered according to the procedures in
+ [RFC2911], section 6.2.
+
+ Name Reference Section
+ -------------------------------------- --------- -------
+ Job Description attributes:
+ original-requesting-user-name (name(MAX)) [RFC3998] 10.8.2
+
+ Printer Description attributes:
+ subordinate-printers-supported (1setOf uri) [RFC3998] 7.1
+ parent-printers-supported (1setOf uri) [RFC3998] 7.2
+
+ Operation attributes:
+ original-requesting-user-name (name(MAX)) [RFC3998] 10.8.2
+
+14.2. Attribute Value Registrations
+
+ This section lists the additional values defined in this document for
+ existing attributes.
+
+ Attribute
+ Value Reference Section
+ --------------------- --------- -------
+ job-state-reasons (1setOf type2 keyword)
+ job-suspended [RFC3998] 9.1
+
+
+ printer-state-reasons (1setOf type2 keyword)
+ hold-new-jobs [RFC3998] 8.1
+ deactivated [RFC3998] 8.2
+
+14.3. Additional Enum Attribute Value Registrations
+
+ The following table lists all the new enum attribute values defined
+ in this document. These have been registered according to the
+ procedures in [RFC2911], section 6.1.
+
+
+
+
+
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 41]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ Attribute (attribute syntax)
+ Value Name Reference Section
+ ------- -------------------- --------- -------
+ operations-supported (1setOf type2 enum) [RFC2911] 4.4.1
+ 0x0022 Enable-Printer [RFC3998] 3
+ 0x0023 Disable-Printer [RFC3998] 3
+ 0x0024 Pause-Printer-After-Current-Job [RFC3998] 3
+ 0x0025 Hold-New-Jobs [RFC3998] 3
+ 0x0026 Release-Held-New-Jobs [RFC3998] 3
+ 0x0027 Deactivate-Printer [RFC3998] 3
+ 0x0028 Activate-Printer [RFC3998] 3
+ 0x0029 Restart-Printer [RFC3998] 3
+ 0x002A Shutdown-Printer [RFC3998] 3
+ 0x002B Startup-Printer [RFC3998] 3
+ 0x002C Reprocess-Job [RFC3998] 4
+ 0x002D Cancel-Current-Job [RFC3998] 4
+ 0x002E Suspend-Current-Job [RFC3998] 4
+ 0x002F Resume-Job [RFC3998] 4
+ 0x0030 Promote-Job [RFC3998] 4
+ 0x0031 Schedule-Job-After [RFC3998] 4
+
+14.4. Operation Registrations
+
+ The following table lists all the operations defined in this
+ document. These have been registered according to the procedures in
+ [RFC2911], section 6.4.
+
+ Name Reference Section
+ ----------------------------- --------- -------
+ Activate-Printer [RFC3998] 3.4.2
+ Cancel-Current-Job [RFC3998] 4.2
+ Deactivate-Printer [RFC3998] 3.4.1
+ Disable-Printer [RFC3998] 3.1.1
+ Enable-Printer [RFC3998] 3.1.2
+ Hold-New-Jobs [RFC3998] 3.3.1
+ Pause-Printer-After-Current-Job [RFC3998] 3.2.1
+ Promote-Job [RFC3998] 4.4.1
+ Release-Held-New-Jobs [RFC3998] 3.3.2
+ Reprocess-Job [RFC3998] 4.1
+ Restart-Printer [RFC3998] 3.5.1
+ Resume-Job [RFC3998] 4.3.2
+ Schedule-Job-After [RFC3998] 4.4.2
+ Shutdown-Printer [RFC3998] 3.5.2
+ Startup-Printer [RFC3998] 3.5.3
+ Suspend-Current-Job [RFC3998] 4.3.1
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 42]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+14.5. Status Code Registrations
+
+ The following table lists the status code defined in this document.
+ This has been registered according to the procedures in [RFC2911],
+ section 6.6.
+
+ Value Name Reference Section
+ ------ ------------------------ --------- -------
+ 0x0000:0x00FF - "successful"
+ none at this time
+
+ 0x0100:0x01FF - "informational"
+ none at this time
+
+ 0x0300:0x03FF - "redirection" See RFC 2911 Errata
+ none at this time
+
+ 0x0400:0x04FF - "client-error"
+ none at this time
+
+ 0x0500:0x05FF - "server-error"
+ 0x050A server-error-printer-is-deactivated [RFC3998] 5.1
+
+15. Internationalization Considerations
+
+ This document has the same localization considerations as [RFC2911].
+
+16. Security Considerations
+
+ The IPP Model and Semantics document [RFC2911] discusses high level
+ security requirements (Client Authentication, Server Authentication,
+ and Operation Privacy). Client Authentication is the mechanism by
+ which the client proves its identity to the server in a secure
+ manner. Server Authentication is the mechanism by which the server
+ proves its identity to the client in a secure manner. Operation
+ Privacy is defined as a mechanism for protecting operations from
+ eavesdropping.
+
+ Printer operations defined in this specification (see section 3), as
+ well as Pause-Printer, Resume-Printer, and Purge-Job (defined in
+ [RFC2911]) are intended for use by an operator and/or administrator.
+ Job operations defined in this specification (see section 4) and
+ Cancel-Job, Hold-Job, and Release-Job (defined in [RFC2911]) are
+ intended for use by the job owner, operator, or administrator of the
+ Printer object. These operator and administrator operations affect
+ service for all users.
+
+
+
+
+
+Kugler, et al. Standards Track [Page 43]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ Inappropriate use of an administrative operation by an
+ unauthenticated end user can affect the quality of service for all
+ users. Therefore, IPP Printer implementations MUST support both
+ successful certificate-based TLS [RFC2246] client authentication and
+ successful operator/administrator authorization (see [RFC2911],
+ sections 5.2.7 and 8, and [RFC2910]) to perform the administrative
+ operations defined in this document. [RFC2910] requires the IPP
+ Printer to support the minimum cipher suite specified for TLS/1.0.
+ The means for authorizing an operator or administrator of the Printer
+ object are outside the scope of this specification, RFC 2910, and RFC
+ 2911.
+
+ The use of TLS and Client Authentication solves the Denial of
+ Service, Man in the Middle, and Masquerading security threats.
+
+17. Summary of Base IPP Documents
+
+ The base set of IPP documents includes the following:
+
+ Design Goals for an Internet Printing Protocol [RFC2567]
+ Rationale for the Structure and Model and Protocol for the
+ Internet Printing Protocol [RFC2568]
+ Internet Printing Protocol/1.1: Model and Semantics [RFC2911]
+ Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]
+ Internet Printing Protocol/1.1: Implementer's Guide [RFC3196]
+ Mapping between LPD and IPP Protocols [RFC2569]
+
+ "Design Goals for an Internet Printing Protocol" takes a broad look
+ at distributed printing functionality, and it enumerates real-life
+ scenarios that help clarify the features that have to be included in
+ a printing protocol for the Internet. It identifies requirements for
+ three types of users: end users, operators, and administrators. It
+ calls out a subset of end user requirements that are satisfied in
+ IPP/1.0. A few OPTIONAL operator operations have been added to
+ IPP/1.1.
+
+ "Rationale for the Structure and Model and Protocol for the Internet
+ Printing Protocol" describes IPP from a high level view, defines a
+ roadmap for the various documents that form the suite of IPP
+ specification documents, and gives background and rationale for the
+ IETF working group's major decisions.
+
+ "Internet Printing Protocol/1.1: Model and Semantics" describes a
+ simplified model with abstract objects, their attributes, and their
+ operations that are independent of encoding and transport. It
+ introduces a Printer and a Job object. The Job object optionally
+ supports multiple documents per Job. It also addresses security,
+ internationalization, and directory issues.
+
+
+
+Kugler, et al. Standards Track [Page 44]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+ "Internet Printing Protocol/1.1: Encoding and Transport" is a formal
+ mapping of the abstract operations and attributes defined in the
+ model document onto HTTP/1.1 [RFC2616]. It defines the encoding
+ rules for a new Internet MIME media type called "application/ipp".
+ This document also defines the rules for transporting over HTTP a
+ message body whose Content-Type is "application/ipp". This document
+ defines the 'ippget' scheme for identifying IPP printers and jobs.
+
+ "Internet Printing Protocol/1.1: Implementer's Guide" gives insight
+ and advice to implementers of IPP clients and IPP objects. It is
+ intended to help them understand IPP/1.1 and some of the
+ considerations that may assist them in the design of their client
+ and/or IPP object implementations. For example, a typical order of
+ processing requests is given, including error checking. Motivation
+ for some of the specification decisions is also included.
+
+ "Mapping between LPD and IPP Protocols" gives some advice to
+ implementers of gateways between IPP and LPD (Line Printer Daemon)
+ implementations.
+
+Authors' Addresses
+
+ Carl Kugler
+ IBM Corporation, 003G
+ 6300 Diagonal Hwy
+ Boulder, CO 80301
+
+ Phone: (303) 924-5060
+ EMail: kugler@us.ibm.com
+
+
+ Tom Hastings, editor
+ Xerox Corporation
+ 701 S Aviation Blvd. ESAE 242
+ El Segundo, CA 90245
+
+ Phone: 310-333-6413
+ Fax: 310-333-6342
+ EMail: hastings@cp10.es.xerox.com
+
+
+ Harry Lewis
+ IBM Corporation
+ 6300 Diagonal Hwy
+ Boulder, CO 80301
+
+ Phone: (303) 924-5337
+ EMail: harryl@us.ibm.com
+
+
+
+Kugler, et al. Standards Track [Page 45]
+
+RFC 3998 IPP: Job and Printer Operations March 2005
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2005).
+
+ This document is subject to the rights, licenses and restrictions
+ contained in BCP 78, and except as set forth therein, the authors
+ retain all their rights.
+
+ This document and the information contained herein are provided on an
+ "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+ OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+ ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+ INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+ The IETF takes no position regarding the validity or scope of any
+ Intellectual Property Rights or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; nor does it represent that it has
+ made any independent effort to identify any such rights. Information
+ on the procedures with respect to rights in RFC documents can be
+ found in BCP 78 and BCP 79.
+
+ Copies of IPR disclosures made to the IETF Secretariat and any
+ assurances of licenses to be made available, or the result of an
+ attempt made to obtain a general license or permission for the use of
+ such proprietary rights by implementers or users of this
+ specification can be obtained from the IETF on-line IPR repository at
+ http://www.ietf.org/ipr.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights that may cover technology that may be required to implement
+ this standard. Please address the information to the IETF at ietf-
+ ipr@ietf.org.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+Kugler, et al. Standards Track [Page 46]
+