idnits 2.17.1 draft-ietf-ipp-job-printer-set-ops-04.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** The abstract seems to contain references ([RFC2911,RFC2910], [RFC2565,RFC2566]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 1 instance of lines with non-RFC2606-compliant FQDNs in the document. == There are 5 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. ** The document seems to lack a both a reference to RFC 2119 and the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. RFC 2119 keyword, line 34: '...ies 3 additional OPTIONAL operations f...' RFC 2119 keyword, line 177: '... This document is an OPTIONAL extension to IPP/1.0 [RFC2565, RFC2566]...' RFC 2119 keyword, line 185: '...fines additional OPTIONAL end user, op...' RFC 2119 keyword, line 191: '...Values operation MUST be supported, if...' RFC 2119 keyword, line 207: '...Attributes operations, the client MUST...' (180 more instances...) == The 'Updates: ' line in the draft header should list only the _numbers_ of the RFCs which will be updated by this document (if approved); it should not include the word 'RFC' in the list. -- The draft header indicates that this document updates RFC2910, but the abstract doesn't seem to directly say this. It does mention RFC2910 though, so this could be OK. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 903 has weird spacing: '... set in a Set...' == Line 1235 has weird spacing: '... supply sup...' == Line 1444 has weird spacing: '...onse to indic...' == Line 1867 has weird spacing: '...e to be sup...' == Line 1907 has weird spacing: '...Integer eac...' == (2 more instances...) == Unrecognized Status in '[Target Category: standards track]', assuming Proposed Standard (Expected one of 'Standards Track', 'Full Standard', 'Draft Standard', 'Proposed Standard', 'Best Current Practice', 'Informational', 'Experimental', 'Informational', 'Historic'.) (Using the creation date from RFC2910, updated by this document, for RFC5378 checks: 1999-02-22) -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (July 17, 2001) is 8312 days in the past. Is this intentional? 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: 'RFC2026' is mentioned on line 21, but not defined == Missing Reference: 'RFC2119' is mentioned on line 221, but not defined == Missing Reference: 'RFC 2911' is mentioned on line 1622, but not defined ** Obsolete undefined reference: RFC 2911 (Obsoleted by RFC 8011) == Missing Reference: 'RFC2567' is mentioned on line 2521, but not defined == Missing Reference: 'RFC2568' is mentioned on line 2523, but not defined == Missing Reference: 'IPP-IIG' is mentioned on line 2526, but not defined == Missing Reference: 'RFC2569' is mentioned on line 2527, but not defined == Missing Reference: 'RFC2616' is mentioned on line 2552, but not defined ** Obsolete undefined reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) ** Obsolete normative reference: RFC 2565 (Obsoleted by RFC 2910) ** Obsolete normative reference: RFC 2566 (Obsoleted by RFC 2911) ** Obsolete normative reference: RFC 2910 (Obsoleted by RFC 8010) ** Obsolete normative reference: RFC 2911 (Obsoleted by RFC 8011) Summary: 12 errors (**), 0 flaws (~~), 19 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet Printing Protocol WG T. Hastings 3 INTERNET-DRAFT R. Herriot 4 Xerox Corporation 5 Updates: RFC 2910 and 2911 Carl Kugler 6 [Target Category: standards track] H. Lewis 7 Expires: January 17, 2002 IBM Corporation 8 July 17, 2001 10 Internet Printing Protocol (IPP): 11 Job and Printer Set Operations 12 Copyright (C) The Internet Society (2001). All Rights Reserved. 14 Status of this Memo 16 This document is an Internet-Draft and is in full conformance with 17 all provisions of Section 10 of [RFC2026]. Internet-Drafts are 18 working documents of the Internet Engineering Task Force (IETF), its 19 areas, and its working groups. Note that other groups may also 20 distribute working documents as Internet-Drafts. 22 Internet-Drafts are draft documents valid for a maximum of six months 23 and may be updated, replaced, or obsoleted by other documents at any 24 time. It is inappropriate to use Internet-Drafts as reference 25 material or to cite them other than as "work in progress". 27 The list of current Internet-Drafts can be accessed at 28 http://www.ietf.org/ietf/1id-abstracts.txt 29 The list of Internet-Draft Shadow Directories can be accessed as 30 http://www.ietf.org/shadow.html. 32 Abstract 34 This document specifies 3 additional OPTIONAL operations for use with 35 the Internet Printing Protocol/1.0 (IPP) [RFC2565, RFC2566], and 36 IPP/1.1 [RFC2911, RFC2910]. The end user, operator, and 37 administrator Set-Job-Attributes and Set-Printer-Attributes 38 operations are used to modify IPP Job objects and Printer objects, 39 respectively. The third administrator Get-Printer-Supported-Values 40 operation returns values that the IPP Printer will accept for setting 41 its "xxx-supported" attributes. 43 Three out-of-band values are defined for use with these operations: 44 'delete-attribute', 'admin-define', and 'not-settable', along with a 45 'client-error-attributes-not-settable' status code. 47 Two operation attributes: "printer-message-from-operator" (text) and 48 "job-message-from-operator" (text) are defined to set the 49 corresponding IPP/1.1 Printer and Job Description attributes with the 50 same names. 52 Nine Printer Description attributes are defined: 53 printer-settable-attributes-supported (1setOf type2 keyword) 54 job-settable-attributes-supported (1setOf type2 keyword) 55 document-format-varying-attributes (1setOf type2 keyword) 56 printer-message-time (integer(MIN:MAX)) 57 printer-message-date-time (dateTime) 58 printer-xri-supported (1setOf collection) 59 xri-uri-scheme-supported (1setOf uriScheme) 60 xri-authentication-supported (1setOf type2 keyword) 61 xri-security-supported (1setOf type2 keyword) 63 Table of Contents 65 1 Introduction.....................................................6 67 2 Terminology......................................................6 68 2.1 Conformance Terminology........................................6 69 2.2 Other terminology..............................................7 71 3 Requirements and Use Cases.......................................7 73 4 Definition of the Set operations.................................8 74 4.1 Set-Printer-Attributes Operation...............................9 75 4.1.1 Settable and READ-ONLY Printer Description attributes.......11 76 4.1.2 Set-Printer-Attributes Request..............................12 77 4.1.3 Set-Printer-Attributes Response.............................14 78 4.2 Set-Job-Attributes Operation..................................15 79 4.2.1 Settable and READ-ONLY Job Description attributes...........18 80 4.2.2 Set-Job-Attributes Request..................................18 81 4.2.3 Set-Job-Attributes Response.................................19 82 4.3 Get-Printer-Supported-Values Operation........................21 83 4.3.1 Definition of the usage of the 'admin-define' out-of-band 84 attribute value...................................................22 86 5 New Operation attributes........................................23 87 5.1 printer-message-from-operator (text(127)).....................23 88 5.2 job-message-from-operator (text(127)).........................25 90 6 New Printer Description Attributes..............................26 91 6.1 printer-settable-attributes-supported (1setOf type2 keyword)..26 92 6.2 job-settable-attributes-supported (1setOf type2 keyword)......26 93 6.3 document-format-varying-attributes (1setOf type2 keyword).....27 94 6.4 printer-message-time (integer(MIN:MAX)).......................27 95 6.5 printer-message-date-time (dateTime)..........................27 96 6.6 printer-xri-supported (1setOf collection).....................28 97 6.7 xri-uri-scheme-supported (1setOf uriScheme)...................30 98 6.8 xri-authentication-supported (1setOf type2 keyword)...........30 99 6.9 xri-security-supported (1setOf type2 keyword).................31 101 7 Additional status codes.........................................31 102 7.1 client-error-attributes-not-settable (0x0413).................31 104 8 Additional out-of-band values...................................32 105 8.1 'not-settable' out-of-band value..............................32 106 8.1.1 Encoding of the 'not-settable' out-of-band attribute value..32 107 8.2 'delete-attribute' out-of-band value..........................32 108 8.2.1 Encoding of the 'delete-attribute' out-of-band value........33 109 8.3 'admin-define' out-of-band attribute value....................33 110 8.3.1 Encoding of the 'admin-define' out-of-band attribute value..35 112 9 New Values for Existing Printer Description Attributes..........35 113 9.1 operations-supported (1setOf type2 enum)......................35 115 10 Conformance Requirements.......................................35 117 11 IANA Considerations............................................37 118 11.1 Operation Registrations......................................37 119 11.2 Additional Enum Attribute Value Registrations for the 120 "operations-supported" Printer Attribute..........................37 121 11.3 Attribute Registrations......................................38 122 11.4 Status code Registrations....................................38 123 11.5 Out-of-band Attribute Value Registrations....................39 125 12 Internationalization Considerations............................39 127 13 Security Considerations........................................39 129 14 Author's Addresses.............................................40 131 15 References.....................................................41 133 16 Appendix A: Allowed Values for Set-Printer-Attributes and Set-Job- 134 Attributes requests...............................................43 136 17 Appendix B: Attributes returned from Get-Printer-Supported-Values 137 56 139 18 Appendix C: Description of the Base IPP Documents..............61 141 19 Appendix D: Full Copyright Statement...........................62 143 Table of Tables 145 Table 1 - Operation-Id assignments.................................9 146 Table 2 - Job State Transition Table for the Set-Job-Attributes 147 operation .....................................................17 148 Table 3 - Member attributes of "printer-xri-supported" (1setOf 149 collection) ...................................................29 150 Table 4 - Operation-id assignments................................35 151 Table 5 - Validation rules for 'Any of "xxx-supported" '..........44 152 Table 6 - Validation rules for 'From Get-Printer-Supported-Values'45 153 Table 7 - Values allowed for Job Template Attributes in the Set-Job- 154 Attributes Operation ..........................................47 155 Table 8 - Values allowed for Job Description Attributes in the Set- 156 Job-Attributes Operation ......................................49 158 Table 9 - Values allowed for Printer Job Template Attributes in the 159 Set-Printer-Attributes Operation ..............................51 160 Table 10 - Values allowed for Printer Description Attributes in the 161 Set-Printer-Attributes Operation ..............................53 162 Table 11 - Printer Job Template Attributes returned from Get-Printer- 163 Supported-Values ..............................................57 164 Table 12 - Printer Job Template Attributes returned from Get-Printer- 165 Supported-Values ..............................................57 166 Table 13 - Printer Description Attributes returned from Get-Printer- 167 Supported-Values ..............................................58 168 Table 14 - Printer Job Template Attributes returned from Get-Printer- 169 Supported-Values ..............................................58 170 Table 15 - Printer Job Template Attributes returned from Get-Printer- 171 Supported-Values ..............................................59 172 Table 16 - Printer Description Attributes returned from Get-Printer- 173 Supported-Values ..............................................60 175 1 Introduction 177 This document is an OPTIONAL extension to IPP/1.0 [RFC2565, RFC2566] 178 and IPP/1.1 [RFC2911, RFC2910]. For a description of the base IPP 179 documents see section 18. 181 The Internet Printing Protocol (IPP) is an application level protocol 182 that can be used for distributed printing using Internet tools and 183 technologies. IPP version 1.1 [RFC2911, RFC2910] focuses on end user 184 functionality with a few administrative operations included. This 185 document defines additional OPTIONAL end user, operator, and 186 administrator Set-Job-Attributes and Set-Printer-Attributes 187 operations used to modify IPP Job objects and Printer objects, 188 respectively. It also defines a third Get-Printer-Supported-Values 189 administrator operation that returns values that the IPP Printer will 190 accept for setting its "xxx-supported" attributes. The Get-Printer- 191 Supported-Values operation MUST be supported, if the implementation 192 supports setting any "xxx-supported" Printer attributes using the 193 Set-Printer-Attributes operation. 195 Three out-of-band values are defined for use with these three 196 operations: 'delete-attribute' for deleting Job attributes with the 197 Set-Job-Attributes request, 'not-settable' for use in either the Set- 198 Job-Attributes or Set-Printer-Attributes responses, and 'admin- 199 define' for use in the Get-Printer-Supported-Values response. 201 Two operation attributes: "printer-message-from-operator" (text) and 202 "job-message-from-operator" (text) are defined to set the 203 corresponding IPP/1.1 Printer and Job Description attributes with the 204 same names. These operation attributes may be used with any 205 operation that affect the Printer or Job object for which an 206 operation might want to indicate a message. For the Set-Job- 207 Attributes and Set-Printer-Attributes operations, the client MUST 208 explicitly set them, rather than using these operation attributes. 210 A Printer implementation can make the value of some attributes 211 dependent on the document-format, e.g. "resolution-supported". 213 2 Terminology 215 This section defines terminology used throughout this document. 217 2.1 Conformance Terminology 219 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD 220 NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to 221 conformance as defined in RFC 2119 [RFC2119] and [RFC2911] section 222 12.1. If an implementation supports the extension defined in this 223 document, then these terms apply; otherwise, they do not. These 224 terms define conformance to this document only; they do not affect 225 conformance to other documents, unless explicitly stated otherwise. 227 2.2 Other terminology 229 This document uses terms such as Job object (or Job), IPP Printer 230 object (or Printer), "operation", "request", response", "attributes", 231 "keywords", and "support". These terms have special meaning and are 232 defined in the model terminology [RFC2911] section 12.2. The 233 following additional terms are introduced in this document: 235 READ-ONLY: used in an attribute definition document to indicate that 236 the attribute MUST NOT be settable using an IPP protocol Set 237 operation. In other words, the attribute is not settable by 238 definition. 239 not-settable: an implementation does not support setting an 240 attribute (whether or not the attribute's definition is READ- 241 ONLY). 243 3 Requirements and Use Cases 245 The following requirements and usage are intended to be met by the 246 specification in this document. 248 1. The end-user and the operator need a way to modify a Job that is 249 in the 'pending' or 'pending-held' state. 251 Usage: The end-user discovers that he/she forgot to include a 252 print instruction, such as "finishings" = 'staple' after 253 submitting a job. Rather than canceling the job and resubmitting 254 it to the same IPP Printer, the end-user is able to modify the job 255 on the IPP Printer. 257 The operator needs to modify a job because it is requesting a 258 particular kind of media for which there is no more, but the 259 policy is to print the job on a comparable medium. 261 2. The system administrator needs a way to re-configure or change the 262 policy of the IPP Printer remotely. 264 Usage: The system administrator is adding additional named media 265 to the supported media list (setting 'name' values to the "media- 266 supported" Printer attribute). 268 The system administrator is reducing the capability of the IPP 269 Printer by removing one of the operations from the supported 270 operations list, such as Cancel-Job, because the policy is to run 271 the IPP Printer like a public facsimile machine. After having 272 removed Cancel-Job from the list of supported operations, an 273 administrative client needs to be able to display to an 274 administrator that the implementation is capable of being 275 reconfigured to support Cancel-Job once again. 277 The system administrator is remotely configuring the IPP Printer 278 after installing it, and so is replacing the Printer Description 279 attributes that have the out-of-band 'no-value' value (see 280 [RFC2911] section 4.1) with the proper values. 282 The operator is changing the media loaded in the input tray and so 283 is replacing the "media-ready" Job Template Printer attribute 284 value with the proper values 286 4 Definition of the Set operations 288 The Set-Printer-Attributes operation (as are all Printer operations) 289 are directed at Printer objects. A client MUST always supply the 290 "printer-uri" operation attribute in order to identify the correct 291 target of the operation. These descriptions assume all of the common 292 semantics of IPP/1.1 Model and Semantics document [RFC2911] section 293 3.1. 295 The Set-Job-Attributes operation (as are all Job operations) are 296 directed at Job objects. A client MUST always supply some means of 297 identifying the Job object in order to identify the correct target of 298 the operation. That job identification MAY either be a single Job 299 URI or a combination of a Printer URI with a Job ID as defined in 300 [RFC2911]. The IPP object implementation MUST support both forms of 301 identification for every job. If possible, a client SHOULD use the 302 Printer URI with a Job ID rather than a Job URI, since the 32-bit 303 "job-id" is more readily translated to and from other print protocols 304 that MAY be serving as gateways into or out of the IPP 305 implementation. 307 The Set Printer operations are summarized in Table 1: 309 Table 1 - Operation-Id assignments 311 Operation Name Operation Brief description 312 -Id 314 Set-Printer- 0x0013 Sets attribute values of the target 315 Attributes Printer object 317 Set-Job-Attributes 0x0014 Sets attribute values of the target 318 Job object 320 Get-Printer- Gets values that are valid for 321 Supported-Values 0x0015 setting "xxx-supported" attributes 322 using the Set-Printer-Attributes 323 operation 325 4.1 Set-Printer-Attributes Operation 327 This OPTIONAL operation allows a client to set the values of the 328 attributes of a Printer object. In the request, the client supplies 329 the set of Printer keyword attribute names and values that are to be 330 set. In the response, the Printer object returns success or rejects 331 the entire request with indications of which attribute or attributes 332 could not be set. 334 The Printer object validates the client-supplied attributes in the 335 Set-Printer-Attributes request. For an attribute to validate it MUST 336 meet all of the following rules: 338 1. The number of attributes supplied by the client MUST NOT exceed 339 the maximum number that the Printer supports in a Set-Printer- 340 Attributes request. A Printer MUST accept at least one attribute, 341 but SHOULD accept a reasonable number in a single Set-Printer- 342 Attributes request. 344 Note: There is no way for the client to determine the maximum 345 number of attributes that the Printer supports in a Set-Printer- 346 Attributes request, except to try a reasonable number. 348 2. The Printer MUST support the attribute. 350 3. The attribute MUST NOT be READ-ONLY, i.e., the definition of the 351 attribute MUST NOT indicate that the attribute is READ-ONLY (see 352 Appendix A for an indication of which IPP/1.1 attributes are READ- 353 ONLY). 355 4. The attribute MUST be settable in this implementation. 357 5. The Printer MUST support the value according to the rules defined 358 in Appendix A, i.e., each value of each supplied "xxx" attribute 359 MUST be validated against a value of a corresponding "xxx- 360 supported" Printer attribute. One of those rules permits an 361 administrator to set arbitrary 'name' values to those "xxx- 362 supported" Printer attributes that include the 'name' attribute 363 syntax if the implementation supports the 'admin-define' out-of- 364 band value for that "xxx-supported" attribute (see section 16 and 365 8.3). 367 6. The attribute's values MUST NOT conflict with the values of other 368 Printer attributes, including ones being set in this same 369 operation. 371 If any of the supplied attributes does not validate, the Printer 372 object MUST reject the entire operation; the Printer object MUST NOT 373 partially set some of the supplied attributes. In other words, after 374 the operation, all the supplied attributes MUST be set or none of 375 them MUST be set, thus making the Set-Printer-Attributes an atomic 376 operation. 378 The Printer MUST accept this operation when its READ-ONLY "printer- 379 state" attribute (see RFC2911] section 4.4.11) is 'idle' or 380 'stopped', and SHOULD accept it when the value is 'processing'. The 381 Printer MUST accept this operation for any of the values of the 382 Printer object's READ-ONLY "printer-state-reasons" and "printer-is- 383 accepting-jobs" attributes, unless explicitly defined otherwise in 384 the definition of these attributes' values. 386 This operation MUST NOT change the value of attributes not specified 387 in the operation unless the definition of the attribute explicitly 388 specifies such side-effects. For example, this document explicitly 389 specifies that when this operation sets "printer-message-from- 390 operator", the Printer also MUST set the READ-ONLY "printer-message- 391 time" and READ-ONLY "printer-message-date-time" attributes to the 392 time of the operation as a side effect . In particular, if this 393 operation changes an "xxx-default" attribute, the new value MUST be 394 in the "xxx-supported" attribute or the request MUST contain a new 395 value for "xxx-supported" which contains the new value for the "xxx- 396 default". Otherwise, the Printer MUST reject the operation. In 397 general, Printer attribute definitions that are settable will not 398 define side-effects on other attributes that are settable, only side 399 effects on READ-ONLY attributes, if any. 401 4.1.1 Settable and READ-ONLY Printer Description attributes 403 If the Printer supports the Set-Printer-Attributes operation, then it 404 SHOULD support setting of: 405 all Job Template Default ("xxx-default") attributes 406 all Job Template Supported ("xxx-supported") attributes 407 all Job Template Ready ("xxx-ready") attributes 408 that the implementation supports (see [RFC2911] section 4.2 and 409 extensions). 411 Some Printer Description attributes (see [RFC2911] section 4.4) MUST 412 NOT be settable, i.e., they are defined to be READ-ONLY. An 413 attribute marked as "READ-ONLY" in the Printer Description attribute 414 table in Appendix A is such an attribute. The Printer attributes 415 that are not marked as "READ-ONLY" MAY be settable using the Set- 416 Printer-Attributes operation, depending on implementation. 418 Note: From now on, all extensions that define new object attributes 419 will indicate whether or not the attributes are READ-ONLY, by 420 including the "READ-ONLY" adjective in their descriptions and/or 421 explicitly stating whether they MAY be settable. 423 The current values of each "xxx-supported" Printer attribute MUST 424 reflect the current policy for support of the corresponding "xxx" 425 attribute. If an "xxx-supported" Printer attribute is settable in an 426 implementation, then its value(s) MUST affect the behavior of the 427 implementation. If an "xxx-supported" Printer attribute is defined 428 to be READ-ONLY or is not-settable in an implementation, then its 429 values MUST NOT be settable using the Set-Printer-Attributes 430 operation. Consider the following example: 432 For example, if the "operations-supported" Printer Description 433 attribute (see [RFC2911] section 4.4.15) is settable in a 434 particular implementation, then changing its value with a Set- 435 Printer-Attributes operation MUST affect the operations that the 436 implementation accepts or rejects. Such an implementation will 437 need to be able to reject values for operations that it contains no 438 code support for (see section 4.3). If the "operations-supported" 439 Printer Description attribute is not settable in a particular 440 implementation, then that implementation MUST reject an attempt to 441 set it with a Set-Printer-Attributes operation, return the 'client- 442 error-attributes-not-settable' status code (see section 7.1), and 443 return the "operations-supported" attribute with the out-of-band 444 'not-settable' value in the Unsupported Attributes Group. 446 As another example, consider an implementation in which the "media- 447 default" and "media-supported" are settable. If a client supplies 448 a Set-Printer-Attributes request that contains the "media-default" 449 attribute with a value that is not a member of the Printer's 450 "media-supported" attribute, the Printer MUST reject the request 451 and return the "client-error-conflicting-attributes" status code 452 with the "media-default" and "media-supported" attributes and their 453 values (see [RFC2911] section 3.1.7). 455 As a third example, if a client supplies a Set-Printer-Attributes 456 request that contains both the "media-default" and the "media- 457 supported" attributes, but includes a value in the "media-default" 458 that is not a member of the supplied "media-supported" attribute, 459 the Printer MUST reject the request and return the "client-error- 460 conflicting-attributes" status code with the "media-default" and 461 "media-supported" attributes and their values (see [RFC2911] 462 section 3.1.7). 464 Access Rights: The authenticated user (see [RFC2911] section 8.3) 465 performing this operation must be an operator or administrator of the 466 Printer object (see [RFC2911] Sections 1 and 8.5). Most Printer 467 attributes will require administrator access rights to set, such as 468 "xxx-supported", while some will require operator access rights only, 469 such as "media-ready" and "printer-message-from-operator". Which 470 attributes require which access rights depends on implementation and 471 MAY depend on site policy. 473 4.1.2 Set-Printer-Attributes Request 475 The following sets of attributes are part of the Set-Printer- 476 Attributes Request: 478 Group 1: Operation Attributes 480 Natural Language and Character Set: 481 The "attributes-charset" and "attributes-natural-language" 482 attributes as described in [RFC2911] section 3.1.4.1. 484 Target: 485 The "printer-uri" (uri) operation attribute which is the target 486 for this operation as described in [RFC2911] section 3.1.5. 488 Requesting User Name: 489 The "requesting-user-name" (name(MAX)) attribute SHOULD be 490 supplied by the client as described in [RFC2911] section 8.3. 492 "document-format" (mimeMediaType): 493 The client OPTIONALLY supplies this attribute. The Printer 494 object MUST support this attribute. This attribute is useful 495 for a client to select the document-format to which the 496 attribute modification should be applied. A Printer 497 implementation MAY allow some attributes to have different 498 values for each document format that it supports. See [RFC2911] 499 section 3.2.5.1 "Get-Printer-Attributes Request". 501 If the client includes this attribute, the Printer MUST change 502 the supplied attributes for the document format specified by 503 this attribute. If a supplied attribute is a member of the 504 "document-format-varying-attributes" (i.e., the attribute 505 varies by document format, see section 6.3), the Printer MUST 506 change the supplied attribute for the document format specified 507 by this attribute, but not for other document formats. If a 508 supplied attribute isn't a member of the "document-format- 509 varying-attributes" (i.e. it doesn't vary by document format), 510 the Printer MUST change the supplied attribute for all document 511 formats. 513 If the client omits this attribute, the Printer MUST change the 514 supplied attributes for all document formats whether or not 515 they vary by document-format. 517 If the client supplies a value for the "document-format" 518 Operation attribute that is either 'application/octet-stream' 519 or not supported by the Printer, i.e., is not among the values 520 of the Printer object's "document-format-supported" attribute, 521 the Printer object MUST reject the operation and return the 522 'client-error-document-format-not-supported' status code. 523 Note: the document-format 'application/octet-stream' is the 524 union of several document-formats (see [RFC2911] section 525 3.2.5.1, Get-Printer-Attributes) and is not a true document- 526 format. 528 Group 2: Printer Attributes 530 The client MUST supply a set of Printer attributes with one or 531 more values (including explicitly allowed out-of-band values) 532 as defined in [RFC2911] section 4.2 Job Template Attributes 533 ("xxx-default", "xxx-supported", and "xxx-ready" attributes), 534 section 4.4 Printer Description Attributes, and any attribute 535 extensions supported by the Printer. The value(s) of each 536 Printer attribute supplied in Group 2 replaces the value(s) of 537 the corresponding Printer attribute on the target Printer 538 object. For attributes that can have multiple values (1setOf), 539 all values supplied by the client replace all values of the 540 corresponding Printer object attribute. If a Printer object 541 attribute had not been configured yet and so had the 'no-value' 542 out-of-band value (see [RFC2911] section 4.1), the supplied 543 value(s) replace the 'no-value' value. 545 4.1.3 Set-Printer-Attributes Response 547 The Printer object returns the following sets of attributes as part 548 of the Get-Printer-Attributes Response: 550 Group 1: Operation Attributes 552 Status Message: 553 In addition to the REQUIRED status code returned in every 554 response, the response OPTIONALLY includes a "status-message" 555 (text(255)) and/or a "detailed-status-message" (text(MAX)) 556 operation attribute as described in [RFC2911] sections 13 and 557 3.1.6. 559 Natural Language and Character Set: 560 The "attributes-charset" and "attributes-natural-language" 561 attributes as described in [RFC2911] section 3.1.4.2. 563 Group 2: Unsupported Attributes 565 See [RFC2911] section 3.1.7 for details on returning 566 Unsupported Attributes. 568 If some of the attributes in the operation fail to validate, 569 the Printer MUST reject the operation, MUST NOT change any 570 Printer attributes, and MUST return the indicated status code 571 below. In this group, the Printer MUST also return all 572 attributes that fail to validate. The following are the 573 reasons that an attribute fails to validate and the value 574 returned for the attribute, along with the indicated status 575 code and order of detection: 577 1.The number of attributes supplied by the client exceeds the 578 maximum number that the Printer supports in a Set-Printer- 579 Attributes request: return the 'client-error-request- 580 entity-too-large' (see [RFC2911] section 13.1.4.9). 582 2.The Printer doesn't support the attribute: return the 583 attribute with the "out-of-band" value 'unsupported' (see 584 [RFC2911] section 3.1.7 and [RFC2910]) and the 'client- 585 error-attributes-or-values-not-supported (see [RFC2911] 586 section 13.1.4.12). 588 3.The attribute is either READ-ONLY (in its definition) or is 589 not-settable in this implementation: return the attribute 590 with the "out-of-band" value 'not-settable' (see section 591 8.1) and the 'client-error-attributes-not-settable' status 592 code (see section 7.1). 594 4.The Printer doesn't support the value: if the attribute in 595 the operation has a single value return it. If the 596 attribute in the operation is multi-valued, return only 597 those values in a 1setOf that are not supported. Return the 598 'client-error-attributes-or-values-not-supported' status 599 code (see [RFC2911] section 13.1.4.12). 601 5.The values of some of the supplied attributes conflict with 602 one another and/or other Printer attribute values not being 603 set: if the conflicting attribute in the operation has a 604 single value return the attribute and the value. If the 605 attribute in the operation is multi-valued, return only the 606 attribute and those values in a 1setOf that are conflicting 607 with other attributes. Return the 'client-error- 608 conflicting-attributes' status code (see [RFC2911] section 609 13.1.4.15). 611 4.2 Set-Job-Attributes Operation 613 This OPTIONAL operation allows a client to set the values of the 614 attributes of a Job object. In the request, the client supplies the 615 set of Job keyword attribute names and values that are to be set. In 616 the response, the IPP object returns success or rejects the entire 617 request with indications of which attribute or attributes could not 618 be set. 620 This operation is almost identical to the Set-Printer-Attributes 621 operation and follows the same rules for validation (see section 622 4.1). The only differences are that the Set-Job-Attributes operation 623 is directed at a Job object rather than a Printer object, there is no 624 "document-format" operation attribute used when setting a Job object, 625 the operation can add an attribute to the (Job) object, the 'delete- 626 attributes' out-of-band value is permitted to remove an attribute, 627 and the validation is the same as the Job Creation operations (Print- 628 Job, Print-URI, and Create-Job), i.e., depends on the "xxx-supported" 629 Printer Description attributes (see [RFC2911] section 3.1). Using 630 the Set-Printer-Attributes operation, the administrator can set 631 arbitrary 'name' values to those "xxx-supported" Printer attributes 632 that include the 'name' attribute syntax if the implementation 633 supports the 'admin-define' out-of-band value for that "xxx- 634 supported" attribute (see section 16 and 8.3). However, the Set-Job- 635 Attributes cannot be used to add unsupported names to the Job object. 637 If a client supplies a job attribute in a Set-Job-Attributes request 638 that the Printer supports, and the job was originally submitted 639 without supplying that attribute, the Printer adds the attribute to 640 the Job object. 642 If the client supplies a job attribute with the "out-of-band" value 643 'delete-attribute' (see section 8.2), then the Printer MUST remove 644 the attribute and all of its values from the Job object, if present. 645 The semantic effect of the client supplying the 'delete-attribute' 646 value in a Set-Job-Attributes operation MUST be the same as if the 647 attribute had not been supplied with the Job object in the Job 648 Creation operation, i.e., the Printer applies its default attribute 649 or behavior with lower precedence that the PDL (see the beginning of 650 [RFC2911] section 4.2 and [RFC2911] 3.2.1.1). Any subsequent query 651 of the Job object using Get-Job-Attributes or Get-Jobs MUST NOT 652 return any attribute that has been deleted using the 'delete- 653 attribute' out-of-band value. However, a client can re-establish 654 such a deleted Job attribute with any supported value(s) using a 655 subsequent Set-Job-Attributes operation. 657 If the client supplies an attribute in a Set-Job-Attributes request 658 with the 'delete-attribute' value and that attribute is not present 659 on the Job object, the Printer ignores that supplied attribute in the 660 request, does not return the attribute in the Unsupported Attributes 661 group, and returns the 'successful-ok' status code, if there are no 662 other problems with the request. 664 The validation of the Set-Job-Attributes request is performed by the 665 Printer as if the job had been submitted originally with the new 666 attribute values (and the deleted attributes removed) and with "ipp- 667 attribute-fidelity" set to 'true', i.e., all modified attributes Job 668 attributes and values MUST be supported in combination with the Job 669 attributes not modified. If such a Job Creation operation would have 670 been accepted, then the Set-Job-Attributes MUST be accepted. If such 671 a Job Creation operation would have been rejected, then the Set-Job- 672 Attributes MUST be rejected and the Job MUST be unchanged. In 673 addition, if any of the supplied attributes are not supported, are 674 not settable, or the values are not supported, the Printer object 675 MUST reject the entire operation; the Printer object MUST NOT 676 partially set some of the supplied attributes. In other words, after 677 the operation, all the supplied attributes MUST be set or none of 678 them MUST be set, thus making the Set-Job-Attributes an atomic 679 operation. 681 The IPP object MUST accept or reject this operations when the Job's 682 READ-ONLY "job-state" attribute has the values shown in Table 2. The 683 job's current state MUST affect whether the IPP object accepts or 684 rejects the request. For example, in the case where the operation 685 creates a request for unavailable resources, the Job transitions to a 686 new state. Table 2 shows the allowed behaviors in each job state and 687 the transitions. 689 Table 2 - Job State Transition Table for the Set-Job-Attributes 690 operation 692 Current New P object's response status code 693 "job-state" "job-state" Iand "action": 695 'pending' 'pending' 'successful-ok' 697 'pending' 'pending-held' 'successful-ok' - needed resources 698 are not ready 700 'pending-held' 'pending-held' 'successful-ok' 702 'pending-held' 'pending' 'successful-ok' - needed resources 703 are ready 705 'processing' 'processing' 'successful-ok' or 'client-error- 706 not-possible' depending on 707 implementation, including the 708 attributes being set, whether the 709 job has started marking media, 710 etc. 712 'processing- 'processing- 'successful-ok' or 'client-error- 713 stopped' stopped' not-possible' depending on 714 implementation, including the 715 attributes being set, whether the 716 job has started marking media, 717 etc. 719 'completed' 'completed' 'client-error-not-possible' 721 'canceled' 'canceled' 'client-error-not-possible' 723 'aborted' 'aborted' 'client-error-not-possible' 725 This operation MUST NOT change the value of attributes not specified 726 in the operation unless the definition of the attribute explicitly 727 specifies such side-effects. In general, Job attribute definitions 728 that are settable will not define side-effects on other attributes 729 that are settable, only side effects on READ-ONLY attributes, if any. 731 4.2.1 Settable and READ-ONLY Job Description attributes 733 If the Printer supports the "job-message-from-operator" Job 734 Description attribute (see [RFC2911] section 4.3.16) and the client 735 explicitly supplies a new value for the "job-message-from-operator" 736 in the Set-Job-Attributes request, then the Printer MUST set the 737 "job-message-from-operator" Job attribute to this new value. 739 If the Printer supports the Set-Job-Attributes operation, then it 740 SHOULD support setting of: 741 all Job Template job ("xxx") attributes 742 that the implementation supports (see [RFC2911] section 4.2 and 743 extensions). 745 Some Job Description attributes (see [RFC2911] section 4.3) MUST NOT 746 be settable, i.e., they are defined to be READ-ONLY. An attribute 747 marked as "READ-ONLY" in the Job Description attribute table in 748 Appendix A is such an attribute. The Job attributes not marked as 749 "READ-ONLY" MAY be settable using the Set-Job-Attributes operation, 750 depending on implementation. 752 Note: From now on, all extensions that define new object attributes 753 will indicate whether or not the attributes are READ-ONLY, by 754 including the "READ-ONLY" adjective in their descriptions and/or 755 explicitly stating whether they MAY be settable. 757 Access Rights: The authenticated user (see [RFC2911] section 8.3) 758 performing this operation must either be the job owner (as determined 759 in the Job Creation operation) or an operator or administrator of the 760 Printer object (see [RFC2911] Sections 1 and 8.5). 762 4.2.2 Set-Job-Attributes Request 764 The following sets of attributes are part of the Set-Job-Attributes 765 Request: 767 Group 1: Operation Attributes 769 Natural Language and Character Set: 770 The "attributes-charset" and "attributes-natural-language" 771 attributes as described in [RFC2911] section 3.1.4.1. 773 Target: 774 Either (1) the "printer-uri" (uri) plus "job-id" 775 (integer(1:MAX)) or (2) the "job-uri" (uri) operation 776 attribute(s) which define the target for this operation as 777 described in [RFC2911] section 3.1.5. 779 Requesting User Name: 780 The "requesting-user-name" (name(MAX)) attribute SHOULD be 781 supplied by the client as described in [RFC2911] section 8.3. 783 Group 2: Job Attributes 785 The client MUST supply a set of Job attributes with one or more 786 values (including explicitly allowed out-of-band values) as 787 defined in [RFC2911] section 4.2 Job Template Attributes ("xxx" 788 attributes), section 4.3 Job Description Attributes, and any 789 attribute extensions supported by the Printer. The value(s) of 790 each Job attribute supplied in Group 2 replaces the value(s) of 791 the corresponding Job attribute on the target Job object. For 792 attributes that can have multiple values (1setOf), all values 793 supplied by the client replace all values of the corresponding 794 Job object attribute. 796 If the client supplies an "xxx" attribute with the 'delete- 797 attribute' out-of-band value (see section 8.2), the Printer 798 MUST remove the "xxx" attribute from the Job object, if 799 present. 801 4.2.3 Set-Job-Attributes Response 803 The IPP object returns the following sets of attributes as part of 804 the Set-Job-Attributes Response: 806 Group 1: Operation Attributes 808 Status Message: 809 In addition to the REQUIRED status code returned in every 810 response, the response OPTIONALLY includes a "status-message" 811 (text(255)) and/or a "detailed-status-message" (text(MAX)) 812 operation attribute as described in [RFC2911] sections 13 and 813 3.1.6. 815 Natural Language and Character Set: 816 The "attributes-charset" and "attributes-natural-language" 817 attributes as described in [RFC2911] section 3.1.4.2. 819 Group 2: Unsupported Attributes 820 See [RFC2911] section 3.1.7 for details on returning 821 Unsupported Attributes. 823 If some of the attributes in the operation fail to validate, 824 the Printer MUST reject the operation, MUST NOT change any Job 825 attributes, and MUST return the indicated status code below. 826 In this group, the Printer MUST also return all attributes that 827 fail to validate. The following are the reasons that an 828 attribute fails to validate and the value returned for the 829 attribute, along with the indicated status code and order of 830 detection: 832 1.The number of attributes supplied by the client exceeds the 833 maximum number that the Printer supports in a Set-Printer- 834 Attributes request: return the 'client-error-request- 835 entity-too-large' (see [RFC2911] section 13.1.4.9). 837 2.The Printer doesn't support the attribute: return the 838 attribute with the 'unsupported' out-of-band attribute value 839 (see [RFC2911] section 3.1.7 and [RFC2910]) and the 'client- 840 error-attributes-or-values-not-supported (see [RFC2911] 841 section 13.1.4.12). 843 3.The attribute is READ-ONLY (in its definition) or is not- 844 settable in this implementation: return the attribute with 845 the 'not-settable' out-of-band attribute value (see section 846 8.1) and the 'client-error-attributes-not-settable' status 847 code (see section 7.1). 849 4.The Printer doesn't support the value: if the attribute in 850 the operation has a single value return it. If the 851 attribute in the operation is multi-valued, return only 852 those values in a 1setOf that are not supported. Return the 853 'client-error-attributes-or-values-not-supported' status 854 code (see [RFC2911] section 13.1.4.12). 856 5.The values of some of the supplied attributes conflict with 857 one another and/or other Job attribute values not being set: 858 if the conflicting attribute in the operation has a single 859 value return the attribute and the value. If the attribute 860 in the operation is multi-valued, return only the attribute 861 and those values in a 1setOf that are conflicting with other 862 attributes. Return the 'client-error-conflicting- 863 attributes' status code (see [RFC2911] section 13.1.4.15). 865 4.3 Get-Printer-Supported-Values Operation 867 This OPTIONAL operation allows a client to request the values that 868 the Printer allows in the Set-Printer-Attributes operation for "xxx- 869 supported" attributes. If the Printer supports the Set-Printer- 870 Attributes operation AND some of its "xxx-supported" Printer 871 attributes are settable, then the Printer MUST also support this 872 operation. 874 The Printer MUST return in the Get-Printer-Supported-Values response 875 those, and only those, "xxx-supported" Printer attributes that it 876 supports setting with the Set-Printer-Attributes operation. 877 Furthermore, if a client requests the value of an attribute that is 878 not settable or is not supported (as in the Get-Printer-Attributes 879 response), the Unsupported Attributes Group of the response NEED NOT 880 contain the "requested-attributes" operation attribute with any such 881 requested (attribute keyword) values. 883 This operation has identical request/response attributes to the Get- 884 Printer-Attributes operation in IPP/1.1 [RFC2911]. The operation 885 also behaves identically to the Get-Printer-Attributes operation in 886 IPP/1.1 [RFC2911] with the following exceptions: 888 1.The Get-Printer-Supported-Values operation supports only "xxx- 889 supported" attributes. 891 2.The Get-Printer-Attributes operation returns the few "xxx- 892 supported" attributes that are defined to be single valued, such 893 as "page-ranges-supported" (boolean) or "pdl-override-supported" 894 (type2 keyword), as single values, while Get-Printer-Supported- 895 Values returns the possible values that can be set as a 1setOf of 896 the same attribute syntax type (See Appendix B: Attributes 897 returned from Get-Printer-Supported-Values). 899 3.The Get-Printer-Attributes operation returns the current values of 900 requested attributes while the Get-Printer-Supported-Values 901 operation returns the values that are inherently supported by the 902 implementation code, i.e., the values that an administrative 903 client can set in a Set-Printer-Attributes request. 905 4.The Get-Printer-Attributes operation returns the current values of 906 requested "xxx-supported" attributes that the Printer is 907 configured to accept in Job Creation operations, including 908 additional values defined by the administrator, while the Get- 909 Printer-Supported-Values operation returns only the values of 910 "xxx-supported" attributes that are inherently supported by the 911 implementation and does not return any additional values defined 912 by the administrator where the implementation supports the 'admin- 913 define' out-of-band value. 915 5.The Get-Printer-Attributes never returns the 'admin-define' out- 916 of-band attribute value, while the Get-Printer-Supported- 917 Attributes operation does, if the implementation allows the 918 administrator to define name values by setting that "xxx- 919 supported" attribute with any 'name' value(s). 921 6.The Get-Printer-Attributes operation only requires end-user access 922 rights, while the Get-Printer-Supported-Values requires 923 administrator access rights. 925 Access Rights: The authenticated user (see [RFC2911] section 8.3) 926 performing this operation must be an administrator of the Printer 927 object (see [RFC2911] Sections 1 and 8.5). 929 4.3.1 Definition of the usage of the 'admin-define' out-of-band 930 attribute value 932 If the Set-Printer-Attributes operation allows the System 933 Administrator to define arbitrary 'name' values for an "xxx- 934 supported" attribute, then the Get-Printer-Supported-Values operation 935 MUST return the 'admin-define' out-of-band attribute value (see 936 section 8.3) as one of the values of the "xxx-supported" attribute. 937 In other words, the 'admin-define' out-of-band attribute value 938 indicates that the Printer implementation supports clients setting 939 arbitrary 'name' attribute syntax values for that "xxx-supported" 940 attribute using the Set-Printer-Attributes operation as long as the 941 attribute is defined with the 'name' attribute syntax. 943 For example, if the Get-Printer-Supported-Values operation returns 944 several keywords as the value of the "media-supported" attribute, 945 then the Set-Printer-Attributes operation MUST accept any of these 946 keywords as values for the "media-supported" attribute. If the Get- 947 Printer-Supported-Values operation returns an 'admin-define' out-of- 948 band attribute value as one of the values of the "media-supported" 949 attribute, then the Set-Printer-Attributes operation MUST accept any 950 value whose attribute syntax is 'name' as a value for the "media- 951 supported" attribute (provided that the user is properly 952 authenticated to use the Set-Printer-Attributes operation, e.g., has 953 administrative access rights). 955 The Get-Printer-Supported-Values MAY return the 'admin-define' out- 956 of-band attribute value for any IPP/1.1 or extension Job Template 957 attribute if the implementation supports allowing the System 958 Administrator to add values to the "xxx-supported" attribute using 959 the Set-Printer-Attributes operation. In this case, the Printer MUST 960 accept any 'name' value of the correct attribute syntax in a Set- 961 Printer-Attributes operation that is setting that attribute. For 962 "xxx-supported" attributes that are defined with a choice of 963 attribute syntaxes, such as 'keyword | name', it is the 'name' 964 attribute syntax that the System Administrator can use to add new 965 values, not the 'keyword' attribute syntax. For IPP/1.1 this 966 requirement includes the following Job Template attributes: 968 media-supported 969 job-hold-until-supported 970 job-sheets-supported 972 Implementations that support additional Job Template attributes that 973 include the 'name' attribute syntax, MAY use the 'admin-define' out- 974 of-band value with them. 976 If the 'admin-define' out-of-band attribute value is not one of the 977 values of an "xxx-supported" attribute returned in a Get-Printer- 978 Supported-Values response, then the Printer MUST NOT allow the Set- 979 Printer-Attributes operation for that attribute to contain a value 980 that is not one of the explicit 'keyword' or 'name' values returned 981 in a Get-Printer-Supported-Values response. 983 See Appendix B: Attributes returned from Get-Printer-Supported-Values 984 for a full list of values returned by this operation. 986 5 New Operation attributes 988 This section defines new operation attributes for use with the 989 IPP/1.1 operations indicated. As new operations are defined they 990 will also indicate explicitly whether these operation attributes are 991 defined for use with them. 993 5.1 printer-message-from-operator (text(127)) 995 The Printer SHOULD support this Operation attribute in following 996 operations if it supports the corresponding "printer-message-from- 997 operator" Printer Description attribute. 999 Pause-Printer 1000 Resume-Printer 1001 Purge-Jobs 1003 The client OPTIONALLY supplies this attribute in the above 1004 operations. The value of this attribute is a message from the 1005 operator about the Printer object on which the operator is performing 1006 the operation. If this operation attribute is supported, the Printer 1007 copies the value to its "printer-message-from-operator" Printer 1008 Description attribute (see [RFC2911] section 4.4.25) even if this 1009 Operation attribute is a zero-length text value or consists solely of 1010 white space. 1012 If the Printer supports this operation attribute, it MUST support 1013 both a zero-length text value and the 'no-value' out-of-band value 1014 (see [RFC2911] section 4.1) to indicate that the operator has sent no 1015 message. In this case, the Printer sets the value of the "printer- 1016 message-from-operator" to the zero-length value or 'no-value' out-of- 1017 band value, respectively. If the client queries the "printer- 1018 message-from-operator" Printer attribute, the Printer returns the 1019 attribute with the zero-length value or the 'no-value' value, 1020 respectively. 1022 In addition, the Printer automatically copies: 1024 1.the value of its "printer-up-time" attribute (see [RFC2911] 1025 section 4.4.29) to its "printer-message-time" attribute, 1027 2.the value of its printer-current-time" (dateTime) attribute (see 1028 [RFC2911] section 4.4.30) to its "printer-message-date-time" 1029 attribute, if supported. 1031 If the client omits this operation attribute, the Printer does not 1032 change the value of its "printer-message-from-operator", "printer- 1033 message-time" and "printer-message-date-time" Printer Description 1034 attributes. 1036 The "printer-message-from-operator" operation attribute MUST NOT be 1037 supported as an operation attribute for the Set-Printer-Attributes 1038 operation. If the operator wants to set the Printer's "printer- 1039 message-from-operator" Printer Description attribute when issuing the 1040 Set-Printer-Attributes operation, the client supplies the "printer- 1041 message-from-operator" explicitly with its new value as one of the 1042 Printer Description attributes in Group 2 in the request. The 1043 Printer also updates its "printer-message-time" and "printer-message- 1044 date-time" Printer Description attributes. If the client does not 1045 explicitly supply the "printer-message-from-operator" with its new 1046 value in the Set-Printer-Attributes request, the Printer leaves the 1047 value of the Printer's "printer-message-from-operator" Printer 1048 Description attribute unchanged. 1050 5.2 job-message-from-operator (text(127)) 1052 The Printer SHOULD support this Operation attribute in following 1053 operations if it supports the corresponding "job-message-from- 1054 operator" Job Description attribute. 1056 Cancel-Job 1057 Hold-Job 1058 Release-Job 1059 Restart-Job 1061 The client OPTIONALLY supplies this attribute in the above 1062 operations. The value of this attribute is a message from the 1063 operator about the Job object on which the operator has just 1064 performed an operation. If supported, the Printer copies the value 1065 to the Job's "job-message-from-operator" Job Description attribute 1066 (see [RFC2911] section 4.3.16) (even if this Operation attribute is a 1067 zero-length text value or consists solely of white space). 1069 If the Printer supports this operation attribute, it MUST support 1070 both a zero-length text value and the 'no-value' out-of-band value 1071 (see [RFC2911] section 4.1) to indicate that the operator has sent no 1072 message. In this case, the Printer sets the value of the "job- 1073 message-from-operator" to the zero-length value or 'no-value' out-of- 1074 band value, respectively. If the client queries the "job-message- 1075 from-operator" Job attribute, the IPP object returns the attribute 1076 with the zero-length value or the 'no-value' value, respectively. 1078 If the client omits this attribute, the Printer does not change the 1079 value of its "job-message-from-operator" Job Description attribute. 1081 Note: There are no corresponding 'job-message-time" and "job- 1082 message-date-time" Job Description attributes, since the usual 1083 lifetime of a job is limited. 1085 The "job-message-from-operator" operation attribute MUST NOT be 1086 supported as an operation attribute for the Set-Job-Attributes 1087 operation. If the operator wants to set the Job's "job-message-from- 1088 operator" Job Description attribute when issuing the Set-Job- 1089 Attributes operation, the client MUST supply the "job-message-from- 1090 operator" with its new value as one of the Job Description attributes 1091 in Group 2 in the request. Otherwise, the Printer leaves the value 1092 of the Job's "job-message-from-operator" Job Description attribute 1093 unchanged by not explicitly setting the attribute. If the client 1094 does not explicitly supply the "job-message-from-operator" with its 1095 new value in the Set-Job-Attributes request, the Printer leaves the 1096 value of the Job's "job-message-from-operator" Job Description 1097 attribute unchanged. 1099 6 New Printer Description Attributes 1101 The following new Printer Description attributes are needed to 1102 support the new operations defined in this document. 1104 6.1 printer-settable-attributes-supported (1setOf type2 keyword) 1106 This REQUIRED READ-ONLY Printer attribute identifies the Printer 1107 object attributes that are settable in this implementation, i.e., 1108 that are settable using the Set-Printer-Attributes operations (see 1109 section 4.1). This attribute MUST be supported if the Set-Printer- 1110 Attributes operations is supported. The Printer MUST reject attempts 1111 to set any Printer attributes that are not one of the values of this 1112 attribute, returning the 'client-error-attributes-not-settable' 1113 status code (see section 7.1). The value of this attribute MAY 1114 depend on the value of the "document-format" operation attribute 1115 supplied in the Get-Printer-Attributes operation (see [RFC2911] 1116 section 3.2.5.1). 1118 Standard keyword values are: 1120 'none': There are no settable Printer attributes. 1121 'xxx': Where 'xxx' is any of the keyword attribute names allowed 1122 by section 4.1.1 1124 6.2 job-settable-attributes-supported (1setOf type2 keyword) 1126 This REQUIRED READ-ONLY Printer attribute identifies the Job object 1127 attributes that are settable in this implementation, i.e., that are 1128 settable using the Set-Job-Attributes operation (see section 4.2). 1129 This attribute MUST be supported if the Set-Job-Attributes operations 1130 is supported. The Printer MUST reject attempts to set any Job 1131 attributes that are not one of the values of this attribute, 1132 returning the 'client-error-attributes-not-settable' status code (see 1133 section 7.1). 1135 Standard keyword values are: 1137 'none': There are no settable Job attributes. 1138 'xxx': Where 'xxx' is any of the keyword attribute names allowed 1139 by section 4.2.1. 1141 6.3 document-format-varying-attributes (1setOf type2 keyword) 1143 This OPTIONAL READ-ONLY Printer Description attribute contains a set 1144 of attribute name keywords. This attribute SHOULD be supported by a 1145 Printer object, if the Printer object has Printer attributes whose 1146 value vary depending on document format (see [RFC2911] Get-Printer- 1147 Attributes operation). This attribute specifies which attribute 1148 values can vary by document-format. If an attribute's name "xxx" is 1149 a member of this attribute and the value of attribute "xxx" is 1150 changed with the Set-Printer-Attributes operation that included the 1151 "document-format" operation attribute, then the Printer MUST change 1152 the value for the specified document format and no other document 1153 formats (see section 4.1.2). If an attribute's name "xxx" is not a 1154 member of this attribute and the value of attribute "xxx" is changed 1155 with the Set-Printer-Attributes operation, then the attribute is 1156 changed for all document formats (whether or not the client supplied 1157 the "document-format" operation attribute). 1159 6.4 printer-message-time (integer(MIN:MAX)) 1161 This OPTIONAL READ-ONLY Printer Description attribute contains the 1162 time that the Printer's "printer-message-from-operator" was changed 1163 by the operator using any operation where the client supplied the 1164 "printer-message-from-operator" operation attribute (see section 5.1) 1165 or was explicitly set using the Set-Printer-Attributes operation (see 1166 section 4.1). This attribute allows the users to know when the 1167 "printer-message-from-operator" attribute was last set. 1169 The Printer sets the value of this attribute by copying the value of 1170 the Printer's "printer-up-time" attribute (see [RFC2911] section 1171 4.3.14). If the Printer resets its "printer-up-time" attribute to 1 1172 on power-up, then it MUST change the value of the "printer-message- 1173 time" to 0 or a negative number as specified in [RFC2911] section 1174 4.3.14. 1176 Note: This attribute helps users better understand the context for 1177 the "printer-message-from-operator" message. 1179 6.5 printer-message-date-time (dateTime) 1181 This OPTIONAL READ-ONLY Printer Description attribute contains the 1182 date and time that the Printer's "printer-message-from-operator" was 1183 changed by the operator using any operation where the client supplied 1184 the "printer-message-from-operator" operation attribute (see section 1185 5.1) or was explicitly set using the Set-Printer-Attributes operation 1186 (see section 4.1). This attribute allows the users to know when the 1187 "printer-message-from-operator" attribute was last set. 1189 This attribute MUST be supported if the Printer supports both the 1190 "printer-message-time" and the "printer-current-time" (dateTime) 1191 attributes (see [RFC2911] section 4.4.30). 1193 Note: This attribute helps users better understand the context for 1194 the "printer-message-from-operator" message. 1196 6.6 printer-xri-supported (1setOf collection) 1198 This OPTIONAL Printer Description attribute is a multi-valued 1199 attribute where each value has the 'collection' attribute syntax (see 1200 [ipp-coll]) containing member attributes with the same semantics as 1201 the following IPP/1.1 READ-ONLY Printer Description attributes, 1202 except for cardinality: 1204 printer-uri-supported (1setOf uri) - see [RFC2911] section 1205 4.4.1 1206 uri-authentication-supported (1setOf type2 keyword) - see 1207 [RFC2911] section 4.4.2 1208 uri-security-supported (1setOf type2 keyword) - see [RFC2911] 1209 section 4.4.3 1211 When setting the "printer-xri-supported" attribute with a Set- 1212 Printer-Attributes request, the Printer MUST also set these three 1213 IPP/1.1 READ-ONLY Printer Description attributes as a defined side 1214 effect. Thus, this collection attribute provides the means to set 1215 these three IPP/1.1 READ-ONLY attributes atomically so that they are 1216 never left in a partially inconsistent state. 1218 An IPP Printer MUST NOT provide any other way using IPP to set these 1219 three IPP/1.1 READ-ONLY Printer Description attributes, since they 1220 are READ-ONLY and MUST have consistent values at all times. Note: 1221 The "xri-printer-supported" (1setOf collection) attribute can be put 1222 into a directory schema that requires a single text string value, 1223 such as SLP or LDPA, by using suitable delimiting characters to 1224 separate member attributes of the collection and/or terminating 1225 collection values. See [svrloc-printer] and [ldap-printer]. 1227 The member attributes of the "printer-xri-supported" (1setOf 1228 collection) are given in Table 3. 1230 Table 3 - Member attributes of "printer-xri-supported" (1setOf 1231 collection) 1233 Member attribute client 1234 MUST MUST 1235 supply support 1237 xri-uri (uri) yes yes 1239 xri-authentication (1setOf type2 keyword) yes yes 1241 xri-security (1setOf type2 keyword) yes yes 1243 Each collection value MUST contain a single unique value for the 1244 "xri-uri" member attribute. However, the other two member attributes 1245 are multi-valued, so that a single URI can support more than one 1246 authentication scheme and/or more than one security scheme. Other 1247 than the uniqueness and the cardinality requirements, the semantics 1248 of these three member attributes is given in [RFC2911] sections 1249 4.4.1, 4.4.2, and 4.4.3, respectively. 1251 A client can query the current values using the Get-Printer- 1252 Attributes operation by supplying either: 1254 1.the three IPP/1.1 attribute names: "printer-uri-supported", "uri- 1255 authentication-supported", "uri-security-supported" and getting 1256 back the parallel values OR 1258 2.the single attribute name: "printer-xri-supported" and getting 1259 back the 1setOf collection which contains the same information 1260 semantically, but in a different form. 1262 A client can query what member attribute values can be set by 1263 supplying the three attribute names: "xri-uri-scheme-supported", 1264 "xri-authentication-supported", and "xri-security-supported" in a 1265 Get-Printer-Supported-Values request and getting back the uriScheme 1266 and type2 keyword values that can be set. Since the "printer-xri- 1267 supported", "uri-authentication-supported", and "uri-security- 1268 supported" attributes are READ-ONLY, they are not queriable with the 1269 Get-Printer-Supported-Values operation (see section 4.3). See Table 1270 16. 1272 When performing a Set-Printer-Attributes operation, if there are 1273 multiple values for the "xri-authentication" and/or "xri-security" 1274 member attributes, the Printer MUST set the corresponding three READ- 1275 ONLY attributes with all possible combinations of values. For 1276 example, setting the "printer-xri-supported" with the following two 1277 collection values where the first URI has both 'basic' and 'digest' 1278 authentication: 1280 "printer-xri-supported = 1281 { "xri-uri" = ipp://abc.com/p1 1282 "xri-authentication" = basic, digest 1283 "xri-security" = tls 1284 }, 1285 { "xri-uri" = http://abc.com/pq 1286 "xri-authentication" = none 1287 "xri-security" = none 1288 } 1290 would cause the Printer to set the three corresponding IPP/1.1 READ- 1291 ONLY attributes, each with three parallel values as follows: 1293 "printer-uri-supported" = { ipp://abc.com/p1, ipp://abc.com/p1, 1294 http://abc.com/pq } 1295 "uri-authentication-supported" = { basic, digest, none } 1296 "uri-security-supported" = { tls, tls, none } 1298 Because there were two authentication values for the ipp://abc.com/p1 1299 URL, that URL value is repeated. Had the ipp URL had 2 1300 authentication values and 3 security values, then there would have 1301 been 7 (2*3 + 1) parallel values for each of the three attributes, 6 1302 with the same ipp URI and 1 with the http URI. 1304 6.7 xri-uri-scheme-supported (1setOf uriScheme) 1306 This OPTIONAL READ-ONLY Printer Description attribute identifies the 1307 URI schemes that the implementation supports for use in the "printer- 1308 uri-supported" (1setOf uri) Printer Description attribute (see 1309 [RFC2911] section 4.4.1) and the "xri-uri" member attribute of the 1310 "xri-printer-supported" (1setOf collection) Printer Description 1311 attribute (see section 6.6). 1313 A Printer MUST support this attribute if it supports setting the 1314 "printer-xri-supported" (1setOf collection) with the Set-Printer- 1315 Attributes operation. 1317 6.8 xri-authentication-supported (1setOf type2 keyword) 1319 This OPTIONAL READ-ONLY Printer Description attribute identifies the 1320 Client Authentication mechanisms that the implementation supports for 1321 use in the "uri-authentication-supported" (1setOf type2 keyword) 1322 Printer Description attribute (see [RFC2911] section 4.4.2) and the 1323 "xri-authentication" member attribute of the "xri-printer-supported" 1324 (1setOf collection) Printer Description attribute (see section 6.6). 1326 A Printer MUST support this attribute if it supports setting the 1327 "printer-xri-supported" (1setOf collection) with the Set-Printer- 1328 Attributes operation. 1330 6.9 xri-security-supported (1setOf type2 keyword) 1332 This OPTIONAL READ-ONLY Printer Description attribute identifies the 1333 URI schemes that the implementation supports for use in the "uri- 1334 security-supported" (1setOf type2 keyword) Printer Description 1335 attribute (see [RFC2911] section 4.4.3) and the "xri-security" member 1336 attribute of the "xri-printer-supported" (1setOf collection) Printer 1337 Description attribute (see section 6.6). 1339 A Printer MUST support this attribute if it supports setting the 1340 "printer-xri-supported" (1setOf collection) with the Set-Printer- 1341 Attributes operation. 1343 7 Additional status codes 1345 This section defines new status codes used by the operations defined 1346 in this document. 1348 7.1 client-error-attributes-not-settable (0x0413) 1350 The Set-Printer-Attributes or Set-Job-Attributes operation failed 1351 because one or more of the specified attributes cannot be set either 1352 because the attribute is defined to be READ-ONLY or the attribute is 1353 not settable in this implementation (see sections 4.1.3 and 4.2.3), 1354 the Printer MUST return this error code and the attribute keyword 1355 name(s) and the 'not-settable' out-of-band value (see section 8.1) in 1356 the Unsupported Attributes Group(see [RFC2911] section 3.1.7) for all 1357 of the attributes that could not be set. When the Printer returns 1358 this status, it MUST NOT change any of the attributes supplied in the 1359 operation. 1361 8 Additional out-of-band values 1363 This section defines additional out-of-band values. As with all out- 1364 of-band values, a client or a Printer MUST NOT use an out-of-band 1365 value unless the definition of the attribute in an operation request 1366 and/or response explicitly allows such usage. See the beginning of 1367 [RFC2911] section 4.1. 1369 8.1 'not-settable' out-of-band value 1371 The 'not-settable' out-of-band attribute value is returned by the IPP 1372 Printer in the Unsupported Attributes group of a response to indicate 1373 that the attribute supplied by the client in the request is READ-ONLY 1374 by definition or is not settable in this implementation. 1376 The 'not-settable' out-of-band attribute value is defined for use 1377 with the Set-Job-Attributes and Set-Printer-Attributes response only. 1378 If a future additional "set" operation allows the 'not-settable' out- 1379 of-band value, its definition document MUST indicate such use 1380 explicitly, including with which attributes. 1382 An IPP object MUST support the 'not-settable' out-of-band value in a 1383 Set-Job-Attributes or Set-Printer-Attributes request if it supports 1384 those operations. A client MUST NOT supply the 'not-settable' out- 1385 of-band value in any request. An IPP object MUST NOT support the 1386 'not-settable' out-of-band value in other operations, unless the 1387 operations' definition document explicitly defines such usage. If a 1388 Printer receives this out-of-band value in any operation request, the 1389 Printer MUST either (1) reject the entire request and return the 1390 'client-error-bad-request' status code or (2) ignore the attribute 1391 and return it with the 'unsupported' out-of-band value. 1393 See sections 4.1.3 and 4.2.3 in this document for an example 1394 definition of the usage of the 'not-settable' out-of-band value in 1395 the Set-Printer-Attributes and Set-Job-Attributes responses. 1397 8.1.1 Encoding of the 'not-settable' out-of-band attribute value 1399 The encoding of the 'not-settable' out-of-band value is 0x15 (see 1400 [RFC2910]). The value-length MUST be 0 and the value empty. 1402 8.2 'delete-attribute' out-of-band value 1404 The 'delete-attribute' out-of-band attribute value is supplied by the 1405 client in a request to indicate that the Printer is to remove the 1406 supplied attribute and all of its values from the target object, if 1407 present. 1409 The 'delete-attribute' out-of-band attribute value is defined for use 1410 with the Set-Job-Attributes request only. If a future additional 1411 "set" operation allows the 'delete-attribute' out-of-band value, its 1412 definition document MUST indicate such use explicitly, including with 1413 which attributes. 1415 An IPP Printer MUST support the 'delete-attribute' out-of-band value 1416 if it supports the Set-Job-Attributes operation. A client MUST NOT 1417 supply and an IPP object MUST NOT support the 'delete-attribute' out- 1418 of-band value in other operations, unless the operations' definition 1419 document explicitly defines such usage. For example, the 'delete- 1420 attribute' out-of-band value MUST NOT be used in the Set-Printer- 1421 Attributes operation, where the absence of an attribute from an IPP 1422 object indicates that the attribute is not supported. If a Printer 1423 receives this out-of-band value in other operation requests, the 1424 Printer MUST either (1) reject the entire request and return the 1425 'client-error-bad-request' status code or (2) ignore the attribute 1426 and return it with the 'unsupported' out-of-band value. 1428 See section 4.2 in this document for the definition of the usage of 1429 the 'delete-attribute' out-of-band value in the Set-Job-Attributes 1430 request. 1432 8.2.1 Encoding of the 'delete-attribute' out-of-band value 1434 The encoding of the 'delete-attribute' out-of-band value is 0x16 (see 1435 [RFC2910]). The value-length MUST be 0 and the value empty. 1437 8.3 'admin-define' out-of-band attribute value 1439 Section 4.3 defines the Get-Printer-Supported-Values response to 1440 contain the values of an "xxx-supported" attribute that are supported 1441 by the implementation before any additional value are defined by the 1442 administrator. The 'admin-define' out-of-band attribute value is 1443 returned as an additional value of an "xxx-supported" attribute in a 1444 Get-Printer-Supported-Values response to indicate that the 1445 implementation supports allowing an administrator to define 1446 additional arbitrary 'name' values for that "xxx-supported" 1447 attribute. 1449 For example, if the "media-supported" (1setOf (type3 keyword | name)) 1450 attribute contains this value, then the Printer MUST permit an 1451 administrator to add new media names to the Printer's "media- 1452 supported" attribute. In order for an administrator to add new 1453 values to a Printer's "xxx-supported" attribute, the client supplies 1454 the existing and new values in a Set-Printer-Attributes request for 1455 that attribute. The client MUST supply any such administratively 1456 defined values in the Set-Printer-Attributes request using the 'name' 1457 attribute syntax. 1459 The 'admin-define' out-of-band attribute value is defined for use 1460 with the Get-Printer-Supported-Values response only. A Printer MUST 1461 NOT return the 'admin-define' out-of-band value in a Get-Printer- 1462 Attributes response, since such a response indicates what an end-user 1463 client can supply in a Job Creation operation. If a future 1464 additional "get" operation allows the 'admin-define' out-of-band 1465 value, its definition document MUST indicate such use explicitly, 1466 including with which attributes. 1468 An IPP Printer MUST support the 'admin-define' out-of-band value, if 1469 it supports a client setting arbitrary 'name' values of an "xxx- 1470 supported" Printer attribute using the Set-Printer-Attributes 1471 operation. A client MUST NOT supply the 'admin-define' out-of-band 1472 value in any request. An IPP object MUST NOT support the 'admin- 1473 define' out-of-band value in other operations, unless the operations' 1474 definition document explicitly defines such usage. If a Printer 1475 receives this out-of-band value in any operation request, the Printer 1476 MUST either (1) reject the entire request and return the 'client- 1477 error-bad-request' status code or (2) ignore the attribute and return 1478 it with the 'unsupported' out-of-band value. 1480 This document defines that the 'admin-define' out-of-band value MUST 1481 be used only with "xxx-supported" attributes that are defined to 1482 include the 'name' attribute syntax. This out-of-band value is not 1483 intended to be used with "xxx-supported" attributes of other 1484 attribute syntaxes, such as 'uri', even though the administrator 1485 defines arbitrary values for such attributes. If other documents 1486 extend the use of the 'admin-define' out-of-band value to other 1487 attribute syntaxes, such a document MUST define such use explicitly, 1488 including with which attributes. 1490 See section 4.3 in this document for an example definition of the 1491 usage of the 'admin-define' out-of-band attribute value in any "xxx- 1492 supported" attribute returned in a Get-Printer-Supported-Values 1493 response that is defined to include the 'name' attribute syntax. 1495 8.3.1 Encoding of the 'admin-define' out-of-band attribute value 1497 The encoding of the 'admin-define' out-of-band attribute value is 1498 0x17 (see [RFC2910]). The value-length MUST be 0 and the value 1499 empty. 1501 9 New Values for Existing Printer Description Attributes 1503 This section contains those attributes for which additional values 1504 are added. 1506 9.1 operations-supported (1setOf type2 enum) 1508 The following "operation-id" values are added in order to support the 1509 new operations defined in this document: 1511 Table 4 - Operation-id assignments 1513 Value Operation Name 1515 0x0013 Set-Printer-Attributes 1517 0x0014 Set-Job-Attributes 1519 0x0015 Get-Printer-Supported-Values 1521 10 Conformance Requirements 1523 This section specifies the conformance requirements for clients and 1524 IPP objects. 1526 Both the Set-Job-Attributes and the Set-Printer-Attributes operations 1527 defined in the document are OPTIONAL for an IPP object to support. 1528 Either one MAY be supported without the other or both MAY be 1529 supported. However, if the Set-Printer-Attributes operation is 1530 supported, then the Get-Printer-Supported-Values operation MUST be 1531 supported if any "xxx-supported" attributes are settable. Otherwise, 1532 the Get-Printer-Supported-Values operation is OPTIONAL for an IPP 1533 Printer to support. 1535 If the Set-Printer-Attributes operation is supported, then the 1536 Printer MUST support the following additional items: 1538 1. the Get-Printer-Supported-Values operation (see section 5), if 1539 any "xxx-supported" attributes are settable. 1541 2. the "printer-settable-attributes-supported" Printer Description 1542 attribute (see section 6.1) 1544 3. the 'not-settable' out-of-band value in responses (see section 1545 8.1) 1547 4. the 'client-error-not-settable' status code (see section 7.1) 1549 5. If "printer-message-from-operator" Printer Description attribute 1550 is supported (see [RFC2911] section 4.4.25), then it MUST be 1551 settable. 1553 6. the Get-Printer-Supported-Values operation (see section 4.3), if 1554 any "xxx-supported" attributes are settable. 1556 7. If a client can set a value with the 'name' attribute syntax for 1557 one or more "xxx-supported" attributes, then the 'admin-define' 1558 out-of-band attribute value (see section 8.3) MUST be supported 1559 in the Get-Printer-Supported-Values response for each such 1560 settable attribute (see section 4.3) 1562 If the Set-Job-Attributes operation is supported, then the Printer 1563 MUST support the following additional items: 1565 1. the "job-settable-attributes-supported" Printer Description 1566 attribute (see section 6.2) 1568 2. the 'not-settable' out-of-band value in responses (see section 1569 8.1) 1571 3. the 'delete-attribute' out-of-band value in requests (see 1572 section 8.2) 1574 4. the 'client-error-not-settable' status code (see section 7.1) 1576 5. If the "job-message-from-operator" Printer Description attribute 1577 is supported (see [RFC2911] 4.3.16), then it MUST be settable. 1579 It is OPTIONAL for the Printer object to support the "printer- 1580 message-time" (integer) and "printer-message-date-time" (dateTime) 1581 Printer Description attributes. If both the "printer-message-time" 1582 (integer) and the "printer-current-time" (dateTime) (see [RFC2911] 1583 section 4.4.30) attributes are supported, then the "printer-message- 1584 date-time" (dateTime) Printer Description attribute MUST be 1585 supported. 1587 As with all out-of-band values, a client or a Printer MUST NOT use an 1588 out-of-band value unless the definition document for the attribute in 1589 an operation request and/or response explicitly allows such usage. 1591 11 IANA Considerations 1593 This section contains registration information for IANA to add to the 1594 various IPP Registries according to the procedures defined in RFC 1595 2911 [RFC2911] section 6. 1597 Note to RFC Editors: Replace RFC NNNN below with the RFC number for 1598 this document, so that it accurately reflects the content of the 1599 information for the IANA Registry. 1601 11.1 Operation Registrations 1603 The following table lists all of the operations defined in this 1604 document. These are to be registered according to the procedures 1605 defined in RFC 2911 [RFC2911] section 6.4. 1607 Operations: Ref. Section: 1608 Set-Printer-Attributes RFC NNNN 4.1 1609 Set-Job-Attributes RFC NNNN 4.2 1610 Get-Printer-Supported-Values RFC NNNN 4.3 1612 The resulting operation registrations will be published in the 1613 ftp://ftp.iana.org/in-notes/iana/assignments/ipp/operations/ 1614 area. 1616 11.2 Additional Enum Attribute Value Registrations for the "operations- 1617 supported" Printer Attribute 1619 The following table lists all the new enum attribute values defined 1620 in this document as additional type2 enum values for use with the 1621 "operations-supported" Printer Description attribute. These are to be 1622 registered according to the procedures defined in RFC 2911 [RFC 2911] 1623 section 6.1. 1625 Enum Attribute Values: Value Ref. Section: 1626 Set-Printer-Attributes 0x0013 RFC NNNN 4 1627 Set-Job-Attributes 0x0014 RFC NNNN 4 1628 Get-Printer-Supported-Values 0x0015 RFC NNNN 4 1630 The resulting enum attribute value registrations will be published in 1631 the 1632 ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute- 1633 values/operations-supported/ 1634 area. 1636 11.3 Attribute Registrations 1638 The following table lists all of the attributes defined in this 1639 document. These are to be registered according to the procedures in 1640 RFC 2911 [RFC2911] section 6.2. 1642 Operation attributes: Ref. Section: 1643 printer-message-from-operator (text(127)) RFC NNNN 5.1 1644 job-message-from-operator (text(127)) RFC NNNN 5.2 1646 Printer Description attributes: Ref. Section: 1647 printer-settable-attributes-supported (1setOf type2 keyword) 1648 RFC NNNN 6.1 1649 job-settable-attributes-supported (1setOf type2 keyword) 1650 RFC NNNN 6.2 1651 document-format-varying-attributes (1setOf type2 keyword) 1652 RFC NNNN 6.3 1653 printer-message-time (integer(MIN:MAX)) RFC NNNN 6.4 1654 printer-message-date-time (dateTime) RFC NNNN 6.5 1655 printer-xri-supported (1setOf collection) RFC NNNN 6.6 1656 xri-uri-scheme-supported (1setOf uriScheme) RFC NNNN 6.7 1657 xri-authentication-supported (1setOf type2 keyword) 6.8 1658 xri-security-supported (1setOf type2 keyword) RFC NNNN 6.9 1660 The resulting attribute registrations will be published in the 1661 ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attributes/ 1662 area. 1664 11.4 Status code Registrations 1666 The following table lists the status code defined in this document. 1667 This is to be registered according to the procedures in RFC 2911 1668 [RFC2911] section 6.6. 1670 Status codes: Ref. Section: 1671 client-error-attributes-not-settable (0x0413) RFC NNNN 7.1 1673 The resulting status code registration will be published in the 1674 ftp://ftp.iana.org/in-notes/iana/assignments/ipp/status-codes/ 1675 area. 1677 11.5 Out-of-band Attribute Value Registrations 1679 The following table lists all of the out-of-band attribute values 1680 defined in this document. These are to be registered according to 1681 the procedures in RFC 2911 [RFC2911] section 6.7. 1683 Out-of-band Attribute Values: Ref. Section: 1684 'not-settable' out-of-band value RFC NNNN 8.1 1685 'delete-attribute' out-of-band value RFC NNNN 8.2 1686 'admin-define' out-of-band attribute value RFC NNNN 8.3 1688 The resulting out-of-band attribute value registrations will be 1689 published in the 1690 ftp.iana.org/in-notes/iana/assignments/ipp/out-of-band-attribute- 1691 value-tags/ 1692 area. 1694 12 Internationalization Considerations 1696 This document has the same localization considerations as the 1697 [RFC2911]. 1699 13 Security Considerations 1701 The IPP Model and Semantics document [RFC2911 section 8] discusses 1702 high level security requirements (Client Authentication, Server 1703 Authentication and Operation Privacy). Client Authentication is the 1704 mechanism by which the client proves its identity to the server in a 1705 secure manner. Server Authentication is the mechanism by which the 1706 server proves its identity to the client in a secure manner. 1707 Operation Privacy is defined as a mechanism for protecting operations 1708 from eavesdropping. 1710 In addition, the introduction of the Set-Printer-Attributes and Set- 1711 Job-Attributes operations creates another security threat, since the 1712 client is able to modify the Printer and Job attributes stored in the 1713 Printer. Such modifications could lead to denial of service. 1715 A malicious user could alter the policy established by the system 1716 administrator and stored in the Printer attributes. Such alteration 1717 could either grant access to more resources or deny access to 1718 resources that the system administrator has established. For 1719 example, the malicious user could remove all of the document-format 1720 values from the "document-format-supported" Printer attribute so that 1721 the Printer would refuse to accept all jobs. 1723 The general remedy for such malicious user actions against Printer 1724 attributes is to have strong Client Authentication coupled with 1725 Printer access control to limit the users who have System 1726 Administrator or Operator privileges. 1728 A malicious user could modify the Job Template attributes of another 1729 user's Job, such as the "copies" attribute. For example, setting the 1730 number of copies to a large number. 1732 The general remedy for such malicious user actions against another 1733 user's job is to have strong Client Authentication coupled with 1734 Printer access control to limit the users who have System 1735 Administrator or Operator privileges who can modify any job and, in 1736 addition, store the Client Authentication with each Job so that only 1737 the job owner End User can modify his/her own job. 1739 14 Author's Addresses 1741 Carl Kugler 1742 IBM 1743 P.O. Box 1900 1744 Boulder, CO 80301-9191 1746 Phone: (303) 924-5060 1747 FAX: 1748 e-mail: kugler@us.ibm.com 1750 Tom Hastings 1751 Xerox Corporation 1752 737 Hawaii St. ESAE 231 1753 El Segundo, CA 90245 1755 Phone: 310-333-6413 1756 Fax: 310-333-5514 1757 e-mail: hastings@cp10.es.xerox.com 1759 Robert Herriot 1760 Xerox Corp. 1761 3400 Hill View Ave, Building 1 1762 Palo Alto, CA 94304 1764 Phone: 650-813-7696 1765 Fax: 650-813-6860 1766 e-mail: robert.herriot@pahv.xerox.com 1767 Harry Lewis 1768 IBM 1769 P.O. Box 1900 1770 Boulder, CO 80301-9191 1772 Phone: (303) 924-5337 1773 FAX: 1774 e-mail: harryl@us.ibm.com 1776 IPP Web Page: http://www.pwg.org/ipp/ 1777 IPP Mailing List: ipp@pwg.org 1779 To subscribe to the ipp mailing list, send the following email: 1780 1) send it to majordomo@pwg.org 1781 2) leave the subject line blank 1782 3) put the following two lines in the message body: 1783 subscribe ipp 1784 end 1786 Implementers of this specification document are encouraged to join 1787 the IPP Mailing List in order to participate in any discussions of 1788 clarification issues and review of registration proposals for 1789 additional attributes and values. In order to reduce spam the 1790 mailing list rejects mail from non-subscribers, so you must subscribe 1791 to the mailing list in order to send a question or comment to the 1792 mailing list. 1794 15 References 1796 [ipp-coll] 1797 deBry, R., , Hastings, T., Herriot, R., "Internet Printing Protocol 1798 (IPP): The Collection Attribute Syntax", , work in progress, July 17, 2001. 1801 [ipp-set2] 1802 Kugler, C, Hastings, T., Lewis, H., "Internet Printing 1803 Protocol/1.1: Job and Printer Administrative Operations", , July 19, 2000. 1806 [ldap-printer] 1807 Fleming, P., Jones, K., Lewis, H., McDonald, I., "Internet Printing 1808 Protocol (IPP): LDAP Schema for Printer Services", , work in progress, December 20, 2000. 1811 [RFC2565] 1812 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 1813 Protocol/1.0: Encoding and Transport", RFC 2565, April 1999. 1815 [RFC2566] 1816 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 1817 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, 1818 April 1999. 1820 [RFC2910] 1821 Herriot, R., Butler, S., Moore, P., Turner, R., "Internet Printing 1822 Protocol/1.1: Encoding and Transport", RFC 2910, September 2000. 1824 [RFC2911] 1825 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 1826 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2911, 1827 September 2000. 1829 [svrloc-printer] 1830 St. Pierre, P., Isaacson, S., McDonald, I., "Definition of the 1831 Printer Abstract Service Type v2.0", , work in progress, March 8, 2000. 1834 16 Appendix A: Allowed Values for Set-Printer-Attributes and Set-Job- 1835 Attributes requests 1837 This appendix is a normative part of this document and contains a 1838 table of all IPP/1.1 attributes. Each row contains: 1840 ? an attribute and 1842 ? the values allowed in the Set-Printer-Attributes or Set-Job- 1843 Attributes request for the attribute. The entry in each cell is 1844 the name (first few words) of each item below 1, 2, 3, 4a-g, and 1845 5. 1847 The allowed values include the following cases: 1849 1. READ-ONLY: the Set-Printer-Attributes or Set-Job-Attributes 1850 operation MUST NOT change this attribute and MUST reject the 1851 entire operation (see section 7.1). 1853 2. Any of "xxx-supported": the Set-Printer-Attributes or Set-Job- 1854 Attributes operation accepts values that are allowed according to 1855 the IPP/1.1 rules for validating the value(s) of an "xxx" Printer 1856 or Job attribute against the value(s) of the corresponding "xxx- 1857 supported" Printer attribute. Table 5 summarizes those validation 1858 rules depending on each attribute syntax and value of an "xxx" 1859 attribute supplied in the request and that of the corresponding 1860 "xxx-supported" Printer attribute. The "xxx-supported" attribute 1861 syntax type and value(s) are obtained from a Get-Printer- 1862 Supported-Values response (see the tables in this Appendix). 1864 Table 5 - Validation rules for 'Any of "xxx-supported" ' 1866 Type of "xxx" Type of "xxx- Validates if: 1867 value to be supported" value 1868 set 1870 integer rangeOfInteger each value is in one of the 1871 "xxx-supported" ranges 1873 uri uriScheme each uri scheme matches one 1874 of the "xxx-supported" 1875 schemes 1877 any boolean if the boolean "xxx- 1878 supported" is 'true' 1880 any same type each value matches an "xxx- 1881 supported" value of the same 1882 type 1884 For additional non-normative explanatory information see section 1885 3.1.2.3 of the "Internet Printing Protocol/1.1: Implementer's 1886 Guide" [ipp-iig]). 1888 3. From Get-Printer-Supported-Values: the Set-Printer-Attributes 1889 operation accepts values that are allowed according to the IPP/1.1 1890 rules for validating the value(s) of an "xxx" Printer attribute 1891 against the value(s) of the corresponding "xxx-supported" Printer 1892 attribute. Table 6 summarizes those validation rules depending on 1893 each attribute syntax and value of an "xxx" attribute supplied in 1894 the request and that of the corresponding "xxx-supported" Printer 1895 attribute. The "xxx-supported" attribute syntax type and 1896 attribute value(s) are obtained from a Get-Printer-Supported- 1897 Values response (see Appendix B: Attributes returned from Get- 1898 Printer-Supported-Values below). 1900 Table 6 - Validation rules for 'From Get-Printer-Supported-Values' 1902 Type of Type of "xxx- Validates if: 1903 "xxx" supported" value 1904 value to 1905 be set 1907 integer rangeOfInteger each 'integer' value is in one of 1908 the "xxx-supported" ranges 1910 uri uriScheme the uri scheme of each value 1911 matches one of the "xxx-supported" 1912 schemes 1914 any boolean if the boolean "xxx-supported" is 1915 'true' 1917 name 'admin-define' any 'name' value matches 1918 out-of-band 1919 value 1921 any same type each value matches an "xxx- 1922 supported" value of the same type 1924 For additional non-normative explanatory information see section 1925 3.1.2.3 of the "Internet Printing Protocol/1.1: Implementer's 1926 Guide" [ipp-iig]). 1928 4. Any value of the proper attribute syntax: the Set-Printer- 1929 Attributes or Set-Job-Attributes operation accepts any value of 1930 the specified attribute syntax. The attribute syntaxes supported 1931 are enumerated below. 1933 a. Any text(127) 1934 b. Any name(127) 1935 c. Any uri 1936 d. Any boolean 1937 e. Any positive integer 1938 f. Any dateTime 1939 g. 1setOf any uri 1941 5. Combination of 'Any of "xxx-supported"' or 'Any name'. 1943 If a Printer implementation doesn't want to allow setting values 1944 indicated in this Appendix as "any xxx", it can make the value be 1945 not-settable. 1947 Table 7 - Values allowed for Job Template Attributes in the Set-Job- 1948 Attributes Operation 1950 Job Template Attributes Values allowed for 1951 Set 1953 job-priority (integer(1:100)) Any of "xxx- 1954 supported" 1956 job-hold-until (type3 keyword | name (MAX)) Any of "xxx- 1957 supported" 1959 job-sheets (type3 keyword | name(MAX)) Any of "xxx- 1960 supported" 1962 multiple-document-handling (type2 keyword) Any of "xxx- 1963 supported" 1965 copies (integer(1:MAX)) Any of "xxx- 1966 supported" 1968 finishings (1setOf type2 enum) Any of "xxx- 1969 supported" 1971 page-ranges (1setOf rangeOfInteger (1:MAX)) Any of "xxx- 1972 supported" 1974 sides (type2 keyword) Any of "xxx- 1975 supported" 1977 number-up (integer(1:MAX)) Any of "xxx- 1978 supported" 1980 orientation-requested (type2 enum) Any of "xxx- 1981 supported" 1983 media (type3 keyword | name(MAX)) Any of "xxx- 1984 supported" 1986 printer-resolution (resolution) Any of "xxx- 1987 supported" 1989 print-quality (type2 enum) Any of "xxx- 1990 supported" 1992 Table 8 - Values allowed for Job Description Attributes in the Set- 1993 Job-Attributes Operation 1995 Job Description Attributes Values allowed for 1996 Set 1998 job-uri (uri) READ-ONLY 2000 job-id (integer(1:MAX)) READ-ONLY 2002 job-printer-uri (uri) READ-ONLY 2004 job-more-info (uri) READ-ONLY 2006 job-name (name(MAX)) Any name(MAX) 2008 job-originating-user-name (name(MAX)) READ-ONLY 2010 job-state (type1 enum) READ-ONLY 2012 job-state-reasons (1setOf type2 keyword) READ-ONLY 2014 job-state-message (text(MAX)) READ-ONLY 2016 job-detailed-status-messages (1setOf READ-ONLY 2017 text(MAX)) 2019 job-document-access-errors (1setOf READ-ONLY 2020 text(MAX)) 2022 number-of-documents (integer(0:MAX)) READ-ONLY 2024 output-device-assigned (name(127)) READ-ONLY 2026 time-at-creation (integer(MIN:MAX)) READ-ONLY 2028 time-at-processing (integer(MIN:MAX)) READ-ONLY 2030 time-at-completed (integer(MIN:MAX)) READ-ONLY 2032 job-printer-up-time (integer(1:MAX)) READ-ONLY 2034 date-time-at-creation (dateTime) READ-ONLY 2035 Job Description Attributes Values allowed for 2036 Set 2038 date-time-at-processing (dateTime) READ-ONLY 2040 date-time-at-completed (dateTime) READ-ONLY 2042 number-of-intervening-jobs (integer(0:MAX)) READ-ONLY 2044 job-message-from-operator (text(127)) Any text(127) 2046 job-k-octets (integer(0:MAX)) READ-ONLY 2048 job-impressions (integer(0:MAX)) READ-ONLY 2050 job-media-sheets (integer(0:MAX)) READ-ONLY 2052 job-k-octets-processed (integer(0:MAX)) READ-ONLY 2054 job-impressions-completed (integer(0:MAX)) READ-ONLY 2056 job-media-sheets-completed (integer(0:MAX)) READ-ONLY 2058 attributes-charset (charset) READ-ONLY 2060 attributes-natural-language READ-ONLY 2061 (naturalLanguage) 2062 Table 9 - Values allowed for Printer Job Template Attributes in the 2063 Set-Printer-Attributes Operation 2065 Printer Job Template Attributes Values allowed 2066 for Set 2068 job-priority-default (integer(1:100)) Any of "xxx- 2069 supported" 2071 job-hold-until-default (type3 keyword | name - 2072 (MAX)) supported"xx 2074 job-sheets-default (type3 keyword | name(MAX)) Any of "xxx- 2075 supported" 2077 multiple-document-handling-default (type2 - 2078 keyword) supported"xx 2080 copies-default (integer(1:MAX)) Any of "xxx- 2081 supported" 2083 finishings-default (1setOf type2 enum) Any of "xxx- 2084 supported" 2086 sides-default (type2 keyword) Any of "xxx- 2087 supported" 2089 number-up-default (integer(1:MAX)) Any of "xxx- 2090 supported" 2092 orientation-requested-default (type2 enum) Any of "xxx- 2093 supported" 2095 media-default (type3 keyword | name(MAX)) Any of "xxx- 2096 supported" 2098 printer-resolution-default (resolution) Any of "xxx- 2099 supported" 2101 print-quality-default (type2 enum) Any of "xxx- 2102 supported" 2104 job-priority-supported (integer(1:100)) From Get- 2105 Printer- 2106 Supported-Values 2108 Printer Job Template Attributes Values allowed 2109 for Set 2111 job-hold-until-supported (1setOf(type3 keyword From Get- 2112 | name (MAX))) Printer- 2113 Supported-Values 2115 job-sheets-supported (1setOf(type3 keyword | - 2116 name(MAX))) Printer- 2117 Supported-Values 2119 multiple-document-handling-supported (1setOf - 2120 type2 keyword) FromtGet 2121 Supported-Values 2123 copies-supported (rangeOfInteger(1:MAX)) From Get- 2124 Printer- 2125 Supported-Values 2127 finishings-supported (1setOf type2 enum) From Get- 2128 Printer- 2129 Supported-Values 2131 page-ranges-supported (boolean) From Get- 2132 Printer- 2133 Supported-Values 2135 sides-supported (1setOf type2 keyword) From Get- 2136 Printer- 2137 Supported-Values 2139 number-up-supported (1setOf (integer(1:MAX) | From Get- 2140 rangeOfInteger(1:MAX))) Printer- 2141 Supported-Values 2143 orientation-requested-supported (1setOf type2 From Get- 2144 enum) Printer- 2145 Supported-Values 2147 media-supported (1setOf (type3 keyword | From Get- 2148 name(MAX))) Printer- 2149 Supported-Values 2151 printer-resolution-supported (1setOf From Get- 2152 resolution) Printer- 2153 Supported-Values 2155 Printer Job Template Attributes Values allowed 2156 for Set 2158 Supported-Values 2160 print-quality-supported (1setOf type2 enum) From Get- 2161 Printer- 2162 Supported-Values 2164 media-ready (type3 keyword | name(MAX)) From Get- 2165 Printer- 2166 Supported-Values 2168 Table 10 - Values allowed for Printer Description Attributes in the 2169 Set-Printer-Attributes Operation 2171 Printer Description Attributes Values allowed for 2172 Set 2174 printer-uri-supported (1setOf uri) READ-ONLY 2176 uri-authentication-supported (1setOf type2 READ-ONLY 2177 keyword) 2179 uri-security-supported (1setOf type2 READ-ONLY 2180 keyword) 2182 printer-xri-supported (1setOf collection) 2183 member attributes: 2185 xri-uri (uri) any uriScheme of 2186 "xri-uri-scheme- 2187 supported" from 2188 Get-Printer- 2189 Attributes 2191 xri-authentication (1setOf type2 keyword) any keyword of 2192 "xri- 2193 authentication- 2194 supported" from 2195 Get-Printer- 2196 Attributes 2198 Printer Description Attributes Values allowed for 2199 Set 2201 xri-security (1setOf type2 keyword) any keyword of 2202 "xri-security- 2203 supported" from 2204 Get-Printer- 2205 Attributes 2207 xri-uri-scheme-supported (1setOf uriScheme) READ-ONLY 2209 xri-authentication-supported (1setOf type2 -ONLY 2210 keyword) READ 2212 xri-security-supported (1setOf type2 READ-ONLY 2213 keyword) 2215 printer-name (name(127)) Any name(127) 2217 printer-location (text(127)) Any text(127) 2219 printer-info (text(127)) Any text(127) 2221 printer-more-info (uri) Any uri 2223 printer-driver-installer (uri) Any uri 2225 printer-make-and-model (text(127)) Any text(127) 2227 printer-more-info-manufacturer (uri) Any uri 2229 printer-state (type1 enum) READ-ONLY 2231 printer-state-reasons (1setOf type2 READ-ONLY 2232 keyword) 2234 printer-state-message (text(MAX)) READ-ONLY 2236 ipp-versions-supported (1setOf type2 From Get-Printer- 2237 keyword) Supported-Values 2239 operations-supported (1setOf type2 enum) From Get-Printer- 2240 Supported-Values 2242 multiple-document-jobs-supported (boolean) From Get-Printer- 2243 Supported-Values 2245 Printer Description Attributes Values allowed for 2246 Set 2248 Supported-Values 2250 charset-configured (charset) Any of "xxx- 2251 supported", use 2252 "charset-supported" 2254 charset-supported (1setOf charset) From Get-Printer- 2255 Supported-Values 2257 natural-language-configured Any of "xxx- 2258 (naturalLanguage) supported", use 2259 "generated-natural- 2260 language-supported" 2262 generated-natural-language-supported From Get-Printer- 2263 (1setOf naturalLanguage) Supported-Values 2265 document-format-default (mimeMediaType) Any of "xxx- 2266 supported" 2268 document-format-supported (1setOf From Get-Printer- 2269 mimeMediaType) Supported-Values 2271 printer-is-accepting-jobs (boolean) READ-ONLY 2273 queued-job-count (integer(0:MAX)) READ-ONLY 2275 printer-message-from-operator (text(127)) Any text(127) 2277 color-supported (boolean) From Get-Printer- 2278 Supported-Values 2280 reference-uri-schemes-supported (1setOf From Get-Printer- 2281 uriScheme) Supported-Values 2283 pdl-override-supported (type2 keyword) From Get-Printer- 2284 Supported-Values 2286 printer-up-time (integer(1:MAX)) READ-ONLY 2288 printer-current-time (dateTime) Any dateTime ** 2289 Printer Description Attributes Values allowed for 2290 Set 2292 multiple-operation-time-out any positive 2293 (integer(1:MAX)) integer 2295 compression-supported (1setOf type3 From Get-Printer- 2296 keyword) Supported-Values 2298 job-k-octets-supported From Get-Printer- 2299 (rangeOfInteger(0:MAX)) Supported-Values 2301 job-impressions-supported From Get-Printer- 2302 (rangeOfInteger(0:MAX)) Supported-Values 2304 job-media-sheets-supported -Printer- 2305 (rangeOfInteger(0:MAX)) Supported-Values 2307 pages-per-minute (integer(0:MAX)) READ-ONLY 2309 pages-per-minute-color (integer(0:MAX)) READ-ONLY 2311 printer-settable-attributes-supported From Get-Printer- 2312 (1setOf type2 keyword) Supported-Values 2314 job-settable-attributes-supported (1setOf From Get-Printer- 2315 type2 keyword) Supported-Values 2317 document-format-varying-attributes (1setOf READ-ONLY 2318 type2 keyword) 2320 printer-message-time (integer(MIN:MAX)) READ-ONLY 2322 printer-message-date-time(dateTime) READ-ONLY 2324 ** - The "printer-current-time" (dateTime) attribute is settable in 2325 order to allow an administrator to correct an incorrect dateTime or 2326 time zone. 2328 17 Appendix B: Attributes returned from Get-Printer-Supported-Values 2330 This Appendix is a normative part of this document and lists all the 2331 attributes that are possible for an implementation to return in a 2332 Get-Printer-Supported-Values response, i.e., all the "xxx-supported" 2333 attributes that can be supplied in a Set-Printer-Attributes request. 2334 READ-ONLY attributes MUST NOT be returned in a Get-Printer-Supported- 2335 Values response and are indicated in the tables as "READ-ONLY - MUST 2336 NOT be returned." 2338 For the following attributes, the value allowed by the Set-Printer- 2339 Attributes operation MUST be a single integer value in the range 2340 specified by the value returned by the Get-Printer-Supported-Values 2341 operation. 2343 Table 11 - Printer Job Template Attributes returned from Get-Printer- 2344 Supported-Values 2346 Printer Job Template Attributes Values Returned 2348 job-priority-supported (integer(1:100)) rangeOfInteger(1:100) 2350 For the following attributes, the value allowed by the Set-Printer- 2351 Attributes operation MUST be a single rangeOfInteger value whose 2352 bounds do not exceed those of the range specified by the value 2353 returned by the Get-Printer-Supported-Values operation. 2355 Table 12 - Printer Job Template Attributes returned from Get-Printer- 2356 Supported-Values 2358 Printer Job Template Attributes Values Returned 2360 copies-supported (rangeOfInteger(1:MAX)) rangeOfInteger(1:MAX) 2362 The following table has the same criteria as the last, but is for 2363 Printer Description attributes. 2365 Table 13 - Printer Description Attributes returned from Get-Printer- 2366 Supported-Values 2368 Printer Description Attributes Values allowed for Set 2370 job-k-octets-supported rangeOfInteger(0:MAX) 2371 (rangeOfInteger(0:MAX)) 2373 job-impressions-supported rangeOfInteger(0:MAX) 2374 (rangeOfInteger(0:MAX)) 2376 job-media-sheets-supported rangeOfInteger(0:MAX) 2377 (rangeOfInteger(0:MAX)) 2379 For the following attributes, the value allowed by the Set-Printer- 2380 Attributes operation MUST be one or more integers and rangeOfInteger 2381 values, such that the integer values described by these integers and 2382 rangeOfInteger is the same as or a subset of the integers described 2383 by the integers and rangeOf Integer of value returned by the Get- 2384 Printer-Supported-Values operation. 2386 Table 14 - Printer Job Template Attributes returned from Get-Printer- 2387 Supported-Values 2389 Printer Job Template Attributes Values Returned 2391 number-up-supported (1setOf (integer(1:MAX) 1setOf 2392 | rangeOfInteger(1:MAX))) (integer(1:MAX) | 2393 rangeOfInteger(1:MA 2394 X)) 2396 For the following attributes, the value allowed by the Set-Printer- 2397 Attributes operation MUST be one or more values, where each such 2398 value matches a value returned by the Get-Printer-Supported-Values 2399 operation. A keyword, enum, boolean, charset, naturalLanguage, 2400 uriScheme, mimeMediaType or resolution value matches if it is equal. 2401 For Job Template attributes with the attribute syntax 'type3 keyword 2402 | name', any 'name' attribute syntax value matches the 'admin-define' 2403 out-of-band value, if the implementation allows the administrator to 2404 set any name values for the attribute. 2406 Table 15 - Printer Job Template Attributes returned from Get-Printer- 2407 Supported-Values 2409 Printer Job Template Attributes Values Returned 2411 job-hold-until-supported (1setOf(type3 1setOf (type3 2412 keyword | name (MAX))) keyword | 'admin- 2413 define') 2415 job-sheets-supported (1setOf(type3 keyword 1setOf (type3 2416 | name(MAX))) keyword | 'admin- 2417 define') 2419 multiple-document-handling-supported 2420 (1setOf type2 keyword) keywordtype2 2422 finishings-supported (1setOf type2 enum) 1setOf type2 enum 2424 page-ranges-supported (boolean) 1setOf boolean ** 2426 sides-supported (1setOf type2 keyword) 1setOf type2 2427 keyword 2429 orientation-requested-supported (1setOf 1setOf type2 enum 2430 type2 enum) 2432 media-supported (1setOf (type3 keyword | 1setOf (type3 2433 name(MAX))) keyword | 'admin- 2434 define') 2436 printer-resolution-supported (1setOf 1setOf resolution 2437 resolution) 2439 print-quality-supported (1setOf type2 enum) 1setOf type2 enum 2441 ** Note: the Get-Printer-Supported-Values returns a '1setOf boolean' 2442 so that all possible values are indicated, while Get-Printer- 2443 Attributes returns only a single 'boolean' value. 2445 The following table has the same criteria as the last, but is for 2446 Printer Description attributes. 2448 Table 16 - Printer Description Attributes returned from Get-Printer- 2449 Supported-Values 2451 Printer Description Attributes Values allowed for 2452 Set 2454 printer-uri-supported (1setOf uri) READ-ONLY - MUST 2455 NOT be returned 2457 uri-authentication-supported (1setOf type2 READ-ONLY - MUST 2458 keyword) NOT be returned 2460 uri-security-supported (1setOf type2 READ-ONLY - MUST 2461 keyword) NOT be returned 2463 xri-printer-supported (1setOf collection) MUST NOT be 2464 returned; see next 2465 three attributes 2466 returned with Get- 2467 Printer-Attributes: 2469 xri-uri-scheme-supported (1setOf uriScheme) READ-ONLY - MUST 2470 NOT be returned 2472 xri-authentication-supported (1setOf type2 READ-ONLY - MUST 2473 keyword) NOT be returned 2475 xri-security-supported (1setOf type2 READ-ONLY - MUST 2476 keyword) NOT be returned 2478 ipp-versions-supported (1setOf type2 1setOf type2 2479 keyword) keyword 2481 operations-supported (1setOf type2 enum) 1setOf type2 2482 keyword 2484 multiple-document-jobs-supported (boolean) 1setOf boolean ** 2486 charset-supported (1setOf charset) 1setOf charset 2488 generated-natural-language-supported 1setOf 2489 (1setOf naturalLanguage) naturalLanguage 2491 document-format-supported (1setOf 1setOf 2492 mimeMediaType) mimeMediaType 2493 Printer Description Attributes Values allowed for 2494 Set 2496 color-supported (boolean) 1setOf boolean ** 2498 reference-uri-schemes-supported (1setOf 1setOf uriScheme 2499 uriScheme) 2501 pdl-override-supported (type2 keyword) 1setOf type2 2502 keyword ** 2504 compression-supported (1setOf type3 1setOf type3 2505 keyword) keyword 2507 printer-settable-attributes-supported 1setOf type2 2508 (1setOf type2 keyword) keyword 2510 job-settable-attributes-supported (1setOf 1setOf type2 2511 type2 keyword) keyword 2513 ** Note: the Get-Printer-Supported-Values returns a '1setOf X' so 2514 that all possible values are indicated, while Get-Printer-Attributes 2515 returns only a single 'X' value. 2517 18 Appendix C: Description of the Base IPP Documents 2519 The base set of IPP documents includes: 2521 Design Goals for an Internet Printing Protocol [RFC2567] 2522 Rationale for the Structure and Model and Protocol for the Internet 2523 Printing Protocol [RFC2568] 2524 Internet Printing Protocol/1.1: Model and Semantics [RFC2911] 2525 Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] 2526 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 2527 Mapping between LPD and IPP Protocols [RFC2569] 2529 The "Design Goals for an Internet Printing Protocol" document takes a 2530 broad look at distributed printing functionality, and it enumerates 2531 real-life scenarios that help to clarify the features that need to be 2532 included in a printing protocol for the Internet. It identifies 2533 requirements for three types of users: end users, operators, and 2534 administrators. It calls out a subset of end user requirements that 2535 are satisfied in IPP/1.0 [RFC2566, RFC2565]. A few OPTIONAL operator 2536 operations have been added to IPP/1.1 [RFC2911, RFC2910]. 2538 The "Rationale for the Structure and Model and Protocol for the 2539 Internet Printing Protocol" document describes IPP from a high level 2540 view, defines a roadmap for the various documents that form the suite 2541 of IPP specification documents, and gives background and rationale 2542 for the IETF IPP working group's major decisions. 2544 The "Internet Printing Protocol/1.1: Model and Semantics" document 2545 describes a simplified model with abstract objects, their attributes, 2546 and their operations. The model introduces a Printer and a Job. The 2547 Job supports multiple documents per Job. The model document also 2548 addresses how security, internationalization, and directory issues 2549 are addressed. 2550 The "Internet Printing Protocol/1.1: Encoding and Transport" document 2551 is a formal mapping of the abstract operations and attributes defined 2552 in the model document onto HTTP/1.1 [RFC2616]. It also defines the 2553 encoding rules for a new Internet MIME media type called 2554 "application/ipp". This document also defines the rules for 2555 transporting over HTTP a message body whose Content-Type is 2556 "application/ipp". This document defines the 'ipp' scheme for 2557 identifying IPP printers and jobs. 2559 The "Internet Printing Protocol/1.1: Implementer's Guide" document 2560 gives insight and advice to implementers of IPP clients and IPP 2561 objects. It is intended to help them understand IPP/1.1 and some of 2562 the considerations that may assist them in the design of their client 2563 and/or IPP object implementations. For example, a typical order of 2564 processing requests is given, including error checking. Motivation 2565 for some of the specification decisions is also included. 2567 The "Mapping between LPD and IPP Protocols" document gives some 2568 advice to implementers of gateways between IPP and LPD (Line Printer 2569 Daemon) implementations. 2571 19 Appendix D: Full Copyright Statement 2573 Copyright (C) The Internet Society (1998,1999,2000,2001). All Rights 2574 Reserved 2576 This document and translations of it may be copied and furnished to 2577 others, and derivative works that comment on or otherwise explain it 2578 or assist in its implementation may be prepared, copied, published 2579 and distributed, in whole or in part, without restriction of any 2580 kind, provided that the above copyright notice and this paragraph are 2581 included on all such copies and derivative works. However, this 2582 document itself may not be modified in any way, such as by removing 2583 the copyright notice or references to the Internet Society or other 2584 Internet organizations, except as needed for the purpose of 2585 developing Internet standards in which case the procedures for 2586 copyrights defined in the Internet Standards process must be 2587 followed, or as required to translate it into languages other than 2588 English. 2590 The limited permissions granted above are perpetual and will not be 2591 revoked by the Internet Society or its successors or assigns. 2593 This document and the information contained herein is provided on an 2594 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 2595 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 2596 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 2597 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 2598 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 2600 Acknowledgement 2602 Funding for the RFC Editor function is currently provided by the 2603 Internet Society.