idnits 2.17.1 draft-ietf-ipp-ops-set2-03.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. 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 document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** The abstract seems to contain references ([RFC2911], [RFC2910,RFC2911], [RFC2565,RFC2566]), 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 32: '...s the following 16 additional OPTIONAL...' RFC 2119 keyword, line 193: '...fines additional OPTIONAL end user, op...' RFC 2119 keyword, line 212: '...d terms, such as MUST, MUST NOT, REQUI...' RFC 2119 keyword, line 213: '... NOT, MAY, NEED NOT, and OPTIONAL, h...' RFC 2119 keyword, line 244: '.... Such a Subordinate Printer MAY have...' (164 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 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 1438 has weird spacing: '... any indic...' == Line 1815 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 17, 2001) is 8318 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: 'RFC2565' is mentioned on line 2123, but not defined ** Obsolete undefined reference: RFC 2565 (Obsoleted by RFC 2910) == Missing Reference: 'RFC2119' is mentioned on line 214, but not defined == Missing Reference: 'RFC2567' is mentioned on line 2069, but not defined == Missing Reference: 'RFC2568' is mentioned on line 2071, but not defined == Missing Reference: 'RFC2569' is mentioned on line 2075, but not defined == Missing Reference: 'RFC2616' is mentioned on line 2103, but not defined ** Obsolete undefined reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) ** Obsolete normative reference: RFC 2566 (Obsoleted by RFC 2911) ** Obsolete normative reference: RFC 2910 (Obsoleted by RFC 8010) ** Obsolete normative reference: RFC 2911 (Obsoleted by RFC 8011) Summary: 11 errors (**), 0 flaws (~~), 11 warnings (==), 4 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 T. Hastings (editor) 6 [Target Category: standards track Xerox Corporation 7 Expires: January 17, 2002 July 17, 2001 8 Internet Printing Protocol (IPP): 9 Job and Printer Administrative Operations 10 Copyright (C) The Internet Society (2001). 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 Abstract 32 This document specifies the following 16 additional OPTIONAL 33 operations for use with the Internet Printing Protocol/1.0 (IPP) 34 [RFC2565, RFC2566] and IPP/1.1 [RFC2910, RFC2911]: 36 Printer operations: Job operations: 37 Enable-Printer and Disable-Printer Reprocess-Job 38 Pause-Printer-After-Current-Job Cancel-Current-Job 39 Hold-New-Jobs and Release-Held-New- Suspend-Current-Job and 40 Jobs Resume-Job 41 Deactivate-Printer and Activate- Promote-Job 42 Printer 43 Restart-Printer Schedule-Job-After 44 Shutdown-Printer and Startup-Printer 46 New Job Description attributes: "original-requesting-user-name" 47 New Printer Description attributes: "subordinate-printers-supported" 48 and "parent-printers-supported". 50 New "printer-state-reasons" values: 'hold-new-jobs' and 51 'deactivated'. 52 New "job-state-reasons" attribute values: 'job-suspended'. 53 New Job event keyword: 'job-forwarded-operation-failed'. 54 New status code: 'server-error-printer-is-deactivated'. 56 Table of Contents 58 1 Introduction.....................................................6 60 2 Terminology......................................................6 61 2.1 Conformance Terminology........................................6 62 2.2 Other terminology..............................................6 64 3 Definition of the Printer Operations.............................7 65 3.1 The Disable and Enable Printer Operations.....................10 66 3.1.1 Disable-Printer Operation...................................10 67 3.1.2 Enable-Printer Operation....................................11 68 3.2 The Pause and Resume Printer Operations.......................11 69 3.2.1 Pause-Printer-After-Current-Job operation...................12 70 3.3 Hold and Release New Jobs operations..........................14 71 3.3.1 Hold-New-Jobs operation.....................................15 72 3.3.2 Release-Held-New-Jobs operation.............................15 73 3.4 Deactivate and Activate Printer Operations....................16 74 3.4.1 Deactivate-Printer operation................................16 75 3.4.2 Activate-Printer operation..................................17 76 3.5 Restart-Printer, Shutdown-Printer, and Startup-Printer operations 77 17 78 3.5.1 Restart-Printer operation...................................18 79 3.5.2 Shutdown-Printer Operation..................................18 80 3.5.3 Startup-Printer operation...................................19 82 4 Definition of the Job Operations................................20 83 4.1 Reprocess-Job Operation.......................................21 84 4.2 Cancel-Current-Job Operation..................................22 85 4.3 Suspend and Resume Job operations.............................23 86 4.3.1 Suspend-Current-Job operation...............................23 87 4.3.2 Resume-Job operation........................................24 88 4.4 Job Scheduling Operations.....................................25 89 4.4.1 Promote-Job operation.......................................25 90 4.4.2 Schedule-Job-After operation................................26 92 5 Additional status codes.........................................27 93 5.1 'server-error-printer-is-deactivated' (0x050A)................28 95 6 Use of Operation Attributes that are Messages from the Operator.28 97 7 New Printer Description Attributes..............................31 98 7.1 subordinate-printers-supported (1setOf uri)...................31 99 7.2 parent-printers-supported (1setOf uri)........................31 101 8 Additional Values for the "printer-state-reasons" Printer 102 Description attribute.............................................32 103 8.1 'hold-new-jobs' value.........................................32 104 8.2 'deactivated' value...........................................32 106 9 Additional Values for the "job-state-reasons" Job Description 107 attribute.........................................................32 108 9.1 'job-suspended' value.........................................33 110 10 Additional events..............................................33 112 11 Use of the Printer object to represent IPP Printer Fan-Out and IPP 113 Printer Fan-In....................................................33 114 11.1 IPP Printer Fan-Out..........................................33 115 11.2 IPP Printer Fan-In...........................................34 116 11.3 Printer object attributes used to represent Printer Fan-Out and 117 Printer Fan-In....................................................34 118 11.4 Subordinate Printer URI......................................35 119 11.5 Printer object attributes used to represent Output Device Fan- 120 Out 35 121 11.6 Figures to show all possible configurations..................37 122 11.7 Forwarding requests..........................................40 123 11.7.1 Forwarding requests that affect Printer objects............40 124 11.7.2 Forwarding requests that affect Jobs.......................42 125 11.8 Additional attributes to help with fan-out...................44 126 11.8.1 output-device-assigned (name(127)) Job Description attribute - 127 from [RFC2911].........................................45 128 11.8.2 original-requesting-user-name (name(MAX)) operation attribute 129 .......................................................45 131 12 Conformance Requirements.......................................45 133 13 IANA Considerations............................................47 134 13.1 This section contains the registration information for IANA to 135 add to the various IPP Registries according to the procedures defined 136 in RFC 2911 [RFC2911] section 6 to cover the definitions in this 137 document. Attribute Registrations................................47 138 13.2 Attribute Value Registrations................................48 139 13.2.1 Additional Keyword Attribute Value Registrations for the "job- 140 state-reasons" attribute...............................48 141 13.2.2 Additional Keyword Attribute Value Registrations for the 142 "printer-state-reasons" attribute......................49 143 13.3 Additional Enum Attribute Value Registrations for the 144 "operations-supported" Printer Attribute..........................49 145 13.4 Additional keyword Attribute Value Registrations for the 146 "notify-events" Subscription Template Attribute...................50 147 13.5 Operation Registrations......................................50 148 13.6 Status code Registrations....................................51 150 14 Internationalization Considerations............................51 151 15 Security Considerations........................................51 153 16 Author's Addresses.............................................51 155 17 References.....................................................52 157 18 Summary of Base IPP Documents..................................53 159 19 Appendix A: Full Copyright Statement...........................55 161 List of Tables 163 Table 1 - Printer Operation Operation-Id assignments...............9 164 Table 2 - Pause and Resume Printer Operations.....................12 165 Table 3 - State Transition Table for Pause-Printer-After-Current-Job 166 operation .....................................................14 167 Table 4 - Job operation Operation-Id assignments..................21 168 Table 5 - Operation attribute support for Printer Operations......29 169 Table 6 - Operation attribute support for Job operations..........30 170 Table 7 - Forwarding operations that affect Printer objects.......41 171 Table 8 - Forwarding operations that affect Jobs objects..........43 172 Table 9 - Conformance Requirement Dependencies for Operations.....46 173 Table 10- Conformance Requirement Dependencies for "printer-state- 174 reasons" Values ...............................................47 175 Table 11- Conformance Requirement Dependencies for "job-state- 176 reasons" Values ...............................................47 178 List of Figures 180 Figure 1 - Embedded Printer object................................38 181 Figure 2 - Hosted Printer object..................................38 182 Figure 3 - Output Device Fan-Out..................................38 183 Figure 4 - Chained IPP Printer Objects............................39 184 Figure 5 - IPP Printer Object Fan-Out.............................39 185 Figure 6 - IPP Printer Object Fan-In..............................40 187 1 Introduction 189 The Internet Printing Protocol (IPP) is an application level protocol 190 that can be used for distributed printing using Internet tools and 191 technologies. IPP version 1.1 ([RFC2911, RFC2910]) focuses on end 192 user functionality with a few administrative operations included. 193 This document defines additional OPTIONAL end user, operator, and 194 administrator operations used to control Jobs and Printers. In 195 addition, this document extends the semantic model of the Printer 196 object by allowing them to be configured into trees and/or inverted 197 trees that represent Printer object Fan-Out and Printer object Fan- 198 In, respectively. The special case of a tree with only a single 199 Subordinate node represents Chained Printers. This document is a 200 registration proposal for an extension to IPP/1.0 and IPP/1.1 201 following the registration procedures in those documents. 203 The requirements and use cases for this document are defined in [ipp- 204 ops-admin-req]. 206 2 Terminology 208 This section defines terminology used throughout this document. 210 2.1 Conformance Terminology 212 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD 213 NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to 214 conformance as defined in RFC 2119 [RFC2119] and [RFC2911] section 215 12.1. If an implementation supports the extension defined in this 216 document, then these terms apply; otherwise, they do not. These 217 terms define conformance to this document only; they do not affect 218 conformance to other documents, unless explicitly stated otherwise. 220 2.2 Other terminology 222 This document uses terms such as "client", "Printer", "Job", 223 "attributes", "keywords", and "support". These terms have special 224 meaning and are defined in the model terminology [RFC2911] section 225 12.2. 227 In addition, the following capitalized terms are defined: 229 IPP Printer object (or Printer for short) - a software abstraction 230 defined by [RFC2911]. 231 Printer Operation - an operation whose target is an IPP Printer 232 object and whose effect is on the Printer object. 233 Output Device - the physical imaging mechanism that an IPP Printer 234 controls. Note: while this term is capitalized in this 235 specification (but not in [RFC2911]), there is no formal object 236 called an Output Device defined in this document (or [RFC2911]). 237 Output Device Fan-Out - a configuration in which an IPP Printer 238 controls more that one output-device. 239 Printer Fan-Out - a configuration in which an IPP Printer object 240 controls more than one Subordinate IPP Printer object. 241 Printer Fan-In - a configuration in which an IPP Printer object is 242 controlled by more than one IPP Printer object. 243 Subordinate Printer - an IPP Printer object that is controlled by 244 another IPP Printer object. Such a Subordinate Printer MAY have 245 one or more Subordinate Printers. 246 Leaf Printer - a Subordinate Printer that has no Subordinate 247 Printers. 248 Non-Leaf Printer - an IPP Printer object that has one or more 249 Subordinate Printers. 250 Chained Printer - a Non-Leaf Printer that has exactly one Subordinate 251 Printer. 252 Job Creation operations - IPP operations that create a Job object: 253 Print-Job, Print-URI, and Create-Job. 255 3 Definition of the Printer Operations 257 All Printer Operations are directed at Printer objects. A client 258 MUST always supply the "printer-uri" operation attribute in order to 259 identify the correct target of the operation. These descriptions 260 assume all of the common semantics of IPP/1.1 Model and Semantics 261 document [RFC2911] section 3.1. 263 The Printer Operations defined in this document are summarized in 264 Table 1: 266 Table 1 - Printer Operation Operation-Id assignments 268 Operation Name Operation- Brief description 269 Id 271 Enable-Printer 0x22 Allows the target Printer to accept 272 Job Creation operations 274 Disable-Printer 0x23 Prevents the target Printer from 275 accepting Job Creation operations 277 Pause-Printer- Pause the Printer after the current 278 After-Current- job has been sent to the Output 279 Job 0x24 Device. 281 Hold-New-Jobs 0x25 Finishes processing all currently 282 pending jobs. Any new jobs are 283 placed in the 'pending-held' state. 285 Release-Held- 0x26 Release all jobs to the 'pending' 286 New-Jobs state that had been held by the 287 effect of a previous Hold-New-Jobs 288 operation and condition the Printer 289 to no longer hold new jobs. 291 Deactivate- 0x27 Puts the Printer into a read-only 292 Printer deactivated state. 294 Activate- 0x28 Restores the Printer to normal 295 Printer activity 297 Restart-Printer 0x29 Restarts the target Printer and re- 298 initializes the software 300 Shutdown- 0x2A Shuts down the target Printer so that 301 Printer it cannot be restarted or queried 303 Startup-Printer 0x2B Starts up the instance of the Printer 304 object 306 All of the operations in this document are OPTIONAL for an IPP object 307 to support. Unless the specification of an OPTIONAL operation 308 requires support of another OPTIONAL operation, conforming 309 implementations may support any combination of these operations. 311 Many of the operations come in pairs and so both are REQUIRED if 312 either one is implemented. 314 3.1 The Disable and Enable Printer Operations 316 This section defines the OPTIONAL Disable-Printer and Enable-Printer 317 operations that stop and start the IPP Printer object from accepting 318 new IPP jobs. If either of these operations are supported, both MUST 319 be supported. 321 These operations allow the operator to control whether or not the 322 Printer will accept new Job Creation (Print-Job, Print-URI, and 323 Create-Job) operations. These operations have no other effect on the 324 Printer, so that the Printer continues to accept all other operations 325 and continues to schedule and process jobs normally. In other words, 326 these operation control the "input of new jobs" to the IPP Printer 327 while the Pause and Resume operations (see section 3.2) independently 328 control the "output of new jobs" from the IPP Printer to the Output 329 Device. 331 3.1.1 Disable-Printer Operation 333 This OPTIONAL operation allows a client to stop the Printer object 334 from accepting new jobs, i.e., cause the Printer to reject subsequent 335 Job Creation operations and return the 'server-error-not-accepting- 336 jobs' status code. The Printer still accepts all other operations, 337 including Validate-Job, Send-Document and Send-URI operations. Thus 338 a Disable-Printer operation allows a client to continue submitting 339 multiple documents of a multiple document job if the Create-Job 340 operation had already been accepted. All previously created or 341 submitted Jobs and currently processing Jobs continue unaffected. 343 The IPP Printer MUST accept the request in any state. The Printer 344 sets the value of its "printer-is-accepting-jobs" READ-ONLY Printer 345 Description attribute to 'false' (see [RFC2911] section 4.4.20), no 346 matter what the previous value was. This operation has no immediate 347 or direct effect on the Printer's "printer-state" and "printer-state- 348 reasons" attributes. 350 Access Rights: The authenticated user (see [RFC2911] section 8.3) 351 performing this operation must be an operator or administrator of the 352 Printer object (see [RFC2911] Sections 1 and 8.5). 354 The Disable-Printer Request and Disable-Printer Response have the 355 same attribute groups and attributes as the Pause-Printer operation 356 (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the new 357 "printer-message-from-operator" operation attribute (see section 6). 359 3.1.2 Enable-Printer Operation 361 This OPTIONAL operation allows a client to start the Printer object 362 accepting jobs, i.e., cause the Printer to accept subsequent Job 363 Creation operations. The Printer still accepts all other operations. 364 All previously submitted Jobs and currently processing Jobs continue 365 unaffected. 367 The IPP Printer MUST accept the request in any state. The Printer 368 sets the value of its "printer-is-accepting-jobs" READ-ONLY Printer 369 Description attribute to 'true' (see [RFC2911] section 4.4.20), no 370 matter what the previous value was. This operation has no immediate 371 or direction effect on the Printer's "printer-state" and "printer- 372 state-reasons" attributes. 374 Access Rights: The authenticated user (see [RFC2911] section 8.3) 375 performing this operation must be an operator or administrator of the 376 Printer object (see [RFC2911] Sections 1 and 8.5). 378 The Enable-Printer Request and Enable-Printer Response have the same 379 attribute groups and attributes as the Pause-Printer operation (see 380 [RFC2911] sections 3.2.8.1 and 3.2.8.2), including the new "printer- 381 message-from-operator" operation attribute (see section 6). 383 3.2 The Pause and Resume Printer Operations 385 This section leaves the OPTIONAL IPP/1.1 Pause-Printer (see [RFC2911] 386 sections 3.2.7) to be ambiguous as to whether or not it stops the 387 Printer immediately or after the current job and defines the OPTIONAL 388 Pause-Printer-After-Current-Job operation to be after the current 389 job. These operations affect the scheduling of IPP jobs. If either 390 of these Pause Printer operations are supported, then the Resume- 391 Printer operation MUST be supported. 393 These operations allow the operator to control whether or not the 394 Printer will send new IPP jobs to the associated Output Device(s) 395 that the IPP Printer object represents. These operations have no 396 other effect on the Printer, so that the Printer continues to accept 397 all operations. In other words, these operation control the "output 398 of new jobs" to the Output Device(s) while the Disable and Enable 399 Printer Operations (see section 3.1) independently control the "input 400 of new jobs" to the IPP Printer. 402 Table 2 - Pause and Resume Printer Operations 404 Pause and Resume Printers Description 406 IPP/1.1 Pause Printer Stops the IPP Printer from sending 407 new IPP Jobs to the Output Device(s) 408 either immediately or after the 409 current job completes, depending on 410 implementation, as defined in 411 [RFC2911]. 413 Pause-Printer-After- Stops the IPP Printer from sending 414 Current-Job new IPP Jobs to the Output Device(s) 415 after the current jobs finish 417 Resume-Printer Starts the IPP Printer sending IPP 418 Jobs to the Output Device again. 420 3.2.1 Pause-Printer-After-Current-Job operation 422 This OPTIONAL operation allows a client to stop the Printer object 423 from starting to send IPP jobs to any of its Output Devices or 424 Subordinate Printers. If the IPP Printer is in the middle of sending 425 an IPP job to an Output Device or Subordinate Printer, the IPP 426 Printer MUST complete sending that Job. However, after receiving 427 this operation, the IPP Printer MUST NOT start to send any additional 428 IPP jobs to any of its Output Devices or Subordinate Printers. In 429 addition, after having received this operation, the IPP Printer MUST 430 NOT start processing any more jobs, so additional jobs MUST NOT enter 431 the 'processing' state. 433 If the IPP Printer is not sending an IPP Job to the Output Device or 434 Subordinate Printer (whether or not the Output Device or Subordinate 435 Printer is busy processing any jobs), the IPP Printer object 436 transitions immediately to the 'stopped' state by setting its 437 "printer-state" attribute to 'stopped', removing the 'moving-to- 438 paused' value, if present, from its "printer-state-reasons" 439 attribute, and adding the 'paused' value to its "printer-state- 440 reasons" attribute. 442 If the implementation will take appreciable time to complete sending 443 an IPP job that it has started sending to an Output Device or 444 Subordinate Printer, the IPP Printer adds the 'moving-to-paused' 445 value to the Printer object's "printer-state-reasons" attribute (see 446 section [RFC2911] 4.4.12). When the IPP Printer has completed 447 sending IPP jobs that it was in the process of sending, the Printer 448 object transitions to the 'stopped' state by setting its "printer- 449 state" attribute to 'stopped', removing the 'moving-to-paused' value, 450 if present, from its "printer-state-reasons" attribute, and adding 451 the 'paused' value to its "printer-state-reasons" attribute. 453 This operation MUST NOT affect the acceptance of Job Creation 454 requests (see Disable-Printer section 3.1.1). 456 For any jobs that are 'pending' or 'pending-held', the 'printer- 457 stopped' value of the jobs' "job-state-reasons" attribute also 458 applies. However, the IPP Printer NEED NOT update those jobs' "job- 459 state-reasons" attributes and only need return the 'printer-stopped' 460 value when those jobs are queried using the Get-Job-Attributes or 461 Get-Jobs operations (so-called "lazy evaluation"). 463 The IPP Printer MUST accept the request in any state and transition 464 the Printer to the indicated new "printer-state" and MUST add the 465 indicated value to "printer-state-reasons" attribute before returning 466 as follows: 468 Table 3 - State Transition Table for Pause-Printer-After-Current-Job 469 operation 471 Current New "printer IPP Printer's response status 472 "printer- "printer- -state- code and action: 473 state" state" reasons" 474 REQUIRED/OPTIONAL state 475 transition for a Printer to 476 support 478 'idle' 'stopped' 'paused' REQUIRED: 'successful-ok' 480 'processing' 'processing' 'moving- OPTIONAL: 'successful-ok'; 481 to- Later, when the IPP Printer 482 paused' has finished sending IPP jobs 483 to an Output Device, the 484 "printer-state" becomes 485 'stopped', and the 'paused' 486 value replaces the 'moving-to- 487 paused' value in the "printer- 488 state-reasons" attribute 490 'processing' 'stopped' 'paused' REQUIRED: 'successful-ok'; 491 the IPP Printer wasn't in the 492 middle of sending an IPP job 493 to an Output Device 495 'stopped' 'stopped' 'paused' REQUIRED: 'successful-ok' 497 Access Rights: The authenticated user (see [RFC2911] section 8.3) 498 performing this operation must be an operator or administrator of the 499 Printer object (see [RFC2911] Sections 1 and 8.5). 501 The Pause-Printer-After-Current-Job Request and Pause-Printer-After- 502 Current-Job Response have the same attribute groups and attributes as 503 the Pause-Printer operation (see [RFC2911] sections 3.2.7.1 and 504 3.2.7.2), including the new "printer-message-from-operator" operation 505 attribute (see section 6). 507 3.3 Hold and Release New Jobs operations 509 This section defines operations to condition the Printer to hold any 510 new jobs and to release them. 512 3.3.1 Hold-New-Jobs operation 514 This OPTIONAL operation allows a client to condition the Printer to 515 complete the current 'pending' and 'processing' IPP Jobs but not 516 start processing any subsequently created IPP Jobs. If the IPP 517 Printer is in the middle of sending an IPP job to an Output Device or 518 Subordinate Printer, the IPP Printer MUST complete sending that Job. 519 Furthermore, the IPP Printer MUST send all of the current 'pending' 520 IPP Jobs to the Output Device(s) or Subordinate IPP Printer 521 object(s). Any subsequently received Job Creation operations will 522 cause the IPP Printer to put the Job into the 'pending-held' state 523 with the 'job-held-on-create' value being added to the job's "job- 524 state-reasons" attribute. Thus all newly accepted jobs will be 525 automatically held by the Printer. 527 When the Printer completes all of the 'pending' and 'processing' 528 jobs, it enters the 'idle' state as usual. An operator that is 529 monitoring Printer state changes will know when the Printer has 530 completed all current jobs because the Printer enters the 'idle' 531 state. 533 This operation MUST NOT affect the acceptance of Job Creation 534 requests (see Disable-Printer section 3.1.1), except to put the Jobs 535 into the 'pending-held' state, instead of the 'pending' or 536 'processing' state. 538 The IPP Printer MUST accept the request in any state, MUST NOT 539 transition the Printer to any other "printer-state", and MUST add the 540 'hold-new-jobs' value to the Printer's "printer-state-reasons" 541 attribute (whether the value was present or not). 543 Access Rights: The authenticated user (see [RFC2911] section 8.3) 544 performing this operation must be an operator or administrator of the 545 Printer object (see [RFC2911] Sections 1 and 8.5). 547 The Hold-New-Jobs Request and Hold-New-Jobs Response have the same 548 attribute groups and attributes as the Pause-Printer operation (see 549 [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the new "printer- 550 message-from-operator" operation attribute (see section 6). 552 3.3.2 Release-Held-New-Jobs operation 554 This OPTIONAL operation allows a client to undo the effect of a 555 previous Hold-New-Jobs operation. In particular, the Printer 556 releases all of the jobs that it had held as a consequence of a Hold- 557 New-Jobs operations, i.e., while the 'hold-new-jobs' value was 558 present in the Printer's "printer-state-reasons" attribute. In 559 addition, the Printer MUST accept this request in any state, MUST NOT 560 transition the Printer to any other "printer-state", and MUST remove 561 the 'hold-new-jobs' value from its "printer-state-reasons" attribute 562 (whether the value was present or not) so that the Printer no longer 563 holds newly created jobs. 565 Access Rights: The authenticated user (see [RFC2911] section 8.3) 566 performing this operation must be an operator or administrator of the 567 Printer object (see [RFC2911] Sections 1 and 8.5). 569 The Release-Held-New-Jobs Request and Release-Held-New-Jobs Response 570 have the same attribute groups and attributes as the Pause-Printer 571 operation (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the 572 new "printer-message-from-operator" operation attribute (see section 573 6). 575 3.4 Deactivate and Activate Printer Operations 577 This section defines the OPTIONAL Deactivate-Printer and Activate- 578 Printer operations that stop and start the IPP Printer object from 579 accepting all requests except queries and performing work. If either 580 of these operations are supported, both MUST be supported. 582 These operations allow the operator to put the Printer into a dormant 583 read-only condition and to take it out of such a condition. These 584 operations are a combination of the Deactivate and Pause operations, 585 plus preventing the acceptance of any other requests, except queries. 587 3.4.1 Deactivate-Printer operation 589 This OPTIONAL operation allows a client to stop the Printer object 590 from starting to send IPP jobs to any of its Output Devices or 591 Subordinate Printers (Pause-Printer-After-Current-Job) and stop the 592 Printer object from accepting any, but query requests. The Printer 593 performs a Disable-Printer and a Pause-Printer-After-Current-Job 594 operation immediately, including use of all of the "printer-state- 595 reasons" if these two operations cannot be completed immediately. In 596 addition, the Printer MUST immediately reject all requests, except 597 Activate-Printer, queries (Get-Printer-Attributes, Get-Job- 598 Attributes, Get-Jobs, etc.), Send-Document, and Send-URI (so that 599 partial job submission can be completed - see section 3.1.1) and 600 return the 'server-error-service-unavailable' status code. 602 The IPP Printer MUST accept the request in any state. Immediately, 603 the Printer MUST set the 'deactivated' value in its "printer-state- 604 reasons" attribute. Note: neither the Disable-Printer nor the Pause- 605 Printer-After-Current-Job set the 'deactivated' value. 607 Access Rights: The authenticated user (see [RFC2911] section 8.3) 608 performing this operation must be an operator or administrator of the 609 Printer object (see [RFC2911] Sections 1 and 8.5). 611 The Deactivate-Printer Request and Deactivate-Printer Response have 612 the same attribute groups and attributes as the Pause-Printer 613 operation (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the 614 new "printer-message-from-operator" operation attribute (see section 615 6). 617 3.4.2 Activate-Printer operation 619 This OPTIONAL operation allows a client to undo the effects of the 620 Deactivate-Printer, i.e., allow the Printer object to start sending 621 IPP jobs to any of its Output Devices or Subordinate Printers (Pause- 622 Printer-After-Current-Job) and start the Printer object from 623 accepting any requests. The Printer performs an Enable-Printer and a 624 Resume-Printer operation immediately. In addition, the Printer MUST 625 immediately start accepting all requests. 627 The IPP Printer MUST accept the request in any state. Immediately, 628 the Printer MUST immediately remove the 'deactivated' value from its 629 "printer-state-reasons" attribute (whether present or not). 631 Access Rights: The authenticated user (see [RFC2911] section 8.3) 632 performing this operation must be an operator or administrator of the 633 Printer object (see [RFC2911] Sections 1 and 8.5). 635 The Activate-Printer Request and Activate-Printer Response have the 636 same attribute groups and attributes as the Pause-Printer operation 637 (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the new 638 "printer-message-from-operator" operation attribute (see section 6). 640 3.5 Restart-Printer, Shutdown-Printer, and Startup-Printer operations 642 This section defines the OPTIONAL Restart-Printer, Shutdown-Printer, 643 and Startup-Printer operations that initialize, shutdown, and startup 644 the Printer object, respectively. Each of these operations is 645 OPTIONAL and any combination MAY be supported. 647 3.5.1 Restart-Printer operation 649 This OPTIONAL operation allows a client to restart a Printer object 650 whose operation is in need of initialization because of incorrect or 651 erratic behavior, i.e., perform the effect of a software re-boot. 652 The implementation MUST attempt to save any information about Jobs 653 and the Printer object before re-initializing. However, this 654 operation MAY have drastic consequences on the running system, so the 655 client SHOULD first try the Deactivate-Printer operation to minimize 656 the effect on the current state of the system. The effects of 657 previous Disable-Printer, Pause Printer, and Deactivate-Printer 658 operations are lost. 660 The IPP Printer MUST accept the request in any state. The Printer 661 object MUST initialize its Printer's "printer-state" to 'idle', 662 remove the state reasons from its "printer-state-reasons" attribute, 663 and its "printer-is-accepting-jobs" attribute to 'true'. 665 Access Rights: The authenticated user (see [RFC2911] section 8.3) 666 performing this operation must be an operator or administrator of the 667 Printer object (see [RFC2911] Sections 1 and 8.5). 669 The Restart-Printer Request and Restart-Printer Response have the 670 same attribute groups and attributes as the Pause-Printer operation 671 (see [RFC2911] sections 3.2.8.1 and 3.2.8.2), including the new 672 "printer-message-from-operator" operation attribute (see section 6). 674 3.5.2 Shutdown-Printer Operation 676 This OPTIONAL operation allows a client to shutdown a Printer, i.e., 677 stop processing jobs without losing any jobs and make the Printer 678 object no longer available for any operations using the IPP protocol. 679 There is no way to bring the instance of the Printer object back to 680 being used, except for the Startup-Printer (see section 3.5.3) which 681 starts up a new instance of the Printer object for hosted 682 implementations. The purpose of Shutdown-Printer is to shutdown the 683 Printer for an extended period, not to reset the device(s) or modify 684 a Printer attribute. See Restart-Printer (section 3.5.1) and 685 Startup-Printer (section 3.5.3) for the way to initialize the 686 software. See the Disable-Printer operation (section 3.1) for a way 687 for the client to stop the Printer from accepting Job Creation 688 requests without stopping processing or shutting down. 690 The Printer MUST add the 'shutdown' value (see [RFC2911] section 691 4.4.11) immediately to its "printer-state-reasons" Printer 692 Description attribute and performs a Deactivate-Printer operation 693 (see section 3.4.1) which performs a Disable-Printer and Pause- 694 Printer-After-Current-Job operation). 696 Note: In order to shutdown the Printer after all the currently 697 submitted jobs have completed, the operator issues a Disable-Printer 698 operation (see section 3.1.1) and then waits until all the jobs have 699 completed and the Printer goes into the 'idle' state before issuing 700 the Shutdown-Printer operation. 702 The Printer object MUST accept this operation in any state and 703 transition the Printer object through the "printer-states" and 704 "printer-state-reasons" defined for the Pause-Printer-After-Current- 705 Job operation until the activity is completed and the Printer object 706 disappears. 708 Access Rights: The authenticated user (see [RFC2911] section 8.3) 709 performing this operation must be an operator or administrator of the 710 Printer object (see [RFC2911] Sections 1 and 8.5). 712 The Shutdown-Printer Request and Shutdown-Printer Response have the 713 same attribute groups and attributes as the Pause-Printer operation 714 (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the new 715 "printer-message-from-operator" operation attribute (see section 6). 717 3.5.3 Startup-Printer operation 719 This OPTIONAL operation allows a client to startup an instance of a 720 Printer object, provided that there isn't one already instantiated. 721 The purpose of Startup-Printer is to allow a hosted implementation of 722 the IPP Printer object (i.e., a Server that implements an IPP Printer 723 on behalf of a networked or local Output Device) to be started after 724 the host is available (by means outside this document). See Restart- 725 Printer (section 3.5.1) for the way to initialize the software or 726 reset the Output Device(s) when the IPP Printer object has already 727 been instantiated. 729 The host MUST accept this operation only when the Printer object has 730 not been instantiated. If the Printer object already exists, the 731 host must return the 'client-error-not-possible' status code. 733 The result of this operation MUST be with the Printer object's 734 "printer-state" set to 'idle', the state reasons removed from its 735 "printer-state-reasons" attribute, and its "printer-is-accepting- 736 jobs" attribute set to 'false'. Then the operator can reconfigure 737 the Printer before performing an Enable-Printer operation. However, 738 when a Printer is first powered up, it is RECOMMENDED that its 739 "printer-is-accepting-jobs" attribute be set to 'true' in order to 740 achieve easy "out of the box" operation. 742 Access Rights: The authenticated user (see [RFC2911] section 8.3) 743 performing this operation must be an operator or administrator of the 744 Printer object (see [RFC2911] Sections 1 and 8.5). 746 The Shutdown-Printer Request and Shutdown-Printer Response have the 747 same attribute groups and attributes as the Pause-Printer operation 748 (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the new 749 "printer-message-from-operator" operation attribute (see section 6). 751 4 Definition of the Job Operations 753 All Job operations are directed at Job objects. A client MUST always 754 supply some means of identifying the Job object in order to identify 755 the correct target of the operation. That job identification MAY 756 either be a single Job URI or a combination of a Printer URI with a 757 Job ID. The IPP object implementation MUST support both forms of 758 identification for every job. 760 The Job Operations defined in this document are summarized in Table 761 4: 763 Table 4 - Job operation Operation-Id assignments 765 Operation Name Operation- Brief description 766 Id 768 Reprocess-Job 0x2C Creates a copy of a completed target 769 job with a new Job ID and processes it 771 Cancel-Current- 0x2D Cancels the current job on the target 772 Job Printer or the specified job if it is 773 the current job 775 Suspend- 0x2E Suspends the current processing job on 776 Current-Job the target Printer or the specified 777 job if it is the current job, allowing 778 other jobs to be processed instead 780 Resume-Job 0x2F Resume the suspended target job 782 Promote-Job 0x30 Promote the pending target job to be 783 next after the current job(s) complete 785 Schedule-Job- 0x31 Schedule the target job immediately 786 After after the specified job, all other 787 scheduling factors being equal. 789 4.1 Reprocess-Job Operation 791 This OPTIONAL operation is a create job operation that allows a 792 client to re-process a copy of a job that had been retained in the 793 queue after processing completed, was canceled, or was aborted (see 794 [RFC2911] section 4.3.7.2). This operation is the same as the 795 Restart-Job operation (see [RFC2911] section 3.3.7), except that the 796 Printer creates a new job that is a copy of the target job and the 797 target job is unchanged. The new job is assigned new values to the 798 "job-uri" and "job-id" attributes and the new job's Job Description 799 attributes that accumulate job progress, such as "job-impressions- 800 completed", "job-media-sheets-completed", and "job-k-octets- 801 processed", are initialized to 0 as with any create job operation. 802 The target job moves to the Job History after a suitable period, 803 independent of whether one or more Reprocess-Job operations have been 804 performed on it. 806 If the Set-Job-Attributes operation is supported, then the "job-hold- 807 until" operation attribute MUST be supported with at least the 808 'indefinite' value, so that a client can modify the new job before it 809 is scheduled for processing using the Set-Job-Attributes operation. 810 After modifying the job, the client can release the job for 811 processing, by using the Release-Job operation specifying the newly 812 assigned "job-uri" or "job-id" for the new job. 814 4.2 Cancel-Current-Job Operation 816 This OPTIONAL operation allows a client to cancel the current job on 817 the target Printer or the specified job if it is the current job on 818 the Printer. See [RFC2911] section 3.3.3 for the semantics of 819 canceling a job. Since a Job might already be marking by the time a 820 Cancel-Current-Job is received, some media sheet pages might be 821 printed before the job is actually terminated. 823 If the client does not supply a "job-id" operation attribute, the 824 Printer MUST accept the request and cancel the current job if there 825 is a current job in the 'processing' or 'processing-stopped' state; 826 otherwise, it MUST reject the request and return the 'client-error- 827 not-possible' status code. If more than one job is in the 828 'processing' or 'processing-stopped' states, the one that is marking 829 is canceled and the others are unaffected. 831 Warning: On a shared printer, there is a race condition. Between 832 the time that a user issues this operation and its acceptance, the 833 current job might change to a different job. If the user or operator 834 is authenticated to cancel the new job, the wrong job is canceled. 835 To prevent this race from canceling the wrong job, the client MAY 836 supply the "job-id" operation attribute which is checked against the 837 current job's job-id. If the job identified by the "job-id" 838 attribute is not the current job on the Printer, i.e., is not in the 839 'processing' or 'processing-stopped' states, the Printer MUST reject 840 this operation and return the 'client-error-not-possible' status 841 code. Otherwise, the Printer cancels the specified job. 843 Access Rights: The authenticated user (see [RFC2911] section 8.3) 844 performing this operation must either be the job owner (as determined 845 in the Job Creation operation) or an operator or administrator of the 846 Printer object (see [RFC2911] Sections 1 and 8.5). 848 The Cancel-Current-Job Request and Cancel-Current-Job Response have 849 the same attribute groups and attributes as the Resume-Printer 850 operation (see [RFC2911] section 3.2.8), including the new "job- 851 message-from-operator" operation attribute (see section 6), with the 852 addition of the following Group 1 Operation attributes in the 853 request: 855 "job-id" (integer(1:MAX)): 856 The client OPTIONALLY supplies this Operation attribute in order to 857 verify that the identified job is still the current job on the 858 target Printer object. The IPP object MUST supports this operation 859 attribute, if it supports this operation. 861 4.3 Suspend and Resume Job operations 863 This section defines the Suspend-Current-Job and Resume-Job 864 operations. These operations allow an operator or user to suspend a 865 job while it is processing and allow other jobs to be processed and 866 the resume the suspended job at a later point in time without losing 867 any of the output. 869 If either of these operations is supported, they both MUST be 870 supported. 872 The Hold-Job and Release-Job operations ([RFC2911] section 3.3.5) are 873 for holding and releasing held jobs, not suspending and resuming 874 suspended jobs. 876 4.3.1 Suspend-Current-Job operation 878 This OPTIONAL operation allows a client to stop the current job on 879 the target Printer or the specified job if it is the current job on 880 the Printer, and allow other jobs to be processed instead. The 881 Printer moves the current job or the target job to the 'processing- 882 stopped' state and sets the 'job-suspended' value (see section 9.1) 883 in the job's "job-state-reasons" attribute and processes other jobs. 885 If the client does not supply a "job-id" operation attribute, the 886 Printer MUST accept the request and suspend the current job if there 887 is a current job in the 'processing' or 'processing-stopped' state; 888 otherwise, it MUST reject the request and return the 'client-error- 889 not-possible' status code. If more than one job is in the 890 'processing' or 'processing-stopped' states, all of them are 891 suspended. 893 Warning: On a shared printer, there is a race condition. Between 894 the time that a user issues this operation and its acceptance, the 895 current job might change to a different job. If the user or operator 896 is authenticated to suspend the new job, the wrong job is suspended. 897 To prevent this race from pausing the wrong job, the client MAY 898 supply the "job-id" operation attribute which is checked against the 899 current job's job-id. If the job identified by the "job-id" 900 attribute is not the current job on the Printer, i.e., is not in the 901 'processing' or 'processing-stopped' states, the Printer MUST reject 902 this operation and return the 'client-error-not-possible' status 903 code. Otherwise, the Printer suspends the specified job and 904 processed other jobs. 906 The Printer MUST reject a Resume-Job request (and return the 'client- 907 error-not-possible') for a job that has been suspended , i.e., for a 908 job in the 'processing-stopped' state, with the 'job-suspended' value 909 in its "job-state-reasons" attribute. 911 Access Rights: The authenticated user (see [RFC2911] section 8.3) 912 performing this operation must either be the job owner (as determined 913 in the Job Creation operation) or an operator or administrator of the 914 Printer object (see [RFC2911] Sections 1 and 8.5). 916 The Suspend-Current-Job Request and Suspend-Current-Job Response have 917 the same attribute groups and attributes as the Pause-Printer 918 operation (see [RFC2911] section 3.2.8 ), including the new "job- 919 message-from-operator" operation attribute (see section 6), with the 920 addition of the following Group 1 Operation attributes in the 921 request: 923 "job-id" (integer(1:MAX)): 924 The client OPTIONALLY supplies this Operation attribute in 925 order to verify that the identified job is still the current 926 job on the target Printer object. The IPP object MUST supports 927 this operation attribute, if it supports this operation. 929 4.3.2 Resume-Job operation 931 This OPTIONAL operation allows a client to resume the target job at 932 the point where it was suspended. The Printer moves the target job 933 to the 'pending' state and removes the 'job-suspended' value from the 934 job's "job-state-reasons" attribute. 936 If the target job is not in the 'processing-stopped' state with the 937 'job-suspended' value in the job's "job-state-reasons" attribute, the 938 Printer MUST reject the request and return the 'client-error-not- 939 possible' status code, since the job was not suspended. 941 Access Rights: The authenticated user (see [RFC2911] section 8.3) 942 performing this operation must either be the job owner (as determined 943 in the Job Creation operation) or an operator or administrator of the 944 Printer object (see [RFC2911] Sections 1 and 8.5). 946 The Resume-Job Request and Resume-Job Response have the same 947 attribute groups and attributes as the Release-Job operation (see 948 [RFC2911] section 3.3.6), including the new "job-message-from- 949 operator" operation attribute (see section 6). 951 4.4 Job Scheduling Operations 953 This section defines jobs that allow an operator to control the 954 scheduling of jobs. 956 4.4.1 Promote-Job operation 958 This OPTIONAL operation allows a client to make the pending target 959 job be processed next after the current job completes. This 960 operation is specially useful in a production printing environment 961 where the operator is involved in job scheduling. 963 If the target job is in the 'pending' state, this operation does not 964 change the job's state, but causes the job to be processed after the 965 current job(s) complete. If the target job is not in the 'pending' 966 state, the Printer MUST reject the request and return the 'client- 967 error-not-possible' status code. 969 If the Printer implements the "job-priority" Job Template attribute 970 (see [RFC2911] section 4.2.1), the Printer sets the job's "job- 971 priority" to the highest value supported (so that the job will print 972 before any of the other pending jobs). The Printer returns the 973 target job immediately after the current job(s) in a Get-Jobs 974 response (see [RFC2911] section 3.2.6) for the 'not-completed' jobs. 976 When the current job completes, is canceled, suspended (see section 977 4.3.1), or aborted, the target of this operation is processed next. 979 If a client issues this request (again) before the target of the 980 operation of the original request started processing, the target of 981 this new request is processed before the previous job that was to be 982 processed next. 984 IPP is specified not to require queues for job scheduling, since 985 there are other implementation techniques for scheduling multiple 986 jobs, such as re-evaluating a criteria function for each job on a 987 scheduling cycle. However, if an implementation does implement 988 queues for jobs, then the Promote-Job puts the specified job at the 989 front of the queue. A subsequent Promote-Job before the first job 990 starts processing puts that specified job at the front of the queue, 991 so that it is "in front" of the previously promoted job. 993 Access Rights: The authenticated user (see [RFC2911] section 8.3) 994 performing this operation must be an operator or administrator of the 995 Printer object (see [RFC2911] Sections 1 and 8.5). 997 The Promote-Job Request and Promote-Job Response have the same 998 attribute groups and attributes as the Cancel-Job operation (see 999 [RFC2911] section 3.3.3), including the new "job-message-from- 1000 operator" operation attribute (see section 6). 1002 4.4.2 Schedule-Job-After operation 1004 This OPTIONAL operation allows a client to request the Printer to 1005 schedule the target job so that it will be processed immediately 1006 after the specified predecessor job, all other scheduling factors 1007 being equal. This operation is specially useful in a production 1008 printing environment where the operator is involved in job 1009 scheduling. 1011 If the target job is in the 'pending' state, this operation does not 1012 change the job's state, but causes the job to be processed after the 1013 predecessor job completes. The predecessor job can be in the 1014 'pending', 'processing', or 'processing-stopped' states. If the 1015 target job is not in the 'pending' state or the predecessor job is 1016 not in the 'pending', 'processing', or 'processing-stopped' states, 1017 the Printer MUST reject the request and returns the 'client-error- 1018 not-possible' status code, since the job cannot have its position 1019 changed. 1021 If the Printer implements the "job-priority" Job Template attribute 1022 (see [RFC2911] section 4.2.1), the Printer sets the job's "job- 1023 priority" to that of the predecessor job (so that the job will print 1024 after the predecessor job). The Printer returns the target job 1025 immediately after the predecessor in a Get-Jobs response (see 1026 [RFC2911] section 3.2.6) for the 'not-completed' jobs. 1028 When the predecessor job completes processing or is canceled or 1029 aborted while processing, the target of this operation is processed 1030 next. 1032 If the client does not supply a predecessor job, this operation has 1033 the same semantics as Promote-Job (see section 4.4). 1035 IPP is specified not to require queues for job scheduling, since 1036 there are other implementation techniques for scheduling multiple 1037 jobs, such as re-evaluating a criteria function for each job on a 1038 scheduling cycle. However, if an implementation does implement 1039 queues for jobs, then the Schedule-Job-After operation puts the 1040 specified job immediately after the specified job in the queue. A 1041 subsequent Schedule-Job-After operation specifying the same job will 1042 cause its target job to be placed after that job, even though it is 1043 between the first target job and the specified job. For example, 1044 suppose the job queue consisted of jobs: A, B, C, D, and E, in that 1045 order. A Schedule-Job-After with job E as the target and B as the 1046 specified job would result in the following queue: A, B, E, C, D. A 1047 subsequent Schedule-Job-After with Job D as the target and B as the 1048 specified job would result in the following queue: A, B, D, E, C. 1049 In other words, the link between the two jobs in a Schedule-Job-After 1050 operation is not retained, i.e., there is no attribute on either job 1051 that points to the other job as a result of this operation. 1053 Access Rights: The authenticated user (see [RFC2911] section 8.3) 1054 performing this operation must be operator or administrator of the 1055 Printer object (see [RFC2911] Sections 1 and 8.5). 1057 The Schedule-Job-After Request have the same attribute groups and 1058 attributes as the Cancel-Job operation (see [RFC2911] section 3.3.3), 1059 plus the new "job-message-from-operator" operation attribute (see 1060 section 6). In addition, the following operation attributes are 1061 defined: 1063 "predecessor-job-id": 1064 The client OPTIONALLY supplies this attribute. The Printer 1065 MUST support it, if it supports this operation. This attribute 1066 specifies the job after which the target job is to be 1067 processed. If the client omits this attribute, the Printer 1068 MUST process the target job next, i.e., after the current job, 1069 if any. 1071 The Schedule-Job-After Response has the same attribute groups, 1072 attributes, and status codes as the Cancel-Job operation (see 1073 [RFC2911] section 3.3.3). The following status codes have particular 1074 meaning for this operation: 1076 'client-error-not-possible' - the target job was not in the 1077 'pending' state or the predecessor job was no in the 'pending', 1078 'processing', or 'processing-stopped' states. 1079 'client-error-not-found' - either the target job or the 1080 predecessor job was not found. 1082 5 Additional status codes 1084 This section defines new status codes used by the operations defined 1085 in this document. 1087 5.1 'server-error-printer-is-deactivated' (0x050A) 1089 The Printer has been deactivated using the Deactivate-Printer 1090 operation and is only accepting the Activate-Printer (see section 1091 3.5.1), Get-Job-Attributes, Get-Jobs, Get-Printer-Attributes, and any 1092 other Get-Xxxx operations. An operator can perform the Activate- 1093 Printer operation to allow the Printer to accept other operations. 1095 6 Use of Operation Attributes that are Messages from the Operator 1097 This section summarizes the usage of the "printer-message-from- 1098 operator" and "job-message-from-operator" operation attributes that 1099 set the corresponding Printer and Job Description attributes (see 1100 [ipp-set-ops] for the definition of these operation attributes). 1101 These operation attributes are defined for most of the Printer and 1102 Job operations that operators are likely to perform, respectively, so 1103 that operators can indicate the reasons for their actions. 1105 Table 5 shows the operation attributes that are defined for use with 1106 the Printer Operations. 1108 Table 5 - Operation attribute support for Printer Operations 1110 Operation Attribute A B C D E F G 1112 attributes-charset REQ REQ REQ REQ REQ REQ REQ 1114 attributes-natural-language REQ REQ REQ REQ REQ REQ REQ 1116 printer-uri REQ REQ REQ REQ REQ REQ REQ 1118 requesting-user-name REQ REQ REQ REQ REQ REQ REQ 1120 printer-message-from- OPT OPT OPT OPT OPT OPT 1121 operator 1123 Legend: 1124 A: Pause-Printer, Pause-Printer-After-Current-Job, Resume-Printer 1125 B: Hold-New-Jobs, Release-Held-New-Jobs 1126 C: Purge-Jobs 1127 D: Get-Printer-Attributes, Set-Printer-Attributes 1128 E: Enable-Print, Disable-Printer 1129 F: Restart-Printer 1130 G: Shutdown-Printer, Startup-Printer 1131 REQ - REQUIRED for a Printer to support 1132 OPT - OPTIONAL for a Printer to support; the Printer ignores the 1133 attribute if not supported 1134 - not defined for use with the operation; the Printer 1135 ignores the attribute 1137 Table 6 shows the operation attributes that are defined for use with 1138 the Job operations. 1140 Table 6 - Operation attribute support for Job operations 1142 Operation A B C D E F G H I J 1143 Attribute 1145 attributes- REQ REQ REQ REQ REQ REQ REQ REQ REQ REQ 1146 charset 1148 attributes- REQ REQ REQ REQ REQ REQ REQ REQ REQ REQ 1149 natural- 1150 language 1152 printer-uri REQ REQ REQ REQ REQ REQ REQ REQ REQ REQ 1154 job-uri REQ REQ REQ REQ REQ REQ REQ REQ 1156 job-id REQ REQ REQ REQ REQ REQ REQ REQ REQ REQ 1158 requesting- REQ REQ REQ REQ REQ REQ REQ REQ REQ REQ 1159 user-name 1161 job-message- OPT OPT OPT OPT OPT OPT OPT OPT OPT 1162 from-operator 1164 message [to- OPT OPT OPT OPT OPT OPT OPT OPT 1165 operator] 1167 job-hold-until OPT OPT 1168 * ** 1170 Legend: 1171 A: Cancel-Job 1172 B: Cancel-Current-Job 1173 C: Hold-Job, Release-Job 1174 D: Suspend-Current-Job 1175 E: Resume-Job 1176 F: Get-Job-Attributes, Set-Job-Attributes 1177 G: Restart-Job 1178 H: Reprocess-Job 1179 I: Promote-Job 1180 J: Schedule-Job-After 1181 REQ - REQUIRED for a Printer to support 1182 O - OPTIONAL for a Printer to support; the Printer ignores the 1183 attribute if supplied, but not supported 1184 - not defined for use with the operation; the Printer ignores 1185 the attribute 1186 * The Printer MUST support the "job-hold-until" operation attribute 1187 if it supports the "job-hold-until" Job Template attribute. 1188 ** The Printer MUST support the "job-hold-until" operation attribute 1189 if it supports the Set-Job-Attributes operation, so that the 1190 client can hold the job with the Reprocess-Job operation and the 1191 modify the job before releasing it to be processed. 1193 7 New Printer Description Attributes 1195 The following new Printer Description attributes are needed to 1196 support the new operations defined in this document and the concepts 1197 of Printer Fan-Out (see section 11). 1199 7.1 subordinate-printers-supported (1setOf uri) 1201 This Printer attribute is REQUIRED if an implementation supports 1202 Subordinate Printers (see section 11) and contains the URIs of the 1203 immediate Subordinate Printer object(s) associated with this Printer 1204 object. Each Non-Leaf Printer object MUST support this Printer 1205 Description attribute. A Leaf Printer object either does not support 1206 the "subordinate-printers-supported" attribute or does so with the 1207 'no-value' out-of-band value (see [RFC2911] section 4.1), depending 1208 on implementation. 1210 The precise format of the Subordinate Printer URIs is implementation 1211 dependent (see section 11.4). 1213 If the Printer object does not have an associated Output Device, the 1214 Printer MAY automatically copy the value of the Subordinate Printer 1215 object's "printer-name" attribute to the Job object's "output- 1216 device-assigned" attribute (see [RFC2911] section 4.3.13). The 1217 "output-device-assigned" Job attribute identifies the Output Device 1218 to which the Printer object has assigned a job, for example, when a 1219 single Printer object is supporting Device Fan-Out or Printer Fan- 1220 Out. 1222 7.2 parent-printers-supported (1setOf uri) 1224 This Printer attribute is REQUIRED if an implementation supports 1225 Subordinate Printers (see section 11) and contains the URI of the 1226 Non-Leaf printer object(s) for which this Printer object is the 1227 immediate Subordinate, i.e., this Printer's immediate "parent" or 1228 "parents". Each Subordinate Printer object MUST support this Printer 1229 Description attribute. A Printer that has no parents, either does 1230 not support the "parent-printers-supported" attribute or does so with 1231 the 'no-value' out-of-band value (see [RFC2911] section 4.1), 1232 depending on implementation. 1234 8 Additional Values for the "printer-state-reasons" Printer Description 1235 attribute 1237 This section defines additional values for the "printer-state- 1238 reasons" Printer Description attribute. 1240 8.1 'hold-new-jobs' value 1242 'hold-new-jobs': The operator has issued the Hold-New-Jobs operation 1243 (see section 3.3.1) or other means, but the output-device(s) are 1244 taking an appreciable time to stop. Later, when all output has 1245 stopped, the "printer-state" becomes 'stopped', and the 'paused' 1246 value replaces the 'moving-to-paused' value in the "printer-state- 1247 reasons" attribute. This value MUST be supported, if the Hold- 1248 New-Jobs operation is supported and the implementation takes 1249 significant time to pause a device in certain circumstances. 1251 8.2 'deactivated' value 1253 'deactivated': A client has issued a Deactivate-Printer operation 1254 for the Printer object (see section 3.4.1) and the Printer is in 1255 the process of becoming deactivated or has become deactivated. The 1256 Printer MUST reject all requests except Activate-Printer, queries 1257 (Get-Printer-Attributes, Get-Job-Attributes, Get-Jobs, etc.), 1258 Send-Document, and Send-URI (so that partial job submission can be 1259 completed - see section 3.1.1) and return the 'server-error- 1260 service-unavailable' status code. 1262 9 Additional Values for the "job-state-reasons" Job Description 1263 attribute 1265 This section defines additional values for the "job-state-reasons" 1266 Job Description attribute. 1268 9.1 'job-suspended' value 1270 'job-suspended': The job has been suspended while processing 1271 using the Suspend-Current-Job operation and other jobs can be 1272 processed on the Printer. The Job can be resumed using the 1273 Resume-Job operation which removes this value. 1275 10 Additional events 1277 The following Job events are defined for use with [ipp-ntfy]: 1279 'job-forwarded-operation-failed' - an operation that a Printer 1280 forwarded to a Subordinate Printer (see section 11.7) failed. 1282 11 Use of the Printer object to represent IPP Printer Fan-Out and IPP 1283 Printer Fan-In 1285 This section defines how the Printer object MAY be used to represent 1286 IPP Printer Fan-Out and IPP Printer Fan-In. Fan-Out is where an IPP 1287 Printer is used to represent other IPP Printer objects. Fan-In is 1288 where several IPP Printer objects are used to represent another IPP 1289 Printer object. 1291 11.1 IPP Printer Fan-Out 1293 The IPP/1.1 Model and Semantics introduces the semantic concept of an 1294 IPP Printer object that represents more than one Output Device (see 1295 [RFC2911] section 2.1). This concept is called "Output Device Fan- 1296 Out". However, there was no way to represent the individual states 1297 of the Output Devices or to perform operations on a specific Output 1298 Device when there was Fan-Out. This document generalizes the 1299 semantics of the Printer object to represent such Subordinate Fan-Out 1300 Output Devices as IPP Printer objects. This concept is called 1301 "Printer object Fan-Out". A Printer object that has a Subordinate 1302 Printer object is called a Non-Leaf Printer object. Thus a Non-Leaf 1303 Printer object supports one or more Subordinate Printer objects in 1304 order to represent Printer object Fan-Out. A Printer object that does 1305 not have any Subordinate Printer objects is called a Leaf Printer 1306 object. 1308 Each Non-Leaf Printer object submits jobs to its immediate 1309 Subordinate Printers and otherwise controls the Subordinate Printers 1310 using IPP or other protocols. Whether pending jobs are kept in the 1311 Non-Leaf Printer until a Subordinate Printer can accept them or are 1312 kept in the Subordinate Printers depends on implementation and/or 1313 configuration policy. Furthermore, a Subordinate Printer object MAY, 1314 in turn, have Subordinate Printer objects. Thus a Printer object can 1315 be both a Non-Leaf Printer and a Subordinate Printer. 1317 A Subordinate Printer object MUST be a conforming Printer object, so 1318 it MUST support all of the REQUIRED [RFC2911] operations and 1319 attributes. However, with access control, the Subordinate Printer 1320 MAY be configured so that end-user clients are not permitted to 1321 perform any operations (or just Get-Printer-Attributes) while one or 1322 more Non-Leaf Printer object(s) are permitted to perform any 1323 operation. 1325 11.2 IPP Printer Fan-In 1327 The IPP/1.1 Model and Semantics did not preclude the semantic concept 1328 of multiple IPP Printer objects that represent a single Output Device 1329 (see [RFC2911] section 2.1). However, there was no way for the 1330 client to determine that there was a Fan-In configuration, nor was 1331 there a way to perform operations on the Subordinate device. This 1332 specification generalizes the semantics of the Printer object to 1333 allow several Non-Leaf IPP Printer objects to represent a single 1334 Subordinate Printer object. Thus a Non-Leaf Printer object MAY share 1335 a Subordinate Printer object with one or more other Non-Leaf Printer 1336 objects in order to represent IPP Printer Fan-In. 1338 As with Fan-Out (see section 11.1), when a Printer object is a Non- 1339 Leaf Printer, it MUST NOT have an associated Output Device. As with 1340 Fan-Out, a Leaf Printer object has one or more associated Output 1341 Devices. As with Fan-Out, the Non-Leaf Printer objects submit jobs 1342 to their Subordinate Printer objects and otherwise control the 1343 Subordinate Printer. As with Fan-Out, whether pending jobs are kept 1344 in the Non-Leaf Printers until the Subordinate Printer can accept 1345 them or are kept in the Subordinate Printer depends on implementation 1346 and/or configuration policy. 1348 11.3 Printer object attributes used to represent Printer Fan-Out and 1349 Printer Fan-In 1351 The following Printer Description attributes are defined to represent 1352 the relationship between Printer object(s) and their Subordinate 1353 Printer object(s): 1355 1."subordinate-printers-supported" (1setOf uri) - contains the URI 1356 of the immediate Subordinate Printer object(s). 1358 2."parent-printers-supported (1setOf uri) - contains the URI of 1359 the Non-Leaf printer object(s) for which this Printer object is 1360 the immediate Subordinate, i.e., this Printer's immediate 1361 "parent" or "parents". 1363 11.4 Subordinate Printer URI 1365 Each Subordinate Printer object has a URI which is used as the target 1366 of each operation on the Subordinate Printer. The means for 1367 configuring URIs for Subordinate Printer objects is implementation- 1368 dependent as are all URIs. However, there are two distinct 1369 approaches: 1371 a. When the implementation wants to make sure that no operation on 1372 a Subordinate Printer object as a target "sneaks by" the parent 1373 Printer object (or the Subordinate Printer is fronting for a device 1374 that is not networked), the host part of the URI specifies the host 1375 of the parent Printer. Then the parent Printer object can easily 1376 reflect the state of the Subordinate Printer objects in the 1377 parent's Printer object state and state reasons as the operation 1378 passes "through" the parent Printer object. 1380 b. When the Subordinate Printer is networked and the implementation 1381 allows operations to go directly to the Subordinate Printer (with 1382 proper access control) without knowledge of the parent Printer 1383 object, the host part of the URI is different than the host part of 1384 the parent Printer object. In such a case, the parent Printer 1385 object MUST keep its "printer-state" and "printer-state-reasons" up 1386 to date, either by polling the Subordinate Printer object or by 1387 subscribing to events with the Subordinate Printer object (see 1388 [ipp-not-spec] for means to subscribe to event notification when 1389 the Subordinate Printer object supports IPP notification). 1391 11.5 Printer object attributes used to represent Output Device Fan-Out 1393 Only Leaf IPP Printer objects are allowed to have one or more 1394 associated Output Devices. Each Leaf Printer object MAY support the 1395 "output-devices-supported" (1setOf name(127)) to indicate the user- 1396 friendly name(s) of the Output Device(s) that the Leaf Printer object 1397 represents. It is RECOMMENDED that each Leaf Printer object have 1398 only one associated Output Device, so that the individual Output 1399 Devices can be represented completely and controlled completely by 1400 clients. In other words, the Leaf Printer's "output-devices- 1401 supported" attribute SHOULD have only one value. 1403 Non-Leaf Printer MUST NOT have associated Output Devices. However, a 1404 Non-Leaf Printer SHOULD support an "output-devices-supported" (1setOf 1405 name(127)) Printer Description attribute that contains all the values 1406 of its immediate Subordinate Printers. Since such Subordinate 1407 Printers MAY be Leaf or Non-Leaf, the same rules apply to them, etc. 1408 Thus any Non-Leaf Printer SHOULD have an "output-devices-supported" 1409 (1setOf name(127)) attribute that contains all the values of the 1410 Output Devices associated with Leaf Printers of its complete sub- 1411 tree. 1413 When adding, removing, or changing a configuration of Printers and 1414 Output Devices, there can be moments in time when the tree structure 1415 is not consistent. In other words, times when a Non-Leaf Printer's 1416 "subordinate-printers-supported" does not agree with the Subordinate 1417 Printer's "parent-printers-supported". Therefore, the operator 1418 SHOULD first Deactivate all Printers that are being configured in 1419 this way, update all pointer attributes, and then reactivate. A 1420 useful client tool would validate a tree structure before Activating 1421 the Printers involved. 1423 11.6 Figures to show all possible configurations 1425 Figure 1, Figure 2, and Figure 3 are taken from [RFC2911] to show the 1426 configurations possible with IPP/1.0 and IPP/1.1 where all Printer 1427 objects are Leaf Printer objects. The remaining figures show 1428 additional configurations that this document defines using Non-Leaf 1429 and Leaf Printer objects. Legend for all figures: 1431 ----> indicates a network protocol with the direction of its requests 1433 ##### indicates a Printer object which is either: 1434 - embedded in an Output Device or 1435 - hosted in a server. The Printer object 1436 might or might not be capable of queuing/spooling. 1438 any indicates any network protocol or direct 1439 connect, including IPP 1440 Output Device 1441 +---------------+ 1442 | ########### | 1443 O +--------+ | # (Leaf) # | 1444 /|\ | client |------------IPP-----------------># Printer # | 1445 / \ +--------+ | # Object # | 1446 | ########### | 1447 +---------------+ 1449 Figure 1 - Embedded Printer object 1451 ########### Output Device 1452 O +--------+ # (Leaf) # +---------------+ 1453 /|\ | client |---IPP----># Printer #---any->| | 1454 / \ +--------+ # object # | | 1455 ########### +---------------+ 1457 Figure 2 - Hosted Printer object 1459 +---------------+ 1460 | | 1461 +->| Output Device | 1462 ########### any/ | | 1463 O +--------+ # (Leaf) # / +---------------+ 1464 /|\ | client |---IPP----># Printer #--* 1465 / \ +--------+ # Object # \ +---------------+ 1466 ########### any\ | | 1467 +->| Output Device | 1468 | | 1469 +---------------+ 1471 Figure 3 - Output Device Fan-Out 1472 ########### ########### 1473 O +--------+ # Non-Leaf# # subord. # 1474 /|\ | client |---IPP----># Printer #---IPP----># Printer # 1475 / \ +--------+ # object # # object # 1476 ########### ########### 1478 The Subordinate Printer can be a Non-Leaf Printer as in Figure 4 to 1479 Figure 6, or can be a Leaf Printer as in Figure 1 to Figure 3. 1481 Figure 4 - Chained IPP Printer Objects 1483 +------IPP--------------------->########### 1484 / +---># subord. # 1485 / / # Printer # 1486 / ########### any # object # 1487 O +--------+ # Non-Leaf# / ########### 1488 /|\ | client |---IPP----># Printer #--* 1489 / \ +--------+ # object # \ 1490 \ ########### any ########### 1491 \ \ # subord. # 1492 \ +---># Printer # 1493 +------IPP---------------------># object # 1494 ########### 1496 The Subordinate Printer can be a Non-Leaf Printer as in Figure 4 to 1497 Figure 6, or can be a Leaf Printer as in Figure 1 to Figure 3. 1499 Figure 5 - IPP Printer Object Fan-Out 1501 (Non-Leaf) 1502 ########### 1503 # Non-Leaf# 1504 +---># Printer #-+ 1505 / # object # \ 1506 IPP ########### \ ########### 1507 O +--------+ / +-IPP-># subord. # 1508 /|\ | client |--+-----------IPP---------------># Printer # 1509 / \ +--------+ \ +-IPP-># object # 1510 IPP ########### / ########### 1511 \ # Non-Leaf# / 1512 +---># Printer #-+ 1513 # object # 1514 ########### 1515 (Non-Leaf) 1517 The Subordinate Printer can be a Non-Leaf Printer as in Figure 4, 1518 Figure 5, or Figure 6, or can be a Leaf Printer as in Figure 1, 1519 Figure 2, or Figure 3. 1521 Figure 6 - IPP Printer Object Fan-In 1523 11.7 Forwarding requests 1525 This section describes the forwarding of Job and Printer requests to 1526 Subordinate Printer objects. 1528 11.7.1 Forwarding requests that affect Printer objects 1530 In Printer Fan-Out, Printer Fan-In, and Chained Printers, the Non- 1531 Leaf IPP Printer object MUST NOT forward the operations that affect 1532 Printer objects to its Subordinate Printer objects. If a client 1533 wants to explicitly target a Subordinate Printer, the client MUST 1534 specify the URI of the Subordinate Printer. The client can 1535 determine the URI of any Subordinate Printers by querying the 1536 Printer's "subordinate-printers-supported (1setOf uri) attribute (see 1537 section 7.1). 1539 Table 7 lists the operations that affect Printer objects and the 1540 forwarding behavior that a Non-Leaf Printer MUST exhibit to its 1541 immediate Subordinate Printers. Operations that affect jobs have a 1542 different forwarding rule (see section 11.7.2 and Table 8): 1544 Table 7 - Forwarding operations that affect Printer objects 1546 Printer Operation Non-Leaf Printer action 1548 Printer Operations: 1550 Enable-Printer MUST NOT forward to any of its Subordinate 1551 Printers 1553 Disable-Printer MUST NOT forward to any of its Subordinate 1554 Printers 1556 Hold-New-Jobs MUST NOT forward to any of its Subordinate 1557 Printers 1559 Release-Held-New- MUST NOT forward to any of its Subordinate 1560 Jobs Printers 1562 Deactivate-Printer MUST NOT forward to any of its Subordinate 1563 Printers 1565 Activate-Printer MUST NOT forward to any of its Subordinate 1566 Printers 1568 Restart-Printer MUST NOT forward to any of its Subordinate 1569 Printers 1571 Shutdown-Printer MUST NOT forward to any of its Subordinate 1572 Printers 1574 Startup-Printer MUST NOT forward to any of its Subordinate 1575 Printers 1577 IPP/1.1 Printer See [RFC2911] 1578 Operations: 1580 Get-Printer- MUST NOT forward to any of its Subordinate 1581 Attributes Printers 1583 Pause-Printer MUST NOT forward to any of its Subordinate 1584 Printers 1586 Resume-Printer MUST NOT forward to any of its Subordinate 1587 Printers 1589 Printer Operation Non-Leaf Printer action 1591 Set operations: See [ipp-set-ops] 1593 Set-Printer- MUST NOT forward to any of its Subordinate 1594 Attributes Printers 1596 11.7.2 Forwarding requests that affect Jobs 1598 Unlike Printer Operations that only affect Printer objects (see 1599 section 11.7.1), a Non-Leaf Printer object MUST forward operations 1600 that directly affect jobs to the appropriate Job object(s) in one or 1601 more of its immediate Subordinate Printer objects. Forwarding is 1602 REQUIRED since the purpose of such a Job operation is to affect the 1603 indicated job which itself may have been forwarded. Such forwarding 1604 MAY be immediate or queued, depending on the operation and the 1605 implementation. For example, a Non-Leaf Printer object MAY 1606 queue/spool jobs, feeding a job at a time to its Subordinate 1607 Printer(s), or MAY forward jobs immediately to one of its Subordinate 1608 Printers. In either case, the Non-Leaf Printer object is forwarding 1609 Job Creation operations to one of its Subordinate Printers. Only the 1610 time of forwarding of the Job Creation operations depends on whether 1611 the policy is to queue/spool jobs in the Non-Leaf Printer or the 1612 Subordinate Printer. 1614 When a Non-Leaf Printer object creates a Job object in its 1615 Subordinate Printer, whether that Non-Leaf Printer object keeps a 1616 fully formed Job object or just keeps a mapping from the "job-ids" 1617 that it assigned to those assigned by its Subordinate Printer object 1618 is IMPLEMENTATION-DEPENDENT. In either case, the Non-Leaf Printer 1619 MUST be able to accept and carry out future Job operations that 1620 specify the "job-id" that the Non-Leaf Printer assigned and returned 1621 to the job submitting client. 1623 Table 8 lists the operations that directly affect jobs and the 1624 forwarding behavior that a Non-Leaf Printer MUST exhibit to its 1625 Subordinate Printers: 1627 Table 8 - Forwarding operations that affect Jobs objects 1629 Job operation Non-Leaf Printer action 1631 Job operations: 1633 Reprocess-Job MUST forward to the appropriate Job in one of 1634 its Subordinate Printers 1636 Cancel-Current- 1637 Job MUST NOT forward 1639 Resume-Job MUST forward to the appropriate Job in one of 1640 its Subordinate Printers 1642 Promote-Job MUST forward to the appropriate Job in one of 1643 its Subordinate Printers 1645 IPP/1.1 Printer 1646 Operations: 1648 Print-Job MUST forward immediately or queue to the 1649 appropriate Subordinate Printer 1651 Print-URI MUST forward immediately or queue to the 1652 appropriate Subordinate Printer 1654 Validate-Job MUST forward to the appropriate Subordinate 1655 Printer 1657 Create-Job MUST forward immediately or queue to the 1658 appropriate Subordinate Printer 1660 Get-Jobs MUST forward to all its Subordinate Printers 1662 Purge-Jobs MUST forward to all its Subordinate Printers 1664 IPP/1.1 Job 1665 operations: 1667 Send-Document MUST forward immediately or queue to the 1668 appropriate Job in one of its Subordinate 1669 Printers 1671 Send-URI MUST forward immediately or queue to the 1672 appropriate Job in one of its Subordinate 1673 Printers 1675 Job operation Non-Leaf Printer action 1677 appropriate Job in one of its Subordinate 1678 Printers 1680 Cancel-Job MUST forward to the appropriate Job in one of 1681 its Subordinate Printers 1683 Get-Job- MUST forward to the appropriate Job in one of 1684 Attributes its Subordinate Printers, if the Non-Leaf 1685 Printer doesn't know the complete status of the 1686 Job object 1688 Hold-Job MUST forward to the appropriate Job in one of 1689 its Subordinate Printers 1691 Release-Job MUST forward to the appropriate Job in one of 1692 its Subordinate Printers 1694 Restart-Job MUST forward to the appropriate Job in one of 1695 its Subordinate Printers 1697 IPP Set operations: See [ipp-set-ops] 1699 Set-Job- MUST forward to the appropriate Job in one of 1700 Attributes its Subordinate Printers 1702 When a Printer receives a request that REQUIRES forwarding, it does 1703 so on a "best efforts basis", and returns a response to its client 1704 without waiting for responses from any of its Subordinate Printers. 1705 Such forwarded requests could fail. In order for a client to become 1706 aware of such a condition, a new 'job-forwarded-operation-failed' Job 1707 event is defined, which a client can subscribe to (see section 10 and 1708 [ipp-ntfy]). 1710 11.8 Additional attributes to help with fan-out 1712 The following Job Description attributes are defined to help 1713 represent Job relationships for Fan-Out and forwarding of jobs: 1715 11.8.1 output-device-assigned (name(127)) Job Description attribute - 1716 from [RFC2911] 1718 This attribute identifies the Output Device to which the Printer 1719 object has assigned this job. If an Output Device implements an 1720 embedded Printer object, the Printer object NEED NOT set this 1721 attribute. If a print server implements a Printer object, the value 1722 MAY be empty (zero-length string) or not returned until the Printer 1723 object assigns an Output Device to the job. This attribute is 1724 particularly useful when a single Printer object supports multiple 1725 devices (so called "Device Fan-Out"). 1727 11.8.2 original-requesting-user-name (name(MAX)) operation attribute 1729 The operation attribute containing the user name of the original 1730 user, i.e., corresponds to the "requesting-user-name" operation 1731 attribute that the original client supplied to the first Printer 1732 object. The IPP/1.1 "requesting-user-name" operation attribute (see 1733 [RFC2911]) is updated by each client to be itself on each hop, i.e., 1734 the "requesting-user-name" is the client forwarding the request, not 1735 the original client. The "job-originating-user-name" Job Description 1736 attribute remains as the authenticated original user, not the parent 1737 Printer's authenticated host, and is forwarded by each client without 1738 changing the value. 1740 12 Conformance Requirements 1742 The Job and Printer Administrative operations defined in this 1743 document are OPTIONAL operations. However, some operations MUST be 1744 implemented if others are implemented as shown in Table 9. 1746 Table 9 - Conformance Requirement Dependencies for Operations 1748 Operations REQUIRED If any of these operations are supported: 1750 Enable-Printer Disable-Printer 1752 Disable-Printer Enable-Printer 1754 Pause-Printer Resume-Printer 1756 Resume-Printer Pause-Printer, Pause-Printer-After-Current- 1757 Job 1759 Hold-New-Jobs Release-Held-New-Jobs 1761 Release-Held-New-Jobs Hold-New-Jobs 1763 Activate-Printer, Deactivate-Printer 1764 Disable-Printer, 1765 Pause-Printer-After- 1766 Current-Job 1768 Deactivate-Printer, Activate-Printer 1769 Enable-Printer, 1770 Resume-Printer 1772 Restart-Printer none 1774 Shutdown-Printer none 1776 Startup-Printer none 1778 Reprocess-Job none 1780 Cancel-Current-Job none 1782 Resume-Job Suspend-Current-Job 1784 Suspend-Current-Job Resume-Job 1786 Promote-Job none 1788 Schedule-Job-After Promote-Job 1789 Table 10 and Table 11 list the "printer-state-reasons" and "job- 1790 state-reasons" values that are REQUIRED if the indicated operations 1791 are supported. 1793 Table 10- Conformance Requirement Dependencies for "printer-state- 1794 reasons" Values 1796 "printer-state- Conformance If any of the following Printer 1797 reasons" values: Requirement Operations are supported: 1799 'paused' REQUIRED Pause-Printer, Pause-Printer- 1800 After-Current-Job, or 1801 Deactivate-Printer 1803 'hold-new-jobs' REQUIRED Hold-New-Jobs 1805 'moving-to-paused' OPTIONAL Pause-Printer, Pause-Printer- 1806 After-Current-Job, Deactivate- 1807 Printer 1809 'deactivated' REQUIRED Deactivate-Printer 1811 Table 11- Conformance Requirement Dependencies for "job-state- 1812 reasons" Values 1814 "job-state-reasons" Conformance If any of the following Job 1815 values: Requirement operations are supported: 1817 'job-suspended' REQUIRED Suspend-Current-Job 1819 'printer-stopped' REQUIRED always REQUIRED 1821 13 IANA Considerations 1823 13.1 This section contains the registration information for IANA to add 1824 to the various IPP Registries according to the procedures defined in 1825 RFC 2911 [RFC2911] section 6 to cover the definitions in this 1826 document. Attribute Registrations 1828 The following table lists all the attributes defined in this 1829 document. These are to be registered according to the procedures in 1830 RFC 2911 [RFC2911] section 6.2. 1832 Job Description attributes: Ref. Section: 1833 output-device-assigned (name(127)) RFC NNNN 11.8.1 1835 Printer Description attributes: Ref. Section: 1836 subordinate-printers-supported (1setOf uri) RFC NNNN 7.1 1837 parent-printers-supported (1setOf uri) RFC NNNN 7.2 1839 Operation attributes: Ref. Section: 1840 original-requesting-user-name (name(MAX)) RFC NNNN 11.8.2 1842 The resulting attribute registrations will be published in the 1843 ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attributes/ 1844 area. 1846 13.2 Attribute Value Registrations 1848 This section lists the additional values that are defined in this 1849 document for existing attributes. 1851 13.2.1 Additional Keyword Attribute Value Registrations for the "job- 1852 state-reasons" attribute 1854 The following table the new keyword attribute value defined in this 1855 document as an additional type2 keyword value for use with the "job- 1856 state-reasons" Job Description attribute. This is to be registered 1857 according to the procedures in RFC 2911 [RFC2911] section 6.1. 1859 type2 keyword Attribute Values: Ref. Section: 1860 job-suspended RFC NNNN 9.1 1862 The resulting enum attribute value registration will be published in 1863 the 1864 ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute- 1865 values/job-state-reasons/ 1866 area. 1868 13.2.2 Additional Keyword Attribute Value Registrations for the 1869 "printer-state-reasons" attribute 1871 The following table all the new keyword attribute values defined in 1872 this document as additional type2 keyword values for use with the 1873 "printer-state-reasons" Printer Description attribute. These are to 1874 be registered according to the procedures in RFC 2911 [RFC2911] 1875 section 6.1. 1877 type2 keyword Attribute Values: Ref. Section: 1878 hold-new-jobs RFC NNNN 8.1 1879 deactivated RFC NNNN 8.2 1881 The resulting enum attribute value registrations will be published in 1882 the 1883 ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute- 1884 values/printer-state-reasons/ 1885 area. 1887 13.3 Additional Enum Attribute Value Registrations for the "operations- 1888 supported" Printer Attribute 1890 The following table lists all the new enum attribute values defined 1891 in this document as additional type2 enum values for use with the 1892 "operations-supported" Printer Description attribute. These are to 1893 be registered according to the procedures in RFC 2911 [RFC2911] 1894 section 6.1. 1896 type2 enum Attribute Values: Value Ref. Section: 1897 Enable-Printer 0x22 RFC NNNN 3 1898 Disable-Printer 0x23 RFC NNNN 3 1899 Pause-Printer-After-Current-Job 0x24 RFC NNNN 3 1900 Hold-New-Jobs 0x25 RFC NNNN 3 1901 Release-Held-New-Jobs 0x26 RFC NNNN 3 1902 Deactivate-Printer 0x27 RFC NNNN 3 1903 Activate-Printer 0x28 RFC NNNN 3 1904 Restart-Printer 0x29 RFC NNNN 3 1905 Shutdown-Printer 0x2A RFC NNNN 3 1906 Startup-Printer 0x2B RFC NNNN 3 1908 The resulting enum attribute value registrations will be published in 1909 the 1910 ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute- 1911 values/operations-supported/ 1912 area. 1914 13.4 Additional keyword Attribute Value Registrations for the "notify- 1915 events" Subscription Template Attribute 1917 The following table lists the event keyword defined in this document 1918 as an additional type2 keyword value for use with the "notify-events" 1919 Subscription Template attribute, i.e., the "notify-events", "notify- 1920 events-default", and "notify-events-supported" attributes. This is 1921 to be registered according to the procedures in RFC 2911 [RFC2911] 1922 section 6.1 and [ipp-ntfy] section 13.6. 1924 type2 keyword Attribute Value: Ref. Section: 1925 job-forwarded-operation-failed RFC NNNN 10 1927 The resulting status code registration will be published in the 1928 ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute- 1929 values/notify-events/ 1930 area. 1932 13.5 Operation Registrations 1934 The following table lists all of the operations defined in this 1935 document. These are to be registered according to the procedures in 1936 RFC 2911 [RFC2911] section 6.4. 1938 Operations: Ref. Section: 1939 Enable-Printer Operation RFC NNNN 3.1.2 1940 Disable-Printer Operation RFC NNNN 3.1.1 1941 Pause-Printer-After-Current-Job Operation RFC NNNN 3.2.1 1942 Hold-New-Jobs Operation RFC NNNN 3.3.1 1943 Release-Held-New-Jobs Operation RFC NNNN 3.3.2 1944 Deactivate-Printer Operation RFC NNNN 3.4.1 1945 Activate-Printer Operation RFC NNNN 3.4.2 1946 Restart-Printer Operation RFC NNNN 3.5.1 1947 Shutdown-Printer Operation RFC NNNN 3.5.2 1948 Startup-Printer Operation RFC NNNN 3.5.3 1950 The resulting enum attribute value registrations will be published in 1951 the 1952 ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute- 1953 values/operations/ 1954 area. 1956 13.6 Status code Registrations 1958 The following table lists the status code defined in this document. 1959 This is to be registered according to the procedures in RFC 2911 1960 [RFC2911] section 6.6. 1962 Status codes: Ref. Section: 1963 server-error-printer-is-deactivated RFC NNNN 5.1 1965 The resulting status code registration will be published in the 1966 ftp://ftp.iana.org/in-notes/iana/assignments/ipp/status-codes/ 1967 area. 1969 14 Internationalization Considerations 1971 This document has the same localization considerations as the 1972 [RFC2911]. 1974 15 Security Considerations 1976 The IPP Model and Semantics document [RFC2911] discusses high level 1977 security requirements (Client Authentication, Server Authentication 1978 and Operation Privacy). Client Authentication is the mechanism by 1979 which the client proves its identity to the server in a secure 1980 manner. Server Authentication is the mechanism by which the server 1981 proves its identity to the client in a secure manner. Operation 1982 Privacy is defined as a mechanism for protecting operations from 1983 eavesdropping. 1985 16 Author's Addresses 1987 Carl Kugler 1988 IBM 1989 Boulder CO 1991 Phone: (303) 924-5060 1992 FAX: 1993 e-mail: kugler@us.ibm.com 1994 Tom Hastings 1995 Xerox Corporation 1996 737 Hawaii St. ESAE 231 1997 El Segundo, CA 90245 1999 Phone: 310-333-6413 2000 Fax: 310-333-5514 2001 e-mail: hastings@cp10.es.xerox.com 2003 Harry Lewis 2004 IBM 2005 Boulder CO 2007 Phone: (303) 924-5337 2008 FAX: 2009 e-mail: harryl@us.ibm.com 2011 IPP Web Page: http://www.pwg.org/ipp/ 2012 IPP Mailing List: ipp@pwg.org 2014 To subscribe to the ipp mailing list, send the following email: 2015 1) send it to majordomo@pwg.org 2016 2) leave the subject line blank 2017 3) put the following two lines in the message body: 2018 subscribe ipp 2019 end 2021 Implementers of this specification document are encouraged to join 2022 the IPP Mailing List in order to participate in any discussions of 2023 clarification issues and review of registration proposals for 2024 additional attributes and values. In order to reduce spam the 2025 mailing list rejects mail from non-subscribers, so you must subscribe 2026 to the mailing list in order to send a question or comment to the 2027 mailing list. 2029 17 References 2031 [ipp-iig] 2032 Hastings, T., Manros, C., "Internet Printing Protocol/1.1: draft- 2033 ietf-ipp-implementers-guide-v11-03.txt, work in progress, July 17, 2034 2001. 2036 [ipp-ntfy] 2037 Isaacson, S., Martin, J., deBry, R., Hastings, T., Shepherd, M., 2038 Bergman, R., "Internet Printing Protocol/1.1: IPP Event 2039 Notification Specification", , July 2040 17, 2001. 2042 [ipp-ops-admin-req] 2043 Hastings, T., "Internet Printing Protocol (IPP): Requirements for 2044 Job, Printer, and Device Administrative Operations", , work in progress, July 17, 2001. 2047 [RFC2566] 2048 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 2049 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, 2050 April 1999. 2052 [RFC2910] 2053 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 2054 Protocol/1.1: Encoding and Transport", RFC 2910, September 2000. 2056 [RFC2911] 2057 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 2058 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2911, 2059 September 2000. 2061 Change History of this document is available at: 2062 ftp://ftp.pwg.org/pub/pwg/ipp/new_OPS/ipp-ops-set2-change- 2063 history.txt 2065 18 Summary of Base IPP Documents 2067 The base set of IPP documents includes: 2069 Design Goals for an Internet Printing Protocol [RFC2567] 2070 Rationale for the Structure and Model and Protocol for the Internet 2071 Printing Protocol [RFC2568] 2072 Internet Printing Protocol/1.1: Model and Semantics [RFC2911] 2073 Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] 2074 Internet Printing Protocol/1.1: Implementer's Guide [ipp-iig] 2075 Mapping between LPD and IPP Protocols [RFC2569] 2076 Internet Printing Protocol (IPP): IPP Event Notifications and 2077 Subscriptions [ipp-ntfy] 2079 The "Design Goals for an Internet Printing Protocol" document takes a 2080 broad look at distributed printing functionality, and it enumerates 2081 real-life scenarios that help to clarify the features that need to be 2082 included in a printing protocol for the Internet. It identifies 2083 requirements for three types of users: end users, operators, and 2084 administrators. It calls out a subset of end user requirements that 2085 are satisfied in IPP/1.0. A few OPTIONAL operator operations have 2086 been added to IPP/1.1. 2088 The "Rationale for the Structure and Model and Protocol for the 2089 Internet Printing Protocol" document describes IPP from a high level 2090 view, defines a roadmap for the various documents that form the suite 2091 of IPP specification documents, and gives background and rationale 2092 for the IETF working group's major decisions. 2094 The "Internet Printing Protocol/1.1: Model and Semantics" document 2095 describes a simplified model with abstract objects, their attributes, 2096 and their operations that are independent of encoding and transport. 2097 It introduces a Printer and a Job object. The Job object optionally 2098 supports multiple documents per Job. It also addresses security, 2099 internationalization, and directory issues. 2101 The "Internet Printing Protocol/1.1: Encoding and Transport" document 2102 is a formal mapping of the abstract operations and attributes defined 2103 in the model document onto HTTP/1.1 [RFC2616]. It defines the 2104 encoding rules for a new Internet MIME media type called 2105 "application/ipp". This document also defines the rules for 2106 transporting over HTTP a message body whose Content-Type is 2107 "application/ipp". This document defines the 'ippget' scheme for 2108 identifying IPP printers and jobs. 2110 The "Internet Printing Protocol/1.1: Implementer's Guide" document 2111 gives insight and advice to implementers of IPP clients and IPP 2112 objects. It is intended to help them understand IPP/1.1 and some of 2113 the considerations that may assist them in the design of their client 2114 and/or IPP object implementations. For example, a typical order of 2115 processing requests is given, including error checking. Motivation 2116 for some of the specification decisions is also included. 2118 The "Mapping between LPD and IPP Protocols" document gives some 2119 advice to implementers of gateways between IPP and LPD (Line Printer 2120 Daemon) implementations. 2122 The "IPP Event Notifications and Subscriptions" document defines an 2123 extension to IPP/1.0 [RFC2566, RFC2565] and IPP/1.1 [RFC2911, 2124 RFC2910]. This extension allows a client to subscribe to printing 2125 related Events and defines the semantics for delivering asynchronous 2126 Event Notifications to the specified Notification Recipient via a 2127 specified Delivery Method (i.e., protocols) defined in (separate) 2128 Delivery Method documents. 2130 19 Appendix A: Full Copyright Statement 2132 Copyright (C) The Internet Society (1998,1999,2000,2001). All Rights 2133 Reserved 2135 This document and translations of it may be copied and furnished to 2136 others, and derivative works that comment on or otherwise explain it 2137 or assist in its implementation may be prepared, copied, published 2138 and distributed, in whole or in part, without restriction of any 2139 kind, provided that the above copyright notice and this paragraph are 2140 included on all such copies and derivative works. However, this 2141 document itself may not be modified in any way, such as by removing 2142 the copyright notice or references to the Internet Society or other 2143 Internet organizations, except as needed for the purpose of 2144 developing Internet standards in which case the procedures for 2145 copyrights defined in the Internet Standards process must be 2146 followed, or as required to translate it into languages other than 2147 English. 2149 The limited permissions granted above are perpetual and will not be 2150 revoked by the Internet Society or its successors or assigns. 2152 This document and the information contained herein is provided on an 2153 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 2154 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 2155 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 2156 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 2157 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 2159 Acknowledgement 2161 Funding for the RFC Editor function is currently provided by the 2162 Internet Society.