idnits 2.17.1 draft-ietf-ipp-ops-set2-02.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: ---------------------------------------------------------------------------- ** Missing expiration date. The document expiration date should appear on the first and last page. ** 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. ** The document is more than 15 pages and seems to lack a Table of Contents. == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 37 longer pages, the longest (page 35) being 76 lines 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 ([RFC2568], [RFC2616], [RFC2569], [IPP-PRO], [IPP-IIG], [IPP-MOD], [RFC2565,RFC2566], [RFC2567]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 1 instance of lines with non-RFC2606-compliant FQDNs in the document. ** The document seems to lack a both a reference to RFC 2119 and the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. RFC 2119 keyword, line 37: '...wing 16 additional OPTIONAL operations...' RFC 2119 keyword, line 84: '... IPP/1.0. A few OPTIONAL operator ope...' RFC 2119 keyword, line 241: '...fines additional OPTIONAL end user, op...' RFC 2119 keyword, line 263: '...d terms, such as MUST, MUST NOT, REQUI...' RFC 2119 keyword, line 264: '...Y, NEED NOT, and OPTIONAL, have specia...' (170 more instances...) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 1200 has weird spacing: '... Printe e- ...' == Line 1201 has weird spacing: '...e- Job r- ...' == Line 1239 has weird spacing: '... cel el- ...' == Line 1240 has weird spacing: '...urr Job d- ...' == Line 1241 has weird spacing: '... Job ent- ...' == (8 more instances...) -- 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 (August 15, 2000) is 8655 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 38, but not defined ** Obsolete undefined reference: RFC 2565 (Obsoleted by RFC 2910) == Missing Reference: 'RFC2567' is mentioned on line 68, but not defined == Missing Reference: 'RFC2568' is mentioned on line 70, but not defined == Missing Reference: 'IPP-MOD' is mentioned on line 71, but not defined == Missing Reference: 'IPP-PRO' is mentioned on line 72, but not defined == Missing Reference: 'IPP-IIG' is mentioned on line 73, but not defined == Missing Reference: 'RFC2569' is mentioned on line 74, but not defined == Missing Reference: 'RFC2616' is mentioned on line 102, but not defined ** Obsolete undefined reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) == Missing Reference: 'RFC2119' is mentioned on line 265, but not defined ** Obsolete normative reference: RFC 2566 (Obsoleted by RFC 2911) Summary: 11 errors (**), 0 flaws (~~), 19 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 Internet Printing Protocol WG Carl Kugler 2 INTERNET-DRAFT H. Lewis 3 IBM Corporation 4 T. Hastings (editor) 5 Classification: Proposed Standard Xerox Corporation 6 August 15, 2000 7 Internet Printing Protocol (IPP): 8 Job and Printer Administrative Operations 10 Copyright (C) The Internet Society (2000). All Rights Reserved. 12 Status of this Memo 14 This document is an Internet-Draft and is in full conformance with all 15 provisions of Section 10 of [rfc2026]. Internet-Drafts are working 16 documents of the Internet Engineering Task Force (IETF), its areas, and 17 its working groups. Note that other groups may also distribute working 18 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 material 23 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 is a submission to the Internet Printing Protocol Working 33 Group of the Internet Engineering Task Force (IETF). After approval, it 34 is intended to be on the IETF standards track. Comments should be 35 submitted to the ipp@pwg.org mailing list. 37 This document specifies the following 16 additional OPTIONAL operations 38 for use with the Internet Printing Protocol/1.0 (IPP) [RFC2565, RFC2566] 39 and IPP/1.1 [ipp-mod, ipp-pro]: 41 Printer operations: Job operations: 42 Enable-Printer and Disable-Printer Reprocess-Job 43 Pause-Printer-After-Current-Job Cancel-Current-Job 44 Hold-New-Jobs and Release-Held-New-Jobs Suspend-Current-Job and 45 Resume-Job 46 Deactivate-Printer and Activate-Printer Promote-Job 47 Restart-Printer Schedule-Job-After 48 Shutdown-Printer and Startup-Printer 50 New Job Description attributes: "original-requesting-user-name" 51 New Printer Description attributes: "subordinate-printers-supported" and 52 "parent-printers-supported". 53 New "printer-state-reasons" values: 'hold-new-jobs' and 'deactivated'. 54 New "job-state-reasons" attribute values: 'job-suspended'. 55 New event keyword: 'forwarded-operation-failed'. 56 New status code: 'server-error-printer-is-deactivated'. 58 Expires: February 15, 2001 59 The scope of IPP, is characterized in RFC2526 "Design Goals for an 60 Internet Printing Protocol". It is not the intent of this document to 61 revise or clarify this scope or conjecture as to the degree of industry 62 adoption or trends related to IPP within printing systems. It is the 63 intent of this document to extend the original set of operations - in a 64 similar fashion to the Set1 extensions which referred to IPP/1.0 and 65 were later incorporated into IPP/1.1. 67 The full set of IPP documents includes: 68 Design Goals for an Internet Printing Protocol [RFC2567] 69 Rationale for the Structure and Model and Protocol for the Internet 70 Printing Protocol [RFC2568] 71 Internet Printing Protocol/1.1: Model and Semantics [IPP-MOD] 72 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 73 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 74 Mapping between LPD and IPP Protocols [RFC2569] 75 Internet Printing Protocol (IPP): IPP Event Notification 76 Specification [ipp-ntfy] 78 The "Design Goals for an Internet Printing Protocol" document takes a 79 broad look at distributed printing functionality, and it enumerates 80 real-life scenarios that help to clarify the features that need to be 81 included in a printing protocol for the Internet. It identifies 82 requirements for three types of users: end users, operators, and 83 administrators. It calls out a subset of end user requirements that are 84 satisfied in IPP/1.0. A few OPTIONAL operator operations have been 85 added to IPP/1.1. 87 The "Rationale for the Structure and Model and Protocol for the Internet 88 Printing Protocol" document describes IPP from a high level view, 89 defines a roadmap for the various documents that form the suite of IPP 90 specification documents, and gives background and rationale for the IETF 91 working group's major decisions. 93 The "Internet Printing Protocol/1.1: Model and Semantics", describes a 94 simplified model with abstract objects, their attributes, and their 95 operations that are independent of encoding and transport. It introduces 96 a Printer object and a Job object. The Job object optionally supports 97 multiple documents per Job. It also addresses security, 98 internationalization, and directory issues. 100 The "Internet Printing Protocol/1.1: Encoding and Transport" document is 101 a formal mapping of the abstract operations and attributes defined in 102 the model document onto HTTP/1.1 [RFC2616]. It defines the encoding 103 rules for a new Internet MIME media type called "application/ipp". This 104 document also defines the rules for transporting over HTTP a message 105 body whose Content-Type is "application/ipp". This document defines a 106 new scheme named 'ipp' for identifying IPP printers and jobs. 108 The "Internet Printing Protocol/1.1: Implementer's Guide" document gives 109 insight and advice to implementers of IPP clients and IPP objects. It 110 is intended to help them understand IPP/1.1 and some of the 111 considerations that may assist them in the design of their client and/or 112 IPP object implementations. For example, a typical order of processing 114 Expires: February 15, 2001 115 requests is given, including error checking. Motivation for some of the 116 specification decisions is also included. 118 The "Mapping between LPD and IPP Protocols" document gives some advice 119 to implementers of gateways between IPP and LPD (Line Printer Daemon) 120 implementations. 122 The "Internet Printing Protocol (IPP): IPP Event Notification 123 Specification" document defines the semantics for Subscription Creation 124 Operations and the requirements for other Delivery Method documents to 125 define a Delivery Method to carry an Event Notifications to a 126 Notification Recipient. 128 Expires: February 15, 2001 129 Table of Contents 131 1 Introduction........................................................6 133 2 Terminology.........................................................6 134 2.1 Conformance Terminology.........................................6 135 2.2 Other terminology...............................................6 137 3 Definition of the Printer Operations................................7 138 3.1 The Disable and Enable Printer Operations.......................8 139 3.1.1 Disable-Printer Operation 9 140 3.1.2 Enable-Printer Operation 9 141 3.2 The Pause and Resume Printer Operations........................10 142 3.2.1 Pause-Printer-After-Current-Job operation 11 143 3.3 Hold and Release New Jobs operations...........................12 144 3.3.1 Hold-New-Jobs operation 12 145 3.3.2 Release-Held-New-Jobs operation 13 146 3.4 Deactivate and Activate Printer Operations.....................13 147 3.4.1 Deactivate-Printer operation 14 148 3.4.2 Activate-Printer operation 14 149 3.5 Restart-Printer, Shutdown-Printer, and Startup-Printer operations 150 15 151 3.5.1 Restart-Printer operation 15 152 3.5.2 Shutdown-Printer Operation 16 153 3.5.3 Startup-Printer operation 16 155 4 Definition of the Job Operations...................................17 156 4.1 Reprocess-Job Operation........................................18 157 4.2 Cancel-Current-Job Operation...................................18 158 4.3 Suspend and Resume Job operations..............................19 159 4.3.1 Suspend-Current-Job operation 19 160 4.3.2 Resume-Job operation 20 161 4.4 Job Scheduling Operations......................................21 162 4.4.1 Promote-Job operation 21 163 4.4.2 Schedule-Job-After operation 22 165 5 Additional status codes............................................23 166 5.1 'server-error-printer-is-deactivated' (0x050A).................23 168 6 Use of Operation Attributes that are Messages from the Operator....23 170 7 New Printer Description Attributes.................................25 171 7.1 subordinate-printers-supported (1setOf uri)....................25 172 7.2 parent-printers-supported (1setOf uri).........................26 174 8 Additional Values for "printer-state-reasons"......................26 175 8.1 'hold-new-jobs'................................................26 176 8.2 'deactivated'..................................................26 178 9 Additional Values for "job-state-reasons"..........................26 179 9.1 'job-suspended'................................................27 181 10 Additional events.................................................27 183 Expires: February 15, 2001 184 11 Use of the Printer object to represent IPP Printer Fan-Out and IPP 185 Printer Fan-In........................................................27 186 11.1IPP Printer Fan-Out............................................27 187 11.2IPP Printer Fan-In.............................................28 188 11.3Printer object attributes used to represent Printer Fan-Out and 189 Printer Fan-In......................................................28 190 11.4Subordinate Printer URI........................................28 191 11.5Printer object attributes used to represent Output Device Fan-Out 192 29 193 11.6Figures to show all possible configurations....................30 194 11.7Forwarding requests............................................32 195 11.7.1 Forwarding requests that affect Printer objects 32 196 11.7.2 Forwarding requests that affect Jobs 33 198 12 Conformance Requirements..........................................35 200 13 IANA Considerations...............................................36 202 14 Internationalization Considerations...............................36 204 15 Security Considerations...........................................36 206 16 Author's Addresses................................................37 208 17 References........................................................37 210 18 Appendix A: Full Copyright Statement..............................38 212 List of Tables 213 Table 1 - Printer Operation Operation-Id assignments..................8 214 Table 2 - Pause and Resume Printer and Device Operations.............10 215 Table 3 - Job operation Operation-Id assignments.....................17 216 Table 4 - Operation attribute support for Printer Operations.........24 217 Table 5 - Operation attribute support for Job operations.............24 218 Table 6 - Forwarding operations that affect Printer objects..........32 219 Table 7 - Forwarding operations that affect Jobs objects.............33 220 Table 8 - Conformance Requirement Dependencies for Operations........35 221 Table 9 - Conformance Requirement Dependencies for "printer-state- 222 reasons" Values..................................................36 223 Table 10 - Conformance Requirement Dependencies for "job-state-reasons" 224 Values...........................................................36 226 List of Figures 227 Figure 1 - Embedded Printer object...................................30 228 Figure 2 - Hosted Printer object.....................................30 229 Figure 3 - Output Device Fan-Out.....................................30 230 Figure 4 - Chained IPP Printer Objects...............................31 231 Figure 5 - IPP Printer Object Fan-Out................................31 232 Figure 6 - IPP Printer Object Fan-In.................................31 234 Expires: February 15, 2001 235 1 Introduction 237 The Internet Printing Protocol (IPP) is an application level protocol 238 that can be used for distributed printing using Internet tools and 239 technologies. IPP version 1.1 ([ipp-mod, ipp-pro]) focuses on end user 240 functionality with a few administrative operations included. This 241 document defines additional OPTIONAL end user, operator, and 242 administrator operations used to control Jobs and Printers. In 243 addition, this document extends the semantic model of the Printer object 244 by allowing them to be configured into trees and/or inverted trees that 245 represent Printer object Fan-Out and Printer object Fan-In, 246 respectively. The special case of a tree with only a single Subordinate 247 node represents Chained Printers. This document is a registration 248 proposal for an extension to IPP/1.0 and IPP/1.1 following the 249 registration procedures in those documents. 251 The requirements and use cases for this document are defined in [ipp- 252 ops-admin-req]. That document also includes requirements and use cases 253 for operations on the Device object which is the subject of a third 254 document [ipp-device-ops]. That [ipp-device-ops] document is not needed 255 in order to implement the operations defined in this document. 257 2 Terminology 259 This section defines terminology used throughout this document. 261 2.1 Conformance Terminology 263 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, 264 MAY, NEED NOT, and OPTIONAL, have special meaning relating to 265 conformance as specified in RFC 2119 [RFC2119] and [ipp-mod] section 266 12.1. These terms refer to conformance to this document or a particular 267 operation, if this document or operation is implemented. 269 The following specialization of these terms apply to this document: 271 REQUIRED: if an implementation supports an operation described in 272 this document, it MUST support a REQUIRED feature described with 273 that operation. 274 OPTIONAL: if an implementation supports an operation described in 275 this document, it MAY support an OPTIONAL feature described with 276 that operation. 278 2.2 Other terminology 280 This document uses terms such as "attributes", "keywords", and 281 "support". These terms have special meaning and are defined in the 282 model terminology [ipp-mod] section 12.2. 284 Expires: February 15, 2001 285 In addition, the following capitalized terms are defined: 287 IPP Printer object (or Printer for short) - a software abstraction 288 defined by [ipp-mod]. 290 Printer Operation - an operation whose target is an IPP Printer 291 object and whose effect is on the Printer object. 293 Output Device - the physical imaging mechanism that an IPP Printer 294 controls. Note: while this term is capitalized in this 295 specification (but not in [ipp-mod]), there is no formal object 296 called an Output Device defined in this document (or [ipp-mod]). 298 Output Device Fan-Out - a configuration in which an IPP Printer 299 controls more that one output-device. 301 Printer Fan-Out - a configuration in which an IPP Printer object 302 controls more than one Subordinate IPP Printer object. 304 Printer Fan-In - a configuration in which an IPP Printer object is 305 controlled by more than one IPP Printer object. 307 Subordinate Printer - an IPP Printer object that is controlled by 308 another IPP Printer object. Such a Subordinate Printer MAY have 309 one or more Subordinate Printers. 311 Leaf Printer - a Subordinate Printer that has no Subordinate 312 Printers. 314 Non-Leaf Printer - an IPP Printer object that has one or more 315 Subordinate Printers. 317 Chained Printer - a Non-Leaf Printer that has exactly one Subordinate 318 Printer. 320 Job Creation operations - IPP operations that create a Job object: 321 Print-Job, Print-URI, and Create-Job. 323 3 Definition of the Printer Operations 325 All Printer Operations are directed at Printer objects. A client MUST 326 always supply the "printer-uri" operation attribute in order to identify 327 the correct target of the operation. These descriptions assume all of 328 the common semantics of IPP/1.1 Model and Semantics document [ipp-mod] 329 section 3.1. 331 Expires: February 15, 2001 332 The Printer Operations defined in this document are summarized in Table 333 1: 335 Table 1 - Printer Operation Operation-Id assignments 337 Operation Name Operati Brief description 338 on-Id 339 Enable-Printer 0x22 Allows the target Printer to accept Job 340 Creation operations 341 Disable-Printer 0x23 Prevents the target Printer from 342 accepting Job Creation operations 343 Pause-Printer- 0x24 Pause the Printer after the current job 344 After-Current- has been sent to the Output Device. 345 Job 346 Hold-New-Jobs 0x25 Finishes processing all currently 347 pending jobs. Any new jobs are placed 348 in the 'pending-held' state. 349 Release-Held- 0x26 Release all jobs to the 'pending' state 350 New-Jobs that had been held by the effect of a 351 previous Hold-New-Jobs operation and 352 condition the Printer to no longer hold 353 new jobs. 354 Deactivate- 0x27 Puts the Printer into a read-only 355 Printer deactivated state. 356 Activate- 0x28 Restores the Printer to normal activity 357 Printer 358 Restart-Printer 0x29 Restarts the target Printer and re- 359 initializes the software 360 Shutdown- 0x2A Shuts down the target Printer so that 361 Printer it cannot be restarted or queried 362 Startup-Printer 0x2B Starts up the instance of the Printer 363 object 365 All of the operations in this document are OPTIONAL for an IPP object to 366 support. Unless the specification of an OPTIONAL operation requires 367 support of another OPTIONAL operation, conforming implementations may 368 support any combination of these operations. Many of the operations 369 come in pairs and so both are REQUIRED if either one is implemented. 371 3.1 The Disable and Enable Printer Operations 373 This section defines the OPTIONAL Disable-Printer and Enable-Printer 374 operations that stop and start the IPP Printer object from accepting new 375 IPP jobs. If either of these operations are supported, both MUST be 376 supported. 378 These operations allow the operator to control whether or not the 379 Printer will accept new Job Creation (Print-Job, Print-URI, and Create- 380 Job) operations. These operations have no other effect on the Printer, 381 so that the Printer continues to accept all other operations and 382 continues to schedule and process jobs normally. In other words, these 383 operation control the "input of new jobs" to the IPP Printer while the 385 Expires: February 15, 2001 386 Pause and Resume operations (see section 3.2) independently control the 387 "output of new jobs" from the IPP Printer to the Output Device. 389 The Disable-Printer and Enable-Printer operations MUST NOT affect the 390 submission of jobs using other job submission protocols to the 391 associated Output Device; the Disable and Enable Device Operations (see 392 [ipp-device-ops]) are intended to stop the acceptance of all jobs by the 393 associated Output Device(s). 395 3.1.1 Disable-Printer Operation 397 This OPTIONAL operation allows a client to stop the Printer object from 398 accepting new jobs, i.e., cause the Printer to reject subsequent Job 399 Creation operations and return the 'server-error-not-accepting-jobs' 400 status code. The Printer still accepts all other operations, including 401 Validate-Job, Send-Document and Send-URI operations. Thus a Disable- 402 Printer operation allows a client to continue submitting multiple 403 documents of a multiple document job if the Create-Job operation had 404 already been accepted. All previously created or submitted Jobs and 405 currently processing Jobs continue unaffected. 407 The IPP Printer MUST accept the request in any state. The Printer sets 408 the value of its "printer-is-accepting-jobs" READ-ONLY Printer 409 Description attribute to 'false' (see [ipp-mod] section 4.4.20), no 410 matter what the previous value was. This operation has no immediate or 411 direct effect on the Printer's "printer-state" and "printer-state- 412 reasons" attributes. 414 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 415 performing this operation must be an operator or administrator of the 416 Printer object (see [ipp-mod] Sections 1 and 8.5). 418 The Disable-Printer Request and Disable-Printer Response have the same 419 attribute groups and attributes as the Pause-Printer operation (see 420 [ipp-mod] sections 3.2.7.1 and 3.2.7.2), including the new "printer- 421 message-from-operator" operation attribute (see section 6). 423 3.1.2 Enable-Printer Operation 425 This OPTIONAL operation allows a client to start the Printer object 426 accepting jobs, i.e., cause the Printer to accept subsequent Job 427 Creation operations. The Printer still accepts all other operations. 428 All previously submitted Jobs and currently processing Jobs continue 429 unaffected. 431 The IPP Printer MUST accept the request in any state. The Printer sets 432 the value of its "printer-is-accepting-jobs" READ-ONLY Printer 433 Description attribute to 'true' (see [ipp-mod] section 4.4.20), no 434 matter what the previous value was. This operation has no immediate or 435 direction effect on the Printer's "printer-state" and "printer-state- 436 reasons" attributes. 438 Expires: February 15, 2001 439 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 440 performing this operation must be an operator or administrator of the 441 Printer object (see [ipp-mod] Sections 1 and 8.5). 443 The Enable-Printer Request and Enable-Printer Response have the same 444 attribute groups and attributes as the Pause-Printer operation (see 445 [ipp-mod] sections 3.2.8.1 and 3.2.8.2), including the new "printer- 446 message-from-operator" operation attribute (see section 6). 448 3.2 The Pause and Resume Printer Operations 450 This section leaves the OPTIONAL IPP/1.1 Pause-Printer (see [ipp-mod] 451 sections 3.2.7) to be ambiguous as to whether or not it stops the 452 Printer immediately or after the current job and defines the OPTIONAL 453 Pause-Printer-After-All-Current-Jobs operation to be after the current 454 job. These operations affect the scheduling of IPP jobs. If either of 455 these Pause Printer operations are supported, then the Resume-Printer 456 operation MUST be supported. 458 These operations allow the operator to control whether or not the 459 Printer will send new IPP jobs to the associated Output Device(s) that 460 the IPP Printer object represents. These operations have no other 461 effect on the Printer, so that the Printer continues to accept all 462 operations. In other words, these operation control the "output of new 463 jobs" to the Output Device(s) while the Disable and Enable Printer 464 Operations (see section 3.1) independently control the "input of new 465 jobs" to the IPP Printer. 467 The Pause and Resume Printer Operations MUST NOT affect jobs that were 468 submitted using other job submission protocols to the associated Output 469 Device; the Pause and Resume Device Operations (see [ipp-device-ops]) 470 are intended to stop the acceptance of all jobs by the associated Output 471 Device(s). 473 This document and [ipp-device-ops] define distinct operations in order 474 to disambiguate the Pause-Printer operation as shown in Table 2. The 475 Printer Operations affect only Jobs submitted using IPP, while the 476 Device Operations affect all jobs no matter what job submission protocol 477 was used to submit them to the Output Device. 479 Table 2 - Pause and Resume Printer and Device Operations 481 Pause and Resume Printer Description 482 and Device Operations 484 IPP/1.1 Pause Printer Stops the IPP Printer from sending 485 new IPP Jobs to the Output Device(s) 486 either immediately or after the 487 current job completes, depending on 488 implementation, as defined in [ipp- 489 mod]. 490 Pause-Printer-After- Stops the IPP Printer from sending 491 Current-Job new IPP Jobs to the Output Device(s) 493 Expires: February 15, 2001 494 Pause and Resume Printer Description 495 and Device Operations 497 after the current jobs finish 498 Resume-Printer Starts the IPP Printer sending IPP 499 Jobs to the Output Device again. 501 3.2.1 Pause-Printer-After-Current-Job operation 503 This OPTIONAL operation allows a client to stop the Printer object from 504 starting to send IPP jobs to any of its Output Devices or Subordinate 505 Printers. If the IPP Printer is in the middle of sending an IPP job to 506 an Output Device or Subordinate Printer, the IPP Printer MUST complete 507 sending that Job. However, after receiving this operation, the IPP 508 Printer MUST NOT start to send any additional IPP jobs to any of its 509 Output Devices or Subordinate Printers. In addition, after having 510 received this operation, the IPP Printer MUST NOT start processing any 511 more jobs, so additional jobs MUST NOT enter the 'processing' state. 513 If the IPP Printer is not sending an IPP Job to the Output Device or 514 Subordinate Printer (whether or not the Output Device or Subordinate 515 Printer is busy processing any jobs), the IPP Printer object transitions 516 immediately to the 'stopped' state by setting its "printer-state" 517 attribute to 'stopped', removing the 'moving-to-paused' value, if 518 present, from its "printer-state-reasons" attribute, and adding the 519 'paused' value to its "printer-state-reasons" attribute. 521 If the implementation will take appreciable time to complete sending an 522 IPP job that it has started sending to an Output Device or Subordinate 523 Printer, the IPP Printer adds the 'moving-to-paused' value to the 524 Printer object's "printer-state-reasons" attribute (see section [ipp- 525 mod] 4.4.12). When the IPP Printer has completed sending IPP jobs that 526 it was in the process of sending, the Printer object transitions to the 527 'stopped' state by setting its "printer-state" attribute to 'stopped', 528 removing the 'moving-to-paused' value, if present, from its "printer- 529 state-reasons" attribute, and adding the 'paused' value to its "printer- 530 state-reasons" attribute. 532 This operation MUST NOT affect the acceptance of Job Creation requests 533 (see Disable-Printer section 3.1.1). 535 For any jobs that are 'pending' or 'pending-held', the 'printer-stopped' 536 value of the jobs' "job-state-reasons" attribute also applies. However, 537 the IPP Printer NEED NOT update those jobs' "job-state-reasons" 538 attributes and only need return the 'printer-stopped' value when those 539 jobs are queried using the Get-Job-Attributes or Get-Jobs operations 540 (so-called "lazy evaluation"). 542 The IPP Printer MUST accept the request in any state and transition the 543 Printer to the indicated new "printer-state" and MUST add the indicated 544 value to "printer-state-reasons" attribute before returning as follows: 546 Expires: February 15, 2001 547 Current New "printer IPP Printer's response status 548 "printer- "printer- -state- code and action: 549 state" state" reasons" 550 REQUIRED/OPTIONAL state 551 transition for a Printer to 552 support 554 'idle' 'stopped' 'paused' REQUIRED: 'successful-ok' 556 'processing' 'processing' 'moving- OPTIONAL: 'successful-ok'; 557 to- Later, when the IPP Printer has 558 paused' finished sending IPP jobs to an 559 Output Device, the "printer- 560 state" becomes 'stopped', and 561 the 'paused' value replaces the 562 'moving-to-paused' value in the 563 "printer-state-reasons" 564 attribute 566 'processing' 'stopped' 'paused' REQUIRED: 'successful-ok'; the 567 IPP Printer wasn't in the middle 568 of sending an IPP job to an 569 Output Device 571 'stopped' 'stopped' 'paused' REQUIRED: 'successful-ok' 573 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 574 performing this operation must be an operator or administrator of the 575 Printer object (see [ipp-mod] Sections 1 and 8.5). 577 The Pause-Printer-After-Current-Job Request and Pause-Printer-After- 578 Current-Job Response have the same attribute groups and attributes as 579 the Pause-Printer operation (see [ipp-mod] sections 3.2.7.1 and 580 3.2.7.2), including the new "printer-message-from-operator" operation 581 attribute (see section 6). 583 3.3 Hold and Release New Jobs operations 585 This section defines operations to condition the Printer to hold any new 586 jobs and to release them. 588 3.3.1 Hold-New-Jobs operation 590 This OPTIONAL operation allows a client to condition the Printer to 591 complete the current 'pending' and 'processing' IPP Jobs but not start 592 processing any subsequently created IPP Jobs. If the IPP Printer is in 593 the middle of sending an IPP job to an Output Device or Subordinate 594 Printer, the IPP Printer MUST complete sending that Job. Furthermore, 595 the IPP Printer MUST send all of the current 'pending' IPP Jobs to the 596 Output Device(s) or Subordinate IPP Printer object(s). Any subsequently 597 received Job Creation operations will cause the IPP Printer to put the 598 Job into the 'pending-held' state with the 'job-held-on-create' value 599 being added to the job's "job-state-reasons" attribute. Thus all newly 600 accepted jobs will be automatically held by the Printer. 602 Expires: February 15, 2001 603 When the Printer completes all of the 'pending' and 'processing' jobs, 604 it enters the 'idle' state as usual. An operator that is monitoring 605 Printer state changes will know when the Printer has completed all 606 current jobs because the Printer enters the 'idle' state. 608 This operation MUST NOT affect the acceptance of Job Creation requests 609 (see Disable-Printer section 3.1.1), except to put the Jobs into the 610 'pending-held' state, instead of the 'pending' or 'processing' state. 612 The IPP Printer MUST accept the request in any state, MUST NOT 613 transition the Printer to any other "printer-state", and MUST add the 614 'hold-new-jobs' value to the Printer's "printer-state-reasons" attribute 615 (whether the value was present or not). 617 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 618 performing this operation must be an operator or administrator of the 619 Printer object (see [ipp-mod] Sections 1 and 8.5). 621 The Hold-New-Jobs Request and Hold-New-Jobs Response have the same 622 attribute groups and attributes as the Pause-Printer operation (see 623 [ipp-mod] sections 3.2.7.1 and 3.2.7.2), including the new "printer- 624 message-from-operator" operation attribute (see section 6). 626 3.3.2 Release-Held-New-Jobs operation 628 This OPTIONAL operation allows a client to undo the effect of a previous 629 Hold-New-Jobs operation. In particular, the Printer releases all of the 630 jobs that it had held as a consequence of a Hold-New-Jobs operations, 631 i.e., while the 'hold-new-jobs' value was present in the Printer's 632 "printer-state-reasons" attribute. In addition, the Printer MUST accept 633 this request in any state, MUST NOT transition the Printer to any other 634 "printer-state", and MUST remove the 'hold-new-jobs' value from its 635 "printer-state-reasons" attribute (whether the value was present or not) 636 so that the Printer no longer holds newly created jobs. 638 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 639 performing this operation must be an operator or administrator of the 640 Printer object (see [ipp-mod] Sections 1 and 8.5). 642 The Release-Held-New-Jobs Request and Release-Held-New-Jobs Response 643 have the same attribute groups and attributes as the Pause-Printer 644 operation (see [ipp-mod] sections 3.2.7.1 and 3.2.7.2), including the 645 new "printer-message-from-operator" operation attribute (see section 6). 647 3.4 Deactivate and Activate Printer Operations 649 This section defines the OPTIONAL Deactivate-Printer and Activate- 650 Printer operations that stop and start the IPP Printer object from 651 accepting all requests except queries and performing work. If either of 652 these operations are supported, both MUST be supported. 654 Expires: February 15, 2001 655 These operations allow the operator to put the Printer into a dormant 656 read-only condition and to take it out of such a condition. These 657 operations are a combination of the Deactivate and Pause operations, 658 plus preventing the acceptance of any other requests, except queries. 660 The Deactivate and Activate Printer Operations MUST NOT affect the 661 submission of jobs using other job submission protocols to the 662 associated Output Device; the Deactivate and Activate Device Operations 663 (see [ipp-device-ops]) are intended to stop the associated Output 664 Device(s) from performing work and accepting operations, except query 665 operations. 667 3.4.1 Deactivate-Printer operation 669 This OPTIONAL operation allows a client to stop the Printer object from 670 starting to send IPP jobs to any of its Output Devices or Subordinate 671 Printers (Pause-Printer-After-Current-Job) and stop the Printer object 672 from accepting any, but query requests. The Printer performs a Disable- 673 Printer and a Pause-Printer-After-Current-Job operation immediately, 674 including use of all of the "printer-state-reasons" if these two 675 operations cannot be completed immediately. In addition, the Printer 676 MUST immediately reject all requests, except Activate-Printer, queries 677 (Get-Printer-Attributes, Get-Job-Attributes, Get-Jobs, etc.), Send- 678 Document, and Send-URI (so that partial job submission can be completed 679 - see section 3.1.1) and return the 'server-error-service-unavailable' 680 status code. 682 The IPP Printer MUST accept the request in any state. Immediately, the 683 Printer MUST set the 'deactivated' value in its "printer-state-reasons" 684 attribute. Note: neither the Disable-Printer nor the Pause-Printer- 685 After-Current-Job set the 'deactivated' value. 687 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 688 performing this operation must be an operator or administrator of the 689 Printer object (see [ipp-mod] Sections 1 and 8.5). 691 The Deactivate-Printer Request and Deactivate-Printer Response have the 692 same attribute groups and attributes as the Pause-Printer operation (see 693 [ipp-mod] sections 3.2.7.1 and 3.2.7.2), including the new "printer- 694 message-from-operator" operation attribute (see section 6). 696 3.4.2 Activate-Printer operation 698 This OPTIONAL operation allows a client to undo the effects of the 699 Deactivate-Printer, i.e., allow the Printer object to start sending IPP 700 jobs to any of its Output Devices or Subordinate Printers (Pause- 701 Printer-After-Current-Job) and start the Printer object from accepting 702 any requests. The Printer performs an Enable-Printer and a Resume- 703 Printer operation immediately. In addition, the Printer MUST 704 immediately start accepting all requests. 706 Expires: February 15, 2001 707 The IPP Printer MUST accept the request in any state. Immediately, the 708 Printer MUST immediately remove the 'deactivated' value from its 709 "printer-state-reasons" attribute (whether present or not). 711 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 712 performing this operation must be an operator or administrator of the 713 Printer object (see [ipp-mod] Sections 1 and 8.5). 715 The Activate-Printer Request and Activate-Printer Response have the same 716 attribute groups and attributes as the Pause-Printer operation (see 717 [ipp-mod] sections 3.2.7.1 and 3.2.7.2), including the new "printer- 718 message-from-operator" operation attribute (see section 6). 720 3.5 Restart-Printer, Shutdown-Printer, and Startup-Printer operations 722 This section defines the OPTIONAL Restart-Printer, Shutdown-Printer, and 723 Startup-Printer operations that initialize, shutdown, and startup the 724 Printer object, respectively. Each of these operations is OPTIONAL and 725 any combination MAY be supported. 727 The Restart-Printer, Shutdown-Printer, and Startup-Printer operations 728 MUST NOT affect the submission of jobs using other job submission 729 protocols to the associated Output Device; the Reset-Device and Power- 730 Off-Device Operations (see [ipp-device-ops]) are intended to initialize 731 or power off the associated Output Device(s). 733 3.5.1 Restart-Printer operation 735 This OPTIONAL operation allows a client to restart a Printer object 736 whose operation is in need of initialization because of incorrect or 737 erratic behavior, i.e., perform the effect of a software re-boot. The 738 implementation MUST attempt to save any information about Jobs and the 739 Printer object before re-initializing. However, this operation MAY have 740 drastic consequences on the running system, so the operator should first 741 try the Deactivate-Printer to minimize the effect on the current state 742 of the system. The effects of previous Disable-Printer, Pause Printer, 743 and Deactivate-Printer operations are lost. 745 The IPP Printer MUST accept the request in any state. The Printer 746 object MUST initialize its Printer's "printer-state" to 'idle', remove 747 the state reasons from its "printer-state-reasons" attribute, and its 748 "printer-is-accepting-jobs" attribute to 'true'. 750 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 751 performing this operation must be an operator or administrator of the 752 Printer object (see [ipp-mod] Sections 1 and 8.5). 754 The Restart-Printer Request and Restart-Printer Response have the same 755 attribute groups and attributes as the Pause-Printer operation (see 756 [ipp-mod] sections 3.2.8.1 and 3.2.8.2), including the new "printer- 757 message-from-operator" operation attribute (see section 6). 759 Expires: February 15, 2001 760 3.5.2 Shutdown-Printer Operation 762 This OPTIONAL operation allows a client to shutdown a Printer, i.e., 763 stop processing jobs and make the Printer object no longer available for 764 any operations using the IPP protocol without losing any jobs. There is 765 no way to bring the instance of the Printer object back to being used, 766 except for the Startup-Printer (see section 3.5.3) which starts up a new 767 instance of the Printer object for hosted implementations. The purpose 768 of Shutdown-Printer is to shutdown the Printer for an extended period, 769 not to reset the device(s) or modify a Printer attribute. See Restart- 770 Printer (section 3.5.1), Startup-Printer (section ), and Reset-Device 771 [ipp-device-ops] for the way to initialize the software or reset the 772 Output Device(s). See the Disable-Printer operation (section 3.1) for a 773 way for the client to stop the Printer from accepting Job Creation 774 requests without stopping processing or shutting down. 776 The Printer MUST add the 'shutdown' value (see [ipp-mod] section 4.4.11) 777 immediately to its "printer-state-reasons" Printer Description attribute 778 and performs a Deactivate-Printer operation (see section 3.4.1) which 779 performs a Disable-Printer and Pause-Printer-After-Current-Job 780 operation). 782 Note: In order to shutdown the Printer after all the currently 783 submitted jobs have completed, the operator issues a Disable-Printer 784 operation (see section 3.1.1) and then waits until all the jobs have 785 completed and the Printer goes into the 'idle' state before issuing the 786 Shutdown-Printer operation. 788 The Printer object MUST accept this operation in any state and 789 transition the Printer object through the "printer-states" and "printer- 790 state-reasons" defined for the Pause-Printer-After-Current-Job operation 791 until the activity is completed and the Printer object disappears. 793 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 794 performing this operation must be an operator or administrator of the 795 Printer object (see [ipp-mod] Sections 1 and 8.5). 797 The Shutdown-Printer Request and Shutdown-Printer Response have the same 798 attribute groups and attributes as the Pause-Printer operation (see 799 [ipp-mod] sections 3.2.7.1 and 3.2.7.2), including the new "printer- 800 message-from-operator" operation attribute (see section 6). 802 3.5.3 Startup-Printer operation 804 This OPTIONAL operation allows a client to startup an instance of a 805 Printer object, provided that there isn't one already instantiated. The 806 purpose of Startup-Printer is to allow a hosted implementation of the 807 IPP Printer object (i.e., a Server that implements an IPP Printer on 808 behalf of a networked or local Output Device) to be started after the 809 host is available (by means outside this document). See Restart-Printer 810 (section 3.5.1) and Reset-Device [ipp-device-ops] for the way to 811 initialize the software or reset the Output Device(s) when the IPP 812 Printer object has already been instantiated. 814 Expires: February 15, 2001 815 The host MUST accept this operation only when the Printer object has not 816 been instantiated. If the Printer object already exists, the host must 817 return the 'client-error-not-possible' status code. 819 The result of this operation MUST be with the Printer object's "printer- 820 state" set to 'idle', the state reasons removed from its "printer-state- 821 reasons" attribute, and its "printer-is-accepting-jobs" attribute set to 822 'false'. Then the operator can reconfigure the Printer before 823 performing an Enable-Printer operation. However, when a Printer is 824 first powered up, it is RECOMMENDED that its "printer-is-accepting-jobs" 825 attribute be set to 'true' in order to achieve easy "out of the box" 826 operation. 828 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 829 performing this operation must be an operator or administrator of the 830 Printer object (see [ipp-mod] Sections 1 and 8.5). 832 The Shutdown-Printer Request and Shutdown-Printer Response have the same 833 attribute groups and attributes as the Pause-Printer operation (see 834 [ipp-mod] sections 3.2.7.1 and 3.2.7.2), including the new "printer- 835 message-from-operator" operation attribute (see section 6). 837 4 Definition of the Job Operations 839 All Job operations are directed at Job objects. A client MUST always 840 supply some means of identifying the Job object in order to identify the 841 correct target of the operation. That job identification MAY either be 842 a single Job URI or a combination of a Printer URI with a Job ID. The 843 IPP object implementation MUST support both forms of identification for 844 every job. 846 The Job Operations defined in this document are summarized in Table 3: 848 Table 3 - Job operation Operation-Id assignments 850 Operation Name Operati Brief description 851 on-Id 852 Reprocess-Job 0x2C Creates a copy of a completed target 853 job with a new Job ID and processes it 854 Cancel-Current- 0x2D Cancels the current job on the target 855 Job Printer or the specified job if it is 856 the current job 857 Suspend- 0x2E Suspends the current processing job on 858 Current-Job the target Printer or the specified job 859 if it is the current job, allowing 860 other jobs to be processed instead 861 Resume-Job 0x2F Resume the suspended target job 862 Promote-Job 0x30 Promote the pending target job to be 863 next after the current job(s) complete 864 Schedule-Job- 0x31 Schedule the target job immediately 865 After after the specified job, all other 866 scheduling factors being equal. 868 Expires: February 15, 2001 870 4.1 Reprocess-Job Operation 872 This OPTIONAL operation is a create job operation that allows a client 873 to re-process a copy of a job that had been retained in the queue after 874 processing completed, was canceled, or was aborted (see [ipp-mod] 875 section 4.3.7.2). This operation is the same as the Restart-Job 876 operation (see [ipp-mod] section 3.3.7), except that the Printer creates 877 a new job that is a copy of the target job and the target job is 878 unchanged. The new job is assigned new values to the "job-uri" and 879 "job-id" attributes and the new job's Job Description attributes that 880 accumulate job progress, such as "job-impressions-completed", "job- 881 media-sheets-completed", and "job-k-octets-processed", are initialized 882 to 0 as with any create job operation. The target job moves to the Job 883 History after a suitable period, independent of whether one or more 884 Reprocess-Job operations have been performed on it. 886 If the Set-Job-Attributes operation is supported, then the "job-hold- 887 until" operation attribute MUST be supported with at least the 888 'indefinite' value, so that a client can modify the new job before it is 889 scheduled for processing using the Set-Job-Attributes operation. After 890 modifying the job, the client can release the job for processing, by 891 using the Release-Job operation specifying the newly assigned "job-uri" 892 or "job-id" for the new job. 894 4.2 Cancel-Current-Job Operation 896 This OPTIONAL operation allows a client to cancel the current job on the 897 target Printer or the specified job if it is the current job on the 898 Printer. See [ipp-mod] section 3.3.3 for the semantics of canceling a 899 job. Since a Job might already be marking by the time a Cancel-Current- 900 Job is received, some media sheet pages might be printed before the job 901 is actually terminated. 903 If the client does not supply a "job-id" operation attribute, the 904 Printer MUST accept the request and cancel the current job if there is a 905 current job in the 'processing' or 'processing-stopped' state; 906 otherwise, it MUST reject the request and return the 'client-error-not- 907 possible' status code. If more than one job is in the 'processing' or 908 'processing-stopped' states, the one that is marking is canceled and the 909 others are unaffected. 911 Warning: On a shared printer, there is a race condition. Between the 912 time that a user issues this operation and its acceptance, the current 913 job might change to a different job. If the user or operator is 914 authenticated to cancel the new job, the wrong job is canceled. To 915 prevent this race from canceling the wrong job, the client MAY supply 916 the "job-id" operation attribute which is checked against the current 917 job's job-id. If the job identified by the "job-id" attribute is not 918 the current job on the Printer, i.e., is not in the 'processing' or 919 'processing-stopped' states, the Printer MUST reject this operation and 921 Expires: February 15, 2001 922 return the 'client-error-not-possible' status code. Otherwise, the 923 Printer cancels the specified job. 925 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 926 performing this operation must either be the job owner (as determined in 927 the Job Creation operation) or an operator or administrator of the 928 Printer object (see [ipp-mod] Sections 1 and 8.5). 930 The Cancel-Current-Job Request and Cancel-Current-Job Response have the 931 same attribute groups and attributes as the Resume-Printer operation 932 (see [ipp-mod] section 3.2.8), including the new "job-message-from- 933 operator" operation attribute (see section 6), with the addition of the 934 following Group 1 Operation attributes in the request: 936 "job-id" (integer(1:MAX)): 938 The client OPTIONALLY supplies this Operation attribute in order to 939 verify that the identified job is still the current job on the 940 target Printer object. The IPP object MUST supports this operation 941 attribute, if it supports this operation. 943 4.3 Suspend and Resume Job operations 945 This section defines the Suspend-Current-Job and Resume-Job operations. 946 These operations allow an operator or user to suspend a job while it is 947 processing and allow other jobs to be processed and the resume the 948 suspended job at a later point in time without losing any of the output. 950 If either of these operations is supported, they both MUST be supported. 952 The Hold-Job and Release-Job operations ([ipp-mod] section 3.3.5) are 953 for holding and releasing held jobs, not suspending and resuming 954 suspended jobs. 956 4.3.1 Suspend-Current-Job operation 958 This OPTIONAL operation allows a client to stop the current job on the 959 target Printer or the specified job if it is the current job on the 960 Printer, and allow other jobs to be processed instead. The Printer 961 moves the current job or the target job to the 'processing-stopped' 962 state and sets the 'job-suspended' value (see section 9.1) in the job's 963 "job-state-reasons" attribute and processes other jobs. 965 If the client does not supply a "job-id" operation attribute, the 966 Printer MUST accept the request and suspend the current job if there is 967 a current job in the 'processing' or 'processing-stopped' state; 968 otherwise, it MUST reject the request and return the 'client-error-not- 969 possible' status code. If more than one job is in the 'processing' or 970 'processing-stopped' states, all of them are suspended. 972 Warning: On a shared printer, there is a race condition. Between the 973 time that a user issues this operation and its acceptance, the current 974 job might change to a different job. If the user or operator is 976 Expires: February 15, 2001 977 authenticated to suspend the new job, the wrong job is suspended. To 978 prevent this race from pausing the wrong job, the client MAY supply the 979 "job-id" operation attribute which is checked against the current job's 980 job-id. If the job identified by the "job-id" attribute is not the 981 current job on the Printer, i.e., is not in the 'processing' or 982 'processing-stopped' states, the Printer MUST reject this operation and 983 return the 'client-error-not-possible' status code. Otherwise, the 984 Printer suspends the specified job and processed other jobs. 986 The Printer MUST reject a Resume-Job request (and return the 'client- 987 error-not-possible') for a job that has been suspended , i.e., for a job 988 in the 'processing-stopped' state, with the 'job-suspended' value in its 989 "job-state-reasons" attribute. 991 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 992 performing this operation must either be the job owner (as determined in 993 the Job Creation operation) or an operator or administrator of the 994 Printer object (see [ipp-mod] Sections 1 and 8.5). 996 The Suspend-Current-Job Request and Suspend-Current-Job Response have 997 the same attribute groups and attributes as the Pause-Printer operation 998 (see [ipp-mod] section 3.2.8 ), including the new "job-message-from- 999 operator" operation attribute (see section 6), with the addition of the 1000 following Group 1 Operation attributes in the request: 1002 "job-id" (integer(1:MAX)): 1004 The client OPTIONALLY supplies this Operation attribute in order to 1005 verify that the identified job is still the current job on the 1006 target Printer object. The IPP object MUST supports this operation 1007 attribute, if it supports this operation. 1009 4.3.2 Resume-Job operation 1011 This OPTIONAL operation allows a client to resume the target job at the 1012 point where it was suspended. The Printer moves the target job to the 1013 'pending' state and removes the 'job-suspended' value from the job's 1014 "job-state-reasons" attribute. 1016 If the target job is not in the 'processing-stopped' state with the 1017 'job-suspended' value in the job's "job-state-reasons" attribute, the 1018 Printer MUST reject the request and return the 'client-error-not- 1019 possible' status code, since the job was not suspended. 1021 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 1022 performing this operation must either be the job owner (as determined in 1023 the Job Creation operation) or an operator or administrator of the 1024 Printer object (see [ipp-mod] Sections 1 and 8.5). 1026 The Resume-Job Request and Resume-Job Response have the same attribute 1027 groups and attributes as the Release-Job operation (see [ipp-mod] 1028 section 3.3.6), including the new "job-message-from-operator" operation 1029 attribute (see section 6). 1031 Expires: February 15, 2001 1032 4.4 Job Scheduling Operations 1034 This section defines jobs that allow an operator to control the 1035 scheduling of jobs. 1037 4.4.1 Promote-Job operation 1039 This OPTIONAL operation allows a client to make the pending target job 1040 be processed next after the current job completes. This operation is 1041 specially useful in a production printing environment where the operator 1042 is involved in job scheduling. 1044 If the target job is in the 'pending' state, this operation does not 1045 change the job's state, but causes the job to be processed after the 1046 current job(s) complete. If the target job is not in the 'pending' 1047 state, the Printer MUST reject the request and return the 'client-error- 1048 not-possible' status code. 1050 If the Printer implements the "job-priority" Job Template attribute (see 1051 [ipp-mod] section 4.2.1), the Printer sets the job's "job-priority" to 1052 the highest value supported (so that the job will print before any of 1053 the other pending jobs). The Printer returns the target job immediately 1054 after the current job(s) in a Get-Jobs response (see [ipp-mod] section 1055 3.2.6) for the 'not-completed' jobs. 1057 When the current job completes, is canceled, suspended (see section 1058 4.3.1), or aborted, the target of this operation is processed next. 1060 If a client issues this request (again) before the target of the 1061 operation of the original request started processing, the target of this 1062 new request is processed before the previous job that was to be 1063 processed next. 1065 IPP is specified not to require queues for job scheduling, since there 1066 are other implementation techniques for scheduling multiple jobs, such 1067 as re-evaluating a criteria function for each job on a scheduling cycle. 1068 However, if an implementation does implement queues for jobs, then the 1069 Promote-Job puts the specified job at the front of the queue. A 1070 subsequent Promote-Job before the first job starts processing puts that 1071 specified job at the front of the queue, so that it is "in front" of the 1072 previously promoted job. 1074 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 1075 performing this operation must be an operator or administrator of the 1076 Printer object (see [ipp-mod] Sections 1 and 8.5). 1078 The Promote-Job Request and Promote-Job Response have the same attribute 1079 groups and attributes as the Cancel-Job operation (see [ipp-mod] section 1080 3.3.3), including the new "job-message-from-operator" operation 1081 attribute (see section 6). 1083 Expires: February 15, 2001 1084 4.4.2 Schedule-Job-After operation 1086 This OPTIONAL operation allows a client to request the Printer to 1087 schedule the target job so that it will be processed immediately after 1088 the specified predecessor job, all other scheduling factors being equal. 1089 This operation is specially useful in a production printing environment 1090 where the operator is involved in job scheduling. 1092 If the target job is in the 'pending' state, this operation does not 1093 change the job's state, but causes the job to be processed after the 1094 predecessor job completes. The predecessor job can be in the 'pending', 1095 'processing', or 'processing-stopped' states. If the target job is not 1096 in the 'pending' state or the predecessor job is not in the 'pending', 1097 'processing', or 'processing-stopped' states, the Printer MUST reject 1098 the request and returns the 'client-error-not-possible' status code, 1099 since the job cannot have its position changed. 1101 If the Printer implements the "job-priority" Job Template attribute (see 1102 [ipp-mod] section 4.2.1), the Printer sets the job's "job-priority" to 1103 that of the predecessor job (so that the job will print after the 1104 predecessor job). The Printer returns the target job immediately after 1105 the predecessor in a Get-Jobs response (see [ipp-mod] section 3.2.6) for 1106 the 'not-completed' jobs. 1108 When the predecessor job completes processing or is canceled or aborted 1109 while processing, the target of this operation is processed next. 1111 If the client does not supply a predecessor job, this operation has the 1112 same semantics as Promote-Job (see section 4.4). 1114 IPP is specified not to require queues for job scheduling, since there 1115 are other implementation techniques for scheduling multiple jobs, such 1116 as re-evaluating a criteria function for each job on a scheduling cycle. 1117 However, if an implementation does implement queues for jobs, then the 1118 Schedule-Job-After operation puts the specified job immediately after 1119 the specified job in the queue. A subsequent Schedule-Job-After 1120 operation specifying the same job will cause its target job to be placed 1121 after that job, even though it is between the first target job and the 1122 specified job. For example, suppose the job queue consisted of jobs: A, 1123 B, C, D, and E, in that order. A Schedule-Job-After with job E as the 1124 target and B as the specified job would result in the following queue: 1125 A, B, E, C, D. A subsequent Schedule-Job-After with Job D as the target 1126 and B as the specified job would result in the following queue: A, B, 1127 D, E, C. In other words, the link between the two jobs in a Schedule- 1128 Job-After operation is not retained, i.e., there is no attribute on 1129 either job that points to the other job as a result of this operation. 1131 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 1132 performing this operation must be operator or administrator of the 1133 Printer object (see [ipp-mod] Sections 1 and 8.5). 1135 The Schedule-Job-After Request have the same attribute groups and 1136 attributes as the Cancel-Job operation (see [ipp-mod] section 3.3.3), 1137 plus the new "job-message-from-operator" operation attribute (see 1139 Expires: February 15, 2001 1140 section 6). In addition, the following operation attributes are 1141 defined: 1143 "predecessor-job-id": 1144 The client OPTIONALLY supplies this attribute. The Printer MUST 1145 support it, if it supports this operation. This attribute 1146 specifies the job after which the target job is to be processed. 1147 If the client omits this attribute, the Printer MUST process the 1148 target job next, i.e., after the current job, if any. 1150 The Schedule-Job-After Response has the same attribute groups, 1151 attributes, and status codes as the Cancel-Job operation (see [ipp-mod] 1152 section 3.3.3). The following status codes have particular meaning for 1153 this operation: 1155 'client-error-not-possible' - the target job was not in the 'pending' 1156 state or the predecessor job was no in the 'pending', 'processing', 1157 or 'processing-stopped' states. 1158 'client-error-not-found' - either the target job or the predecessor 1159 job was not found. 1161 5 Additional status codes 1163 This section defines new status codes used by the operations defined in 1164 this document. 1166 5.1 'server-error-printer-is-deactivated' (0x050A) 1168 The Printer has been deactivated using the Deactivate-Printer operation 1169 and is only accepting the Activate-Printer (see section 3.5.1), Get-Job- 1170 Attributes, Get-Jobs, Get-Printer-Attributes, and any other Get-Xxxx 1171 operations. An operator can perform the Activate-Printer operation to 1172 allow the Printer to accept other operations. 1174 6 Use of Operation Attributes that are Messages from the Operator 1176 This section summarizes the usage of the "printer-message-from-operator" 1177 and "job-message-from-operator" operation attributes that set the 1178 corresponding Printer and Job Description attributes (see [ipp-set-ops] 1179 for the definition of these operation attributes). These operation 1180 attributes are defined for most of the Device and Job operations that 1181 operators are likely to perform, respectively, so that operators can 1182 indicate the reasons for their actions. 1184 Table 4 shows the operation attributes that are defined for use with the 1185 Printer Operations. 1187 Legend: 1189 REQ - REQUIRED for a Printer to support 1190 OPT - OPTIONAL for a Printer to support; the Printer ignores the 1191 attribute if not supported 1193 Expires: February 15, 2001 1194 - not defined for use with the operation; the Printer 1195 ignores the attribute 1197 Table 4 - Operation attribute support for Printer Operations 1199 Operation Pause- Hold-New- Pur Get- Enabl Rest Shut 1200 Attribute Printer, Jobs, ge- Printe e- art- down 1201 Pause- Release- Job r- Print Prin - 1202 Printer- Held-New- s Attrib , ter Prin 1203 After- Jobs utes, Disab ter, 1204 Current- Set- le- Star 1205 Job, Printe Print tup- 1206 Resume- r- er Prin 1207 Printer Attrib ter 1208 utes 1210 attributes- REQ REQ REQ REQ REQ REQ REQ 1211 charset 1213 attributes- REQ REQ REQ REQ REQ REQ REQ 1214 natural- 1215 language 1217 printer-uri REQ REQ REQ REQ REQ REQ REQ 1219 requesting- REQ REQ REQ REQ REQ REQ REQ 1220 user-name 1222 printer- OPT OPT OPT OPT OPT OPT 1223 message- 1224 from- 1225 operator 1227 Table 5 shows the operation attributes that are defined for use with the 1228 Job operations. 1229 Legend: 1230 REQ - REQUIRED for a Printer to support 1231 O - OPTIONAL for a Printer to support; the Printer ignores the 1232 attribute if supplied, but not supported 1233 - not defined for use with the operation; the Printer 1234 ignores the attribute 1236 Table 5 - Operation attribute support for Job operations 1238 Operation Can Canc Hol Sus Res Get- Rest Repr Pro Sch 1239 Attribute cel el- d- pen ume Job- art- oces mot edu 1240 - Curr Job d- - Attrib Job s- e- le- 1241 Job ent- , Cur Job utes, Job Job Job 1242 Job Rel ren Set- - 1243 eas t- Job- Aft 1244 e- Job Attrib er 1245 Job utes 1247 attributes- REQ REQ REQ REQ REQ REQ REQ REQ REQ REQ 1248 charset 1250 attributes- REQ REQ REQ REQ REQ REQ REQ REQ REQ REQ 1251 natural-language 1253 printer-uri REQ REQ REQ REQ REQ REQ REQ REQ REQ REQ 1255 Expires: February 15, 2001 1256 Operation Can Canc Hol Sus Res Get- Rest Repr Pro Sch 1257 Attribute cel el- d- pen ume Job- art- oces mot edu 1258 - Curr Job d- - Attrib Job s- e- le- 1259 Job ent- , Cur Job utes, Job Job Job 1260 Job Rel ren Set- - 1261 eas t- Job- Aft 1262 e- Job Attrib er 1263 Job utes 1265 job-uri REQ REQ REQ REQ REQ REQ REQ REQ 1267 job-id REQ REQ REQ REQ REQ REQ REQ REQ REQ REQ 1269 requesting-user- REQ REQ REQ REQ REQ REQ REQ REQ REQ REQ 1270 name 1272 job-message- OPT OPT OPT OPT OPT OPT OPT OPT OPT 1273 from-operator 1275 message [to- OPT OPT OPT OPT OPT OPT OPT OPT 1276 operator] 1278 job-hold-until OPT OPT* 1279 * * 1281 * The Printer MUST support the "job-hold-until" operation attribute 1282 if it supports the "job-hold-until" Job Template attribute. 1283 ** The Printer MUST support the "job-hold-until" operation attribute if 1284 it supports the Set-Job-Attributes operation, so that the client can 1285 hold the job with the Reprocess-Job operation and the modify the job 1286 before releasing it to be processed. 1288 7 New Printer Description Attributes 1290 The following new Printer Description attributes are needed to support 1291 the new operations defined in this document and the concepts of Printer 1292 Fan-Out (see section 11). 1294 7.1 subordinate-printers-supported (1setOf uri) 1296 This Printer attribute is REQUIRED if an implementation supports 1297 Subordinate Printers (see section 11) and contains the URIs of the 1298 immediate Subordinate Printer object(s) associated with this Printer 1299 object. Each Non-Leaf Printer object MUST support this Printer 1300 Description attribute. A Leaf Printer object either does not support 1301 the "subordinate-printers-supported" attribute or does so with the 'no- 1302 value' out-of-band value (see [ipp-mod] section 4.1), depending on 1303 implementation. 1305 The precise format of the Subordinate Printer URIs is implementation 1306 dependent (see section 11.4). 1308 If the Printer object does not have an associated Output Device, the 1309 Printer MAY automatically copy the value of the Subordinate Printer 1310 object's "printer-name" MAY be used to populate the Job object's 1312 Expires: February 15, 2001 1313 "output-device-assigned" attribute (see [ipp-mod] section 4.3.13). The 1314 "output-device-assigned" Job attribute identifies the Output Device to 1315 which the Printer object has assigned a job, for example, when a single 1316 Printer object is supporting Device Fan-Out or Printer Fan-Out. 1318 7.2 parent-printers-supported (1setOf uri) 1320 This Printer attribute is REQUIRED if an implementation supports 1321 Subordinate Printers (see section 11) and contains the URI of the Non- 1322 Leaf printer object(s) for which this Printer object is the immediate 1323 Subordinate, i.e., this Printer's immediate "parent" or "parents". Each 1324 Subordinate Printer object MUST support this Printer Description 1325 attribute. A Printer that has no parents, either does not support the 1326 "parent-printers-supported" attribute or does so with the 'no-value' 1327 out-of-band value (see [ipp-mod] section 4.1), depending on 1328 implementation. 1330 8 Additional Values for "printer-state-reasons" 1332 This section defines additional values for the "printer-state-reasons" 1333 Printer Description attribute. 1335 8.1 'hold-new-jobs' 1337 'hold-new-jobs': The operator has issued the Hold-New-Jobs operation 1338 (see section 3.3.1) or other means, but the output-device(s) are 1339 taking an appreciable time to stop. Later, when all output has 1340 stopped, the "printer-state" becomes 'stopped', and the 'paused' 1341 value replaces the 'moving-to-paused' value in the "printer-state- 1342 reasons" attribute. This value MUST be supported, if the Hold-New- 1343 Jobs operation is supported and the implementation takes 1344 significant time to pause a device in certain circumstances. 1346 8.2 'deactivated' 1348 'deactivated': A client has issued a Deactivate-Printer operation 1349 for the Printer object (see section 3.4.1) and the Printer is in 1350 the process of becoming deactivated or has become deactivated. The 1351 Printer MUST reject all requests except Activate-Printer, queries 1352 (Get-Printer-Attributes, Get-Job-Attributes, Get-Jobs, etc.), Send- 1353 Document, and Send-URI (so that partial job submission can be 1354 completed - see section 3.1.1) and return the 'server-error- 1355 service-unavailable' status code. 1357 9 Additional Values for "job-state-reasons" 1359 This section defines additional values for the "job-state-reasons" Job 1360 Description attribute. 1362 Expires: February 15, 2001 1363 9.1 'job-suspended' 1365 'job-suspended': The job has been suspended while processing using 1366 the Suspend-Current-Job operation and other jobs can be processed 1367 on the Printer. The Job can be resumed using the Resume-Job 1368 operation which removes this value. 1370 10 Additional events 1372 The following Printer events are defined for use with [ipp-ntfy]: 1374 'forwarded-operation-failed' - an operation that a Printer forwarded 1375 to a Subordinate Printer (see section 11.7) failed. 1377 11 Use of the Printer object to represent IPP Printer Fan-Out and IPP 1378 Printer Fan-In 1380 This section defines how the Printer object MAY be used to represent IPP 1381 Printer Fan-Out and IPP Printer Fan-In. Fan-Out is where an IPP Printer 1382 is used to represent other IPP Printer objects. Fan-In is where several 1383 IPP Printer objects are used to represent another IPP Printer object. 1385 11.1 IPP Printer Fan-Out 1387 The IPP/1.1 Model and Semantics introduces the semantic concept of an 1388 IPP Printer object that represents more than one Output Device (see 1389 [ipp-mod] section 2.1). This concept is called "Output Device Fan-Out". 1390 However, there was no way to represent the individual states of the 1391 Output Devices or to perform operations on a specific Output Device when 1392 there was Fan-Out. This document generalizes the semantics of the 1393 Printer object to represent such Subordinate Fan-Out Output Devices as 1394 IPP Printer objects. This concept is called "Printer object Fan-Out". 1395 A Printer object that has a Subordinate Printer object is called a Non- 1396 Leaf Printer object. Thus a Non-Leaf Printer object supports one or 1397 more Subordinate Printer objects in order to represent Printer object 1398 Fan-Out. A Printer object that does not have any Subordinate Printer 1399 objects is called a Leaf Printer object. 1401 Each Non-Leaf Printer object submits jobs to its immediate Subordinate 1402 Printers and otherwise controls the Subordinate Printers using IPP or 1403 other protocols. Whether pending jobs are kept in the Non-Leaf Printer 1404 until a Subordinate Printer can accept them or are kept in the 1405 Subordinate Printers depends on implementation and/or configuration 1406 policy. Furthermore, a Subordinate Printer object MAY, in turn, have 1407 Subordinate Printer objects. Thus a Printer object can be both a Non- 1408 Leaf Printer and a Subordinate Printer. 1410 A Subordinate Printer object MUST be a conforming Printer object, so it 1411 MUST support all of the REQUIRED [ipp-mod] operations and attributes. 1412 However, with access control, the Subordinate Printer MAY be configured 1414 Expires: February 15, 2001 1415 so that end-user clients are not permitted to perform any operations (or 1416 just Get-Printer-Attributes) while one or more Non-Leaf Printer 1417 object(s) are permitted to perform any operation. 1419 11.2 IPP Printer Fan-In 1421 The IPP/1.1 Model and Semantics did not preclude the semantic concept of 1422 multiple IPP Printer objects that represent a single Output Device (see 1423 [ipp-mod] section 2.1). However, there was no way for the client to 1424 determine that there was a Fan-In configuration, nor was there a way to 1425 perform operations on the Subordinate device. This specification 1426 generalizes the semantics of the Printer object to allow several Non- 1427 Leaf IPP Printer objects to represent a single Subordinate Printer 1428 object. Thus a Non-Leaf Printer object MAY share a Subordinate Printer 1429 object with one or more other Non-Leaf Printer objects in order to 1430 represent IPP Printer Fan-In. 1432 As with Fan-Out (see section 11.1), when a Printer object is a Non-Leaf 1433 Printer, it MUST NOT have an associated Output Device. As with Fan-Out, 1434 a Leaf Printer object has one or more associated Output Devices. As 1435 with Fan-Out, the Non-Leaf Printer objects submit jobs to their 1436 Subordinate Printer objects and otherwise control the Subordinate 1437 Printer. As with Fan-Out, whether pending jobs are kept in the Non-Leaf 1438 Printers until the Subordinate Printer can accept them or are kept in 1439 the Subordinate Printer depends on implementation and/or configuration 1440 policy. 1442 11.3 Printer object attributes used to represent Printer Fan-Out and 1443 Printer Fan-In 1445 The following Printer Description attributes are defined to represent 1446 the relationship between Printer object(s) and their Subordinate Printer 1447 object(s): 1449 1."subordinate-printers-supported" (1setOf uri) - contains the URI of 1450 the immediate Subordinate Printer object(s). 1452 2."parent-printers-supported (1setOf uri) - contains the URI of the 1453 Non-Leaf printer object(s) for which this Printer object is the 1454 immediate Subordinate, i.e., this Printer's immediate "parent" or 1455 "parents". 1457 11.4 Subordinate Printer URI 1459 Each Subordinate Printer object has a URI which is used as the target of 1460 each operation on the Subordinate Printer. The means for configuring 1461 URIs for Subordinate Printer objects is implementation-dependent as are 1462 all URIs. However, there are two distinct approaches: 1464 a. When the implementation wants to make sure that no operation on 1465 a Subordinate Printer object as a target "sneaks by" the parent 1467 Expires: February 15, 2001 1468 Printer object (or the Subordinate Printer is fronting for a device 1469 that is not networked), the host part of the URI specifies the host 1470 of the parent Printer. Then the parent Printer object can easily 1471 reflect the state of the Subordinate Printer objects in the 1472 parent's Printer object state and state reasons as the operation 1473 passes "through" the parent Printer object. 1475 b. When the Subordinate Printer is networked and the implementation 1476 allows operations to go directly to the Subordinate Printer (with 1477 proper access control) without knowledge of the parent Printer 1478 object, the host part of the URI is different than the host part of 1479 the parent Printer object. In such a case, the parent Printer 1480 object MUST keep its "printer-state" and "printer-state-reasons" up 1481 to date, either by polling the Subordinate Printer object or by 1482 subscribing to events with the Subordinate Printer object (see 1483 [ipp-not-spec] for means to subscribe to event notification when 1484 the Subordinate Printer object supports IPP notification). 1486 11.5 Printer object attributes used to represent Output Device Fan-Out 1488 Only Leaf IPP Printer objects are allowed to have one or more associated 1489 Output Devices. Each Leaf Printer object MAY support the "output- 1490 devices-supported" (1setOf name(127)) to indicate the user-friendly 1491 name(s) of the Output Device(s) that the Leaf Printer object represents. 1492 It is RECOMMENDED that each Leaf Printer object have only one associated 1493 Output Device, so that the individual Output Devices can be represented 1494 completely and controlled completely by clients. In other words, the 1495 Leaf Printer's "output-devices-supported" attribute SHOULD have only one 1496 value. 1498 Non-Leaf Printer MUST NOT have associated Output Devices. However, a 1499 Non-Leaf Printer SHOULD support an "output-devices-supported" (1setOf 1500 name(127)) Printer Description attribute that contains all the values of 1501 its immediate Subordinate Printers. Since such Subordinate Printers MAY 1502 be Leaf or Non-Leaf, the same rules apply to them, etc. Thus any Non- 1503 Leaf Printer SHOULD have an "output-devices-supported" (1setOf 1504 name(127)) attribute that contains all the values of the Output Devices 1505 associated with Leaf Printers of its complete sub-tree. 1507 When adding, removing, or changing a configuration of Printers and 1508 Output Devices, there can be moments in time when the tree structure is 1509 not consistent. In other words, times when a Non-Leaf Printer's 1510 "subordinate-printers-supported" does not agree with the Subordinate 1511 Printer's "parent-printers-supported". Therefore, the operator SHOULD 1512 first Deactivate all Printers that are being configured in this way, 1513 update all pointer attributes, and then reactivate. A useful client 1514 tool would validate a tree structure before Activating the Printers 1515 involved. 1517 Expires: February 15, 2001 1518 11.6 Figures to show all possible configurations 1520 Figure 1, Figure 2, and Figure 3 are taken from [ipp-mod] to show the 1521 configurations possible with IPP/1.0 and IPP/1.1 where all Printer 1522 objects are Leaf Printer objects. The remaining figures show additional 1523 configurations that this document defines using Non-Leaf and Leaf 1524 Printer objects. Legend for all figures: 1526 ----> indicates a network protocol with the direction of its requests 1528 ##### indicates a Printer object which is either: 1529 - embedded in an Output Device or 1530 - hosted in a server. The Printer object 1531 might or might not be capable of queuing/spooling. 1533 any indicates any network protocol or direct 1534 connect, including IPP 1535 Output Device 1536 +---------------+ 1537 | ########### | 1538 O +--------+ | # (Leaf) # | 1539 /|\ | client |------------IPP-----------------># Printer # | 1540 / \ +--------+ | # Object # | 1541 | ########### | 1542 +---------------+ 1544 Figure 1 - Embedded Printer object 1546 ########### Output Device 1547 O +--------+ # (Leaf) # +---------------+ 1548 /|\ | client |---IPP----># Printer #---any->| | 1549 / \ +--------+ # object # | | 1550 ########### +---------------+ 1552 Figure 2 - Hosted Printer object 1554 +---------------+ 1555 | | 1556 +->| Output Device | 1557 ########### any/ | | 1558 O +--------+ # (Leaf) # / +---------------+ 1559 /|\ | client |---IPP----># Printer #--* 1560 / \ +--------+ # Object # \ +---------------+ 1561 ########### any\ | | 1562 +->| Output Device | 1563 | | 1564 +---------------+ 1566 Figure 3 - Output Device Fan-Out 1568 Expires: February 15, 2001 1569 ########### ########### 1570 O +--------+ # Non-Leaf# # subord. # 1571 /|\ | client |---IPP----># Printer #---IPP----># Printer # 1572 / \ +--------+ # object # # object # 1573 ########### ########### 1575 The Subordinate Printer can be a Non-Leaf Printer as in Figure 4 to 1576 Figure 6, or can be a Leaf Printer as in Figure 1 to Figure 3. 1578 Figure 4 - Chained IPP Printer Objects 1580 +------IPP--------------------->########### 1581 / +---># subord. # 1582 / / # Printer # 1583 / ########### any # object # 1584 O +--------+ # Non-Leaf# / ########### 1585 /|\ | client |---IPP----># Printer #--* 1586 / \ +--------+ # object # \ 1587 \ ########### any ########### 1588 \ \ # subord. # 1589 \ +---># Printer # 1590 +------IPP---------------------># object # 1591 ########### 1593 The Subordinate Printer can be a Non-Leaf Printer as in Figure 4 to 1594 Figure 6, or can be a Leaf Printer as in Figure 1 to Figure 3. 1596 Figure 5 - IPP Printer Object Fan-Out 1598 (Non-Leaf) 1599 ########### 1600 # Non-Leaf# 1601 +---># Printer #-+ 1602 / # object # \ 1603 IPP ########### \ ########### 1604 O +--------+ / +-IPP-># subord. # 1605 /|\ | client |--+-----------IPP---------------># Printer # 1606 / \ +--------+ \ +-IPP-># object # 1607 IPP ########### / ########### 1608 \ # Non-Leaf# / 1609 +---># Printer #-+ 1610 # object # 1611 ########### 1612 (Non-Leaf) 1613 The Subordinate Printer can be a Non-Leaf Printer as in Figure 4, Figure 1614 5, or Figure 6, or can be a Leaf Printer as in Figure 1, Figure 2, or 1615 Figure 3. 1617 Figure 6 - IPP Printer Object Fan-In 1619 Expires: February 15, 2001 1621 11.7 Forwarding requests 1623 This section describes the forwarding of Job and Printer requests to 1624 Subordinate Printer objects. 1626 11.7.1 Forwarding requests that affect Printer objects 1628 In Printer Fan-Out, Printer Fan-In, and Chained Printers, the Non-Leaf 1629 IPP Printer object MUST NOT forward the operations that affect Printer 1630 objects to its Subordinate Printer objects. If a client wants to 1631 explicitly target a Subordinate Printer, the client MUST specify the URI 1632 of the Subordinate Printer. The client can determine the URI of any 1633 Subordinate Printers by querying the Printer's "subordinate-printers- 1634 supported (1setOf uri) attribute (see section 7.1). 1636 Table 6 lists the operations that affect Printer objects and the 1637 forwarding behavior that a Non-Leaf Printer MUST exhibit to its 1638 immediate Subordinate Printers. Operations that affect jobs have a 1639 different forwarding rule (see section 11.7.2 and Table 7): 1641 Table 6 - Forwarding operations that affect Printer objects 1643 Printer Operation Non-Leaf Printer action 1645 Printer Operations: 1646 Enable-Printer MUST NOT forward to any of its Subordinate 1647 Printers 1648 Disable-Printer MUST NOT forward to any of its Subordinate 1649 Printers 1650 Hold-New-Jobs MUST NOT forward to any of its Subordinate 1651 Printers 1652 Release-Held-New- MUST NOT forward to any of its Subordinate 1653 Jobs Printers 1654 Deactivate-Printer MUST NOT forward to any of its Subordinate 1655 Printers 1656 Activate-Printer MUST NOT forward to any of its Subordinate 1657 Printers 1658 Restart-Printer MUST NOT forward to any of its Subordinate 1659 Printers 1660 Shutdown-Printer MUST NOT forward to any of its Subordinate 1661 Printers 1662 Startup-Printer MUST NOT forward to any of its Subordinate 1663 Printers 1664 IPP/1.1 Printer See [ipp-mod] 1665 Operations: 1666 Get-Printer- MUST NOT forward to any of its Subordinate 1667 Attributes Printers 1668 Pause-Printer MUST NOT forward to any of its Subordinate 1669 Printers 1670 Resume-Printer MUST NOT forward to any of its Subordinate 1671 Printers 1672 Set operations: See [ipp-set-ops] 1673 Set-Printer- MUST NOT forward to any of its Subordinate 1675 Expires: February 15, 2001 1677 Printer Operation Non-Leaf Printer action 1679 Attributes Printers 1681 11.7.2 Forwarding requests that affect Jobs 1683 Unlike Printer Operations that only affect Printer objects (see section 1684 11.7.1), a Non-Leaf Printer object MUST forward operations that directly 1685 affect jobs to the appropriate Job object(s) in one or more of its 1686 immediate Subordinate Printer objects. Forwarding is REQUIRED since the 1687 purpose of such a Job operation is to affect the indicated job which 1688 itself may have been forwarded. Such forwarding MAY be immediate or 1689 queued, depending on the operation and the implementation. For example, 1690 a Non-Leaf Printer object MAY queue/spool jobs, feeding a job at a time 1691 to its Subordinate Printer(s), or MAY forward jobs immediately to one of 1692 its Subordinate Printers. In either case, the Non-Leaf Printer object 1693 is forwarding Job Creation operations to one of its Subordinate 1694 Printers. Only the time of forwarding of the Job Creation operations 1695 depends on whether the policy is to queue/spool jobs in the Non-Leaf 1696 Printer or the Subordinate Printer. 1698 When a Non-Leaf Printer object creates a Job object in its Subordinate 1699 Printer, whether that Non-Leaf Printer object keeps a fully formed Job 1700 object or just keeps a mapping from the "job-ids" that it assigned to 1701 those assigned by its Subordinate Printer object is IMPLEMENTATION- 1702 DEPENDENT. In either case, the Non-Leaf Printer MUST be able to accept 1703 and carry out future Job operations that specify the "job-id" that the 1704 Non-Leaf Printer assigned and returned to the job submitting client. 1706 Table 7 lists the operations that directly affect jobs and the 1707 forwarding behavior that a Non-Leaf Printer MUST exhibit to its 1708 Subordinate Printers: 1710 Table 7 - Forwarding operations that affect Jobs objects 1712 Job operation Non-Leaf Printer action 1714 Job operations: 1715 Reprocess-Job MUST forward to the appropriate Job in one of 1716 its Subordinate Printers 1717 Cancel- MUST NOT forward 1718 Current-Job 1719 Resume-Job MUST forward to the appropriate Job in one of 1720 its Subordinate Printers 1721 Promote-Job MUST forward to the appropriate Job in one of 1722 its Subordinate Printers 1723 IPP/1.1 Printer 1724 Operations: 1725 Print-Job MUST forward immediately or queue to the 1726 appropriate Subordinate Printer 1727 Print-URI MUST forward immediately or queue to the 1728 appropriate Subordinate Printer 1730 Expires: February 15, 2001 1732 Job operation Non-Leaf Printer action 1734 Validate-Job MUST forward to the appropriate Subordinate 1735 Printer 1736 Create-Job MUST forward immediately or queue to the 1737 appropriate Subordinate Printer 1738 Get-Jobs MUST forward to all its Subordinate Printers 1739 Purge-Jobs MUST forward to all its Subordinate Printers 1740 IPP/1.1 Job 1741 operations: 1742 Send-Document MUST forward immediately or queue to the 1743 appropriate Job in one of its Subordinate 1744 Printers 1745 Send-URI MUST forward immediately or queue to the 1746 appropriate Job in one of its Subordinate 1747 Printers 1748 Cancel-Job MUST forward to the appropriate Job in one of 1749 its Subordinate Printers 1750 Get-Job- MUST forward to the appropriate Job in one of 1751 Attributes its Subordinate Printers, if the Non-Leaf 1752 Printer doesn't know the complete status of the 1753 Job object 1754 Hold-Job MUST forward to the appropriate Job in one of 1755 its Subordinate Printers 1756 Release-Job MUST forward to the appropriate Job in one of 1757 its Subordinate Printers 1758 Restart-Job MUST forward to the appropriate Job in one of 1759 its Subordinate Printers 1760 IPP Set operations: See [ipp-set-ops] 1761 Set-Job- MUST forward to the appropriate Job in one of 1762 Attributes its Subordinate Printers 1764 When a Printer receives a request that REQUIRES forwarding, it does so 1765 on a "best efforts basis", and returns a response to its client without 1766 waiting for responses from any of its Subordinate Printers. Such 1767 forwarded requests could fail. In order for a client to become aware of 1768 such a condition, a new 'forwarded-operation-failed' event is defined, 1769 which a client can subscribe to (see section 10 and [ipp-ntfy]). 1771 The following Job Description attributes are defined to help represent 1772 Job relationships for Fan-Out and forwarding of jobs: 1774 1."output-device-assigned" (name(127)) - from [ipp-mod]: This attribute 1775 identifies the Output Device to which the Printer object has assigned 1776 this job. If an Output Device implements an embedded Printer object, 1777 the Printer object NEED NOT set this attribute. If a print server 1778 implements a Printer object, the value MAY be empty (zero-length 1779 string) or not returned until the Printer object assigns an Output 1780 Device to the job. This attribute is particularly useful when a 1781 single Printer object supports multiple devices (so called "Fan- 1782 Out"). 1784 2."original-requesting-user-name" (name(MAX)) - operation attribute 1785 containing the user name of the original user, i.e., corresponds to 1787 Expires: February 15, 2001 1788 the "requesting-user-name" operation attribute that the original 1789 client supplied to the first Printer object. The IPP/1.1 1790 "requesting-user-name" operation attribute (see [ipp-mod]) is updated 1791 by each client to be itself on each hop, i.e., the "requesting-user- 1792 name" is the client forwarding the request, not the original client. 1793 The "job-originating-user-name" Job Description attribute remains as 1794 the authenticated original user, not the parent Printer's 1795 authenticated host, and is forwarded by each client without changing 1796 the value. 1798 12 Conformance Requirements 1800 The Job and Printer Administrative operations defined in this document 1801 are OPTIONAL operations. However, some operations MUST be implemented 1802 if others are implemented as shown in Table 8. 1804 Table 8 - Conformance Requirement Dependencies for Operations 1806 Operations REQUIRED If any of these operations are supported: 1808 Enable-Printer Disable-Printer 1810 Disable-Printer Enable-Printer 1812 Pause-Printer Resume-Printer 1814 Resume-Printer Pause-Printer, Pause-Printer-After-Current-Job 1816 Hold-New-Jobs Release-Held-New-Jobs 1818 Release-Held-New-Jobs Hold-New-Jobs 1820 Activate-Printer, Deactivate-Printer 1821 Disable-Printer, 1822 Pause-Printer-After- 1823 Current-Job 1825 Deactivate-Printer, Activate-Printer 1826 Enable-Printer, 1827 Resume-Printer 1829 Restart-Printer none 1831 Shutdown-Printer none 1833 Startup-Printer none 1835 Reprocess-Job none 1837 Cancel-Current-Job none 1839 Resume-Job Suspend-Current-Job 1841 Suspend-Current-Job Resume-Job 1843 Promote-Job none 1845 Schedule-Job-After Promote-Job 1847 Table 9 and Table 10 list the "printer-state-reasons" and "job-state- 1848 reasons" values that are REQUIRED if the indicated operations are 1849 supported. 1851 Expires: February 15, 2001 1852 Table 9 - Conformance Requirement Dependencies for "printer-state- 1853 reasons" Values 1855 "printer-state- Conforman If any of the following Printer 1856 reasons" values: ce Operations are supported: 1857 Requireme 1858 nt 1860 'paused' REQUIRED Pause-Printer, Pause-Printer-After- 1861 Current-Job, or Deactivate-Printer 1863 'hold-new-jobs' REQUIRED Hold-New-Jobs 1865 'moving-to-paused' OPTIONAL Pause-Printer, Pause-Printer-After- 1866 Current-Job, Deactivate-Printer 1868 'deactivated' REQUIRED Deactivate-Printer 1870 Table 10 - Conformance Requirement Dependencies for "job-state-reasons" 1871 Values 1873 "job-state-reasons" Conforman If any of the following Job operations 1874 values: ce are supported: 1875 Requireme 1876 nt 1878 'job-suspended' REQUIRED Suspend-Current-Job 1880 'printer-stopped' REQUIRED always REQUIRED 1882 13 IANA Considerations 1884 The operations and attributes in this registration proposal will be 1885 published by IANA according to the procedures in RFC 2566 [rfc2566] 1886 section 6.4 for operations with the following URL: 1888 ftp.isi.edu/iana/assignments/ipp/operations/ipp-admin-ops.txt 1890 14 Internationalization Considerations 1892 This document has the same localization considerations as the [ipp-mod]. 1894 15 Security Considerations 1896 The IPP Model and Semantics document [ipp-mod] discusses high level 1897 security requirements (Client Authentication, Server Authentication and 1898 Operation Privacy). Client Authentication is the mechanism by which the 1899 client proves its identity to the server in a secure manner. Server 1900 Authentication is the mechanism by which the server proves its identity 1901 to the client in a secure manner. Operation Privacy is defined as a 1902 mechanism for protecting operations from eavesdropping. 1904 Expires: February 15, 2001 1905 16 Author's Addresses 1907 Carl Kugler 1908 IBM 1909 Boulder CO 1911 Phone: (303) 924-5060 1912 FAX: 1913 e-mail: kugler@us.ibm.com 1915 Tom Hastings 1916 Xerox Corporation 1917 737 Hawaii St. ESAE 231 1918 El Segundo, CA 90245 1920 Phone: 310-333-6413 1921 Fax: 310-333-5514 1922 e-mail: hastings@cp10.es.xerox.com 1924 Harry Lewis 1925 IBM 1926 Boulder CO 1928 Phone: (303) 924-5337 1929 FAX: 1930 e-mail: harryl@us.ibm.com 1932 17 References 1934 [ipp-iig] 1935 Hastings, T., Manros, C., "Internet Printing Protocol/1.1: draft- 1936 ietf-ipp-implementers-guide-v11-01.txt, work in progress, May 9, 1937 2000. 1939 [ipp-mod] 1940 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 1941 "Internet Printing Protocol/1.0: Model and Semantics", , May 22, 2000. 1944 [ipp-ntfy] 1945 Isaacson, S., Martin, J., deBry, R., Hastings, T., Shepherd, M., 1946 Bergman, R., "Internet Printing Protocol/1.1: IPP Event 1947 Notification Specification", , July 1948 13, 2000. 1950 [ipp-ops-admin-req] 1951 Hastings, T., "Internet Printing Protocol (IPP): Requirements for 1952 Job, Printer, and Device Administrative Operations", , work in progress, July 19, 2000. 1955 Expires: February 15, 2001 1957 [ipp-pro] 1958 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 1959 Protocol/1.1: Encoding and Transport", draft-ietf-ipp-protocol-v11- 1960 06.txt, May 30, 2000. 1962 [RFC2566] 1963 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 1964 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, 1965 April 1999. 1967 Change History of this document is available at: 1968 ftp://ftp.pwg.org/pub/pwg/ipp/new_OPS/ipp-ops-set2-change- 1969 history.txt 1971 18 Appendix A: Full Copyright Statement 1973 Copyright (C) The Internet Society (1998,1999). All Rights Reserved 1975 This document and translations of it may be copied and furnished to 1976 others, and derivative works that comment on or otherwise explain it or 1977 assist in its implementation may be prepared, copied, published and 1978 distributed, in whole or in part, without restriction of any kind, 1979 provided that the above copyright notice and this paragraph are included 1980 on all such copies and derivative works. However, this document itself 1981 may not be modified in any way, such as by removing the copyright notice 1982 or references to the Internet Society or other Internet organizations, 1983 except as needed for the purpose of developing Internet standards in 1984 which case the procedures for copyrights defined in the Internet 1985 Standards process must be followed, or as required to translate it into 1986 languages other than English. 1988 The limited permissions granted above are perpetual and will not be 1989 revoked by the Internet Society or its successors or assigns. 1991 This document and the information contained herein is provided on an "AS 1992 IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK 1993 FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT 1994 LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT 1995 INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR 1996 FITNESS FOR A PARTICULAR PURPOSE. 1998 Expires: February 15, 2001