idnits 2.17.1 draft-ietf-ipp-ops-set2-04.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3667, Section 5.1 on line 33. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 1956. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 1963. ** Found boilerplate matching RFC 3978, Section 5.4, paragraph 1 (on line 10), which is fine, but *also* found old RFC 2026, Section 10.4C, paragraph 1 text on line 10. ** The document seems to lack an RFC 3978 Section 5.1 IPR Disclosure Acknowledgement -- however, there's a paragraph with a matching beginning. Boilerplate error? ** This document has an original RFC 3978 Section 5.4 Copyright Line, instead of the newer IETF Trust Copyright according to RFC 4748. ** The document seems to lack an RFC 3978 Section 5.4 Reference to BCP 78. ** The document seems to lack an RFC 3978 Section 5.5 (updated by RFC 4748) Disclaimer -- however, there's a paragraph with a matching beginning. Boilerplate error? ** The document seems to lack an RFC 3979 Section 5, para. 3 IPR Disclosure Invitation -- however, there's a paragraph with a matching beginning. Boilerplate error? ** The document uses RFC 3667 boilerplate or RFC 3978-like boilerplate instead of verbatim RFC 3978 boilerplate. After 6 May 2005, submission of drafts without verbatim RFC 3978 boilerplate is not accepted. The following non-3978 patterns matched text found in the document. That text should be removed or replaced: By submitting this Internet-Draft, I certify that any applicable patent or other IPR claims of which I am aware have been disclosed, or will be disclosed, and any of which I become aware will be disclosed, in accordance with RFC 3668. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The abstract seems to contain references ([RFC2910,RFC2911]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 1 instance of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. ** The document seems to lack a both a reference to RFC 2119 and the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. RFC 2119 keyword, line 37: '...ollowing 16 additional OPTIONAL system...' RFC 2119 keyword, line 184: '...fines additional OPTIONAL end user, op...' RFC 2119 keyword, line 203: '...d terms, such as MUST, MUST NOT, REQUI...' RFC 2119 keyword, line 204: '... NOT, MAY, NEED NOT, and OPTIONAL, h...' RFC 2119 keyword, line 235: '.... Such a Subordinate Printer MAY have...' (171 more instances...) == The 'Updates: ' line in the draft header should list only the _numbers_ of the RFCs which will be updated by this document (if approved); it should not include the word 'RFC' in the list. -- The draft header indicates that this document updates RFC3380, but the abstract doesn't seem to mention this, which it should. -- The draft header indicates that this document updates RFC2911, but the abstract doesn't seem to directly say this. It does mention RFC2911 though, so this could be OK. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 1393 has weird spacing: '... any indic...' == Line 1713 has weird spacing: '...irement oper...' (Using the creation date from RFC2911, updated by this document, for RFC5378 checks: 1999-02-22) -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (July 15, 2004) is 7224 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'RFC2119' is mentioned on line 205, but not defined == Missing Reference: 'RFCnnnn' is mentioned on line 1878, but not defined == Missing Reference: 'RFC2246' is mentioned on line 1908, but not defined ** Obsolete undefined reference: RFC 2246 (Obsoleted by RFC 4346) == Missing Reference: 'RFC2567' is mentioned on line 1975, but not defined == Missing Reference: 'RFC2568' is mentioned on line 1977, but not defined == Missing Reference: 'RFC2569' is mentioned on line 1981, but not defined == Missing Reference: 'RFC2616' is mentioned on line 2007, but not defined ** Obsolete undefined reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) == Unused Reference: 'RFC2566' is defined on line 1741, but no explicit reference was found in the text ** Obsolete normative reference: RFC 2910 (Obsoleted by RFC 8010) ** Obsolete normative reference: RFC 2911 (Obsoleted by RFC 8011) -- Obsolete informational reference (is this intentional?): RFC 2566 (Obsoleted by RFC 2911) Summary: 16 errors (**), 0 flaws (~~), 13 warnings (==), 9 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet Printing Protocol WG Carl Kugler 3 INTERNET-DRAFT H. Lewis 4 IBM Corporation 5 Updates: RFC 2911, RFC 3380 T. Hastings (editor) 6 [Target Category: standards track Xerox Corporation 7 Expires: January 15, 2005 July 15, 2004 8 Internet Printing Protocol (IPP): 9 Job and Printer Administrative Operations 10 Copyright (C) The Internet Society (2004). All Rights Reserved. 12 Status of this Memo 14 This document is an Internet-Draft and is in full conformance with 15 all provisions of Section 10 of [rfc2026]. Internet-Drafts are 16 working documents of the Internet Engineering Task Force (IETF), its 17 areas, and its working groups. Note that other groups may also 18 distribute working documents as Internet-Drafts. 20 Internet-Drafts are draft documents valid for a maximum of six months 21 and may be updated, replaced, or obsoleted by other documents at any 22 time. It is inappropriate to use Internet-Drafts as reference 23 material or to cite them other than as "work in progress". 25 The list of current Internet-Drafts can be accessed at 26 http://www.ietf.org/ietf/1id-abstracts.txt 27 The list of Internet-Draft Shadow Directories can be accessed as 28 http://www.ietf.org/shadow.html. 30 By submitting this Internet-Draft, we certify that any applicable 31 patent or other IPR claims of which we are aware have been disclosed, 32 or will be disclosed, and any of which we become aware will be 33 disclosed, in accordance with RFC 3668. 35 Abstract 37 This document specifies the following 16 additional OPTIONAL system 38 administration operations for use with the Internet Printing 39 Protocol/1.1 (IPP) [RFC2910, RFC2911]: 41 Printer operations: Job operations: 42 Enable-Printer and Disable-Printer Reprocess-Job 43 Pause-Printer-After-Current-Job Cancel-Current-Job 44 Hold-New-Jobs and Release-Held-New-Jobs Suspend-Current-Job 45 Deactivate-Printer and Activate-Printer Resume-Job 46 Restart-Printer Promote-Job 47 Shutdown-Printer and Startup-Printer Schedule-Job-After 48 plus a few associated attributes, values, and status codes and 49 using the IPP Printer object to manage printer fan-out and fan-in. 51 Table of Contents 53 1 Introduction.....................................................5 55 2 Terminology......................................................5 56 2.1 Conformance Terminology........................................5 57 2.2 Other terminology..............................................5 59 3 Definition of the Printer Operations.............................6 60 3.1 The Disable and Enable Printer Operations......................8 61 3.1.1 Disable-Printer Operation....................................8 62 3.1.2 Enable-Printer Operation.....................................9 63 3.2 The Pause and Resume Printer Operations........................9 64 3.2.1 Pause-Printer-After-Current-Job operation...................10 65 3.3 Hold and Release New Jobs operations..........................12 66 3.3.1 Hold-New-Jobs operation.....................................12 67 3.3.2 Release-Held-New-Jobs operation.............................13 68 3.4 Deactivate and Activate Printer Operations....................13 69 3.4.1 Deactivate-Printer operation................................13 70 3.4.2 Activate-Printer operation..................................14 71 3.5 Restart-Printer, Shutdown-Printer, and Startup-Printer operations 72 15 73 3.5.1 Restart-Printer operation...................................15 74 3.5.2 Shutdown-Printer Operation..................................15 75 3.5.3 Startup-Printer operation...................................16 77 4 Definition of the Job Operations................................17 78 4.1 Reprocess-Job Operation.......................................18 79 4.2 Cancel-Current-Job Operation..................................19 80 4.3 Suspend and Resume Job operations.............................20 81 4.3.1 Suspend-Current-Job operation...............................20 82 4.3.2 Resume-Job operation........................................21 83 4.4 Job Scheduling Operations.....................................22 84 4.4.1 Promote-Job operation.......................................22 85 4.4.2 Schedule-Job-After operation................................23 87 5 Additional status codes.........................................24 88 5.1 'server-error-printer-is-deactivated' (0x050A)................24 90 6 Use of Operation Attributes that are Messages from the Operator.25 92 7 New Printer Description Attributes..............................28 93 7.1 subordinate-printers-supported (1setOf uri)...................28 94 7.2 parent-printers-supported (1setOf uri)........................28 96 8 Additional Values for the "printer-state-reasons" Printer 97 Description attribute.............................................29 98 8.1 'hold-new-jobs' value.........................................29 99 8.2 'deactivated' value...........................................29 101 9 Additional Values for the "job-state-reasons" Job Description 102 attribute.........................................................29 103 9.1 'job-suspended' value.........................................30 105 10 Use of the Printer object to represent IPP Printer Fan-Out and IPP 106 Printer Fan-In....................................................30 107 10.1 IPP Printer Fan-Out..........................................30 108 10.2 IPP Printer Fan-In...........................................31 109 10.3 Printer object attributes used to represent Printer Fan-Out and 110 Printer Fan-In....................................................31 111 10.4 Subordinate Printer URI......................................31 112 10.5 Printer object attributes used to represent Output Device Fan- 113 Out 32 114 10.6 Figures to show all possible configurations..................33 115 10.7 Forwarding requests..........................................36 116 10.7.1 Forwarding requests that affect Printer objects............36 117 10.7.2 Forwarding requests that affect Jobs.......................38 118 10.8 Additional attributes to help with fan-out...................40 119 10.8.1 output-device-assigned (name(127)) Job Description attribute - 120 from [RFC2911].........................................40 121 10.8.2 original-requesting-user-name (name(MAX)) operation and Job 122 Description attribute..................................40 123 10.8.3 requesting-user-name (name(MAX)) operation attribute - 124 additional semantics...................................40 125 10.8.4 job-originating-user-name (name(MAX)) Job Description 126 attribute - additional semantics.......................41 128 11 Conformance Requirements.......................................41 130 12 Normative References...........................................42 132 13 Informative References.........................................43 134 14 IANA Considerations............................................43 135 14.1 Attribute Registrations......................................44 136 14.2 Attribute Value Registrations................................44 137 14.3 Additional Enum Attribute Value Registrations................45 138 14.4 Operation Registrations......................................45 139 14.5 Status code Registrations....................................46 141 15 Internationalization Considerations............................46 143 16 Security Considerations........................................47 145 17 Author's Addresses.............................................47 146 18 IPR Notice.....................................................48 148 19 Summary of Base IPP Documents..................................49 150 20 Full Copyright Statement.......................................50 152 List of Tables 154 Table 1 - Printer Operation Operation-Id assignments...............7 155 Table 2 - Pause and Resume Printer Operations.....................10 156 Table 3 - State Transition Table for Pause-Printer-After-Current-Job 157 operation.....................................................11 158 Table 4 - Job operation Operation-Id assignments..................18 159 Table 5 - Operation attribute support for Printer Operations......26 160 Table 6 - Operation attribute support for Job operations..........27 161 Table 7 - Forwarding operations that affect Printer objects.......37 162 Table 8 - Forwarding operations that affect Jobs objects..........39 163 Table 9 - Conformance Requirement Dependencies for Operations.....41 164 Table 10- Conformance Requirement Dependencies for "printer-state- 165 reasons" Values...............................................42 166 Table 11- Conformance Requirement Dependencies for "job-state- 167 reasons" Values...............................................42 169 List of Figures 171 Figure 1 - Embedded Printer object................................34 172 Figure 2 - Hosted Printer object..................................34 173 Figure 3 - Output Device Fan-Out..................................34 174 Figure 4 - Chained IPP Printer Objects............................35 175 Figure 5 - IPP Printer Object Fan-Out.............................35 176 Figure 6 - IPP Printer Object Fan-In..............................35 178 1 Introduction 180 The Internet Printing Protocol (IPP) is an application level protocol 181 that can be used for distributed printing using Internet tools and 182 technologies. IPP version 1.1 ([RFC2911, RFC2910]) focuses on end 183 user functionality with a few administrative operations included. 184 This document defines additional OPTIONAL end user, operator, and 185 administrator operations used to control Jobs and Printers. In 186 addition, this document extends the semantic model of the Printer 187 object by allowing them to be configured into trees and/or inverted 188 trees that represent Printer object Fan-Out and Printer object Fan- 189 In, respectively. The special case of a tree with only a single 190 Subordinate node represents Chained Printers. This document is a 191 registration proposal for an extension to IPP/1.0 and IPP/1.1 192 following the registration procedures in those documents. 194 The requirements and use cases for this document are defined in 195 [RFC3239]. 197 2 Terminology 199 This section defines terminology used throughout this document. 201 2.1 Conformance Terminology 203 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD 204 NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to 205 conformance as defined in RFC 2119 [RFC2119] and [RFC2911] section 206 12.1. If an implementation supports the extension defined in this 207 document, then these terms apply; otherwise, they do not. These 208 terms define conformance to this document only; they do not affect 209 conformance to other documents, unless explicitly stated otherwise. 211 2.2 Other terminology 213 This document uses terms such as "client", "Printer", "Job", 214 "attributes", "keywords", "operation" and "support". These terms 215 have special meaning and are defined in the model terminology 216 [RFC2911] section 12.2. 218 In addition, the following capitalized terms are defined: 220 IPP Printer object (or Printer for short) - a software abstraction 221 defined by [RFC2911]. 222 Printer Operation - an operation whose target is an IPP Printer 223 object and whose effect is on the Printer object. 224 Output Device - the physical imaging mechanism that an IPP Printer 225 controls. Note: while this term is capitalized in this 226 specification (but not in [RFC2911]), there is no formal object 227 called an Output Device defined in this document (or [RFC2911]). 228 Output Device Fan-Out - a configuration in which an IPP Printer 229 controls more that one Output Device. 230 Printer Fan-Out - a configuration in which an IPP Printer object 231 controls more than one Subordinate IPP Printer object. 232 Printer Fan-In - a configuration in which an IPP Printer object is 233 controlled by more than one IPP Printer object. 234 Subordinate Printer - an IPP Printer object that is controlled by 235 another IPP Printer object. Such a Subordinate Printer MAY have 236 zero or more Subordinate Printers. 237 Leaf Printer - an IPP Printer object that has no Subordinate 238 Printers. 239 Non-Leaf Printer - an IPP Printer object that has one or more 240 Subordinate Printers. A Non-Leaf Printer is also called a Parent 241 Printer. 242 Chained Printer - a Non-Leaf Printer that has exactly one Subordinate 243 Printer. 244 Job Creation operations - IPP operations that create a Job object: 245 Print-Job, Print-URI, and Create-Job. 247 3 Definition of the Printer Operations 249 All Printer Operations are directed at Printer objects. A client 250 MUST always supply the "printer-uri" operation attribute in order to 251 identify the correct target of the operation. These descriptions 252 assume all of the common semantics of IPP/1.1 Model and Semantics 253 document [RFC2911] section 3.1. 255 The Printer Operations defined in this document are summarized in 256 Table 1: 258 Table 1 - Printer Operation Operation-Id assignments 259 Operation Name Operation- Brief description 260 Id 262 Enable-Printer 0x22 Allows the target Printer to accept 263 Job Creation operations 264 Disable-Printer 0x23 Prevents the target Printer from 265 accepting Job Creation operations 266 Pause-Printer- 0x24 Pause the Printer after the current 267 After-Current- job has been sent to the Output 268 Job Device. 269 Hold-New-Jobs 0x25 Finishes processing all currently 270 pending jobs. Any new jobs are 271 placed in the 'pending-held' state. 272 Release-Held- 0x26 Release all jobs to the 'pending' 273 New-Jobs state that had been held by the 274 effect of a previous Hold-New-Jobs 275 operation and condition the Printer 276 to no longer hold new jobs. 277 Deactivate- 0x27 Puts the Printer into a read-only 278 Printer deactivated state. 279 Activate- 0x28 Restores the Printer to normal 280 Printer activity 281 Restart-Printer 0x29 Restarts the target Printer and re- 282 initializes the software 283 Shutdown- 0x2A Shuts down the target Printer so that 284 Printer it cannot be restarted or queried 285 Startup-Printer 0x2B Starts up the instance of the Printer 286 object 288 All of the operations in this document are OPTIONAL for an IPP object 289 to support. Unless the specification of an OPTIONAL operation 290 requires support of another OPTIONAL operation, conforming 291 implementations may support any combination of these operations. 292 Many of the operations come in pairs and so both are REQUIRED if 293 either one is implemented. 295 3.1 The Disable and Enable Printer Operations 297 This section defines the OPTIONAL Disable-Printer and Enable-Printer 298 operations that stop and start the IPP Printer object from accepting 299 new IPP jobs. If either of these operations are supported, both MUST 300 be supported. 302 These operations allow the operator to control whether or not the 303 Printer will accept new Job Creation (Print-Job, Print-URI, and 304 Create-Job) operations. These operations have no other effect on the 305 Printer, so that the Printer continues to accept all other operations 306 and continues to schedule and process jobs normally. In other words, 307 these operation control the "input of new jobs" to the IPP Printer 308 while the Pause and Resume operations (see section 3.2) independently 309 control the "output of new jobs" from the IPP Printer to the Output 310 Device. 312 3.1.1 Disable-Printer Operation 314 This OPTIONAL operation allows a client to stop the Printer object 315 from accepting new jobs, i.e., cause the Printer to reject subsequent 316 Job Creation operations and return the 'server-error-not-accepting- 317 jobs' status code. The Printer still accepts all other operations, 318 including Validate-Job, Send-Document and Send-URI operations. Thus 319 a Disable-Printer operation allows a client to continue submitting 320 multiple documents of a multiple document job if the Create-Job 321 operation had already been accepted. All previously created or 322 submitted Jobs and currently processing Jobs continue unaffected. 324 The IPP Printer MUST accept the request in any state. The Printer 325 sets the value of its "printer-is-accepting-jobs" READ-ONLY Printer 326 Description attribute to 'false' (see [RFC2911] section 4.4.20), no 327 matter what the previous value was. This operation has no immediate 328 or direct effect on the Printer's "printer-state" and "printer-state- 329 reasons" attributes. 331 Access Rights: The authenticated user (see [RFC2911] section 8.3) 332 performing this operation must be an operator or administrator of the 333 Printer object (see [RFC2911] Sections 1 and 8.5). 335 The Disable-Printer Request and Disable-Printer Response have the 336 same attribute groups and attributes as the Pause-Printer operation 337 (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the new 338 "printer-message-from-operator" operation attribute (see section 6). 340 3.1.2 Enable-Printer Operation 342 This OPTIONAL operation allows a client to start the Printer object 343 accepting jobs, i.e., cause the Printer to accept subsequent Job 344 Creation operations. The Printer still accepts all other operations. 345 All previously submitted Jobs and currently processing Jobs continue 346 unaffected. 348 The IPP Printer MUST accept the request in any state. The Printer 349 sets the value of its "printer-is-accepting-jobs" READ-ONLY Printer 350 Description attribute to 'true' (see [RFC2911] section 4.4.20), no 351 matter what the previous value was. This operation has no immediate 352 or direction effect on the Printer's "printer-state" and "printer- 353 state-reasons" attributes. 355 Access Rights: The authenticated user (see [RFC2911] section 8.3) 356 performing this operation must be an operator or administrator of the 357 Printer object (see [RFC2911] Sections 1 and 8.5). 359 The Enable-Printer Request and Enable-Printer Response have the same 360 attribute groups and attributes as the Pause-Printer operation (see 361 [RFC2911] sections 3.2.8.1 and 3.2.8.2), including the new "printer- 362 message-from-operator" operation attribute (see section 6). 364 3.2 The Pause and Resume Printer Operations 366 This section leaves the OPTIONAL IPP/1.1 Pause-Printer (see [RFC2911] 367 sections 3.2.7) to be ambiguous as to whether or not it stops the 368 Printer immediately or after the current job and defines the OPTIONAL 369 Pause-Printer-After-Current-Job operation to be after the current 370 job. These operations affect the scheduling of IPP jobs. If either 371 of these Pause Printer operations are supported, then the Resume- 372 Printer operation MUST be supported. 374 These operations allow the operator to control whether or not the 375 Printer will send new IPP jobs to the associated Output Device(s) 376 that the IPP Printer object represents. These operations have no 377 other effect on the Printer, so that the Printer continues to accept 378 all operations. In other words, these operation control the "output 379 of new jobs" to the Output Device(s) while the Disable and Enable 380 Printer Operations (see section 3.1) independently control the "input 381 of new jobs" to the IPP Printer. 383 Table 2 - Pause and Resume Printer Operations 384 Pause and Resume Printers Description 386 IPP/1.1 Pause Printer Stops the IPP Printer from sending 387 new IPP Jobs to the Output Device(s) 388 either immediately or after the 389 current job completes, depending on 390 implementation, as defined in 391 [RFC2911]. 392 Pause-Printer-After- Stops the IPP Printer from sending 393 Current-Job new IPP Jobs to the Output Device(s) 394 after the current jobs finish 395 Resume-Printer Starts the IPP Printer sending IPP 396 Jobs to the Output Device again. 398 3.2.1 Pause-Printer-After-Current-Job operation 400 This OPTIONAL operation allows a client to stop the Printer object 401 from starting to send IPP jobs to any of its Output Devices or 402 Subordinate Printers. If the IPP Printer is in the middle of sending 403 an IPP job to an Output Device or Subordinate Printer, the IPP 404 Printer MUST complete sending that Job. However, after receiving 405 this operation, the IPP Printer MUST NOT start to send any additional 406 IPP jobs to any of its Output Devices or Subordinate Printers. In 407 addition, after having received this operation, the IPP Printer MUST 408 NOT start processing any more jobs, so additional jobs MUST NOT enter 409 the 'processing' state. 411 If the IPP Printer is not sending an IPP Job to the Output Device or 412 Subordinate Printer (whether or not the Output Device or Subordinate 413 Printer is busy processing any jobs), the IPP Printer object 414 transitions immediately to the 'stopped' state by setting its 415 "printer-state" attribute to 'stopped', removing the 'moving-to- 416 paused' value, if present, from its "printer-state-reasons" 417 attribute, and adding the 'paused' value to its "printer-state- 418 reasons" attribute. 420 If the implementation will take appreciable time to complete sending 421 an IPP job that it has started sending to an Output Device or 422 Subordinate Printer, the IPP Printer adds the 'moving-to-paused' 423 value to the Printer object's "printer-state-reasons" attribute (see 424 section [RFC2911] 4.4.12). When the IPP Printer has completed 425 sending IPP jobs that it was in the process of sending, the Printer 426 object transitions to the 'stopped' state by setting its "printer- 427 state" attribute to 'stopped', removing the 'moving-to-paused' value, 428 if present, from its "printer-state-reasons" attribute, and adding 429 the 'paused' value to its "printer-state-reasons" attribute. 431 This operation MUST NOT affect the acceptance of Job Creation 432 requests (see Disable-Printer section 3.1.1). 434 For any jobs that are 'pending' or 'pending-held', the 'printer- 435 stopped' value of the jobs' "job-state-reasons" attribute also 436 applies. However, the IPP Printer NEED NOT update those jobs' "job- 437 state-reasons" attributes and only need return the 'printer-stopped' 438 value when those jobs are queried using the Get-Job-Attributes or 439 Get-Jobs operations (so-called "lazy evaluation"). 441 The IPP Printer MUST accept the request in any state and transition 442 the Printer to the indicated new "printer-state" and MUST add the 443 indicated value to "printer-state-reasons" attribute before returning 444 as follows: 446 Table 3 - State Transition Table for Pause-Printer-After-Current-Job 447 operation 448 Current New "printer IPP Printer's response status 449 "printer- "printer- -state- code and action: 450 state" state" reasons" 451 REQUIRED/OPTIONAL state 452 transition for a Printer to 453 support 455 'idle' 'stopped' 'paused' REQUIRED: 'successful-ok' 456 'processing' 'processing' 'moving- OPTIONAL: 'successful-ok'; 457 to- Later, when the IPP Printer 458 paused' has finished sending IPP jobs 459 to an Output Device, the 460 "printer-state" becomes 461 'stopped', and the 'paused' 462 value replaces the 'moving-to- 463 paused' value in the "printer- 464 state-reasons" attribute 465 'processing' 'stopped' 'paused' REQUIRED: 'successful-ok'; 466 the IPP Printer wasn't in the 467 middle of sending an IPP job 468 to an Output Device 469 'stopped' 'stopped' 'paused' REQUIRED: 'successful-ok' 471 Access Rights: The authenticated user (see [RFC2911] section 8.3) 472 performing this operation must be an operator or administrator of the 473 Printer object (see [RFC2911] Sections 1 and 8.5). 475 The Pause-Printer-After-Current-Job Request and Pause-Printer-After- 476 Current-Job Response have the same attribute groups and attributes as 477 the Pause-Printer operation (see [RFC2911] sections 3.2.7.1 and 478 3.2.7.2), including the new "printer-message-from-operator" operation 479 attribute (see section 6). 481 3.3 Hold and Release New Jobs operations 483 This section defines operations to condition the Printer to hold any 484 new jobs and to release them. 486 3.3.1 Hold-New-Jobs operation 488 This OPTIONAL operation allows a client to condition the Printer to 489 complete the current 'pending' and 'processing' IPP Jobs but not 490 start processing any subsequently created IPP Jobs. If the IPP 491 Printer is in the middle of sending an IPP job to an Output Device or 492 Subordinate Printer, the IPP Printer MUST complete sending that Job. 493 Furthermore, the IPP Printer MUST send all of the current 'pending' 494 IPP Jobs to the Output Device(s) or Subordinate IPP Printer 495 object(s). Any subsequently received Job Creation operations will 496 cause the IPP Printer to put the Job into the 'pending-held' state 497 with the 'job-held-on-create' value being added to the job's "job- 498 state-reasons" attribute. Thus all newly accepted jobs will be 499 automatically held by the Printer. 501 When the Printer completes all of the 'pending' and 'processing' 502 jobs, it enters the 'idle' state as usual. An operator that is 503 monitoring Printer state changes will know when the Printer has 504 completed all current jobs because the Printer enters the 'idle' 505 state. 507 This operation MUST NOT affect the acceptance of Job Creation 508 requests (see Disable-Printer section 3.1.1), except to put the Jobs 509 into the 'pending-held' state, instead of the 'pending' or 510 'processing' state. 512 The IPP Printer MUST accept the request in any state, MUST NOT 513 transition the Printer to any other "printer-state", and MUST add the 514 'hold-new-jobs' value to the Printer's "printer-state-reasons" 515 attribute (whether the value was present or not). 517 Access Rights: The authenticated user (see [RFC2911] section 8.3) 518 performing this operation must be an operator or administrator of the 519 Printer object (see [RFC2911] Sections 1 and 8.5). 521 The Hold-New-Jobs Request and Hold-New-Jobs Response have the same 522 attribute groups and attributes as the Pause-Printer operation (see 523 [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the new "printer- 524 message-from-operator" operation attribute (see section 6). 526 3.3.2 Release-Held-New-Jobs operation 528 This OPTIONAL operation allows a client to undo the effect of a 529 previous Hold-New-Jobs operation. In particular, the Printer 530 releases all of the jobs that it had held as a consequence of a Hold- 531 New-Jobs operations, i.e., while the 'hold-new-jobs' value was 532 present in the Printer's "printer-state-reasons" attribute. In 533 addition, the Printer MUST accept this request in any state, MUST NOT 534 transition the Printer to any other "printer-state", and MUST remove 535 the 'hold-new-jobs' value from its "printer-state-reasons" attribute 536 (whether the value was present or not) so that the Printer no longer 537 holds newly created jobs. 539 Access Rights: The authenticated user (see [RFC2911] section 8.3) 540 performing this operation must be an operator or administrator of the 541 Printer object (see [RFC2911] Sections 1 and 8.5). 543 The Release-Held-New-Jobs Request and Release-Held-New-Jobs Response 544 have the same attribute groups and attributes as the Pause-Printer 545 operation (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the 546 new "printer-message-from-operator" operation attribute (see section 547 6). 549 3.4 Deactivate and Activate Printer Operations 551 This section defines the OPTIONAL Deactivate-Printer and Activate- 552 Printer operations that stop and start the IPP Printer object from 553 accepting all requests except queries and performing work. If either 554 of these operations are supported, both MUST be supported. 556 These operations allow the operator to put the Printer into a dormant 557 read-only condition and to take it out of such a condition. These 558 operations are a combination of the Deactivate and Pause operations, 559 plus preventing the acceptance of any other requests, except queries. 561 3.4.1 Deactivate-Printer operation 563 This OPTIONAL operation allows a client to stop the Printer object 564 from starting to send IPP jobs to any of its Output Devices or 565 Subordinate Printers (Pause-Printer-After-Current-Job) and stop the 566 Printer object from accepting any, but query requests. The Printer 567 performs a Disable-Printer and a Pause-Printer-After-Current-Job 568 operation immediately, including use of all of the "printer-state- 569 reasons" if these two operations cannot be completed immediately. In 570 addition, the Printer MUST immediately reject all requests, except 571 Activate-Printer, queries (Get-Printer-Attributes, Get-Job- 572 Attributes, Get-Jobs, etc.), Send-Document, and Send-URI (so that 573 partial job submission can be completed - see section 3.1.1) and 574 return the 'server-error-service-unavailable' status code. 576 The IPP Printer MUST accept the request in any state. Immediately, 577 the Printer MUST set the 'deactivated' value in its "printer-state- 578 reasons" attribute. Note: neither the Disable-Printer nor the Pause- 579 Printer-After-Current-Job set the 'deactivated' value. 581 Access Rights: The authenticated user (see [RFC2911] section 8.3) 582 performing this operation must be an operator or administrator of the 583 Printer object (see [RFC2911] Sections 1 and 8.5). 585 The Deactivate-Printer Request and Deactivate-Printer Response have 586 the same attribute groups and attributes as the Pause-Printer 587 operation (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the 588 new "printer-message-from-operator" operation attribute (see section 589 6). 591 3.4.2 Activate-Printer operation 593 This OPTIONAL operation allows a client to undo the effects of the 594 Deactivate-Printer, i.e., allow the Printer object to start sending 595 IPP jobs to any of its Output Devices or Subordinate Printers (Pause- 596 Printer-After-Current-Job) and start the Printer object from 597 accepting any requests. The Printer performs an Enable-Printer and a 598 Resume-Printer operation immediately. In addition, the Printer MUST 599 immediately start accepting all requests. 601 The IPP Printer MUST accept the request in any state. Immediately, 602 the Printer MUST immediately remove the 'deactivated' value from its 603 "printer-state-reasons" attribute (whether present or not). 605 Access Rights: The authenticated user (see [RFC2911] section 8.3) 606 performing this operation must be an operator or administrator of the 607 Printer object (see [RFC2911] Sections 1 and 8.5). 609 The Activate-Printer Request and Activate-Printer Response have the 610 same attribute groups and attributes as the Pause-Printer operation 611 (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the new 612 "printer-message-from-operator" operation attribute (see section 6). 614 3.5 Restart-Printer, Shutdown-Printer, and Startup-Printer operations 616 This section defines the OPTIONAL Restart-Printer, Shutdown-Printer, 617 and Startup-Printer operations that initialize, shutdown, and startup 618 the Printer object, respectively. Each of these operations is 619 OPTIONAL and any combination MAY be supported. 621 3.5.1 Restart-Printer operation 623 This OPTIONAL operation allows a client to restart a Printer object 624 whose operation is in need of initialization because of incorrect or 625 erratic behavior, i.e., perform the effect of a software re-boot. 626 The implementation MUST attempt to save any information about Jobs 627 and the Printer object before re-initializing. However, this 628 operation MAY have drastic consequences on the running system, so the 629 client SHOULD first try the Deactivate-Printer operation to minimize 630 the effect on the current state of the system. The effects of 631 previous Disable-Printer, Pause Printer, and Deactivate-Printer 632 operations are lost. 634 The IPP Printer MUST accept the request in any state. The Printer 635 object MUST initialize its Printer's "printer-state" to 'idle', 636 remove the state reasons from its "printer-state-reasons" attribute, 637 and its "printer-is-accepting-jobs" attribute to 'true'. 639 Access Rights: The authenticated user (see [RFC2911] section 8.3) 640 performing this operation must be an operator or administrator of the 641 Printer object (see [RFC2911] Sections 1 and 8.5). 643 The Restart-Printer Request and Restart-Printer Response have the 644 same attribute groups and attributes as the Pause-Printer operation 645 (see [RFC2911] sections 3.2.8.1 and 3.2.8.2), including the new 646 "printer-message-from-operator" operation attribute (see section 6). 648 3.5.2 Shutdown-Printer Operation 650 This OPTIONAL operation allows a client to shutdown a Printer, i.e., 651 stop processing jobs without losing any jobs and make the Printer 652 object no longer available for any operations using the IPP protocol. 653 There is no way to bring the instance of the Printer object back to 654 being used, except for the Startup-Printer (see section 3.5.3) which 655 starts up a new instance of the Printer object for hosted 656 implementations. The purpose of Shutdown-Printer is to shutdown the 657 Printer for an extended period, not to reset the device(s) or modify 658 a Printer attribute. See Restart-Printer (section 3.5.1) and 659 Startup-Printer (section 3.5.3) for the way to initialize the 660 software. See the Disable-Printer operation (section 3.1) for a way 661 for the client to stop the Printer from accepting Job Creation 662 requests without stopping processing or shutting down. 664 The Printer MUST add the 'shutdown' value (see [RFC2911] section 665 4.4.11) immediately to its "printer-state-reasons" Printer 666 Description attribute and performs a Deactivate-Printer operation 667 (see section 3.4.1) which performs a Disable-Printer and Pause- 668 Printer-After-Current-Job operation). 670 Note: In order to shutdown the Printer after all the currently 671 submitted jobs have completed, the operator issues a Disable-Printer 672 operation (see section 3.1.1) and then waits until all the jobs have 673 completed and the Printer goes into the 'idle' state before issuing 674 the Shutdown-Printer operation. 676 The Printer object MUST accept this operation in any state and 677 transition the Printer object through the "printer-states" and 678 "printer-state-reasons" defined for the Pause-Printer-After-Current- 679 Job operation until the activity is completed and the Printer object 680 disappears. 682 Access Rights: The authenticated user (see [RFC2911] section 8.3) 683 performing this operation must be an operator or administrator of the 684 Printer object (see [RFC2911] Sections 1 and 8.5). 686 The Shutdown-Printer Request and Shutdown-Printer Response have the 687 same attribute groups and attributes as the Pause-Printer operation 688 (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the new 689 "printer-message-from-operator" operation attribute (see section 6). 691 3.5.3 Startup-Printer operation 693 This OPTIONAL operation allows a client to startup an instance of a 694 Printer object, provided that there isn't one already instantiated. 695 The purpose of Startup-Printer is to allow a hosted implementation of 696 the IPP Printer object (i.e., a Server that implements an IPP Printer 697 on behalf of a networked or local Output Device) to be started after 698 the host is available (by means outside this document). See Restart- 699 Printer (section 3.5.1) for the way to initialize the software or 700 reset the Output Device(s) when the IPP Printer object has already 701 been instantiated. 703 The host MUST accept this operation only when the Printer object has 704 not been instantiated. If the Printer object already exists, the 705 host must return the 'client-error-not-possible' status code. 707 The result of this operation MUST be with the Printer object's 708 "printer-state" set to 'idle', the state reasons removed from its 709 "printer-state-reasons" attribute, and its "printer-is-accepting- 710 jobs" attribute set to 'false'. Then the operator can reconfigure 711 the Printer before performing an Enable-Printer operation. However, 712 when a Printer is first powered up, it is RECOMMENDED that its 713 "printer-is-accepting-jobs" attribute be set to 'true' in order to 714 achieve easy "out of the box" operation. 716 Access Rights: The authenticated user (see [RFC2911] section 8.3) 717 performing this operation must be an operator or administrator of the 718 Printer object (see [RFC2911] Sections 1 and 8.5). 720 The Shutdown-Printer Request and Shutdown-Printer Response have the 721 same attribute groups and attributes as the Pause-Printer operation 722 (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the new 723 "printer-message-from-operator" operation attribute (see section 6). 725 4 Definition of the Job Operations 727 All Job operations are directed at Job objects. A client MUST always 728 supply some means of identifying the Job object in order to identify 729 the correct target of the operation. That job identification MAY 730 either be a single Job URI or a combination of a Printer URI with a 731 Job ID. The IPP object implementation MUST support both forms of 732 identification for every job. 734 The Job Operations defined in this document are summarized in Table 735 4: 737 Table 4 - Job operation Operation-Id assignments 738 Operation Name Operation- Brief description 739 Id 741 Reprocess-Job 0x2C Creates a copy of a completed target 742 job with a new Job ID and processes it 743 Cancel-Current- 0x2D Cancels the current job on the target 744 Job Printer or the specified job if it is 745 the current job 746 Suspend- 0x2E Suspends the current processing job on 747 Current-Job the target Printer or the specified 748 job if it is the current job, allowing 749 other jobs to be processed instead 750 Resume-Job 0x2F Resume the suspended target job 751 Promote-Job 0x30 Promote the pending target job to be 752 next after the current job(s) complete 753 Schedule-Job- 0x31 Schedule the target job immediately 754 After after the specified job, all other 755 scheduling factors being equal. 757 4.1 Reprocess-Job Operation 759 This OPTIONAL operation is a create job operation that allows a 760 client to re-process a copy of a job that had been retained in the 761 queue after processing completed, was canceled, or was aborted (see 762 [RFC2911] section 4.3.7.2). This operation is the same as the 763 Restart-Job operation (see [RFC2911] section 3.3.7), except that the 764 Printer creates a new job that is a copy of the target job and the 765 target job is unchanged. The new job is assigned new values to the 766 "job-uri" and "job-id" attributes and the new job's Job Description 767 attributes that accumulate job progress, such as "job-impressions- 768 completed", "job-media-sheets-completed", and "job-k-octets- 769 processed", are initialized to 0 as with any create job operation. 770 The target job moves to the Job History after a suitable period, 771 independent of whether one or more Reprocess-Job operations have been 772 performed on it. 774 If the Set-Job-Attributes operation is supported, then the "job-hold- 775 until" operation attribute MUST be supported with at least the 776 'indefinite' value, so that a client can modify the new job before it 777 is scheduled for processing using the Set-Job-Attributes operation. 778 After modifying the job, the client can release the job for 779 processing, by using the Release-Job operation specifying the newly 780 assigned "job-uri" or "job-id" for the new job. 782 4.2 Cancel-Current-Job Operation 784 This OPTIONAL operation allows a client to cancel the current job on 785 the target Printer or the specified job if it is the current job on 786 the Printer. See [RFC2911] section 3.3.3 for the semantics of 787 canceling a job. Since a Job might already be marking by the time a 788 Cancel-Current-Job is received, some media sheet pages might be 789 printed before the job is actually terminated. 791 If the client does not supply a "job-id" operation attribute, the 792 Printer MUST accept the request and cancel the current job if there 793 is a current job in the 'processing' or 'processing-stopped' state; 794 otherwise, it MUST reject the request and return the 'client-error- 795 not-possible' status code. If more than one job is in the 796 'processing' or 'processing-stopped' states, the one that is marking 797 is canceled and the others are unaffected. 799 Warning: On a shared printer, there is a race condition. Between 800 the time that a user issues this operation and its acceptance, the 801 current job might change to a different job. If the user or operator 802 is authenticated to cancel the new job, the wrong job is canceled. 803 To prevent this race from canceling the wrong job, the client MAY 804 supply the "job-id" operation attribute which is checked against the 805 current job's job-id. If the job identified by the "job-id" 806 attribute is not the current job on the Printer, i.e., is not in the 807 'processing' or 'processing-stopped' states, the Printer MUST reject 808 this operation and return the 'client-error-not-possible' status 809 code. Otherwise, the Printer cancels the specified job. 811 Access Rights: The authenticated user (see [RFC2911] section 8.3) 812 performing this operation must either be the job owner (as determined 813 in the Job Creation operation) or an operator or administrator of the 814 Printer object (see [RFC2911] Sections 1 and 8.5). 816 The Cancel-Current-Job Request and Cancel-Current-Job Response have 817 the same attribute groups and attributes as the Resume-Printer 818 operation (see [RFC2911] section 3.2.8), including the new "job- 819 message-from-operator" operation attribute (see section 6), with the 820 addition of the following Group 1 Operation attributes in the 821 request: 823 "job-id" (integer(1:MAX)): 824 The client OPTIONALLY supplies this Operation attribute in 825 order to verify that the identified job is still the current 826 job on the target Printer object. The IPP object MUST supports 827 this operation attribute, if it supports this operation. 829 4.3 Suspend and Resume Job operations 831 This section defines the Suspend-Current-Job and Resume-Job 832 operations. These operations allow an operator or user to suspend a 833 job while it is processing and allow other jobs to be processed and 834 the resume the suspended job at a later point in time without losing 835 any of the output. 837 If either of these operations is supported, they both MUST be 838 supported. 840 The Hold-Job and Release-Job operations ([RFC2911] section 3.3.5) are 841 for holding and releasing held jobs, not suspending and resuming 842 suspended jobs. 844 4.3.1 Suspend-Current-Job operation 846 This OPTIONAL operation allows a client to stop the current job on 847 the target Printer or the specified job if it is the current job on 848 the Printer, and allow other jobs to be processed instead. The 849 Printer moves the current job or the target job to the 'processing- 850 stopped' state and sets the 'job-suspended' value (see section 9.1) 851 in the job's "job-state-reasons" attribute and processes other jobs. 853 If the client does not supply a "job-id" operation attribute, the 854 Printer MUST accept the request and suspend the current job if there 855 is a current job in the 'processing' or 'processing-stopped' state; 856 otherwise, it MUST reject the request and return the 'client-error- 857 not-possible' status code. If more than one job is in the 858 'processing' or 'processing-stopped' states, all of them are 859 suspended. 861 Warning: On a shared printer, there is a race condition. Between 862 the time that a user issues this operation and its acceptance, the 863 current job might change to a different job. If the user or operator 864 is authenticated to suspend the new job, the wrong job is suspended. 865 To prevent this race from pausing the wrong job, the client MAY 866 supply the "job-id" operation attribute which is checked against the 867 current job's job-id. If the job identified by the "job-id" 868 attribute is not the current job on the Printer, i.e., is not in the 869 'processing' or 'processing-stopped' states, the Printer MUST reject 870 this operation and return the 'client-error-not-possible' status 871 code. Otherwise, the Printer suspends the specified job and 872 processed other jobs. 874 The Printer MUST reject a Resume-Job request (and return the 'client- 875 error-not-possible') for a job that has been suspended , i.e., for a 876 job in the 'processing-stopped' state, with the 'job-suspended' value 877 in its "job-state-reasons" attribute. 879 Access Rights: The authenticated user (see [RFC2911] section 8.3) 880 performing this operation must either be the job owner (as determined 881 in the Job Creation operation) or an operator or administrator of the 882 Printer object (see [RFC2911] Sections 1 and 8.5). 884 The Suspend-Current-Job Request and Suspend-Current-Job Response have 885 the same attribute groups and attributes as the Pause-Printer 886 operation (see [RFC2911] section 3.2.8 ), including the new "job- 887 message-from-operator" operation attribute (see section 6), with the 888 addition of the following Group 1 Operation attributes in the 889 request: 891 "job-id" (integer(1:MAX)): 892 The client OPTIONALLY supplies this Operation attribute in 893 order to verify that the identified job is still the current 894 job on the target Printer object. The IPP object MUST supports 895 this operation attribute, if it supports this operation. 897 4.3.2 Resume-Job operation 899 This OPTIONAL operation allows a client to resume the target job at 900 the point where it was suspended. The Printer moves the target job 901 to the 'pending' state and removes the 'job-suspended' value from the 902 job's "job-state-reasons" attribute. 904 If the target job is not in the 'processing-stopped' state with the 905 'job-suspended' value in the job's "job-state-reasons" attribute, the 906 Printer MUST reject the request and return the 'client-error-not- 907 possible' status code, since the job was not suspended. 909 Access Rights: The authenticated user (see [RFC2911] section 8.3) 910 performing this operation must either be the job owner (as determined 911 in the Job Creation operation) or an operator or administrator of the 912 Printer object (see [RFC2911] Sections 1 and 8.5). 914 The Resume-Job Request and Resume-Job Response have the same 915 attribute groups and attributes as the Release-Job operation (see 916 [RFC2911] section 3.3.6), including the new "job-message-from- 917 operator" operation attribute (see section 6). 919 4.4 Job Scheduling Operations 921 This section defines jobs that allow an operator to control the 922 scheduling of jobs. 924 4.4.1 Promote-Job operation 926 This OPTIONAL operation allows a client to make the pending target 927 job be processed next after the current job completes. This 928 operation is specially useful in a production printing environment 929 where the operator is involved in job scheduling. 931 If the target job is in the 'pending' state, this operation does not 932 change the job's state, but causes the job to be processed after the 933 current job(s) complete. If the target job is not in the 'pending' 934 state, the Printer MUST reject the request and return the 'client- 935 error-not-possible' status code. 937 If the Printer implements the "job-priority" Job Template attribute 938 (see [RFC2911] section 4.2.1), the Printer sets the job's "job- 939 priority" to the highest value supported (so that the job will print 940 before any of the other pending jobs). The Printer returns the 941 target job immediately after the current job(s) in a Get-Jobs 942 response (see [RFC2911] section 3.2.6) for the 'not-completed' jobs. 944 When the current job completes, is canceled, suspended (see section 945 4.3.1), or aborted, the target of this operation is processed next. 947 If a client issues this request (again) before the target of the 948 operation of the original request started processing, the target of 949 this new request is processed before the previous job that was to be 950 processed next. 952 IPP is specified not to require queues for job scheduling, since 953 there are other implementation techniques for scheduling multiple 954 jobs, such as re-evaluating a criteria function for each job on a 955 scheduling cycle. However, if an implementation does implement 956 queues for jobs, then the Promote-Job puts the specified job at the 957 front of the queue. A subsequent Promote-Job before the first job 958 starts processing puts that specified job at the front of the queue, 959 so that it is "in front" of the previously promoted job. 961 Access Rights: The authenticated user (see [RFC2911] section 8.3) 962 performing this operation must be an operator or administrator of the 963 Printer object (see [RFC2911] Sections 1 and 8.5). 965 The Promote-Job Request and Promote-Job Response have the same 966 attribute groups and attributes as the Cancel-Job operation (see 967 [RFC2911] section 3.3.3), including the new "job-message-from- 968 operator" operation attribute (see section 6). 970 4.4.2 Schedule-Job-After operation 972 This OPTIONAL operation allows a client to request the Printer to 973 schedule the target job so that it will be processed immediately 974 after the specified predecessor job, all other scheduling factors 975 being equal. This operation is specially useful in a production 976 printing environment where the operator is involved in job 977 scheduling. 979 If the target job is in the 'pending' state, this operation does not 980 change the job's state, but causes the job to be processed after the 981 predecessor job completes. The predecessor job can be in the 982 'pending', 'processing', or 'processing-stopped' states. If the 983 target job is not in the 'pending' state or the predecessor job is 984 not in the 'pending', 'processing', or 'processing-stopped' states, 985 the Printer MUST reject the request and returns the 'client-error- 986 not-possible' status code, since the job cannot have its position 987 changed. 989 If the Printer implements the "job-priority" Job Template attribute 990 (see [RFC2911] section 4.2.1), the Printer sets the job's "job- 991 priority" to that of the predecessor job (so that the job will print 992 after the predecessor job). The Printer returns the target job 993 immediately after the predecessor in a Get-Jobs response (see 994 [RFC2911] section 3.2.6) for the 'not-completed' jobs. 996 When the predecessor job completes processing or is canceled or 997 aborted while processing, the target of this operation is processed 998 next. 1000 If the client does not supply a predecessor job, this operation has 1001 the same semantics as Promote-Job (see section 4.4). 1003 IPP is specified not to require queues for job scheduling, since 1004 there are other implementation techniques for scheduling multiple 1005 jobs, such as re-evaluating a criteria function for each job on a 1006 scheduling cycle. However, if an implementation does implement 1007 queues for jobs, then the Schedule-Job-After operation puts the 1008 specified job immediately after the specified job in the queue. A 1009 subsequent Schedule-Job-After operation specifying the same job will 1010 cause its target job to be placed after that job, even though it is 1011 between the first target job and the specified job. For example, 1012 suppose the job queue consisted of jobs: A, B, C, D, and E, in that 1013 order. A Schedule-Job-After with job E as the target and B as the 1014 specified job would result in the following queue: A, B, E, C, D. A 1015 subsequent Schedule-Job-After with Job D as the target and B as the 1016 specified job would result in the following queue: A, B, D, E, C. 1017 In other words, the link between the two jobs in a Schedule-Job-After 1018 operation is not retained, i.e., there is no attribute on either job 1019 that points to the other job as a result of this operation. 1021 Access Rights: The authenticated user (see [RFC2911] section 8.3) 1022 performing this operation must be operator or administrator of the 1023 Printer object (see [RFC2911] Sections 1 and 8.5). 1025 The Schedule-Job-After Request have the same attribute groups and 1026 attributes as the Cancel-Job operation (see [RFC2911] section 3.3.3), 1027 plus the new "job-message-from-operator" operation attribute (see 1028 section 6). In addition, the following operation attributes are 1029 defined: 1031 "predecessor-job-id": 1032 The client OPTIONALLY supplies this attribute. The Printer 1033 MUST support it, if it supports this operation. This attribute 1034 specifies the job after which the target job is to be 1035 processed. If the client omits this attribute, the Printer 1036 MUST process the target job next, i.e., after the current job, 1037 if any. 1039 The Schedule-Job-After Response has the same attribute groups, 1040 attributes, and status codes as the Cancel-Job operation (see 1041 [RFC2911] section 3.3.3). The following status codes have particular 1042 meaning for this operation: 1044 'client-error-not-possible' - the target job was not in the 1045 'pending' state or the predecessor job was no in the 'pending', 1046 'processing', or 'processing-stopped' states. 1047 'client-error-not-found' - either the target job or the 1048 predecessor job was not found. 1050 5 Additional status codes 1052 This section defines new status codes used by the operations defined 1053 in this document. 1055 5.1 'server-error-printer-is-deactivated' (0x050A) 1057 The Printer has been deactivated using the Deactivate-Printer 1058 operation and is only accepting the Activate-Printer (see section 1059 3.5.1), Get-Job-Attributes, Get-Jobs, Get-Printer-Attributes, and any 1060 other Get-Xxxx operations. An operator can perform the Activate- 1061 Printer operation to allow the Printer to accept other operations. 1063 6 Use of Operation Attributes that are Messages from the Operator 1065 This section summarizes the usage of the "printer-message-from- 1066 operator" and "job-message-from-operator" operation attributes 1067 [RFC3380] that set the corresponding Printer and Job Description 1068 attributes (see [RFC2911] for the definition of these Description 1069 attributes). These operation attributes are defined for most of the 1070 Printer and Job operations that operators are likely to perform, 1071 respectively, so that operators can indicate the reasons for their 1072 actions. 1074 Table 5 shows the operation attributes that are defined for use with 1075 the Printer Operations. 1077 Table 5 - Operation attribute support for Printer Operations 1078 Operation Attribute A B 1080 attributes-charset REQ REQ 1081 attributes-natural-language REQ REQ 1082 printer-uri REQ REQ 1083 requesting-user-name REQ REQ 1084 printer-message-from-operator Note OPT 1086 Legend: 1087 A: Get-Printer-Attributes, Set-Printer-Attributes 1088 B: All other Printer administrative operations, including, but not 1089 limited to: Pause-Printer, Pause-Printer-After-Current-Job, Resume- 1090 Printer, Hold-New-Jobs, Release-Held-New-Jobs, Purge-Jobs, , Enable- 1091 Print, Disable-Printer, Restart-Printer, Shutdown-Printer, and 1092 Startup-Printer. 1094 REQ - REQUIRED for a Printer to support 1095 OPT - OPTIONAL for a Printer to support; the Printer ignores the 1096 attribute if not supported 1097 Note - According to [RFC3380], the Client MUST NOT supply the 1098 "printer-message-from-operator" operation attribute in a 1099 Get-Printer-Attributes or Set-Printer-Attributes operation; 1100 the Printer MUST ignore this operation attribute in these 1101 two operations. Instead, the client when used by an 1102 operator MUST supply the "printer-message-from-operator" as 1103 (one of the) explicit attributes being set on the Printer 1104 object with the Set-Printer-Attributes operation. 1106 Table 6 shows the operation attributes that are defined for use with 1107 the Job operations. 1109 Table 6 - Operation attribute support for Job operations 1110 Operation Attribute A B C F 1112 attributes-charset REQ REQ REQ REQ 1113 attributes-natural-language REQ REQ REQ REQ 1114 printer-uri REQ REQ REQ REQ 1115 job-uri REQ REQ REQ 1116 job-id REQ REQ REQ REQ 1117 requesting-user-name REQ REQ REQ REQ 1118 job-message-from-operator OPT OPT OPT Note 1119 message*** OPT OPT OPT n/a 1120 job-hold-until n/a n/a OPT* n/a 1121 Legend: 1122 A: Cancel-Job, Resume-Job, Restart-Job, Promote-Job, Schedule-Job- 1123 After 1124 B: Cancel-Current-Job, Suspend-Current-Job 1125 C: Hold-Job, Release-Job, Reprocess-Job 1126 F: Get-Job-Attributes, Set-Job-Attributes 1128 REQ - REQUIRED for a Printer to support 1129 OPT - OPTIONAL for a Printer to support; the Printer ignores the 1130 attribute if supplied, but not supported 1131 n/a - not applicable for use with the operation; the Printer ignores 1132 the attribute 1133 Note - According to [RFC3380], the Client MUST NOT supply the "job- 1134 message-from-operator" operation attribute in a Get-Job- 1135 Attributes or Set-Job-Attributes operation; the Printer MUST 1136 ignore this operation attribute in these two operations. 1137 Instead, the client when used by an operator MUST supply the 1138 "job-message-from-operator" as (one of the) explicit attributes 1139 being set on the Job object with the Set-Job-Attributes 1140 operation. 1141 * - The Printer MUST support the "job-hold-until" operation 1142 attribute if it supports the "job-hold-until" Job Template 1143 attribute. For the Reprocess-Job operation the client can hold 1144 the job and then modify the job before releasing it to be 1145 processed. 1147 ** - In [RFC2911] the "message" operation attribute is defined to 1148 contain a message to the operator but [RFC2911] does not define 1149 a Job Description to store the message. 1151 7 New Printer Description Attributes 1153 The following new Printer Description attributes are needed to 1154 support the new operations defined in this document and the concepts 1155 of Printer Fan-Out (see section 10). 1157 7.1 subordinate-printers-supported (1setOf uri) 1159 This Printer attribute is REQUIRED if an implementation supports 1160 Subordinate Printers (see section 10) and contains the URIs of the 1161 immediate Subordinate Printer object(s) associated with this Printer 1162 object. Each Non-Leaf Printer object MUST support this Printer 1163 Description attribute. A Leaf Printer object either does not support 1164 the "subordinate-printers-supported" attribute or does so with the 1165 'no-value' out-of-band value (see [RFC2911] section 4.1), depending 1166 on implementation. 1168 The precise format of the Subordinate Printer URIs is implementation 1169 dependent (see section 10.4). 1171 If the Printer object does not have an associated Output Device, the 1172 Printer MAY automatically copy the value of the Subordinate Printer 1173 object's "printer-name" attribute to the Job object's "output- 1174 device-assigned" attribute (see [RFC2911] section 4.3.13). The 1175 "output-device-assigned" Job attribute identifies the Output Device 1176 to which the Printer object has assigned a job, for example, when a 1177 single Printer object is supporting Device Fan-Out or Printer Fan- 1178 Out. 1180 7.2 parent-printers-supported (1setOf uri) 1182 This Printer attribute is REQUIRED if an implementation supports 1183 Subordinate Printers (see section 10) and contains the URI of the 1184 Non-Leaf printer object(s) for which this Printer object is the 1185 immediate Subordinate, i.e., this Printer's immediate "parent" or 1186 "parents". Each Subordinate Printer object MUST support this Printer 1187 Description attribute. A Printer that has no parents, either does 1188 not support the "parent-printers-supported" attribute or does so with 1189 the 'no-value' out-of-band value (see [RFC2911] section 4.1), 1190 depending on implementation. 1192 8 Additional Values for the "printer-state-reasons" Printer Description 1193 attribute 1195 This section defines additional values for the "printer-state- 1196 reasons" Printer Description attribute. 1198 8.1 'hold-new-jobs' value 1200 'hold-new-jobs': The operator has issued the Hold-New-Jobs operation 1201 (see section 3.3.1) or other means, but the output-device(s) are 1202 taking an appreciable time to stop. Later, when all output has 1203 stopped, the "printer-state" becomes 'stopped', and the 'paused' 1204 value replaces the 'moving-to-paused' value in the "printer-state- 1205 reasons" attribute. This value MUST be supported, if the Hold- 1206 New-Jobs operation is supported and the implementation takes 1207 significant time to pause a device in certain circumstances. 1209 8.2 'deactivated' value 1211 'deactivated': A client has issued a Deactivate-Printer operation 1212 for the Printer object (see section 3.4.1) and the Printer is in 1213 the process of becoming deactivated or has become deactivated. The 1214 Printer MUST reject all requests except Activate-Printer, queries 1215 (Get-Printer-Attributes, Get-Job-Attributes, Get-Jobs, etc.), 1216 Send-Document, and Send-URI (so that partial job submission can be 1217 completed - see section 3.1.1) and return the 'server-error- 1218 service-unavailable' status code. 1220 9 Additional Values for the "job-state-reasons" Job Description 1221 attribute 1223 This section defines additional values for the "job-state-reasons" 1224 Job Description attribute. 1226 9.1 'job-suspended' value 1228 'job-suspended': The job has been suspended while processing 1229 using the Suspend-Current-Job operation and other jobs can be 1230 processed on the Printer. The Job can be resumed using the 1231 Resume-Job operation which removes this value. 1233 10 Use of the Printer object to represent IPP Printer Fan-Out and IPP 1234 Printer Fan-In 1236 This section defines how the Printer object MAY be used to represent 1237 IPP Printer Fan-Out and IPP Printer Fan-In. Fan-Out is where an IPP 1238 Printer is used to represent other IPP Printer objects. Fan-In is 1239 where several IPP Printer objects are used to represent another IPP 1240 Printer object. 1242 10.1 IPP Printer Fan-Out 1244 The IPP/1.1 Model and Semantics introduces the semantic concept of an 1245 IPP Printer object that represents more than one Output Device (see 1246 [RFC2911] section 2.1). This concept is called "Output Device Fan- 1247 Out". However, there was no way to represent the individual states 1248 of the Output Devices or to perform operations on a specific Output 1249 Device when there was Fan-Out. This document generalizes the 1250 semantics of the Printer object to represent such Subordinate Fan-Out 1251 Output Devices as IPP Printer objects. This concept is called 1252 "Printer object Fan-Out". A Printer object that has a Subordinate 1253 Printer object is called a Non-Leaf Printer object. Thus a Non-Leaf 1254 Printer object supports one or more Subordinate Printer objects in 1255 order to represent Printer object Fan-Out. A Printer object that does 1256 not have any Subordinate Printer objects is called a Leaf Printer 1257 object. 1259 Each Non-Leaf Printer object submits jobs to its immediate 1260 Subordinate Printers and otherwise controls the Subordinate Printers 1261 using IPP or other protocols. Whether pending jobs are kept in the 1262 Non-Leaf Printer until a Subordinate Printer can accept them or are 1263 kept in the Subordinate Printers depends on implementation and/or 1264 configuration policy. Furthermore, a Subordinate Printer object MAY, 1265 in turn, have Subordinate Printer objects. Thus a Printer object can 1266 be both a Non-Leaf Printer and a Subordinate Printer. 1268 A Subordinate Printer object MUST be a conforming Printer object, so 1269 it MUST support all of the REQUIRED [RFC2911] operations and 1270 attributes. However, with access control, the Subordinate Printer 1271 MAY be configured so that end-user clients are not permitted to 1272 perform any operations (or just Get-Printer-Attributes) while one or 1273 more Non-Leaf Printer object(s) are permitted to perform any 1274 operation. 1276 10.2 IPP Printer Fan-In 1278 The IPP/1.1 Model and Semantics did not preclude the semantic concept 1279 of multiple IPP Printer objects that represent a single Output Device 1280 (see [RFC2911] section 2.1). However, there was no way for the 1281 client to determine that there was a Fan-In configuration, nor was 1282 there a way to perform operations on the Subordinate device. This 1283 specification generalizes the semantics of the Printer object to 1284 allow several Non-Leaf IPP Printer objects to represent a single 1285 Subordinate Printer object. Thus a Non-Leaf Printer object MAY share 1286 a Subordinate Printer object with one or more other Non-Leaf Printer 1287 objects in order to represent IPP Printer Fan-In. 1289 As with Fan-Out (see section 10.1), when a Printer object is a Non- 1290 Leaf Printer, it MUST NOT have an associated Output Device. As with 1291 Fan-Out, a Leaf Printer object has one or more associated Output 1292 Devices. As with Fan-Out, the Non-Leaf Printer objects submit jobs 1293 to their Subordinate Printer objects and otherwise control the 1294 Subordinate Printer. As with Fan-Out, whether pending jobs are kept 1295 in the Non-Leaf Printers until the Subordinate Printer can accept 1296 them or are kept in the Subordinate Printer depends on implementation 1297 and/or configuration policy. 1299 10.3 Printer object attributes used to represent Printer Fan-Out and 1300 Printer Fan-In 1302 The following Printer Description attributes are defined to represent 1303 the relationship between Printer object(s) and their Subordinate 1304 Printer object(s): 1306 1. "subordinate-printers-supported" (1setOf uri) - contains the URI 1307 of the immediate Subordinate Printer object(s). 1309 2. "parent-printers-supported (1setOf uri) - contains the URI of 1310 the Non-Leaf printer object(s) for which this Printer object is 1311 the immediate Subordinate, i.e., this Printer's immediate 1312 "parent" or "parents". 1314 10.4 Subordinate Printer URI 1316 Each Subordinate Printer object has a URI which is used as the target 1317 of each operation on the Subordinate Printer. The means for 1318 configuring URIs for Subordinate Printer objects is implementation- 1319 dependent as are all URIs. However, there are two distinct 1320 approaches: 1322 a. When the implementation wants to make sure that no operation on 1323 a Subordinate Printer object as a target "sneaks by" the parent 1324 Printer object (or the Subordinate Printer is fronting for a device 1325 that is not networked), the host part of the URI specifies the host 1326 of the parent Printer. Then the parent Printer object can easily 1327 reflect the state of the Subordinate Printer objects in the 1328 parent's Printer object state and state reasons as the operation 1329 passes "through" the parent Printer object. 1331 b. When the Subordinate Printer is networked and the implementation 1332 allows operations to go directly to the Subordinate Printer (with 1333 proper access control) without knowledge of the parent Printer 1334 object, the host part of the URI is different than the host part of 1335 the parent Printer object. In such a case, the parent Printer 1336 object MAY keep its "printer-state" and "printer-state-reasons" up 1337 to date, either by polling the Subordinate Printer object or by 1338 subscribing to events with the Subordinate Printer object (see 1339 [ipp-ntfy] for means to subscribe to event notification when the 1340 Subordinate Printer object supports IPP notification). 1341 Alternatively, the parent Printer MAY wait until its "printer- 1342 state" and "printer-state-reasons" attributes are queried and then 1343 query all its Subordinate Printers in order to return the correct 1344 values. 1346 10.5 Printer object attributes used to represent Output Device Fan-Out 1348 Only Leaf IPP Printer objects are allowed to have one or more 1349 associated Output Devices. Each Leaf Printer object MAY support the 1350 "output-devices-supported" (1setOf name(127)) to indicate the user- 1351 friendly name(s) of the Output Device(s) that the Leaf Printer object 1352 represents. It is RECOMMENDED that each Leaf Printer object have 1353 only one associated Output Device, so that the individual Output 1354 Devices can be represented completely and controlled completely by 1355 clients. In other words, the Leaf Printer's "output-devices- 1356 supported" attribute SHOULD have only one value. 1358 Non-Leaf Printer MUST NOT have associated Output Devices. However, a 1359 Non-Leaf Printer SHOULD support an "output-devices-supported" (1setOf 1360 name(127)) Printer Description attribute that contains all the values 1361 of its immediate Subordinate Printers. Since such Subordinate 1362 Printers MAY be Leaf or Non-Leaf, the same rules apply to them, etc. 1363 Thus any Non-Leaf Printer SHOULD have an "output-devices-supported" 1364 (1setOf name(127)) attribute that contains all the values of the 1365 Output Devices associated with Leaf Printers of its complete sub- 1366 tree. 1368 When adding, removing, or changing a configuration of Printers and 1369 Output Devices, there can be moments in time when the tree structure 1370 is not consistent. In other words, times when a Non-Leaf Printer's 1371 "subordinate-printers-supported" does not agree with the Subordinate 1372 Printer's "parent-printers-supported". Therefore, the operator 1373 SHOULD first Deactivate all Printers that are being configured in 1374 this way, update all pointer attributes, and then reactivate. A 1375 useful client tool would validate a tree structure before Activating 1376 the Printers involved. 1378 10.6 Figures to show all possible configurations 1380 Figure 1, Figure 2, and Figure 3 are taken from [RFC2911] to show the 1381 configurations possible with IPP/1.0 and IPP/1.1 where all Printer 1382 objects are Leaf Printer objects. The remaining figures show 1383 additional configurations that this document defines using Non-Leaf 1384 and Leaf Printer objects. Legend for all figures: 1386 ----> indicates a network protocol with the direction of its requests 1388 ##### indicates a Printer object which is either: 1389 - embedded in an Output Device or 1390 - hosted in a server. The Printer object 1391 might or might not be capable of queuing/spooling. 1393 any indicates any network protocol or direct 1394 connect, including IPP 1395 Output Device 1396 +---------------+ 1397 | ########### | 1398 O +--------+ | # (Leaf) # | 1399 /|\ | client |------------IPP-----------------># Printer # | 1400 / \ +--------+ | # Object # | 1401 | ########### | 1402 +---------------+ 1404 Figure 1 - Embedded Printer object 1406 ########### Output Device 1407 O +--------+ # (Leaf) # +---------------+ 1408 /|\ | client |---IPP----># Printer #---any->| | 1409 / \ +--------+ # object # | | 1410 ########### +---------------+ 1412 Figure 2 - Hosted Printer object 1414 +---------------+ 1415 | | 1416 +->| Output Device | 1417 ########### any/ | | 1418 O +--------+ # (Leaf) # / +---------------+ 1419 /|\ | client |---IPP----># Printer #--* 1420 / \ +--------+ # Object # \ +---------------+ 1421 ########### any\ | | 1422 +->| Output Device | 1423 | | 1424 +---------------+ 1426 Figure 3 - Output Device Fan-Out 1427 ########### ########### 1428 O +--------+ # Non-Leaf# # subord. # 1429 /|\ | client |---IPP----># Printer #---IPP----># Printer # 1430 / \ +--------+ # object # # object # 1431 ########### ########### 1433 The Subordinate Printer can be a Non-Leaf Printer as in Figure 4 to 1434 Figure 6, or can be a Leaf Printer as in Figure 1 to Figure 3. 1436 Figure 4 - Chained IPP Printer Objects 1438 +------IPP--------------------->########### 1439 / +---># subord. # 1440 / / # Printer # 1441 / ########### IPP # object # 1442 O +--------+ # Non-Leaf# / ########### 1443 /|\ | client |---IPP----># Printer #--* 1444 / \ +--------+ # object # \ 1445 \ ########### IPP ########### 1446 \ \ # subord. # 1447 \ +---># Printer # 1448 +------IPP---------------------># object # 1449 ########### 1451 The Subordinate Printer can be a Non-Leaf Printer as in Figure 4 to 1452 Figure 6, or can be a Leaf Printer as in Figure 1 to Figure 3. 1454 Figure 5 - IPP Printer Object Fan-Out 1456 ########### 1457 # Non-Leaf# 1458 +---># Printer #-+ 1459 / # object # \ 1460 IPP ########### \ ########### 1461 O +--------+ / +-IPP-># subord. # 1462 /|\ | client |--+-----------IPP---------------># Printer # 1463 / \ +--------+ \ +-IPP-># object # 1464 IPP ########### / ########### 1465 \ # Non-Leaf# / 1466 +---># Printer #-+ 1467 # object # 1468 ########### 1470 The Subordinate Printer can be a Non-Leaf Printer as in Figure 4, to 1471 Figure 6, or can be a Leaf Printer as in Figure 1, to Figure 3. 1473 Figure 6 - IPP Printer Object Fan-In 1475 10.7 Forwarding requests 1477 This section describes the forwarding of Job and Printer requests to 1478 Subordinate Printer objects. 1480 10.7.1 Forwarding requests that affect Printer objects 1482 In Printer Fan-Out, Printer Fan-In, and Chained Printers, the Non- 1483 Leaf IPP Printer object MUST NOT forward the operations that affect 1484 Printer objects to its Subordinate Printer objects. If a client 1485 wants to explicitly target a Subordinate Printer, the client MUST 1486 specify the URI of the Subordinate Printer. The client can 1487 determine the URI of any Subordinate Printers by querying the 1488 Printer's "subordinate-printers-supported (1setOf uri) attribute (see 1489 section 7.1). 1491 Table 7 lists the operations that affect Printer objects and the 1492 forwarding behavior that a Non-Leaf Printer MUST exhibit to its 1493 immediate Subordinate Printers. Operations that affect jobs have a 1494 different forwarding rule (see section 10.7.2 and Table 8): 1496 Table 7 - Forwarding operations that affect Printer objects 1497 Printer Operation Non-Leaf Printer action 1499 Printer Operations: 1500 Enable-Printer MUST NOT forward to any of its Subordinate 1501 Printers 1502 Disable-Printer MUST NOT forward to any of its Subordinate 1503 Printers 1504 Hold-New-Jobs MUST NOT forward to any of its Subordinate 1505 Printers 1506 Release-Held-New- MUST NOT forward to any of its Subordinate 1507 Jobs Printers 1508 Deactivate-Printer MUST NOT forward to any of its Subordinate 1509 Printers 1510 Activate-Printer MUST NOT forward to any of its Subordinate 1511 Printers 1512 Restart-Printer MUST NOT forward to any of its Subordinate 1513 Printers 1514 Shutdown-Printer MUST NOT forward to any of its Subordinate 1515 Printers 1516 Startup-Printer MUST NOT forward to any of its Subordinate 1517 Printers 1518 IPP/1.1 Printer See [RFC2911] 1519 Operations: 1520 Get-Printer- MUST NOT forward to any of its Subordinate 1521 Attributes Printers 1522 Pause-Printer MUST NOT forward to any of its Subordinate 1523 Printers 1524 Resume-Printer MUST NOT forward to any of its Subordinate 1525 Printers 1526 Set operations: See [RFC3380] 1527 Set-Printer- MUST NOT forward to any of its Subordinate 1528 Attributes Printers 1530 10.7.2 Forwarding requests that affect Jobs 1532 Unlike Printer Operations that only affect Printer objects (see 1533 section 10.7.1), a Non-Leaf Printer object MUST forward operations 1534 that directly affect jobs to the appropriate Job object(s) in one or 1535 more of its immediate Subordinate Printer objects. Forwarding is 1536 REQUIRED since the purpose of such a Job operation is to affect the 1537 indicated job which itself may have been forwarded. Such forwarding 1538 MAY be immediate or queued, depending on the operation and the 1539 implementation. For example, a Non-Leaf Printer object MAY 1540 queue/spool jobs, feeding a job at a time to its Subordinate 1541 Printer(s), or MAY forward jobs immediately to one of its Subordinate 1542 Printers. In either case, the Non-Leaf Printer object is forwarding 1543 Job Creation operations to one of its Subordinate Printers. Only the 1544 time of forwarding of the Job Creation operations depends on whether 1545 the policy is to queue/spool jobs in the Non-Leaf Printer or the 1546 Subordinate Printer. 1548 When a Non-Leaf Printer object creates a Job object in its 1549 Subordinate Printer, whether that Non-Leaf Printer object keeps a 1550 fully formed Job object or just keeps a mapping from the "job-ids" 1551 that it assigned to those assigned by its Subordinate Printer object 1552 is IMPLEMENTATION-DEPENDENT. In either case, the Non-Leaf Printer 1553 MUST be able to accept and carry out future Job operations that 1554 specify the "job-id" that the Non-Leaf Printer assigned and returned 1555 to the job submitting client. 1557 Table 8 lists the operations that directly affect jobs and the 1558 forwarding behavior that a Non-Leaf Printer MUST exhibit to its 1559 Subordinate Printers: 1561 Table 8 - Forwarding operations that affect Jobs objects 1562 Job operation Non-Leaf Printer action 1564 Job operations: 1565 Reprocess-Job MUST forward to the appropriate Job in one of 1566 its Subordinate Printers 1567 Cancel-Current- MUST NOT forward 1568 Job 1569 Resume-Job MUST forward to the appropriate Job in one of 1570 its Subordinate Printers 1571 Promote-Job MUST forward to the appropriate Job in one of 1572 its Subordinate Printers 1573 IPP/1.1 Printer 1574 Operations: 1575 Print-Job MUST forward immediately or queue to the 1576 appropriate Subordinate Printer 1577 Print-URI MUST forward immediately or queue to the 1578 appropriate Subordinate Printer 1579 Validate-Job MUST forward to the appropriate Subordinate 1580 Printer 1581 Create-Job MUST forward immediately or queue to the 1582 appropriate Subordinate Printer 1583 Get-Jobs MUST forward to all its Subordinate Printers 1584 Purge-Jobs MUST forward to all its Subordinate Printers 1585 IPP/1.1 Job 1586 operations: 1587 Send-Document MUST forward immediately or queue to the 1588 appropriate Job in one of its Subordinate 1589 Printers 1590 Send-URI MUST forward immediately or queue to the 1591 appropriate Job in one of its Subordinate 1592 Printers 1593 Cancel-Job MUST forward to the appropriate Job in one of 1594 its Subordinate Printers 1595 Get-Job- MUST forward to the appropriate Job in one of 1596 Attributes its Subordinate Printers, if the Non-Leaf 1597 Printer doesn't know the complete status of the 1598 Job object 1599 Hold-Job MUST forward to the appropriate Job in one of 1600 its Subordinate Printers 1601 Release-Job MUST forward to the appropriate Job in one of 1602 its Subordinate Printers 1603 Restart-Job MUST forward to the appropriate Job in one of 1604 its Subordinate Printers 1605 IPP Set operations: See [RFC3380] 1606 Set-Job- MUST forward to the appropriate Job in one of 1607 Attributes its Subordinate Printers 1609 When a Printer receives a request that REQUIRES forwarding, it does 1610 so on a "best efforts basis", and returns a response to its client 1611 without waiting for responses from any of its Subordinate Printers. 1612 Such forwarded requests could fail. 1614 10.8 Additional attributes to help with fan-out 1616 The following operation and Job Description attributes are defined to 1617 help represent Job relationships for Fan-Out and forwarding of jobs: 1619 10.8.1 output-device-assigned (name(127)) Job Description attribute - 1620 from [RFC2911] 1622 [RFC2911] defines "output-device-assigned" as: "This attribute 1623 identifies the Output Device to which the Printer object has assigned 1624 this job. If an Output Device implements an embedded Printer object, 1625 the Printer object NEED NOT set this attribute. If a print server 1626 implements a Printer object, the value MAY be empty (zero-length 1627 string) or not returned until the Printer object assigns an Output 1628 Device to the job. This attribute is particularly useful when a 1629 single Printer object supports multiple devices (so called "Device 1630 Fan-Out" see [RFC2911] section 2.1)." See also section 10.1 in this 1631 specification. 1633 10.8.2 original-requesting-user-name (name(MAX)) operation and Job 1634 Description attribute 1636 The operation attribute containing the user name of the original 1637 user, i.e., corresponds to the "requesting-user-name" operation 1638 attribute (see [RFC2911] section 3.2.1.1) that the original client 1639 supplied to the first Printer object. The Printer copies the 1640 "original-requesting-user-name" operation attribute to the 1641 corresponding Job Description attribute. 1643 10.8.3 requesting-user-name (name(MAX)) operation attribute - additional 1644 semantics 1646 The IPP/1.1 "requesting-user-name" operation attribute (see [RFC2911] 1647 section 3.2.1.1) is updated by each client to be itself on each hop, 1648 i.e., the "requesting-user-name" is the client forwarding the 1649 request, not the original client. 1651 10.8.4 job-originating-user-name (name(MAX)) Job Description attribute - 1652 additional semantics 1654 The "job-originating-user-name" Job Description attribute (see 1655 [RFC2911] section 4.3.6) remains as the authenticated original user, 1656 not the parent Printer's authenticated host, and is forwarded by each 1657 client without changing the value. 1659 11 Conformance Requirements 1661 The Job and Printer Administrative operations defined in this 1662 document are OPTIONAL operations. However, some operations MUST be 1663 implemented if others are implemented as shown in Table 9. 1665 Table 9 - Conformance Requirement Dependencies for Operations 1666 Operations REQUIRED If any of these operations are 1667 supported: 1669 Enable-Printer Disable-Printer 1670 Disable-Printer Enable-Printer 1671 Pause-Printer Resume-Printer 1672 Resume-Printer Pause-Printer, 1673 Pause-Printer-After-Current-Job 1674 Hold-New-Jobs Release-Held-New-Jobs 1675 Release-Held-New-Jobs Hold-New-Jobs 1676 Activate-Printer, Deactivate-Printer 1677 Disable-Printer, 1678 Pause-Printer-After-Current-Job 1679 Deactivate-Printer, Activate-Printer 1680 Enable-Printer, 1681 Resume-Printer 1682 Restart-Printer none 1683 Shutdown-Printer none 1684 Startup-Printer none 1685 Reprocess-Job none 1686 Cancel-Current-Job none 1687 Resume-Job Suspend-Current-Job 1688 Suspend-Current-Job Resume-Job 1689 Promote-Job none 1690 Schedule-Job-After Promote-Job 1692 Table 10 and Table 11 list the "printer-state-reasons" and "job- 1693 state-reasons" values that are REQUIRED if the indicated operations 1694 are supported. 1696 Table 10- Conformance Requirement Dependencies for "printer-state- 1697 reasons" Values 1698 "printer-state- Conformance If any of the following Printer 1699 reasons" values: Requirement Operations are supported: 1701 'paused' REQUIRED Pause-Printer, 1702 Pause-Printer-After-Current-Job, 1703 or Deactivate-Printer 1704 'hold-new-jobs' REQUIRED Hold-New-Jobs 1705 'moving-to-paused' OPTIONAL Pause-Printer, 1706 Pause-Printer-After-Current-Job, 1707 Deactivate-Printer 1708 'deactivated' REQUIRED Deactivate-Printer 1710 Table 11- Conformance Requirement Dependencies for "job-state- 1711 reasons" Values 1712 "job-state-reasons" Conformance If any of the following Job 1713 values: Requirement operations are supported: 1715 'job-suspended' REQUIRED Suspend-Current-Job 1716 'printer-stopped' REQUIRED always REQUIRED 1718 12 Normative References 1720 [RFC2910] 1721 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 1722 Protocol/1.1: Encoding and Transport", RFC 2910, September 2000. 1724 [RFC2911] 1725 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 1726 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2911, 1727 September 2000. 1729 [RFC3380] 1730 Hastings, T., Herriot, R., Kugler, C., and H. Lewis, "Internet 1731 Printing Protocol (IPP): Job and Printer Set Operations", RFC 3380, 1732 September 2002. 1734 13 Informative References 1736 [ipp-ntfy] 1737 Herriot, R., and T. Hastings, "Internet Printing Protocol/1.1: 1738 Event Notifications and Subscriptions", , June 21, 2004. 1741 [RFC2566] 1742 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 1743 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, 1744 April 1999. 1746 [RFC3196] 1747 Hastings, T., Manros, C., Zehler, P., Kugler, C., and H. Holst, 1748 "Internet Printing Protocol/1.1: Implementer's Guide", RFC 3196, 1749 November 2001. 1751 [RFC3239] 1752 Kugler, C., Lewis, H., and T. Hastings, "Internet Printing Protocol 1753 (IPP): Requirements for Job, Printer, and Device Administrative 1754 Operations", RFC 3239, February 2002. 1756 Change History of this document is available at: 1757 ftp://ftp.pwg.org/pub/pwg/ipp/new_OPS/ipp-ops-set2-change- 1758 history.txt 1760 14 IANA Considerations 1762 This section contains the registration information for IANA to add to 1763 the IPP Registry according to the procedures defined in RFC 2911 1764 [RFC2911] section 6 to cover the definitions in this document. The 1765 resulting registrations will be published as additions to the 1766 http://www.iana.org/assignments/ipp-registrations file. 1768 Note to RFC Editors: Replace [RFCnnnn] below with the RFC number 1769 for this document, so that it accurately reflects the content of the 1770 information for the IANA Registry. 1772 14.1 Attribute Registrations 1774 The following table lists all the attributes defined in this 1775 document. These are to be registered according to the procedures in 1776 RFC 2911 [RFC2911] section 6.2. 1778 Name Reference Section 1779 -------------------------------------- --------- ------- 1780 Job Description attributes: 1781 original-requesting-user-name (name(MAX)) [RFCnnnn] 10.8.2 1783 Printer Description attributes: 1784 subordinate-printers-supported (1setOf uri) [RFCnnnn] 7.1 1785 parent-printers-supported (1setOf uri) [RFCnnnn] 7.2 1787 Operation attributes: 1788 original-requesting-user-name (name(MAX)) [RFCnnnn] 10.8.2 1790 14.2 Attribute Value Registrations 1792 This section lists the additional values that are defined in this 1793 document for existing attributes. 1795 Attribute 1796 Value Reference Section 1797 --------------------- --------- ------- 1798 job-state-reasons (1setOf type2 keyword) 1799 job-suspended [RFCnnnn] 9.1 1801 printer-state-reasons (1setOf type2 keyword) 1802 hold-new-jobs [RFCnnnn] 8.1 1803 deactivated [RFCnnnn] 8.2 1805 14.3 Additional Enum Attribute Value Registrations 1807 The following table lists all the new enum attribute values defined 1808 in this document. These are to be registered according to the 1809 procedures in RFC 2911 [RFC2911] section 6.1. 1811 Attribute (attribute syntax) 1812 Value Name Reference Section 1813 ----- -------------------- --------- ------- 1814 operations-supported (1setOf type2 enum) [RFC2911] 4.4.1 1815 0x0022 Enable-Printer [RFCnnnn] 3 1816 0x0023 Disable-Printer [RFCnnnn] 3 1817 0x0024 Pause-Printer-After-Current-Job [RFCnnnn] 3 1818 0x0025 Hold-New-Jobs [RFCnnnn] 3 1819 0x0026 Release-Held-New-Jobs [RFCnnnn] 3 1820 0x0027 Deactivate-Printer [RFCnnnn] 3 1821 0x0028 Activate-Printer [RFCnnnn] 3 1822 0x0029 Restart-Printer [RFCnnnn] 3 1823 0x002A Shutdown-Printer [RFCnnnn] 3 1824 0x002B Startup-Printer [RFCnnnn] 3 1825 0x002C Reprocess-Job [RFCnnnn] 4 1826 0x002D Cancel-Current-Job [RFCnnnn] 4 1827 0x002E Suspend-Current-Job [RFCnnnn] 4 1828 0x002F Resume-Job [RFCnnnn] 4 1829 0x0030 Promote-Job [RFCnnnn] 4 1830 0x0031 Schedule-Job-After [RFCnnnn] 4 1832 14.4 Operation Registrations 1834 The following table lists all of the operations defined in this 1835 document. These are to be registered according to the procedures in 1836 RFC 2911 [RFC2911] section 6.4. 1838 Name Reference Section 1839 ----------------------------- --------- ------- 1840 Activate-Printer [RFCnnnn] 3.4.2 1841 Cancel-Current-Job [RFCnnnn] 4.2 1842 Deactivate-Printer [RFCnnnn] 3.4.1 1843 Disable-Printer [RFCnnnn] 3.1.1 1844 Enable-Printer [RFCnnnn] 3.1.2 1845 Hold-New-Jobs [RFCnnnn] 3.3.1 1846 Pause-Printer-After-Current-Job [RFCnnnn] 3.2.1 1847 Promote-Job [RFCnnnn] 4.4.1 1848 Release-Held-New-Jobs [RFCnnnn] 3.3.2 1849 Reprocess-Job [RFCnnnn] 4.1 1850 Restart-Printer [RFCnnnn] 3.5.1 1851 Resume-Job [RFCnnnn] 4.3.2 1852 Schedule-Job-After [RFCnnnn] 4.4.2 1853 Shutdown-Printer [RFCnnnn] 3.5.2 1854 Startup-Printer [RFCnnnn] 3.5.3 1855 Suspend-Current-Job [RFCnnnn] 4.3.1 1857 14.5 Status code Registrations 1859 The following table lists the status code defined in this document. 1860 This is to be registered according to the procedures in RFC 2911 1861 [RFC2911] section 6.6. 1863 Value Name Reference Section 1864 ------ ------------------------ --------- ------- 1865 0x0000:0x00FF - "successful" 1866 none at this time 1868 0x0100:0x01FF - "informational" 1869 none at this time 1871 0x0300:0x03FF - "redirection" - -- See RFC 2911 Errata 1872 none at this time 1874 0x0400:0x04FF - "client-error" 1875 none at this time 1877 0x0500:0x05FF - "server-error" 1878 0x050A server-error-printer-is-deactivated [RFCnnnn] 5.1 1880 15 Internationalization Considerations 1882 This document has the same localization considerations as the 1883 [RFC2911]. 1885 16 Security Considerations 1887 The IPP Model and Semantics document [RFC2911] discusses high level 1888 security requirements (Client Authentication, Server Authentication 1889 and Operation Privacy). Client Authentication is the mechanism by 1890 which the client proves its identity to the server in a secure 1891 manner. Server Authentication is the mechanism by which the server 1892 proves its identity to the client in a secure manner. Operation 1893 Privacy is defined as a mechanism for protecting operations from 1894 eavesdropping. 1896 Printer operations defined in this specification (see section 3) and 1897 Pause-Printer, Resume-Printer, and Purge-Job (defined in [RFC2911]) 1898 are intended for use by an operator and/or administrator. Job 1899 operations defined in this specification (see section 4) and Cancel- 1900 Job, Hold-Job, Release-Job defined in [RFC2911]) are intended for use 1901 by the job owner or may be an operator or administrator of the 1902 Printer object. These operator and administrative operations affect 1903 the service of all users. In appropriate use of an administrative 1904 operation by an un-authenticated end user could affect the quality of 1905 service for all users. Therefore, for both inter-net and intra-net, 1906 conformance to this specification REQUIRES that initial configuration 1907 of IPP Printer implementations MUST require successful certificate- 1908 based TLS [RFC2246] client authentication and successful operator and 1909 administrator authorization (see [RFC2911] sections 5.2.7 and 8 and 1910 [RFC2910]) for any administrative operations defined in this 1911 document. [RFC2910] REQUIRES the IPP Printer to support the minimum 1912 cypher suite required for TLS/1.0. The means for authorizing an 1913 operator or administrator of the Printer object are outside the scope 1914 of this specification, [RFC2911], and [RFC2910]. 1916 The use of TLS and Client Authentication solves the Denial of 1917 Service, Man in the Middle, and Masquerading security threats. 1919 17 Author's Addresses 1921 Carl Kugler 1922 P.O. Box 1900 1923 IBM 1924 Boulder CO 80301-9191 1926 Phone: (303) 924-5060 1927 FAX: 1928 e-mail: kugler@us.ibm.com 1929 Tom Hastings, editor 1930 Xerox Corporation 1931 701 Aviation Blvd. ESAE 231 1932 El Segundo, CA 90245 1934 Phone: 310-333-6413 1935 Fax: 310-333-5514 1936 e-mail: hastings@cp10.es.xerox.com 1938 Harry Lewis 1939 P.O. Box 1900 1940 IBM 1941 Boulder CO 80301-9191 1943 Phone: (303) 924-5337 1944 FAX: 1945 e-mail: harryl@us.ibm.com 1947 18 IPR Notice 1949 The IETF takes no position regarding the validity or scope of any 1950 Intellectual Property Rights or other rights that might be claimed to 1951 pertain to the implementation or use of the technology described in 1952 this document or the extent to which any license under such rights 1953 might or might not be available; nor does it represent that it has 1954 made any independent effort to identify any such rights. Information 1955 on the procedures with respect to rights in RFC documents can be 1956 found in BCP 78 and BCP 79. 1958 Copies of IPR disclosures made to the IETF Secretariat and any 1959 assurances of licenses to be made available, or the result of an 1960 attempt made to obtain a general license or permission for the use of 1961 such proprietary rights by implementers or users of this 1962 specification can be obtained from the IETF on-line IPR repository at 1963 http://www.ietf.org/ipr. 1965 The IETF invites any interested party to bring to its attention any 1966 copyrights, patents or patent applications, or other proprietary 1967 rights that may cover technology that may be required to implement 1968 this standard. Please address the information to the IETF at ietf- 1969 ipr@ietf.org." 1971 19 Summary of Base IPP Documents 1973 The base set of IPP documents includes: 1975 Design Goals for an Internet Printing Protocol [RFC2567] 1976 Rationale for the Structure and Model and Protocol for the Internet 1977 Printing Protocol [RFC2568] 1978 Internet Printing Protocol/1.1: Model and Semantics [RFC2911] 1979 Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] 1980 Internet Printing Protocol/1.1: Implementer's Guide [RFC3196] 1981 Mapping between LPD and IPP Protocols [RFC2569] 1983 The "Design Goals for an Internet Printing Protocol" document takes a 1984 broad look at distributed printing functionality, and it enumerates 1985 real-life scenarios that help to clarify the features that need to be 1986 included in a printing protocol for the Internet. It identifies 1987 requirements for three types of users: end users, operators, and 1988 administrators. It calls out a subset of end user requirements that 1989 are satisfied in IPP/1.0. A few OPTIONAL operator operations have 1990 been added to IPP/1.1. 1992 The "Rationale for the Structure and Model and Protocol for the 1993 Internet Printing Protocol" document describes IPP from a high level 1994 view, defines a roadmap for the various documents that form the suite 1995 of IPP specification documents, and gives background and rationale 1996 for the IETF working group's major decisions. 1998 The "Internet Printing Protocol/1.1: Model and Semantics" document 1999 describes a simplified model with abstract objects, their attributes, 2000 and their operations that are independent of encoding and transport. 2001 It introduces a Printer and a Job object. The Job object optionally 2002 supports multiple documents per Job. It also addresses security, 2003 internationalization, and directory issues. 2005 The "Internet Printing Protocol/1.1: Encoding and Transport" document 2006 is a formal mapping of the abstract operations and attributes defined 2007 in the model document onto HTTP/1.1 [RFC2616]. It defines the 2008 encoding rules for a new Internet MIME media type called 2009 "application/ipp". This document also defines the rules for 2010 transporting over HTTP a message body whose Content-Type is 2011 "application/ipp". This document defines the 'ippget' scheme for 2012 identifying IPP printers and jobs. 2014 The "Internet Printing Protocol/1.1: Implementer's Guide" document 2015 gives insight and advice to implementers of IPP clients and IPP 2016 objects. It is intended to help them understand IPP/1.1 and some of 2017 the considerations that may assist them in the design of their client 2018 and/or IPP object implementations. For example, a typical order of 2019 processing requests is given, including error checking. Motivation 2020 for some of the specification decisions is also included. 2022 The "Mapping between LPD and IPP Protocols" document gives some 2023 advice to implementers of gateways between IPP and LPD (Line Printer 2024 Daemon) implementations. 2026 20 Full Copyright Statement 2028 Copyright (C) The Internet Society 2029 (1998,1999,2000,2001,2002,2003,2004). All Rights Reserved 2031 This document and translations of it may be copied and furnished to 2032 others, and derivative works that comment on or otherwise explain it 2033 or assist in its implementation may be prepared, copied, published 2034 and distributed, in whole or in part, without restriction of any 2035 kind, provided that the above copyright notice and this paragraph are 2036 included on all such copies and derivative works. However, this 2037 document itself may not be modified in any way, such as by removing 2038 the copyright notice or references to the Internet Society or other 2039 Internet organizations, except as needed for the purpose of 2040 developing Internet standards in which case the procedures for 2041 copyrights defined in the Internet Standards process must be 2042 followed, or as required to translate it into languages other than 2043 English. 2045 The limited permissions granted above are perpetual and will not be 2046 revoked by the Internet Society or its successors or assigns. 2048 This document and the information contained herein is provided on an 2049 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 2050 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 2051 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 2052 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 2053 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 2055 Acknowledgement 2057 Funding for the RFC Editor function is currently provided by the 2058 Internet Society.