idnits 2.17.1 draft-ietf-ipp-job-printer-set-ops-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** Missing expiration date. The document expiration date should appear on the first and last page. ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories -- however, there's a paragraph with a matching beginning. Boilerplate error? ** The document is more than 15 pages and seems to lack a Table of Contents. == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 39 longer pages, the longest (page 32) being 69 lines == It seems as if not all pages are separated by form feeds - found 0 form feeds but 40 pages Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an Authors' Addresses Section. ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** The abstract seems to contain references ([RFC2568], [RFC2616], [RFC2569], [IPP-PRO], [IPP-IIG], [RFC2565,RFC2566], [RFC2567]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 3 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 103: '... IPP/1.0. A few OPTIONAL operator ope...' RFC 2119 keyword, line 243: '...fines additional OPTIONAL end user, op...' RFC 2119 keyword, line 248: '...Values operation MUST be supported, if...' RFC 2119 keyword, line 260: '...d terms, such as MUST, MUST NOT, REQUI...' (142 more instances...) Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 1729 has weird spacing: '...(1setOf type2...' == Line 1904 has weird spacing: '...hose of the r...' -- 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 (March 1, 2000) is 8822 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 20, but not defined == Missing Reference: 'RFC2567' is mentioned on line 89, but not defined == Missing Reference: 'RFC2568' is mentioned on line 91, but not defined == Missing Reference: 'IPP-PRO' is mentioned on line 93, but not defined == Missing Reference: 'IPP-IIG' is mentioned on line 94, but not defined == Missing Reference: 'RFC2569' is mentioned on line 95, but not defined == Missing Reference: 'RFC2616' is mentioned on line 114, but not defined ** Obsolete undefined reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) == Missing Reference: 'RFC2119' is mentioned on line 263, but not defined ** Obsolete normative reference: RFC 2565 (Obsoleted by RFC 2910) ** Obsolete normative reference: RFC 2566 (Obsoleted by RFC 2911) Summary: 12 errors (**), 0 flaws (~~), 14 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 INTERNET-DRAFT Carl Kugler 2 IBM Corporation 3 T. Hastings 4 Xerox Corporation 5 R. Herriot 6 Xerox Corporation 7 H. Lewis 8 IBM Corporation 9 March 1, 2000 11 Internet Printing Protocol (IPP): Job and Printer Set Operations 13 Status of this Memo 15 This document is an Internet-Draft and is in full conformance with all 16 provisions of Section 10 of [RFC2026]. Internet-Drafts are working 17 documents of the Internet Engineering Task Force (IETF), its areas, and 18 its working groups. Note that other groups may also distribute working 19 documents as Internet-Drafts. 21 Internet-Drafts are draft documents valid for a maximum of six months 22 and may be updated, replaced, or obsoleted by other documents at any 23 time. It is inappropriate to use Internet-Drafts as reference material 24 or to cite them other than as "work in progress". 26 The list of current Internet-Drafts can be accessed at 27 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], IPP/1.1 36 [ipp-mod, ipp-pro], and future versions. The first is the Set-Printer- 37 Attributes operation that operators/administrators may perform on a 38 Printer object to change Printer attribute values. The second is the 39 Set-Job-Attributes operation that end-users may perform on their jobs 40 and operators/administrators may perform on any job, depending on 41 circumstances. The operation changes the Job attribute values. The third 42 is the Get-Printer-Supported-Values operation that 43 operators/administrators may perform on a Printer object in order to 44 determine acceptable values for setting "xxx-supported" attributes using 45 the Set-Printer-Attributes operation. 47 A Printer implementation can make the value of some attributes dependent 48 on the document-format, e.g. "resolution-supported". 50 Two operation attributes: "printer-message-from-operator" (text) and 51 "job-message-from-operator" (text) are defined to set the corresponding 52 IPP/1.1 Printer and Job Description attributes with the same names. A 53 new out-of-band value 'any-value' is added which may be used with any 55 Expires: September 1, 2000 56 attribute syntax if an attribute definition allows. The 'any-value' 57 value used with the 'name' attribute syntax can be (one of) the values 58 of "xxx-supported" attributes whose attribute syntaxes include both 59 'keyword' and 'name'. The 'any-value' value with the 'name' attribute 60 syntax matches any name supplied by the client during validation. 62 New Printer Description attributes are defined: 63 printer-settable-attributes-supported (1setOf type2 keyword) 64 job-settable-attributes-supported (1setOf type2 keyword) 65 document-format-varying-attributes (1setOf type2 keyword) 66 printer-message-time (integer(MIN:MAX)) 67 printer-message-date-time (dateTime) 69 A new status code is defined: 'client-error-attributes-not-settable'. 71 A 'delete-attribute' out-of-band attribute value is defined for use by 72 the client in the Set-Job-Attributes request to indicate explicitly that 73 the Printer is to remove the specified attribute from the Job object. 75 Finally, the 'not-settable' out-of-band attribute value is defined for 76 returning in the Set-Printer-Attributes and Set-Job-Attributes operation 77 responses. 79 The scope of IPP is characterized in RFC2526 "Design Goals for an 80 Internet Printing Protocol". It is not the intent of this document to 81 revise or clarify this scope or conjecture as to the degree of industry 82 adoption or trends related to IPP within printing systems. It is the 83 intent of this document to extend the original set of operations - in a 84 similar fashion to the Set1 extensions which referred to IPP/1.0 and 85 were later incorporated into IPP/1.1. 87 Expires: September 1, 2000 88 The full set of IPP documents includes: 89 Design Goals for an Internet Printing Protocol [RFC2567] 90 Rationale for the Structure and Model and Protocol for the Internet 91 Printing Protocol [RFC2568] 92 Internet Printing Protocol/1.1: Model and Semantics (this document) 93 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 94 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 95 Mapping between LPD and IPP Protocols [RFC2569] 97 The "Design Goals for an Internet Printing Protocol" document takes a 98 broad look at distributed printing functionality, and it enumerates 99 real-life scenarios that help to clarify the features that need to be 100 included in a printing protocol for the Internet. It identifies 101 requirements for three types of users: end users, operators, and 102 administrators. It calls out a subset of end user requirements that are 103 satisfied in IPP/1.0. A few OPTIONAL operator operations have been 104 added to IPP/1.1. 106 The "Rationale for the Structure and Model and Protocol for the Internet 107 Printing Protocol" document describes IPP from a high level view, 108 defines a roadmap for the various documents that form the suite of IPP 109 specification documents, and gives background and rationale for the IETF 110 working group's major decisions. 112 The "Internet Printing Protocol/1.1: Encoding and Transport" document is 113 a formal mapping of the abstract operations and attributes defined in 114 the model document onto HTTP/1.1 [RFC2616]. It defines the encoding 115 rules for a new Internet MIME media type called "application/ipp". This 116 document also defines the rules for transporting over HTTP a message 117 body whose Content-Type is "application/ipp". This document defines a 118 new scheme named 'ipp' for identifying IPP printers and jobs. 120 The "Internet Printing Protocol/1.1: Implementer's Guide" document gives 121 insight and advice to implementers of IPP clients and IPP objects. It 122 is intended to help them understand IPP/1.1 and some of the 123 considerations that may assist them in the design of their client and/or 124 IPP object implementations. For example, a typical order of processing 125 requests is given, including error checking. Motivation for some of the 126 specification decisions is also included. 128 The "Mapping between LPD and IPP Protocols" document gives some advice 129 to implementers of gateways between IPP and LPD (Line Printer Daemon) 130 implementations. 132 Expires: September 1, 2000 133 Table of Contents 135 1 Introduction.....................................................6 137 2 Terminology......................................................6 138 2.1 Conformance Terminology.......................................6 139 2.2 Other terminology.............................................6 141 3 Requirements and Use Cases.......................................7 143 4 Definition of the Set operations.................................7 144 4.1 Set-Printer-Attributes Operation..............................8 145 4.1.1 Settable and READ-ONLY Printer Description attributes.....9 146 4.1.2 Set-Printer-Attributes Request...........................10 147 4.1.3 Set-Printer-Attributes Response..........................12 148 4.2 Set-Job-Attributes Operation.................................13 149 4.2.1 Settable and READ-ONLY Job Description attributes........15 150 4.2.2 Set-Job-Attributes Request...............................15 151 4.2.3 Set-Job-Attributes Response..............................16 152 4.3 Get-Printer-Supported-Values Operation.......................17 154 5 New Operation attributes........................................18 155 5.1 "printer-message-from-operator" (text(127))..................19 156 5.2 "job-message-from-operator" (text(127))......................20 158 6 New Printer Description Attributes..............................21 159 6.1 printer-settable-attributes-supported (1setOf type2 keyword).21 160 6.2 job-settable-attributes-supported (1setOf type2 keyword).....21 161 6.3 document-format-varying-attributes (1setOf type2 keyword)....21 162 6.4 printer-message-time (integer(MIN:MAX))......................22 163 6.5 printer-message-date-time (dateTime).........................22 165 7 Additional status codes.........................................22 166 7.1 'client-error-attributes-not-settable' (0x0413)..............23 168 8 Additional out-of-band values...................................23 169 8.1 'not-settable' out-of-band value.............................23 170 8.1.1 Encoding of the 'not-settable' out-of-band attribute value23 171 8.2 'delete-attribute' out-of-band value.........................23 172 8.2.1 Encoding of the 'delete-attribute' out-of-band value.....24 173 8.3 'any-value' out-of-band attribute value......................24 174 8.3.1 Encoding of the 'any-value' out-of-band attribute value..24 176 9 Conformance Requirements........................................24 178 10 IANA Considerations.............................................26 180 11 Internationalization Considerations.............................26 182 12 Security Considerations.........................................26 184 13 Author's Addresses..............................................27 186 Expires: September 1, 2000 187 14 References......................................................27 189 15 Change History..................................................28 190 15.1 Changes to the January 30, 2000 version to make the March 1, 2000 191 version 28 192 15.2 Changes to the January 20, 2000 version to make the January 30, 193 2000 version30 194 15.3 Changes to the January 4, 2000 version to make the January 20, 195 2000 version30 196 15.4 Changes to the December 8, 1999 version to make the January 4, 197 2000 version31 199 16 Appendix A: Allowed Values for Set-Printer-Attributes...........32 201 17 Appendix B: Attributes returned from Get-Printer-Supported-Values36 203 18 Appendix C: Full Copyright Statement............................39 205 Table of Tables 207 Table 1 - Operation-Id assignments....................................8 208 Table 2 - Job State Transition Table for the Set-Job-Attributes 209 operation........................................................14 210 Table 3 - Values allowed for Job Template Attributes in the Set-Job- 211 Attributes Operation.............................................33 212 Table 4 - Values allowed for Job Description Attributes in the Set-Job- 213 Attributes Operation.............................................33 214 Table 5 - Values allowed for Printer Job Template Attributes in the Set- 215 Printer-Attributes Operation.....................................34 216 Table 6 - Values allowed for Printer Description Attributes in the Set- 217 Printer-Attributes Operation.....................................35 218 Table 7 - Printer Job Template Attributes returned from Get-Printer- 219 Supported-Values.................................................36 220 Table 8 - Printer Job Template Attributes returned from Get-Printer- 221 Supported-Values.................................................37 222 Table 9 - Printer Description Attributes returned from Get-Printer- 223 Supported-Values.................................................37 224 Table 10 - Printer Job Template Attributes returned from Get-Printer- 225 Supported-Values.................................................37 226 Table 11 - Printer Job Template Attributes returned from Get-Printer- 227 Supported-Values.................................................37 228 Table 12 - Printer Description Attributes returned from Get-Printer- 229 Supported-Values.................................................38 230 Table 13 - Printer Description Attributes returned from Get-Printer- 231 Supported-Values.................................................39 232 Table 14 - Printer Description Attributes returned from Get-Printer- 233 Supported-Values.................................................39 235 Expires: September 1, 2000 237 1 Introduction 239 The Internet Printing Protocol (IPP) is an application level protocol 240 that can be used for distributed printing using Internet tools and 241 technologies. IPP version 1.1 [ipp-mod, ipp-pro] focuses on end user 242 functionality with a few administrative operations included. This 243 document defines additional OPTIONAL end user, operator, and 244 administrator Set-Job-Attributes and Set-Printer-Attributes operations 245 used to modify IPP Job objects and Printer objects. It also defines a 246 third Get-Printer-Supported-Values operation that returns values that 247 the IPP Printer will accept for setting its "xxx-supported" attributes. 248 The Get-Printer-Supported-Values operation MUST be supported, if the 249 Set-Printer-Attributes operation is supported. 251 This document is an extension to IPP/1.0 [RFC2565, RFC2566] and IPP/1.1 252 [ipp-mod, ipp-pro], and future versions. 254 2 Terminology 256 This section defines terminology used throughout this document. 258 2.1 Conformance Terminology 260 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, 261 MAY, NEED NOT, and OPTIONAL, have special meaning relating to 262 conformance. These terms are defined in [ipp-mod] section 12.1 on 263 conformance terminology, most of which is taken from RFC 2119 [RFC2119]. 265 The following specialization of these terms apply to this document: 267 REQUIRED: if an implementation supports the extensions described in 268 this document, it MUST support a REQUIRED feature. 269 OPTIONAL: if an implementation supports the extensions described in 270 this document, it MAY support an OPTIONAL feature. 272 2.2 Other terminology 274 This document uses terms such as Job object (or Job), IPP Printer object 275 (or Printer), "operation", "request", response", "attributes", 276 "keywords", and "support". These terms have special meaning and are 277 defined in the model terminology [ipp-mod] section 12.2. The following 278 additional terms are introduced in this document: 280 READ-ONLY: used in an attribute definition to indicate that the 281 attribute MUST NOT be settable using an IPP protocol Set operation. 282 In other words, the attribute is not settable by definition. 283 not-settable: an implementation does not support setting an 284 attribute (whether or not the attribute's definition is READ-ONLY). 286 Expires: September 1, 2000 288 3 Requirements and Use Cases 290 The following requirements and usage are intended to be met by the 291 specification in this document. 293 1.The end-user and the operator need a way to modify a Job that is in 294 the 'pending' or 'pending-held' state. 296 Usage: The end-user discovers that he/she forgot to include a print 297 instruction, such as "finishings" = 'staple' after submitting a job. 298 Rather than canceling the job and resubmitting it to the same IPP 299 Printer, the end-user is able to modify the job on the IPP Printer. 301 The operator needs to modify a job because it is requesting a 302 particular kind of media for which there is no more, but the policy 303 is to print the job on a comparable medium. 305 2.The system administrator needs a way to re-configure or change the 306 policy of the IPP Printer remotely. 308 Usage: The system administrator is adding additional media to the 309 supported media list. 311 The system administrator is reducing the capability of the IPP 312 Printer by removing one of the operations from the supported 313 operations list, such as Cancel-Job, because the policy is to run the 314 IPP Printer like a public facsimile machine. 316 The system administrator is remotely configuring the IPP Printer 317 after installing it, and so is replacing the Printer Description 318 attributes that have the out-of-band 'no-value' value (see [ipp-mod] 319 section 4.1) with the proper values. 321 The operator is changing the media loaded in the input tray and so is 322 replacing the "media-ready" Job Template Printer attribute value with 323 the proper values 325 4 Definition of the Set operations 327 The Set-Printer-Attributes operation (as are all Printer operations) are 328 directed at Printer objects. A client MUST always supply the "printer- 329 uri" operation attribute in order to identify the correct target of the 330 operation. These descriptions assume all of the common semantics of 331 IPP/1.1 Model and Semantics document [ipp-mod] section 3.1. 333 The Set-Job-Attributes operation (as are all Job operations) are 334 directed at Job objects. A client MUST always supply some means of 335 identifying the Job object in order to identify the correct target of 336 the operation. That job identification MAY either be a single Job URI 337 or a combination of a Printer URI with a Job ID as defined in [ipp-mod]. 338 The IPP object implementation MUST support both forms of identification 340 Expires: September 1, 2000 341 for every job. If possible, a client SHOULD use the Printer URI with a 342 Job ID rather than a Job URI, since the 32-bit "job-id" is more readily 343 translated to and from other print protocols that MAY be serving as 344 gateways into or out of the IPP implementation. 346 The Set Printer operations are summarized in Table 1: 348 Table 1 - Operation-Id assignments 350 Operation Name Operation Brief description 351 -Id 352 Set-Printer- 0x0013 Sets attribute values of the target 353 Attributes Printer object 354 Set-Job-Attributes 0x0014 Sets attribute values of the target 355 Job object 356 Get-Printer- 0x0015 Gets values that are valid for 357 Supported-Values setting "xxx-supported" attributes 358 using the Set-Printer-Attributes 359 operation 361 4.1 Set-Printer-Attributes Operation 363 This OPTIONAL operation allows a client to set the values of the 364 attributes of a Printer object. In the request, the client supplies 365 the set of Printer attribute name keywords and values that are to be 366 set. In the response, the Printer object returns success or rejects the 367 entire request with indications of which attribute or attributes could 368 not be set. 370 The Printer object validates the client-supplied attributes in the Set- 371 Printer-Attributes request. For an attribute to validate it MUST meet 372 all of the following rules: 374 1. The number of attributes supplied by the client MUST NOT exceed the 375 maximum number that the Printer supports in a Set-Printer- 376 Attributes request. A Printer MUST accept at least one attribute, 377 but SHOULD accept a reasonable number in a single Set-Printer- 378 Attributes request. If a Printer supports setting the three 379 "parallel" Printer Description attributes ("printer-uri-supported", 380 "uri-authentication-supported", and "uri-security-supported" (see 381 [ipp-mod] sections 4.4.1 through 4.4.3), then the Printer MUST 382 accept at least three attributes in a Set-Printer-Attributes 383 request. 385 Note: There is no way for the client to determine the maximum 386 number of attributes that the Printer supports in a Set-Printer- 387 Attributes request, except to try a reasonable number. 389 2. The Printer MUST support the attribute. 391 3. The attribute MUST NOT be READ-ONLY, i.e., the definition of the 392 attribute MUST NOT indicate that the attribute is READ-ONLY (see 393 Appendix A for an indication of which IPP/1.1 attributes are READ- 394 ONLY). 396 Expires: September 1, 2000 398 4. The attribute MUST be settable in this implementation. 400 5. The Printer MUST support the value according to the rules defined 401 in Appendix A. 403 6. The attribute's values MUST NOT conflict with other Printer 404 attribute, including ones being set in this same operation. 406 If any of the supplied attributes does not validate, the Printer object 407 MUST reject the entire operation; the Printer object MUST NOT partially 408 set some of the supplied attributes. In other words, after the 409 operation, all the supplied attributes MUST be set or none of them MUST 410 be set, thus making the Set-Printer-Attributes an atomic operation. 412 The Printer MUST accept this operation when its READ-ONLY "printer- 413 state" attribute (see ipp-mod] section 4.4.11) is 'idle' or 'stopped', 414 and SHOULD accept it when the value is 'processing'. The Printer MUST 415 accept this operation for any of the values of the Printer object's 416 READ-ONLY "printer-state-reasons" and "printer-is-accepting-jobs" 417 attributes, unless explicitly defined otherwise in the definition of 418 these attributes' values. 420 This operation MUST NOT change the value of attributes not specified in 421 the operation unless the definition of the attribute explicitly 422 specifies such side-effects. For example, this document explicitly 423 specifies that when this operation sets "printer-message-from-operator", 424 the Printer also MUST set the READ-ONLY "printer-message-time" and READ- 425 ONLY "printer-message-date-time" attributes to the time of the operation 426 as a side effect . In particular, if this operation changes an "xxx- 427 default" attribute, the new value MUST be in the "xxx-supported" 428 attribute or the request MUST contain a new value for "xxx-supported" 429 which contains the new value for the "xxx-default". Otherwise, the 430 Printer MUST reject the operation. In general, Printer attribute 431 definitions that are settable will not define side-effects on other 432 attributes that are settable, only side effects on READ-ONLY attributes, 433 if any. 435 4.1.1Settable and READ-ONLY Printer Description attributes 437 If the Printer supports the Set-Printer-Attributes operation, then it 438 SHOULD support setting of: 440 all Job Template Default ("xxx-default") attributes 441 all Job Template Supported ("xxx-supported") attributes 442 all Job Template Ready ("xxx-ready") attributes 444 that the implementation supports (see [ipp-mod] section 4.2 and 445 extensions). 447 Some Printer Description attributes (see [ipp-mod] section 4.4) MUST NOT 448 be settable, i.e., they are defined to be READ-ONLY. An attribute 449 marked as "READ-ONLY" in the Printer Description attribute table in 450 Appendix A is such an attribute. The Printer attributes that are not 452 Expires: September 1, 2000 453 marked as "READ-ONLY" MAY be settable using the Set-Printer-Attributes 454 operation, depending on implementation. 456 Note: From now on, all extensions that define new object attributes 457 will indicate whether or not the attributes are READ-ONLY, by including 458 the "READ-ONLY" adjective in their descriptions and/or explicitly 459 stating whether they MAY be settable. 461 If "xxx-supported" Printer Description attribute are settable, then they 462 MUST affect the behavior of the implementation. If they are READ-ONLY 463 then they reflect the implementation and cannot be changed explicitly 464 using the Set-Printer-Attributes operation. Consider the following 465 example: 467 For example, if the "operations-supported" Printer Description 468 attribute (see [ipp-mod] section 4.4.15) is settable in a 469 particular implementation, then changing its value with a Set- 470 Printer-Attributes operation MUST affect the operations that the 471 implementation accepts or rejects. Such an implementation will 472 need to be able to reject values for operations that it contains no 473 code support for (see section 5). If the "operations-supported" 474 Printer Description attribute is not settable in a particular 475 implementation, then that implementation MUST reject an attempt to 476 set it with a Set-Printer-Attributes operation, return the 'client- 477 error-attributes-not-settable' status code (see section 7.1), and 478 return the "operations-supported" attribute with the out-of-band 479 'not-settable' value in the Unsupported Attributes Group. 481 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 482 performing this operation must be an operator or administrator of the 483 Printer object (see [ipp-mod] Sections 1 and 8.5). Most Printer 484 attributes will require administrator privileges to set, such as "xxx- 485 supported", while some will require operator privileges only, such as 486 "media-ready" and "printer-message-from-operator". Which attributes 487 require which privileges depends on implementation and MAY depend on 488 site policy. 490 4.1.2Set-Printer-Attributes Request 492 The following sets of attributes are part of the Set-Printer-Attributes 493 Request: 495 Group 1: Operation Attributes 497 Natural Language and Character Set: 498 The "attributes-charset" and "attributes-natural-language" 499 attributes as described in [ipp-mod] section 3.1.4.1. 501 Target: 502 The "printer-uri" (uri) operation attribute which is the target for 503 this operation as described in [ipp-mod] section 3.1.5. 505 Expires: September 1, 2000 507 Requesting User Name: 508 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 509 by the client as described in [ipp-mod] section 8.3. 511 "document-format" (mimeMediaType): 512 The client OPTIONALLY supplies this attribute. The Printer object 513 MUST support this attribute. This attribute is useful for a client 514 to select the document-format to which the attribute modification 515 should be applied. A Printer implementation MAY allow some 516 attributes to have different values for each document format that 517 it supports. See [ipp-mod] section 3.2.5.1 "Get-Printer-Attributes 518 Request". 520 If the client includes this attribute, the Printer MUST change the 521 supplied attributes for the document format specified by this 522 attribute. If a supplied attribute is a member of the "document- 523 format-varying-attributes" (i.e., the attribute varies by document 524 format, see section 6.3), the Printer MUST change the supplied 525 attribute for the document format specified by this attribute, but 526 not for other document formats. If a supplied attribute isn't a 527 member of the "document-format-varying-attributes" (i.e. it doesn't 528 vary by document format), the Printer MUST change the supplied 529 attribute for all document formats. 531 If the client omits this attribute, the Printer MUST change the 532 supplied attributes for all document formats whether or not they 533 vary by document-format. 535 If the client supplies a value for the "document-format" Operation 536 attribute that is either 'application/octet-stream' or not 537 supported by the Printer, i.e., is not among the values of the 538 Printer object's "document-format-supported" attribute, the Printer 539 object MUST reject the operation and return the 'client-error- 540 document-format-not-supported' status code. Note: the document- 541 format 'application/octet-stream' is the union of several document- 542 formats (see [ipp-mod] section 3.2.5.1, Get-Printer-Attributes) and 543 is not a true document-format. 545 Group 2: Printer Attributes 547 The client MUST supply a set of Printer attributes with one or more 548 values (including explicitly allowed out-of-band values) as defined 549 in [ipp-mod] section 4.2 Job Template Attributes ("xxx-default", 550 "xxx-supported", and "xxx-ready" attributes), section 4.4 Printer 551 Description Attributes, and any attribute extensions supported by 552 the Printer. The value(s) of each Printer attribute supplied in 553 Group 2 replaces the value(s) of the corresponding Printer 554 attribute on the target Printer object. For attributes that can 555 have multiple values (1setOf), all values supplied by the client 556 replace all values of the corresponding Printer object attribute. 557 If a Printer object attribute had not been configured yet and so 558 had the 'no-value' out-of-band value (see [ipp-mod] section 4.1), 559 the supplied value(s) replace the 'no-value' value. 561 Expires: September 1, 2000 563 4.1.3Set-Printer-Attributes Response 565 The Printer object returns the following sets of attributes as part of 566 the Get-Printer-Attributes Response: 568 Group 1: Operation Attributes 570 Status Message: 571 In addition to the REQUIRED status code returned in every response, 572 the response OPTIONALLY includes a "status-message" (text(255)) 573 and/or a "detailed-status-message" (text(MAX)) operation attribute 574 as described in [ipp-mod] sections 13 and 3.1.6. 576 Natural Language and Character Set: 577 The "attributes-charset" and "attributes-natural-language" 578 attributes as described in [ipp-mod] section 3.1.4.2. 580 Group 2: Unsupported Attributes 582 See [ipp-mod] section 3.1.7 for details on returning Unsupported 583 Attributes. 585 If some of the attributes in the operation fail to validate, the 586 Printer MUST reject the operation, MUST NOT change any Printer 587 attributes, and MUST return the indicated status code below. In 588 this group, the Printer MUST also return all attributes that fail 589 to validate. The following are the reasons that an attribute fails 590 to validate and the value returned for the attribute, along with 591 the indicated status code and order of detection: 593 1. The number of attributes supplied by the client exceeds the 594 maximum number that the Printer supports in a Set-Printer- 595 Attributes request: return the 'client-error-request-entity- 596 too-large' (see [ipp-mod] section 13.1.4.9). 598 2. The Printer doesn't support the attribute: return the 599 attribute with the "out-of-band" value 'unsupported' (see 600 [ipp-mod] section 3.1.7 and [ipp-pro]) and the 'client-error- 601 attributes-or-values-not-supported (see [ipp-mod] section 602 13.1.4.12). 604 3. The attribute is either READ-ONLY (in its definition) or is 605 not-settable in this implementation: return the attribute 606 with the "out-of-band" value 'not-settable' (see section 8.1) 607 and the 'client-error-attributes-not-settable' status code 608 (see section 7.1). 610 4. The Printer doesn't support the value: if the attribute in 611 the operation has a single value return it. If the attribute 612 in the operation is multi-valued, return only those values in 613 a 1setOf that are not supported. Return the 'client-error- 614 attributes-or-values-not-supported' status code (see [ipp-mod] 615 section 13.1.4.12). 617 Expires: September 1, 2000 619 5. The values of some of the supplied attributes conflict with 620 one another and/or other Printer attribute values not being 621 set: if the conflicting attribute in the operation has a 622 single value return the attribute and the value. If the 623 attribute in the operation is multi-valued, return only the 624 attribute and those values in a 1setOf that are conflicting 625 with other attributes. Return the 'client-error-conflicting- 626 attributes' status code (see [ipp-mod] section 13.1.4.15). 628 4.2 Set-Job-Attributes Operation 630 This OPTIONAL operation allows a client to set the values of the 631 attributes of a Job object. In the request, the client supplies the set 632 of Job attribute name keywords and values that are to be set. In the 633 response, the IPP object returns success or rejects the entire request 634 with indications of which attribute or attributes could not be set. 636 This operation is almost identical to the Set-Printer-Attributes 637 operation (see section 4.1). The only differences are that the Set-Job- 638 Attributes operation is directed at a Job object rather than a Printer 639 object, there is no "document-format" operation attribute used when 640 setting a Job object, the operation can add an attribute to the (Job) 641 object, the 'delete-attributes' out-of-band value is permitted to remove 642 an attribute, and the validation is the same as the Job Creation 643 operations (Print-Job, Print-URI, and Create-Job), i.e., depends on the 644 "xxx-supported" Printer Description attributes (see [ipp-mod] section 645 3.1). 647 If a client supplies a job attribute in a Set-Job-Attributes request 648 that the Printer supports, and the job was originally submitted without 649 supplying that attribute, the Printer adds the attribute to the Job 650 object. 652 If the client supplies a job attribute with the "out-of-band" value 653 'delete-attribute' (see section 8.2), then the Printer MUST remove the 654 attribute and all of its values from the Job object, if present. The 655 semantic effect of the client supplying the 'delete-attribute' value in 656 a Set-Job-Attributes operation MUST be the same as if the attribute had 657 not been supplied with the Job object in the Job Creation operation, 658 i.e., the Printer applies its default attribute or behavior with lower 659 precedence that the PDL (see the beginning of [ipp-mod] section 4.2 and 660 [ipp-mod] 3.2.1.1). Any subsequent query of the Job object using Get- 661 Job-Attributes or Get-Jobs MUST NOT return any attribute that has been 662 deleted using the 'delete-attribute' out-of-band value. However, a 663 client can re-establish such a deleted Job attribute with any supported 664 value(s) using a subsequent Set-Job-Attributes operation. 666 If the client supplies an attribute in a Set-Job-Attributes request with 667 the 'delete-attribute' value and that attribute is not present on the 668 Job object, the Printer ignores that supplied attribute in the request, 669 does not return the attribute in the Unsupported Attributes group, and 670 returns the 'successful-ok' status code, if there are no other problems 671 with the request. 673 Expires: September 1, 2000 674 The validation of the Set-Job-Attributes request is performed by the 675 Printer as if the job had been submitted originally with the new 676 attribute values (and the deleted attributes removed) and with "ipp- 677 attribute-fidelity" set to 'true', i.e., all modified attributes Job 678 attributes and values MUST be supported in combination with the Job 679 attributes not modified. If such a Job Creation operation would have 680 been accepted, then the Set-Job-Attributes MUST be accepted. If such a 681 Job Creation operation would have been rejected, then the Set-Job- 682 Attributes MUST be rejected and the Job MUST be unchanged. In addition, 683 if any of the supplied attributes are not supported, are not settable, 684 or the values are not supported, the Printer object MUST reject the 685 entire operation; the Printer object MUST NOT partially set some of the 686 supplied attributes. In other words, after the operation, all the 687 supplied attributes MUST be set or none of them MUST be set, thus making 688 the Set-Job-Attributes an atomic operation. 690 The IPP object MUST accept or reject this operations when the Job's 691 READ-ONLY "job-state" attribute has the values shown in Table 2. The 692 job's current state MUST affect whether the IPP object accepts or 693 rejects the request. For example, in the case where the operation 694 creates a request for unavailable resources, the Job transitions to a 695 new state. Table 2 shows the allowed behaviors in each job state and 696 the transitions. 698 Table 2 - Job State Transition Table for the Set-Job-Attributes 699 operation 701 Current "job- New "job- IPP object's response status 702 state" state" code and action: 704 'pending' 'pending' 'successful-ok' 705 'pending' 'pending- 'successful-ok' - needed 706 held' resources are not ready 707 'pending-held' 'pending- 'successful-ok' 708 held' 709 'pending-held' 'pending' 'successful-ok' - needed 710 resources are ready 711 'processing' 'processing' 'successful-ok' or 'client- 712 error-not-possible' depending on 713 implementation, including the 714 attributes being set, whether 715 the job has started marking 716 media, etc. 717 'processing- 'processing- 'successful-ok' or 'client- 718 stopped' stopped' error-not-possible' depending on 719 implementation, including the 720 attributes being set, whether 721 the job has started marking 722 media, etc. 723 'completed' 'completed' 'client-error-not-possible' 724 'canceled' 'canceled' 'client-error-not-possible' 725 'aborted' 'aborted' 'client-error-not-possible' 727 Expires: September 1, 2000 729 This operation MUST NOT change the value of attributes not specified in 730 the operation unless the definition of the attribute explicitly 731 specifies such side-effects. In general, Job attribute definitions that 732 are settable will not define side-effects on other attributes that are 733 settable, only side effects on READ-ONLY attributes, if any. 735 4.2.1Settable and READ-ONLY Job Description attributes 737 If the Printer supports the "job-message-from-operator" Job Description 738 attribute (see [ipp-mod] section 4.3.16) and the client explicitly 739 supplies a new value for the "job-message-from-operator" in the Set-Job- 740 Attributes request, then the Printer MUST set the "job-message-from- 741 operator" Job attribute to this new value. 743 If the Printer supports the Set-Job-Attributes operation, then it SHOULD 744 support setting of: 746 all Job Template job ("xxx") attributes 748 that the implementation supports (see [ipp-mod] section 4.2 and 749 extensions). 751 Some Job Description attributes (see [ipp-mod] section 4.3) MUST NOT be 752 settable, i.e., they are defined to be READ-ONLY. An attribute marked 753 as "READ-ONLY" in the Job Description attribute table in Appendix A is 754 such an attribute. The Job attributes not marked as "READ-ONLY" MAY be 755 settable using the Set-Job-Attributes operation, depending on 756 implementation. 758 Note: From now on, all extensions that define new object attributes 759 will indicate whether or not the attributes are READ-ONLY, by including 760 the "READ-ONLY" adjective in their descriptions and/or explicitly 761 stating whether they MAY be settable. 763 Access Rights: The authenticated user (see [ipp-mod] section 8.3) 764 performing this operation must either be the job owner (as determined in 765 the Job Creation operation) or an operator or administrator of the 766 Printer object (see [ipp-mod] Sections 1 and 8.5). 768 4.2.2Set-Job-Attributes Request 770 The following sets of attributes are part of the Set-Job-Attributes 771 Request: 773 Group 1: Operation Attributes 775 Natural Language and Character Set: 776 The "attributes-charset" and "attributes-natural-language" 777 attributes as described in [ipp-mod] section 3.1.4.1. 779 Target: 780 Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) 781 or (2) the "job-uri" (uri) operation attribute(s) which define the 782 target for this operation as described in [ipp-mod] section 3.1.5. 784 Expires: September 1, 2000 786 Requesting User Name: 787 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 788 by the client as described in [ipp-mod] section 8.3. 790 Group 2: Job Attributes 792 The client MUST supply a set of Job attributes with one or more 793 values (including explicitly allowed out-of-band values) as defined 794 in [ipp-mod] section 4.2 Job Template Attributes ("xxx" 795 attributes), section 4.3 Job Description Attributes, and any 796 attribute extensions supported by the Printer. The value(s) of 797 each Job attribute supplied in Group 2 replaces the value(s) of the 798 corresponding Job attribute on the target Job object. For 799 attributes that can have multiple values (1setOf), all values 800 supplied by the client replace all values of the corresponding Job 801 object attribute. 803 If the client supplies an "xxx" attribute with the 'delete- 804 attribute' out-of-band value (see section 8.2), the Printer MUST 805 remove the "xxx" attribute from the Job object, if present. 807 4.2.3Set-Job-Attributes Response 809 The IPP object returns the following sets of attributes as part of the 810 Set-Job-Attributes Response: 812 Group 1: Operation Attributes 814 Status Message: 815 In addition to the REQUIRED status code returned in every response, 816 the response OPTIONALLY includes a "status-message" (text(255)) 817 and/or a "detailed-status-message" (text(MAX)) operation attribute 818 as described in [ipp-mod] sections 13 and 3.1.6. 820 Natural Language and Character Set: 821 The "attributes-charset" and "attributes-natural-language" 822 attributes as described in [ipp-mod] section 3.1.4.2. 824 Group 2: Unsupported Attributes 826 See [ipp-mod] section 3.1.7 for details on returning Unsupported 827 Attributes. 829 If some of the attributes in the operation fail to validate, the 830 Printer MUST reject the operation, MUST NOT change any Job 831 attributes, and MUST return the indicated status code below. In 832 this group, the Printer MUST also return all attributes that fail 833 to validate. The following are the reasons that an attribute fails 834 to validate and the value returned for the attribute, along with 835 the indicated status code and order of detection: 837 1. The number of attributes supplied by the client exceeds the 838 maximum number that the Printer supports in a Set-Printer- 840 Expires: September 1, 2000 841 Attributes request: return the 'client-error-request-entity- 842 too-large' (see [ipp-mod] section 13.1.4.9). 844 2. The Printer doesn't support the attribute: return the 845 attribute with the "out-of-band" value 'unsupported' (see 846 [ipp-mod] section 3.1.7 and [ipp-pro]) and the 'client-error- 847 attributes-or-values-not-supported (see [ipp-mod] section 848 13.1.4.12). 850 3. The attribute is READ-ONLY (in its definition) or is not- 851 settable in this implementation: return the attribute with 852 the "out-of-band" value 'not-settable' (see section 8.1) and 853 the 'client-error-attributes-not-settable' status code (see 854 section 7.1). 856 4. The Printer doesn't support the value: if the attribute in 857 the operation has a single value return it. If the attribute 858 in the operation is multi-valued, return only those values in 859 a 1setOf that are not supported. Return the 'client-error- 860 attributes-or-values-not-supported' status code (see [ipp-mod] 861 section 13.1.4.12). 863 5. The values of some of the supplied attributes conflict with 864 one another and/or other Job attribute values not being set: 865 if the conflicting attribute in the operation has a single 866 value return the attribute and the value. If the attribute in 867 the operation is multi-valued, return only the attribute and 868 those values in a 1setOf that are conflicting with other 869 attributes. Return the 'client-error-conflicting-attributes' 870 status code (see [ipp-mod] section 13.1.4.15). 872 4.3 Get-Printer-Supported-Values Operation 874 This OPTIONAL operation allows a client to request the values that the 875 Printer allows in the Set-Printer-Attributes operation for "xxx- 876 supported" attributes. If the Printer supports the Set-Printer- 877 Attributes operation AND some of its "xxx-supported" Printer attributes 878 are settable, then the Printer MUST also support this operation. This 879 operation has identical request/response attributes to the Get-Printer- 880 Attributes operation in IPP/1.1 [ipp-mod]. The operation also behaves 881 identically to the Get-Printer-Attributes operation in IPP/1.1 [ipp-mod] 882 with the following exceptions: 884 1. The Get-Printer-Supported-Values operation supports only "xxx- 885 supported" attributes. 887 2. The Get-Printer-Attributes operation returns the current value of 888 specified attributes while the Get-Printer-Supported-Values 889 operation returns values that permit a client to determine what 890 values of "xxx-supported" attributes the Printer supports in the 891 Set-Printer-Attributes operation. 893 Expires: September 1, 2000 895 3. The Get-Printer-Supported-Values operation does not return any 896 'name' attribute syntax values for any "xxx-supported" attributes. 897 Instead, if the Set-Printer-Attributes operation will accept (any) 898 name value for an "xxx-supported" attribute, then the Get-Printer- 899 Supported-Values operation MUST return the 'any-value' out-of-band 900 attribute value with the 'name' attribute syntax (see section 8.3) 901 as one of the values of the "xxx-supported" attribute. In other 902 words, the 'any-value' out-of-band attribute value used in 903 combination with the 'name' attribute syntax indicates that the 904 Printer implementation supports clients setting 'name' attribute 905 syntax values for "xxx-supported" attributes that are defined with 906 the 'name' attribute syntax. 908 For example, if the Get-Printer-Supported-Values operation returns 909 several keywords as the value of the "media-supported" attribute, then 910 the Set-Printer-Attributes operation MUST accept any of these keywords 911 as values for the "media-supported" attribute. If the Get-Printer- 912 Supported-Values operation returns an 'any-value' out-of-band attribute 913 value with the 'name' attribute syntax as one of the values of the 914 "media-supported" attribute, then the Set-Printer-Attributes operation 915 MUST accept any value whose attribute syntax is 'name' as values for the 916 "media-supported" attribute. 918 The Get-Printer-Supported-Values MAY return the 'any-value' out-of-band 919 attribute value in combination with the 'name' attribute syntax for any 920 of the following IPP/1.1 attributes in which case the Printer MUST 921 accept any 'name' value in a Set-Printer-Attributes operation that is 922 setting that attribute: 924 media-supported 925 job-hold-until-supported 926 job-sheets-supported 928 If the 'any-value' out-of-band attribute value in combination with the 929 'name' attribute syntax is not one of the values of an "xxx-supported" 930 attribute returned in a Get-Printer-Supported-Values response, then the 931 Printer MUST NOT allow the Set-Printer-Attributes operation for that 932 attribute to contain a value whose attribute syntax is 'name'. 934 See Appendix B for a full list of values returned by this operation. 936 5 New Operation attributes 938 This section defines new operation attributes for use with the IPP/1.1 939 operations indicated. As new operations are defined they will also 940 indicate explicitly whether these operation attributes are defined for 941 use with them. 943 Expires: September 1, 2000 944 5.1 "printer-message-from-operator" (text(127)) 946 The Printer SHOULD support this Operation attribute in following 947 operations if it supports the corresponding "printer-message-from- 948 operator" Printer Description attribute. 950 Pause-Printer 951 Resume-Printer 952 Purge-Jobs 954 The client OPTIONALLY supplies this attribute in the above operations. 955 The value of this attribute is a message from the operator about the 956 Printer object on which the operator is performing the operation. If 957 this operation attribute is supported, the Printer copies the value to 958 its "printer-message-from-operator" Printer Description attribute (see 959 [ipp-mod] section 4.4.25) even if this Operation attribute is a zero- 960 length text value or consists solely of white space. 962 If the Printer supports this operation attribute, it MUST support both a 963 zero-length text value and the 'no-value' out-of-band value (see [ipp- 964 mod] section 4.1) to indicate that the operator has sent no message. In 965 this case, the Printer sets the value of the "printer-message-from- 966 operator" to the zero-length value or 'no-value' out-of-band value, 967 respectively. If the client queries the "printer-message-from-operator" 968 Printer attribute, the Printer returns the attribute with the zero- 969 length value or the 'no-value' value, respectively. 971 In addition, the Printer automatically copies: 973 1. the value of its "printer-up-time" attribute (see [ipp-mod] section 974 4.4.29) to its "printer-message-time" attribute, 976 2. the value of its printer-current-time" (dateTime) attribute (see 977 [ipp-mod] section 4.4.30) to its "printer-message-date-time" 978 attribute, if supported. 980 If the client omits this operation attribute, the Printer does not 981 change the value of its "printer-message-from-operator", "printer- 982 message-time" and "printer-message-date-time" Printer Description 983 attributes. 985 The "printer-message-from-operator" operation attribute MUST NOT be 986 supported as an operation attribute for the Set-Printer-Attributes 987 operation. If the operator wants to set the Printer's "printer-message- 988 from-operator" Printer Description attribute when issuing the Set- 989 Printer-Attributes operation, the client supplies the "printer-message- 990 from-operator" explicitly with its new value as one of the Printer 991 Description attributes in Group 2 in the request. The Printer also 992 updates its "printer-message-time" and "printer-message-date-time" 993 Printer Description attributes. If the client does not explicitly 994 supply the "printer-message-from-operator" with its new value in the 995 Set-Printer-Attributes request, the Printer leaves the value of the 997 Expires: September 1, 2000 998 Printer's "printer-message-from-operator" Printer Description attribute 999 unchanged. 1001 5.2 "job-message-from-operator" (text(127)) 1003 The Printer SHOULD support this Operation attribute in following 1004 operations if it supports the corresponding "job-message-from-operator" 1005 Job Description attribute. 1007 Cancel-Job 1008 Hold-Job 1009 Release-Job 1010 Restart-Job 1012 The client OPTIONALLY supplies this attribute in the above operations. 1013 The value of this attribute is a message from the operator about the Job 1014 object on which the operator has just performed an operation. If 1015 supported, the Printer copies the value to the Job's "job-message-from- 1016 operator" Job Description attribute (see [ipp-mod] section 4.3.16) (even 1017 if this Operation attribute is a zero-length text value or consists 1018 solely of white space). 1020 If the Printer supports this operation attribute, it MUST support both a 1021 zero-length text value and the 'no-value' out-of-band value (see [ipp- 1022 mod] section 4.1) to indicate that the operator has sent no message. In 1023 this case, the Printer sets the value of the "job-message-from-operator" 1024 to the zero-length value or 'no-value' out-of-band value, respectively. 1025 If the client queries the "job-message-from-operator" Job attribute, the 1026 IPP object returns the attribute with the zero-length value or the 'no- 1027 value' value, respectively. 1029 If the client omits this attribute, the Printer does not change the 1030 value of its "job-message-from-operator" Job Description attribute. 1032 Note: There are no corresponding 'job-message-time" and "job-message- 1033 date-time" Job Description attributes, since the usual lifetime of a job 1034 is limited. 1036 The "job-message-from-operator" operation attribute MUST NOT be 1037 supported as an operation attribute for the Set-Job-Attributes 1038 operation. If the operator wants to set the Job's "job-message-from- 1039 operator" Job Description attribute when issuing the Set-Job-Attributes 1040 operation, the client MUST supply the "job-message-from-operator" with 1041 its new value as one of the Job Description attributes in Group 2 in the 1042 request. Otherwise, the Printer leaves the value of the Job's "job- 1043 message-from-operator" Job Description attribute unchanged by not 1044 explicitly setting the attribute. If the client does not explicitly 1045 supply the "job-message-from-operator" with its new value in the Set- 1046 Job-Attributes request, the Printer leaves the value of the Job's "job- 1047 message-from-operator" Job Description attribute unchanged. 1049 Expires: September 1, 2000 1050 6 New Printer Description Attributes 1052 The following new Printer Description attributes are needed to support 1053 the new operations defined in this document. 1055 6.1 printer-settable-attributes-supported (1setOf type2 keyword) 1057 This REQUIRED READ-ONLY Printer attribute identifies the Printer object 1058 attributes that are settable in this implementation, i.e., that are 1059 settable using the Set-Printer-Attributes operations (see section 4.1). 1060 This attribute MUST be supported if the Set-Printer-Attributes 1061 operations is supported. The Printer MUST reject attempts to set any 1062 Printer attributes that are not one of the values of this attribute, 1063 returning the 'client-error-attributes-not-settable' status code (see 1064 section 7.1). The value of this attribute MAY depend on the value of 1065 the "document-format" operation attribute supplied in the Get-Printer- 1066 Attributes operation (see [ipp-mod] section 3.2.5.1). 1068 Standard keyword values are: 1070 'none': There are no settable Printer attributes. 1071 'xxx': Where 'xxx' is any of the keyword attribute names allowed by 1072 section 4.1.1 1074 6.2 job-settable-attributes-supported (1setOf type2 keyword) 1076 This REQUIRED READ-ONLY Printer attribute identifies the Job object 1077 attributes that are settable in this implementation, i.e., that are 1078 settable using the Set-Job-Attributes operation (see section 4.2). This 1079 attribute MUST be supported if the Set-Job-Attributes operations is 1080 supported. The Printer MUST reject attempts to set any Job attributes 1081 that are not one of the values of this attribute, returning the 'client- 1082 error-attributes-not-settable' status code (see section 7.1). 1084 Standard keyword values are: 1086 'none': There are no settable Job attributes. 1087 'xxx': Where 'xxx' is any of the keyword attribute names allowed by 1088 section 4.2.1. 1090 6.3 document-format-varying-attributes (1setOf type2 keyword) 1092 This OPTIONAL READ-ONLY Printer Description attribute contains a set of 1093 attribute name keywords. This attribute SHOULD be supported by a 1094 Printer object, if the Printer object has Printer attributes whose value 1095 vary depending on document format (see [ipp-mod] Get-Printer-Attributes 1096 operation). This attribute specifies which attribute values can vary by 1097 document-format. If an attribute's name "xxx" is a member of this 1098 attribute and the value of attribute "xxx" is changed with the Set- 1099 Printer-Attributes operation that included the "document-format" 1100 operation attribute, then the Printer MUST change the value for the 1101 specified document format and no other document formats (see section 1103 Expires: September 1, 2000 1104 4.1.2). If an attribute's name "xxx" is not a member of this attribute 1105 and the value of attribute "xxx" is changed with the Set-Printer- 1106 Attributes operation, then the attribute is changed for all document 1107 formats (whether or not the client supplied the "document-format" 1108 operation attribute). 1110 6.4 printer-message-time (integer(MIN:MAX)) 1112 This OPTIONAL READ-ONLY Printer Description attribute contains the time 1113 that the Printer's "printer-message-from-operator" was changed by the 1114 operator using any operation where the client supplied the "printer- 1115 message-from-operator" operation attribute (see section 5.1) or was 1116 explicitly set using the Set-Printer-Attributes operation (see section 1117 4.1). This attribute allows the users to know when the "printer- 1118 message-from-operator" attribute was last set. 1120 The Printer sets the value of this attribute by copying the value of the 1121 Printer's "printer-up-time" attribute (see [ipp-mod] section 4.3.14). 1122 If the Printer resets its "printer-up-time" attribute to 1 on power-up, 1123 then it MUST change the value of the "printer-message-time" to 0 or a 1124 negative number as specified in [ipp-mod] section 4.3.14. 1126 Note: This attribute helps users better understand the context for the 1127 "printer-message-from-operator" message. 1129 6.5 printer-message-date-time (dateTime) 1131 This READ-ONLY Printer Description attribute contains the date and time 1132 that the Printer's "printer-message-from-operator" was changed by the 1133 operator using any operation where the client supplied the "printer- 1134 message-from-operator" operation attribute (see section 5.1) or was 1135 explicitly set using the Set-Printer-Attributes operation (see section 1136 4.1). This attribute allows the users to know when the "printer- 1137 message-from-operator" attribute was last set. 1139 This attribute MUST be supported if the Printer supports both the 1140 "printer-message-time" and the "printer-current-time" (dateTime) 1141 attributes (see [ipp-mod] section 4.4.30). 1143 Note: This attribute helps users better understand the context for the 1144 "printer-message-from-operator" message. 1146 7 Additional status codes 1148 This section defines new status codes used by the operations defined in 1149 this document. 1151 Expires: September 1, 2000 1152 7.1 'client-error-attributes-not-settable' (0x0413) 1154 The Set-Printer-Attributes or Set-Job-Attributes operation failed 1155 because one or more of the specified attributes cannot be set either 1156 because the attribute is defined to be READ-ONLY or the attribute is not 1157 settable in this implementation (see sections 4.1.3 and 4.2.3), the 1158 Printer MUST return this error code and the attribute keyword name(s) 1159 and the 'not-settable' out-of-band value (see section 8.1) in the 1160 Unsupported Attributes Group(see [ipp-mod] section 3.1.7) for all of the 1161 attributes that could not be set. When the Printer returns this status, 1162 it MUST NOT change any of the attributes supplied in the operation. 1164 8 Additional out-of-band values 1166 This section defines additional out-of-band values. As with all out-of- 1167 band values, a client or a Printer MUST NOT use an out-of-band value 1168 unless the definition of the attribute in an operation request and/or 1169 response explicitly allows such usage. See the beginning of [ipp-mod] 1170 section 4.1. 1172 8.1 'not-settable' out-of-band value 1174 The 'not-settable' out-of-band value is used by the IPP Printer in the 1175 Unsupported Attributes group of a Set-Job-Attributes or Set-Printer- 1176 Attributes response to indicate that an attribute (supplied by the 1177 client) is READ-ONLY by definition or is not settable in this 1178 implementation (see sections 4.1.3 and 4.2.3). 1180 See sections 4.1.3 and 4.2.3 in this document for an example definition 1181 of the usage of the 'not-settable' out-of-band value in the Set-Printer- 1182 Attributes and Set-Job-Attributes responses. 1184 8.1.1Encoding of the 'not-settable' out-of-band attribute value 1186 The encoding of the 'not-settable' out-of-band value is 0x15 (see [ipp- 1187 pro]). 1189 8.2 'delete-attribute' out-of-band value 1191 The 'delete-attribute' out-of-band value is supplied by the client in 1192 the Set-Job-Attributes request to indicate that the Printer is to remove 1193 the supplied attribute and all of its values from the Job object, if 1194 present (see section 4.2). 1196 The 'delete-attribute' out-of-band value is defined for use with the 1197 Set-Job-Attributes only. Clients MUST NOT supply and IPP objects MUST 1198 NOT support the 'delete-attribute' out-of-band value in other 1199 operations, such as the Set-Printer-Attributes operation, where the 1200 absence of an attribute from an IPP object indicates that the attribute 1202 Expires: September 1, 2000 1203 is not supported. If a Printer receives this out-of-band value in other 1204 operations, the Printer MUST reject the entire request and return the 1205 'client-error-bad-request' status code and not process any of the other 1206 supplied attributes. 1208 See section 4.2 in this document for an example definition of the usage 1209 of the 'delete-attribute' out-of-band value in the Set-Job-Attributes 1210 request. 1212 8.2.1Encoding of the 'delete-attribute' out-of-band value 1214 The encoding of the 'delete-attribute' out-of-band value is 0x16 (see 1215 [ipp-pro]). 1217 8.3 'any-value' out-of-band attribute value 1219 The 'any-value' out-of-band attribute value MAY be used in combination 1220 with an attribute syntax to represent "any" attribute value of that 1221 attribute syntax. 1223 See section 4.3 in this document for an example definition of the usage 1224 of the 'any-value' out-of-band attribute value with the 'name' attribute 1225 syntax in any "xxx-supported" attribute returned in a Get-Printer- 1226 Supported-Values response. 1228 8.3.1Encoding of the 'any-value' out-of-band attribute value 1230 The encoding of the 'any-value' out-of-band attribute value is 0x17 (see 1231 [ipp-pro]). This out-of-band value REQUIRES a non-zero length and an 1232 attribute value which identifies an attribute syntax type. The 1233 attribute value is either (1) a one-octet attribute syntax tag as 1234 defined in [ipp-pro] (value length = 1) or (2) a 0x7F code followed by a 1235 4-octets of an extended attribute syntax type code as allocated in [ipp- 1236 pro] (value length = 5). 1238 ISSUE 01 - Ok to define the 'any-value' out-of-band value to have an 1239 actual value, consisting of the attribute syntax code? 1241 9 Conformance Requirements 1243 This section specifies the conformance requirements for clients and IPP 1244 objects. 1246 Both the Set-Job-Attributes and the Set-Printer-Attributes operations 1247 defined in the document are OPTIONAL for an IPP object to support. 1248 Either one MAY be supported without the other or both MAY be supported. 1249 However, if the Set-Printer-Attributes operation is supported, then the 1250 Get-Printer-Supported-Values operation MUST be supported if any "xxx- 1252 Expires: September 1, 2000 1253 supported" attributes are settable. Otherwise, the Get-Printer- 1254 Supported-Values operation is OPTIONAL for an IPP Printer to support. 1256 If the Set-Printer-Attributes operation is supported, then the Printer 1257 MUST support the following additional items: 1259 1.the Get-Printer-Supported-Values operation (see section 5), if 1260 any "xxx-supported" attributes are settable. 1262 2.the "printer-settable-attributes-supported" Printer Description 1263 attribute (see section 6.1) 1265 3.the 'not-settable' out-of-band value in responses (see section 1266 8.1) 1268 4.the 'client-error-not-settable' status code (see section 7.1) 1270 5.If "printer-message-from-operator" Printer Description attribute 1271 is supported (see [ipp-mod] section 4.4.25), then it MUST be 1272 settable. 1274 6.the Get-Printer-Supported-Values operation (see section 4.3), if 1275 any "xxx-supported" attributes are settable. 1277 7.If a client can set a value with the 'name' attribute syntax for 1278 one or more "xxx-supported" attributes, then the 'any-value' 1279 out-of-band attribute value (see section 8.3) MUST be supported 1280 in the Get-Printer-Supported-Values response with the 'name' 1281 attribute syntax for each such settable attribute (see section 1282 4.3) 1284 If the Set-Job-Attributes operation is supported, then the Printer MUST 1285 support the following additional items: 1287 1.the "job-settable-attributes-supported " Printer Description 1288 attribute (see section 6.2) 1290 2.the 'not-settable' out-of-band value in responses (see section 1291 8.1) 1293 3.the 'delete-attribute' out-of-band value in requests (see 1294 section 8.2) 1296 4.the 'client-error-not-settable' status code (see section 7.1) 1298 5.If the "job-message-from-operator" Printer Description attribute 1299 is supported (see [ipp-mod] 4.3.16), then it MUST be settable. 1301 It is OPTIONAL for the Printer object to support the "printer-message- 1302 time" (integer) and "printer-message-date-time" (dateTime) Printer 1303 Description attributes. If both the "printer-message-time" (integer) 1304 and the "printer-current-time" (dateTime) (see [ipp-mod] section 4.4.30) 1305 attributes are supported, then the "printer-message-date-time" 1306 (dateTime) Printer Description attribute MUST be supported. 1308 Expires: September 1, 2000 1309 As with all out-of-band values, a client or a Printer MUST NOT use an 1310 out-of-band value unless the definition of the attribute in an operation 1311 request and/or response explicitly allows such usage. 1313 10 IANA Considerations 1315 Since this document is intended to be a standards track document, there 1316 is no need to also register the operations, attributes, status codes, 1317 and out-of-band values defined here-in with IANA according to the 1318 procedures in RFC 2566 [rfc2566] section 6. However, other registration 1319 proposals may site the out-of-band attribute values or the status codes 1320 defined in this document. 1322 11 Internationalization Considerations 1324 This document has the same localization considerations as the [ipp-mod]. 1326 12 Security Considerations 1328 The IPP Model and Semantics document [ipp-mod section 8] discusses high 1329 level security requirements (Client Authentication, Server 1330 Authentication and Operation Privacy). Client Authentication is the 1331 mechanism by which the client proves its identity to the server in a 1332 secure manner. Server Authentication is the mechanism by which the 1333 server proves its identity to the client in a secure manner. Operation 1334 Privacy is defined as a mechanism for protecting operations from 1335 eavesdropping. 1337 In addition, the introduction of the Set-Printer-Attributes and Set-Job- 1338 Attributes operations creates another security threat, since the client 1339 is able to modify the Printer and Job attributes stored in the Printer. 1340 Such modifications could lead to denial of service. 1342 A malicious user could alter the policy established by the system 1343 administrator and stored in the Printer attributes. Such alteration 1344 could either grant access to more resources or deny access to resources 1345 that the system administrator has established. For example, the 1346 malicious user could remove all of the document-format values from the 1347 "document-format-supported" Printer attribute so that the Printer would 1348 refuse to accept all jobs. 1350 The general remedy for such malicious user actions against Printer 1351 attributes is to have strong Client Authentication coupled with Printer 1352 access control to limit the users who have System Administrator or 1353 Operator privileges. 1355 A malicious user could modify the Job Template attributes of another 1356 user's Job, such as the "copies" attribute. For example, setting the 1357 number of copies to a large number. 1359 Expires: September 1, 2000 1360 13 The general remedy for such malicious user actions against another 1361 user's job is to have strong Client Authentication coupled with 1362 Printer access control to limit the users who have System 1363 Administrator or Operator privileges who can modify any job and, in 1364 addition, store the Client Authentication with each Job so that only 1365 the job owner End User can modify his/her own job.Author's Addresses 1367 Carl Kugler 1368 IBM 1369 P.O. Box 1900 1370 Boulder, CO 80301-9191 1372 Phone: (303) 924-5060 1373 FAX: 1374 e-mail: kugler@us.ibm.com 1376 Tom Hastings 1377 Xerox Corporation 1378 737 Hawaii St. ESAE 231 1379 El Segundo, CA 90245 1381 Phone: 310-333-6413 1382 Fax: 310-333-5514 1383 e-mail: hastings@cp10.es.xerox.com 1385 Robert Herriot 1386 Xerox Corp. 1387 3400 Hill View Ave, Building 1 1388 Palo Alto, CA 94304 1390 Phone: 650-813-7696 1391 Fax: 650-813-6860 1392 e-mail: robert.herriot@pahv.xerox.com 1394 Harry Lewis 1395 IBM 1396 P.O. Box 1900 1397 Boulder, CO 80301-9191 1399 Phone: (303) 924-5337 1400 FAX: 1401 e-mail: harryl@us.ibm.com 1403 14 References 1405 [ipp-mod] 1406 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 1407 "Internet Printing Protocol/1.0: Model and Semantics", , March 1, 2000. 1410 Expires: September 1, 2000 1412 [ipp-pro] 1413 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 1414 Protocol/1.1: Encoding and Transport", draft-ietf-ipp-protocol-v11- 1415 05.txt, March 1, 2000. 1417 [ipp-set2] 1418 Kugler, C, Hastings, T., Lewis, H., "Internet Printing 1419 Protocol/1.1: Job and Printer Administrative Operations", , December 8, 1999. 1422 [RFC2565] 1423 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 1424 Protocol/1.0: Encoding and Transport", RFC 2565, April 1999. 1426 [RFC2566] 1427 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 1428 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, 1429 April 1999. 1431 15 Change History 1433 This section summarizes the changes. Each sub-section is in reverse 1434 chronological order. Adding or removing ISSUES that don't change the 1435 document are not listed here. 1437 15.1Changes to the January 30, 2000 version to make the March 1, 2000 1438 version 1440 The following changes to the January 30, 2000 version to make the March 1441 1, 2000 version as a result of the IPP WG telecons and mailing list 1442 discussion: 1444 1.Clarified that this extension may be used with any IPP version, 1445 including 1.0, 1.1, and future versions. 1447 2.Added "READ-ONLY" and "not-settable" terms to the terminology 1448 section. READ-ONLY is by definition, and "not-settable" is by 1449 implementation. 1451 3.Assigned the "operation-id" values 0x0013, 0x0014, and 0x0015, 1452 respectively, for the Set-Printer-Attributes, Set-Job-Attributes, and 1453 Get-Printer-Supported-Values operations. 1455 4.Clarified that the Set-Printer-Attributes operation while a Printer 1456 SHOULD accept a reasonable number of attribute, the Printer need only 1457 support setting one attribute in a request, unless it supports 1458 setting the three "parallel" attributes, ("printer-uri-supported", 1459 "uri-authentication-supported", and "uri-security-supported" (see 1460 [ipp-mod] sections 4.4.1 through 4.4.3), in which case it MUST 1461 support setting at least three attributes in a single request. 1463 Expires: September 1, 2000 1465 5.Clarified that for the Set-Printer-Attributes operation the Printer 1466 MUST validate all of the supplied attributes in combination with each 1467 other, as well as with all of the existing attribute of the Printer 1468 object Set-Printer-Attributes. 1470 6.Changed the requirements for accepting the Set-Printer-Attributes 1471 operation when the Printer is in the 'stopped' state from MUST to 1472 SHOULD, since some implementations may not be able to accept requests 1473 when stopped. 1475 7.Clarified that setting certain Printer attributes with Set-Printer- 1476 Attributes MAY require more access rights than other attributes, 1477 i.e., System Administrator rights to set policy and only Operator 1478 rights to set the configuration attributes to reflect the current 1479 hardware setup. 1481 8.Clarified the order of error checking and what is returned in each 1482 case in the Set-Printer-Attributes response. 1484 9.Changed the 'default' out-of-band value to 'delete-attribute' out-of- 1485 band value so that the effect is to actually remove the Job attribute 1486 entirely in the Set-Job-Attribute operation. 1488 10. Clarified that removing a Job attribute that is not present is not 1489 an error. 1491 11. Clarified the validation of the Set-Job-Attributes request and what 1492 is returned for each error. 1494 12. Changed the 'any-name' out-of-band attribute value to a more 1495 general 'any-value' out-of-band attribute value which in combination 1496 with an attribute syntax represents any value of that attribute 1497 syntax. The 'any-value' value can be used with the 'name' attribute 1498 syntax in a Get-Printer-Supported-Values response to indicate whether 1499 or not a Set-Printer-Attributes will accept any name to be set for 1500 particular "xxx-supported" (1setOf name | ...) Printer attributes. 1502 13. Clarified that "printer-message-from-operator" and "job-message- 1503 from-operator" both REQUIRE that the Printer accept zero-length 1504 messages and the 'no-value' out-of-band value is synonymous with 1505 removing any value from these Printer attributes. 1507 14. Clarified that the Get-Printer-Supported-Values is REQUIRED only if 1508 the Set-Printer-Attributes operation will accept setting some "xxx- 1509 supported" Printer attributes. 1511 15. Changed the IANA Considerations to indicate that the operations, 1512 attributes, status codes, and out-of-band-values won't be registered 1513 and published by IANA, since this document is intended to be 1514 standards track. 1516 16. Added security considerations for denial of service and sabotage 1517 because of the Set operations. 1519 Expires: September 1, 2000 1521 15.2Changes to the January 20, 2000 version to make the January 30, 2000 1522 version 1524 The following changes to the January 20, 2000 version to make the 1525 January 30, 2000 version as a result of the IPP WG telecons and mailing 1526 list discussion: 1528 1.Deleted the "document-format-varying-scope" operation attribute from 1529 the Set-Printer-Attributes operation and made whether or not the 1530 "document-format" operation was present determine whether one or all 1531 document formats are affected, respectively. 1533 2.Renamed the Get-Reset-Printer-Attributes operation to Get-Printer- 1534 Supported-Values, so that it only returns "xxx-supported" values. 1535 Relegate obtaining reset values to another operation to be paired 1536 with the Reset-Printer operation in the Set2 [ipp-set2] document. 1538 3.Added "-supported" to the names of the "printer-settable-attributes" 1539 and "job-settable-attributes" Printer Description attributes, so that 1540 they could be returned in Get-Printer-Supported-Values and could be 1541 set by Set-Printer-Attributes. 1543 4.Deleted "authentication-methods-supported" (1setOf type2 keyword) and 1544 "security-methods-supported" (1setOf type2 keyword) and clarified 1545 that "uri-authentication-supported" (1setOf type2 keyword) and "uri- 1546 security-supported" (1setOf type2 keyword) can return multiple 1547 keywords of the same value in a Get-Printer-Supported-Values 1548 operation. 1550 15.3Changes to the January 4, 2000 version to make the January 20, 2000 1551 version 1553 The following changes to the January 4, 2000 version to make the January 1554 4, 2000 version as a result of the IPP WG telecons and mailing list 1555 discussion: 1557 1.Replaced the "factory-settings" operation attribute proposed to be 1558 added to the Get-Printer-Attributes operation with the Get-Rest- 1559 Printer-Attributes operation which returns the reset values and the 1560 possible "xxx-supported" values. 1562 2.Added the out-of-band 'any-name' value to be used with "xxx- 1563 supported" attributes with attribute syntax 'type3 keyword | name' to 1564 indicate that any name will be accepted in a Job Creation operation 1565 for configurations that support such a concept. 1567 3.Added authentication-methods-supported (1setOf type2 keyword) and 1568 security-methods-supported (1setOf type2 keyword) Printer Description 1569 attributes so that clients can discover the possible values for use 1570 in Set-Printer-Attributes to set "uri-authentication-supported" and 1571 "uri-security-supported" attributes, since the Reset-Printer 1572 operation doesn't change them. 1574 Expires: September 1, 2000 1576 4.Added validation rules that the Printer MUST use to validate a Set- 1577 Printer-Attributes request. 1579 5.Clarified that the Set-Printer-Attributes operation MUST NOT have any 1580 side effects on other attributes, unless explicitly specified in this 1581 document. 1583 6.Moved the specification of the attributes that MUST be READ-ONLY to 1584 Appendix A. 1586 7.Added the "document-format-varying-attributes" (1setOf type2 keyword) 1588 8.Added the REQUIRED "document-format-varying-scope" operation 1589 attribute to Set-Printer-Attributes in order to control whether one 1590 or all document formats are affected for those attributes that vary 1591 by document format. 1593 9.Clarified that the Printer returns the 'client-error-attributes-not- 1594 settable' status code in a Set-Printer-Attributes response whether 1595 the attribute is READ-ONLY, the attribute is not supported, or the 1596 value is not supported. 1598 10. Added the out-of-band 'default' value for use with Set-Job- 1599 Attributes and Job Creation operations. 1601 11. Deleted the "printer-message-operation" Printer Description 1602 attribute. 1604 12. Made the "Get-Reset-Printer-Attributes" operation, along with the 1605 "authentication-methods-supported" and the "security-methods- 1606 supported" Printer Description attributes REQUIRED, if the Set- 1607 Printer-Attributes operation is supported. 1609 13. Made the 'not-settable' out-of-band value and the 'client-error- 1610 not-settable' status code REQUIRED, if the Set-Printer-Attributes 1611 operation is supported. 1613 14. Made the 'default' out-of-band value REQUIRED, if the Set-Job- 1614 Attributes operation is supported. 1616 15. Removed the requirement that "xxx-supported" Printer Description 1617 attributes that contain only one value be read-only. 1619 15.4Changes to the December 8, 1999 version to make the January 4, 2000 1620 version 1622 The following changes to the December 8, 1999 version to make the 1623 January 4, 2000 version as a result of the IPP WG telecons and mailing 1624 list discussion: 1626 1.Removed the Set operations and related items from the Set2 1627 specification [ipp-set2] to create this Set specification. 1629 Expires: September 1, 2000 1631 2.Added that an attribute that can only be set to one fixed value 1632 SHOULD NOT be included in the "printer-settable-attributes" or "job- 1633 settable-attributes" attributes. 1635 3.Indicated that the encoding of the 'not-settable' out-of-band value 1636 is TBD. 1638 4.Added that Set-Job-Attributes operation adds an attribute to the Job 1639 object if it wasn't already there 1641 5.Added the conformance section to make it easy to understand the 1642 conformance requirements. 1644 16 Appendix A: Allowed Values for Set-Printer-Attributes 1646 This appendix is a normative part of this document and contains a table 1647 of all IPP/1.1 attributes. Each row contains 1649 An attribute and 1651 The values allowed in the Set-Printer-Attributes operation for the 1652 attribute. The entry in each cell is the name (first few words) of 1653 each item below 1, 2, 3, 4a-g, and 5. 1655 The allowed values include the following cases: 1657 1. READ-ONLY: the Set-Printer-Attributes operation MUST NOT change 1658 this attribute 1660 2. Any of "xxx-supported": the Set-Printer-Attributes operation 1661 accepts values that are allowed according to the IPP/1.1 rules for 1662 the "xxx-supported" attribute (see section 3.1.2.3 of the "Internet 1663 Printing Protocol/1.1: Implementer's Guide" [ipp-iig]). The 'xxx- 1664 supported' attribute value is obtained from a 'Get-Printer- 1665 Attributes' response. 1667 3. From Get-Printer-Supported-Values: the Set-Printer-Attributes 1668 operation accepts values that are allowed according to the IPP/1.1 1669 rules for the "xxx-supported" attribute (see section 3.1.2.3 of the 1670 "Internet Printing Protocol/1.1: Implementer's Guide" [ipp-iig]). 1671 The "xxx-supported" attribute value is obtained from a Get-Printer- 1672 Supported-Values response (see Appendix B: Attributes returned from 1673 Get-Printer-Supported-Values below). 1675 4. Any value of the proper attribute syntax: the Set-Printer- 1676 Attributes accepts any value of the specified attribute syntax. 1677 The attribute syntaxes supported are enumerated below. 1679 a.Any text(127) 1680 b.Any name(127) 1681 c.Any uri 1682 d.Any boolean 1683 e.Any positive integer 1684 f.Any dateTime 1685 g.1setOf any uri 1687 Expires: September 1, 2000 1689 5. Combination of 'Any of "xxx-supported"' or 'Any name'. 1691 If a Printer implementation doesn't want to allow setting values 1692 indicated in this Appendix as "any xxx", it can make the value be read- 1693 only. For example, for a monochrome printer the attribute "color- 1694 supported" is "false" and MUST be read-only. Otherwise an administrator 1695 could set it to "true" because the value can have "any boolean" 1696 according to the rules in Table 6 below. 1698 Table 3 - Values allowed for Job Template Attributes in the Set-Job- 1699 Attributes Operation 1701 Job Template Attributes Values allowed for Set 1703 job-priority (integer(1:100)) Any of "xxx-supported" 1704 job-hold-until (type3 keyword | name (MAX)) Any of "xxx-supported" 1705 job-sheets (type3 keyword | name(MAX)) Any of "xxx-supported" 1706 multiple-document-handling (type2 keyword) Any of "xxx-supported" 1707 copies (integer(1:MAX)) Any of "xxx-supported" 1708 finishings (1setOf type2 enum) Any of "xxx-supported" 1709 page-ranges (1setOf rangeOfInteger (1:MAX)) Any of "xxx-supported" 1710 sides (type2 keyword) Any of "xxx-supported" 1711 number-up (integer(1:MAX)) Any of "xxx-supported" 1712 orientation-requested (type2 enum) Any of "xxx-supported" 1713 media (type3 keyword | name(MAX)) Any of "xxx-supported" 1714 printer-resolution (resolution) Any of "xxx-supported" 1715 print-quality (type2 enum) Any of "xxx-supported" 1717 Table 4 - Values allowed for Job Description Attributes in the Set-Job- 1718 Attributes Operation 1720 Job Description Attributes Values allowed for Set 1722 job-uri (uri) READ-ONLY 1723 job-id (integer(1:MAX)) READ-ONLY 1724 job-printer-uri (uri) READ-ONLY 1725 job-more-info (uri) READ-ONLY 1726 job-name (name(MAX)) Any name(MAX) 1727 job-originating-user-name (name(MAX)) READ-ONLY 1728 job-state (type1 enum) READ-ONLY 1729 job-state-reasons (1setOf type2 keyword) READ-ONLY 1730 job-state-message (text(MAX)) READ-ONLY 1731 job-detailed-status-messages (1setOf READ-ONLY 1732 text(MAX)) 1733 job-document-access-errors (1setOf READ-ONLY 1734 text(MAX)) 1735 number-of-documents (integer(0:MAX)) READ-ONLY 1736 output-device-assigned (name(127)) READ-ONLY 1737 time-at-creation (integer(MIN:MAX)) READ-ONLY 1738 time-at-processing (integer(MIN:MAX)) READ-ONLY 1739 time-at-completed (integer(MIN:MAX)) READ-ONLY 1740 job-printer-up-time (integer(1:MAX)) READ-ONLY 1741 date-time-at-creation (dateTime) READ-ONLY 1742 date-time-at-processing (dateTime) READ-ONLY 1743 date-time-at-completed (dateTime) READ-ONLY 1745 Expires: September 1, 2000 1746 Job Description Attributes Values allowed for Set 1748 number-of-intervening-jobs (integer(0:MAX)) READ-ONLY 1749 job-message-from-operator (text(127)) Any text(127) 1750 job-k-octets (integer(0:MAX)) READ-ONLY 1751 job-impressions (integer(0:MAX)) READ-ONLY 1752 job-media-sheets (integer(0:MAX)) READ-ONLY 1753 job-k-octets-processed (integer(0:MAX)) READ-ONLY 1754 job-impressions-completed (integer(0:MAX)) READ-ONLY 1755 job-media-sheets-completed (integer(0:MAX)) READ-ONLY 1756 attributes-charset (charset) READ-ONLY 1757 attributes-natural-language READ-ONLY 1758 (naturalLanguage) 1760 Table 5 - Values allowed for Printer Job Template Attributes in the Set- 1761 Printer-Attributes Operation 1763 Printer Job Template Attributes Values allowed for Set 1765 job-priority-default (integer(1:100)) Any of "xxx-supported" 1766 job-hold-until-default (type3 keyword | Any of "xxx-supported" 1767 name (MAX)) 1768 job-sheets-default (type3 keyword | Any of "xxx-supported" 1769 name(MAX)) 1770 multiple-document-handling-default (type2 Any of "xxx-supported" 1771 keyword) 1772 copies-default (integer(1:MAX)) Any of "xxx-supported" 1773 finishings-default (1setOf type2 enum) Any of "xxx-supported" 1774 sides-default (type2 keyword) Any of "xxx-supported" 1775 number-up-default (integer(1:MAX)) Any of "xxx-supported" 1776 orientation-requested-default (type2 enum) Any of "xxx-supported" 1777 media-default (type3 keyword | name(MAX)) Any of "xxx-supported" 1778 printer-resolution-default (resolution) Any of "xxx-supported" 1779 print-quality-default (type2 enum) Any of "xxx-supported" 1780 job-priority-supported (integer(1:100)) From Get-Printer- 1781 Supported-Values 1782 job-hold-until-supported (1setOf(type3 From Get-Printer- 1783 keyword | name (MAX))) Supported-Values 1784 job-sheets-supported (1setOf(type3 keyword From Get-Printer- 1785 | name(MAX))) Supported-Values 1786 multiple-document-handling-supported From Get-Printer- 1787 (1setOf type2 keyword) Supported-Values 1788 copies-supported (rangeOfInteger(1:MAX)) From Get-Printer- 1789 Supported-Values 1790 finishings-supported (1setOf type2 enum) From Get-Printer- 1791 Supported-Values 1792 page-ranges-supported (boolean) From Get-Printer- 1793 Supported-Values 1794 sides-supported (1setOf type2 keyword) From Get-Printer- 1795 Supported-Values 1796 number-up-supported (1setOf (integer(1:MAX) From Get-Printer- 1797 | rangeOfInteger(1:MAX))) Supported-Values 1798 orientation-requested-supported (1setOf From Get-Printer- 1799 type2 enum) Supported-Values 1801 Expires: September 1, 2000 1802 Printer Job Template Attributes Values allowed for Set 1804 media-supported (1setOf (type3 keyword | From Get-Printer- 1805 name(MAX))) Supported-Values 1806 printer-resolution-supported (1setOf From Get-Printer- 1807 resolution) Supported-Values 1808 print-quality-supported (1setOf type2 enum) From Get-Printer- 1809 Supported-Values 1810 media-ready (type3 keyword | name(MAX)) From Get-Printer- 1811 Supported-Values 1813 Table 6 - Values allowed for Printer Description Attributes in the Set- 1814 Printer-Attributes Operation 1816 Printer Description Attributes Values allowed for Set 1818 printer-uri-supported (1setOf uri) From Get-Printer- 1819 Supported-Values 1820 uri-authentication-supported (1setOf type2 From Get-Printer- 1821 keyword) Supported-Values 1822 uri-security-supported (1setOf type2 From Get-Printer- 1823 keyword) Supported-Values 1824 printer-name (name(127)) Any name(127) 1825 printer-location (text(127)) Any text(127) 1826 printer-info (text(127)) Any text(127) 1827 printer-more-info (uri) Any uri 1828 printer-driver-installer (uri) Any uri 1829 printer-make-and-model (text(127)) Any text(127) 1830 printer-more-info-manufacturer (uri) Any uri 1831 printer-state (type1 enum) READ-ONLY 1832 printer-state-reasons (1setOf type2 READ-ONLY 1833 keyword) 1834 printer-state-message (text(MAX)) READ-ONLY 1835 ipp-versions-supported (1setOf type2 From Get-Printer- 1836 keyword) Supported-Values 1837 operations-supported (1setOf type2 enum) From Get-Printer- 1838 Supported-Values 1839 multiple-document-jobs-supported (boolean) From Get-Printer- 1840 Supported-Values 1841 charset-configured (charset) Any of "xxx-supported" 1842 charset-supported (1setOf charset) From Get-Printer- 1843 Supported-Values 1844 natural-language-configured Any of "xxx-supported", 1845 (naturalLanguage) use generated-natural- 1846 language-supported 1847 generated-natural-language-supported From Get-Printer- 1848 (1setOf naturalLanguage) Supported-Values 1849 document-format-default (mimeMediaType) Any of "xxx-supported" 1850 document-format-supported (1setOf From Get-Printer- 1851 mimeMediaType) Supported-Values 1852 printer-is-accepting-jobs (boolean) READ-ONLY 1853 queued-job-count (integer(0:MAX)) READ-ONLY 1854 printer-message-from-operator (text(127)) Any text(127) 1855 color-supported (boolean) From Get-Printer- 1857 Expires: September 1, 2000 1858 Printer Description Attributes Values allowed for Set 1860 Supported-Values 1861 reference-uri-schemes-supported (1setOf From Get-Printer- 1862 uriScheme) Supported-Values 1863 pdl-override-supported (type2 keyword) From Get-Printer- 1864 Supported-Values 1865 printer-up-time (integer(1:MAX)) READ-ONLY 1866 printer-current-time (dateTime) Any dateTime 1867 multiple-operation-time-out any positive integer 1868 (integer(1:MAX)) 1869 compression-supported (1setOf type3 From Get-Printer- 1870 keyword) Supported-Values 1871 job-k-octets-supported From Get-Printer- 1872 (rangeOfInteger(0:MAX)) Supported-Values 1873 job-impressions-supported From Get-Printer- 1874 (rangeOfInteger(0:MAX)) Supported-Values 1875 job-media-sheets-supported From Get-Printer- 1876 (rangeOfInteger(0:MAX)) Supported-Values 1877 pages-per-minute (integer(0:MAX)) READ-ONLY 1878 pages-per-minute-color (integer(0:MAX)) READ-ONLY 1879 printer-settable-attributes-supported From Get-Printer- 1880 (1setOf type2 keyword) Supported-Values 1881 job-settable-attributes-supported (1setOf From Get-Printer- 1882 type2 keyword) Supported-Values 1883 document-format-varying-attributes (1setOf READ-ONLY 1884 type2 keyword) 1885 printer-message-time (integer(MIN:MAX)) READ-ONLY 1886 printer-message-date-time(dateTime) READ-ONLY 1888 17 Appendix B: Attributes returned from Get-Printer-Supported-Values 1890 For the following attributes, the value allowed by the Set-Printer- 1891 Attributes operation MUST be a single integer value in the range 1892 specified by the value returned by the Get-Printer-Supported-Values 1893 operation. 1895 Table 7 - Printer Job Template Attributes returned from Get-Printer- 1896 Supported-Values 1898 Printer Job Template Attributes Values Returned 1900 job-priority-supported (integer(1:100)) rangeOfInteger(1:100) 1902 For the following attributes, the value allowed by the Set-Printer- 1903 Attributes operation MUST be a single rangeOfInteger value whose bounds 1904 do not exceed those of the range specified by the value returned by the 1905 Get-Printer-Supported-Values operation. 1907 Expires: September 1, 2000 1908 Table 8 - Printer Job Template Attributes returned from Get-Printer- 1909 Supported-Values 1911 Printer Job Template Attributes Values Returned 1913 copies-supported (rangeOfInteger(1:MAX)) rangeOfInteger(1:MAX) 1915 The following table has the same criteria as the last, but is for 1916 Printer Description attributes. 1918 Table 9 - Printer Description Attributes returned from Get-Printer- 1919 Supported-Values 1921 Printer Description Attributes Values allowed for Set 1923 job-k-octets-supported rangeOfInteger(0:MAX) 1924 (rangeOfInteger(0:MAX)) 1925 job-impressions-supported rangeOfInteger(0:MAX) 1926 (rangeOfInteger(0:MAX)) 1927 job-media-sheets-supported rangeOfInteger(0:MAX) 1928 (rangeOfInteger(0:MAX)) 1930 For the following attributes, the value allowed by the Set-Printer- 1931 Attributes operation MUST be one or more integers and rangeOfInteger 1932 values, such that the integer values described by these integers and 1933 rangeOfInteger is the same as or a subset of the integers described by 1934 the integers and rangeOf Integer of value returned by the Get-Printer- 1935 Supported-Values operation. 1937 Table 10 - Printer Job Template Attributes returned from Get-Printer- 1938 Supported-Values 1940 Printer Job Template Attributes Values Returned 1942 number-up-supported (1setOf (integer(1:MAX) 1setOf (integer(1:MAX) | 1943 | rangeOfInteger(1:MAX))) rangeOfInteger(1:MAX)) 1945 For the following attributes, the value allowed by the Set-Printer- 1946 Attributes operation MUST be one or more values, where each such value 1947 matches a value returned by the Get-Printer-Supported-Values operation. 1948 A keyword, enum, boolean, charset, naturalLanguage, uriScheme, 1949 mimeMediaType or resolution value matches if it is equal. A name matches 1950 the 'any-name' out-of-band value. 1952 Table 11 - Printer Job Template Attributes returned from Get-Printer- 1953 Supported-Values 1955 Printer Job Template Attributes Values Returned 1957 job-hold-until-supported (1setOf(type3 1setOf(type3 keyword | 1958 keyword | name (MAX))) any name) 1959 job-sheets-supported (1setOf(type3 keyword 1setOf(type3 keyword | 1960 | name(MAX))) any name) 1962 Expires: September 1, 2000 1963 Printer Job Template Attributes Values Returned 1965 multiple-document-handling-supported 1setOf type2 keyword 1966 (1setOf type2 keyword) 1967 finishings-supported (1setOf type2 enum) 1setOf type2 enum 1968 page-ranges-supported (boolean) 1setOf(boolean) 1969 sides-supported (1setOf type2 keyword) 1setOf type2 keyword 1970 orientation-requested-supported (1setOf 1setOf type2 enum 1971 type2 enum) 1972 media-supported (1setOf (type3 keyword | 1setOf(type3 keyword | 1973 name(MAX))) any name) 1974 printer-resolution-supported (1setOf 1setOf resolution 1975 resolution) 1976 print-quality-supported (1setOf type2 enum) 1setOf type2 enum 1978 The following table has the same criteria as the last, but is for 1979 Printer Description attributes. Note that the first two attributes in 1980 the table below follow the rules for allowed values in the Set-Printer- 1981 Attributes, but unlike other attributes, there can be more than one 1982 occurrence of each value because the i-th value of these attributes 1983 specifies the authentication or security for the i-th printer in 1984 "printer-uri-supported". 1986 Table 12 - Printer Description Attributes returned from Get-Printer- 1987 Supported-Values 1989 Printer Description Attributes Values allowed for Set 1991 uri-authentication-supported (1setOf type2 1setOf type2 keyword 1992 keyword) 1993 uri-security-supported (1setOf type2 1setOf type2 keyword 1994 keyword) 1995 ipp-versions-supported (1setOf type2 1setOf type2 keyword 1996 keyword) 1997 operations-supported (1setOf type2 enum) 1setOf type2 keyword 1998 multiple-document-jobs-supported (boolean) 1setOf boolean 1999 charset-supported (1setOf charset) 1setOf charset 2000 generated-natural-language-supported 1setOf naturalLanguage 2001 (1setOf naturalLanguage) 2002 document-format-supported (1setOf 1setOf mimeMediaType 2003 mimeMediaType) 2004 color-supported (boolean) 1setOf boolean 2005 reference-uri-schemes-supported (1setOf 1setOf uriScheme 2006 uriScheme) 2007 compression-supported (1setOf type3 1setOf type3 keyword 2008 keyword) 2009 printer-settable-attributes-supported 1setOf type2 keyword 2010 (1setOf type2 keyword) 2011 job-settable-attributes-supported (1setOf 1setOf type2 keyword 2012 type2 keyword) 2014 Expires: September 1, 2000 2015 For the following attributes, the value allowed by the Set-Printer- 2016 Attributes operation MUST be a single value that matches one of the 2017 values returned by the Get-Printer-Supported-Values operation. A 2018 keyword, enum, boolean, charset, naturalLanguage, uriScheme, 2019 mimeMediaType or resolution value matches if it is equal. A name matches 2020 the 'any-name' out-of-band value. 2022 Table 13 - Printer Description Attributes returned from Get-Printer- 2023 Supported-Values 2025 Printer Description Attributes Values allowed for Set 2027 pdl-override-supported (type2 keyword) 1 setOf type2 keyword 2029 For the following attributes, the Set-Printer-Attributes operation MUST 2030 NOT return a value. The IPP Model document [ipp-mod] document specifies 2031 the allowed values. 2033 Table 14 - Printer Description Attributes returned from Get-Printer- 2034 Supported-Values 2036 Printer Description Attributes Values allowed for Set 2038 printer-uri-supported (1setOf uri) any uri 2040 18 Appendix C: Full Copyright Statement 2042 Copyright (C) The Internet Society (1998,1999). All Rights Reserved 2044 This document and translations of it may be copied and furnished to 2045 others, and derivative works that comment on or otherwise explain it or 2046 assist in its implementation may be prepared, copied, published and 2047 distributed, in whole or in part, without restriction of any kind, 2048 provided that the above copyright notice and this paragraph are included 2049 on all such copies and derivative works. However, this document itself 2050 may not be modified in any way, such as by removing the copyright notice 2051 or references to the Internet Society or other Internet organizations, 2052 except as needed for the purpose of developing Internet standards in 2053 which case the procedures for copyrights defined in the Internet 2054 Standards process must be followed, or as required to translate it into 2055 languages other than English. 2057 The limited permissions granted above are perpetual and will not be 2058 revoked by the Internet Society or its successors or assigns. 2060 This document and the information contained herein is provided on an "AS 2061 IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK 2062 FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT 2064 Expires: September 1, 2000 2065 LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT 2066 INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR 2067 FITNESS FOR A PARTICULAR PURPOSE. 2069 Expires: September 1, 2000