idnits 2.17.1 draft-ietf-ipp-model-11.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 current Internet-Drafts. ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories. ** The document is more than 15 pages and seems to lack a Table of Contents. == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 149 longer pages, the longest (page 149) being 73 lines Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** The abstract seems to contain references ([IPP-PRO], [IPP-RAT], [IPP-IIG], [IPP-REQ], [IPPLPD]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 7 instances of lines with non-RFC2606-compliant FQDNs in the document. == There are 52 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 190 has weird spacing: '...(1setOf type2...' == Line 604 has weird spacing: '...any indicate...' == Line 836 has weird spacing: '... object which...' == Line 1417 has weird spacing: '...client to ide...' == Line 2945 has weird spacing: '...same as the...' == (12 more instances...) == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords -- however, there's a paragraph with a matching beginning. Boilerplate error? (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The exact meaning of the all-uppercase expression 'NOT REQUIRED' is not defined in RFC 2119. If it is intended as a requirements expression, it should be rewritten using one of the combinations defined in RFC 2119; otherwise it should not be all-uppercase. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHOULD not' in this paragraph: In the first case, the Printer SHOULD not tweak any existing related Job attributes ("time-at-creation", "time-at-processing", and "time-at-completed"). In the second case, the Printer object SHOULD reset those attributes to 0. If a client queries a time-related Job attribute and finds the value to be 0, the client MUST assume that the Job was submitted in some life other than the Printer's current life. == The expression 'MAY NOT', while looking like RFC 2119 requirements text, is not defined in RFC 2119, and should not be used. Consider using 'MUST NOT' instead (if that is what you mean). Found 'MAY NOT' in this paragraph: This term is not included in RFC 2119. The verb "NEED NOT" indicates an action that the subject of the sentence does not have to implement in order to claim conformance to the standard. The verb "NEED NOT" is used instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. -- 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 (November 16, 1998) is 9286 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'IPP-LPD' is mentioned on line 376, but not defined == Missing Reference: 'IPP-MOD' is mentioned on line 7867, but not defined -- Looks like a reference, but probably isn't: '52' on line 3168 -- Looks like a reference, but probably isn't: '56' on line 3168 == Unused Reference: 'PWG' is defined on line 6202, but no explicit reference was found in the text == Unused Reference: 'RFC2068' is defined on line 6235, but no explicit reference was found in the text == Unused Reference: 'RFC2277' is defined on line 6267, but no explicit reference was found in the text -- Possible downref: Non-RFC (?) normative reference: ref. 'ASCII' -- Possible downref: Non-RFC (?) normative reference: ref. 'HTPP' == Outdated reference: A later version (-05) exists of draft-iesg-iana-considerations-04 -- Possible downref: Non-RFC (?) normative reference: ref. 'IANA-CS' -- Possible downref: Non-RFC (?) normative reference: ref. 'IANA-MT' -- No information found for draft-ietf-ipp-implementors-guide - is the name correct? -- Possible downref: Normative reference to a draft: ref. 'IPP-IIG' ** Downref: Normative reference to an Experimental draft: draft-ietf-ipp-lpd-ipp-map (ref. 'IPP LPD') -- No information found for draft-ietf-ipp-pro - is the name correct? -- Possible downref: Normative reference to a draft: ref. 'IPP-PRO' ** Downref: Normative reference to an Experimental draft: draft-ietf-ipp-rat (ref. 'IPP-RAT') ** Downref: Normative reference to an Experimental draft: draft-ietf-ipp-req (ref. 'IPP-REQ') -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO10646-1' -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO8859-1' -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO10175' -- Possible downref: Non-RFC (?) normative reference: ref. 'LDPA' -- Possible downref: Non-RFC (?) normative reference: ref. 'PSIS' -- Possible downref: Non-RFC (?) normative reference: ref. 'PWG' ** Downref: Normative reference to an Informational RFC: RFC 1179 ** Obsolete normative reference: RFC 1759 (Obsoleted by RFC 3805) ** Obsolete normative reference: RFC 1766 (Obsoleted by RFC 3066, RFC 3282) ** Obsolete normative reference: RFC 1903 (Obsoleted by RFC 2579) ** Downref: Normative reference to an Informational RFC: RFC 1952 ** Obsolete normative reference: RFC 2044 (Obsoleted by RFC 2279) ** Obsolete normative reference: RFC 2068 (Obsoleted by RFC 2616) ** Obsolete normative reference: RFC 2069 (Obsoleted by RFC 2617) ** Obsolete normative reference: RFC 2048 (Obsoleted by RFC 4288, RFC 4289) ** Obsolete normative reference: RFC 2278 (Obsoleted by RFC 2978) ** Obsolete normative reference: RFC 2279 (Obsoleted by RFC 3629) ** Downref: Normative reference to an Informational RFC: RFC 2316 ** Obsolete normative reference: RFC 2396 (Obsoleted by RFC 3986) -- Possible downref: Non-RFC (?) normative reference: ref. 'SSL' -- Possible downref: Non-RFC (?) normative reference: ref. 'SWP' Summary: 24 errors (**), 0 flaws (~~), 19 warnings (==), 22 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTERNET-DRAFT 3 draft-ietf-ipp-model-11.txt 4 R. deBry 5 IBM Corporation 6 T. Hastings 7 Xerox Corporation 8 R. Herriot 9 Sun Microsystems 10 S. Isaacson 11 Novell, Inc. 12 P. Powell 13 Astart Technologies 14 November 16, 1998 16 Internet Printing Protocol/1.0: Model and Semantics 17 Copyright (C) The Internet Society (date). All Rights Reserved. 19 Status of this Memo 21 This document is an Internet-Draft. Internet-Drafts are working 22 documents of the Internet Engineering Task Force (IETF), its areas, and 23 its working groups. Note that other groups may also distribute working 24 documents as Internet-Drafts. 26 Internet-Drafts are draft documents valid for a maximum of six months 27 and may be updated, replaced, or obsoleted by other documents at any 28 time. It is inappropriate to use Internet-Drafts as reference material 29 or to cite them other than as "work in progress". 31 To learn the current status of any Internet-Draft, please check the 32 "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow 33 Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), 34 munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or 35 ftp.isi.edu (US West Coast). 37 Abstract 39 This document is one of a set of documents, which together describe all 40 aspects of a new Internet Printing Protocol (IPP). IPP is an 41 application level protocol that can be used for distributed printing 42 using Internet tools and technologies. This document describes a 43 simplified model consisting of abstract objects, their attributes, and 44 their operations that is independent of encoding and transport. The 45 model consists of a Printer and a Job object. A Job optionally supports 46 multiple documents. IPP 1.0 semantics allow end-users and operators to 47 query printer capabilities, submit print jobs, inquire about the status 48 of print jobs and printers, and cancel print jobs. This document also 49 addresses security, internationalization, and directory issues. 51 Isaacson, Powell Expires May 16, 1999 52 The full set of IPP documents includes: 54 Design Goals for an Internet Printing Protocol [IPP-REQ] 55 Rationale for the Structure and Model and Protocol for the Internet 56 Printing Protocol [IPP-RAT] 57 Internet Printing Protocol/1.0: Model and Semantics (this document) 58 Internet Printing Protocol/1.0: Encoding and Transport [IPP-PRO] 59 Internet Printing Protocol/1.0: Implementer's Guide [IPP-IIG] 60 Mapping between LPD and IPP Protocols [IPP LPD] 62 The "Design Goals for an Internet Printing Protocol" document takes a 63 broad look at distributed printing functionality, and it enumerates 64 real-life scenarios that help to clarify the features that need to be 65 included in a printing protocol for the Internet. It identifies 66 requirements for three types of users: end users, operators, and 67 administrators. It calls out a subset of end user requirements that are 68 satisfied in IPP/1.0. Operator and administrator requirements are out 69 of scope for version 1.0. 71 The "Rationale for the Structure and Model and Protocol for the Internet 72 Printing Protocol" document describes IPP from a high level view, 73 defines a roadmap for the various documents that form the suite of IPP 74 specifications, and gives background and rationale for the IETF working 75 group's major decisions. 77 The "Internet Printing Protocol/1.0: Encoding and Transport" document is 78 a formal mapping of the abstract operations and attributes defined in 79 the model document onto HTTP/1.1. It defines the encoding rules for a 80 new Internet media type called "application/ipp". 82 The "Internet Printing Protocol/1.0: Implementer's Guide" document gives 83 insight and advice to implementers of IPP clients and IPP objects. It 84 is intended to help them understand IPP/1.0 and some of the 85 considerations that may assist them in the design of their client and/or 86 IPP object implementations. For example, a typical order of processing 87 requests is given, including error checking. Motivation for some of the 88 specification decisions is also included. 90 The "Mapping between LPD and IPP Protocols" document gives some advice 91 to implementers of gateways between IPP and LPD (Line Printer Daemon) 92 implementations. 94 Isaacson, Powell Expires May 16, 1999 95 Table of Contents 97 1. Introduction 7 98 1.1 Simplified Printing Model 8 100 2. IPP Objects 11 101 2.1 Printer Object 11 102 2.2 Job Object 13 103 2.3 Object Relationships 14 104 2.4 Object Identity 15 106 3. IPP Operations 17 107 3.1 Common Semantics 18 108 3.1.1 Required Parameters 18 109 3.1.2 Operation IDs and Request IDs 19 110 3.1.3 Attributes 19 111 3.1.4 Character Set and Natural Language Operation Attributes 21 112 3.1.4.1 Request Operation Attributes 21 113 3.1.4.2 Response Operation Attributes 24 114 3.1.5 Operation Targets 25 115 3.1.6 Operation Status Codes and Messages 27 116 3.1.7 Versions 28 117 3.1.8 Job Creation Operations 29 118 3.2 Printer Operations 31 119 3.2.1 Print-Job Operation 31 120 3.2.1.1 Print-Job Request 31 121 3.2.1.2 Print-Job Response 35 122 3.2.2 Print-URI Operation 37 123 3.2.3 Validate-Job Operation 38 124 3.2.4 Create-Job Operation 38 125 3.2.5 Get-Printer-Attributes Operation 39 126 3.2.5.1 Get-Printer-Attributes Request 39 127 3.2.5.2 Get-Printer-Attributes Response 41 128 3.2.6 Get-Jobs Operation 42 129 3.2.6.1 Get-Jobs Request 42 130 3.2.6.2 Get-Jobs Response 43 131 3.3 Job Operations 45 132 3.3.1 Send-Document Operation 45 133 3.3.1.1 Send-Document Request 46 134 3.3.1.2 Send-Document Response 47 135 3.3.2 Send-URI Operation 48 136 3.3.3 Cancel-Job Operation 48 137 3.3.3.1 Cancel-Job Request 49 138 3.3.3.2 Cancel-Job Response 49 139 3.3.4 Get-Job-Attributes Operation 50 140 3.3.4.1 Get-Job-Attributes Request 51 141 3.3.4.2 Get-Job-Attributes Response 51 143 4. Object Attributes 52 144 4.1 Attribute Syntaxes 52 145 4.1.1 'text' 53 146 4.1.1.1 'textWithoutLanguage' 54 147 4.1.1.2 'textWithLanguage' 54 149 Isaacson, Powell Expires May 16, 1999 151 4.1.2 'name' 55 152 4.1.2.1 'nameWithoutLanguage' 55 153 4.1.2.2 'nameWithLanguage' 56 154 4.1.3 'keyword' 56 155 4.1.4 'enum' 57 156 4.1.5 'uri' 58 157 4.1.6 'uriScheme' 58 158 4.1.7 'charset' 58 159 4.1.8 'naturalLanguage' 59 160 4.1.9 'mimeMediaType' 60 161 4.1.10 'octetString' 61 162 4.1.11 'boolean' 61 163 4.1.12 'integer' 61 164 4.1.13 'rangeOfInteger' 61 165 4.1.14 'dateTime' 61 166 4.1.15 'resolution' 62 167 4.1.16 '1setOf X' 62 168 4.2 Job Template Attributes 62 169 4.2.1 job-priority (integer(1:100)) 66 170 4.2.2 job-hold-until (type3 keyword | name (MAX)) 67 171 4.2.3 job-sheets (type3 keyword | name(MAX)) 67 172 4.2.4 multiple-document-handling (type2 keyword) 68 173 4.2.5 copies (integer(1:MAX)) 69 174 4.2.6 finishings (1setOf type2 enum) 69 175 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 70 176 4.2.8 sides (type2 keyword) 71 177 4.2.9 number-up (integer(1:MAX)) 72 178 4.2.10 orientation-requested (type2 enum) 72 179 4.2.11 media (type3 keyword | name(MAX)) 73 180 4.2.12 printer-resolution (resolution) 74 181 4.2.13 print-quality (type2 enum) 74 182 4.3 Job Description Attributes 74 183 4.3.1 job-uri (uri) 76 184 4.3.2 job-id (integer(1:MAX)) 76 185 4.3.3 job-printer-uri (uri) 76 186 4.3.4 job-more-info (uri) 76 187 4.3.5 job-name (name(MAX)) 77 188 4.3.6 job-originating-user-name (name(MAX)) 77 189 4.3.7 job-state (type1 enum) 77 190 4.3.8 job-state-reasons (1setOf type2 keyword) 80 191 4.3.9 job-state-message (text(MAX)) 82 192 4.3.10 number-of-documents (integer(0:MAX)) 82 193 4.3.11 output-device-assigned (name(127)) 82 194 4.3.12 time-at-creation (integer(0:MAX)) 83 195 4.3.13 time-at-processing (integer(0:MAX)) 83 196 4.3.14 time-at-completed (integer(0:MAX)) 83 197 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 83 198 4.3.16 job-message-from-operator (text(127)) 83 199 4.3.17 job-k-octets (integer(0:MAX)) 83 200 4.3.18 job-impressions (integer(0:MAX)) 84 201 4.3.19 job-media-sheets (integer(0:MAX)) 84 202 4.3.20 job-k-octets-processed (integer(0:MAX)) 85 203 4.3.21 job-impressions-completed (integer(0:MAX)) 85 204 4.3.22 job-media-sheets-completed (integer(0:MAX)) 85 206 Isaacson, Powell Expires May 16, 1999 207 4.3.23 attributes-charset (charset) 86 208 4.3.24 attributes-natural-language (naturalLanguage) 86 209 4.4 Printer Description Attributes 86 210 4.4.1 printer-uri-supported (1setOf uri) 88 211 4.4.2 uri-security-supported (1setOf type2 keyword) 88 212 4.4.3 printer-name (name(127)) 89 213 4.4.4 printer-location (text(127)) 90 214 4.4.5 printer-info (text(127)) 90 215 4.4.6 printer-more-info (uri) 90 216 4.4.7 printer-driver-installer (uri) 90 217 4.4.8 printer-make-and-model (text(127)) 90 218 4.4.9 printer-more-info-manufacturer (uri) 90 219 4.4.10 printer-state (type1 enum) 91 220 4.4.11 printer-state-reasons (1setOf type2 keyword) 92 221 4.4.12 printer-state-message (text(MAX)) 94 222 4.4.13 operations-supported (1setOf type2 enum) 94 223 4.4.14 charset-configured (charset) 95 224 4.4.15 charset-supported (1setOf charset) 95 225 4.4.16 natural-language-configured (naturalLanguage) 95 226 4.4.17 generated-natural-language-supported(1setOf naturalLanguage)95 227 4.4.18 document-format-default (mimeMediaType) 96 228 4.4.19 document-format-supported (1setOf mimeMediaType) 96 229 4.4.20 printer-is-accepting-jobs (boolean) 96 230 4.4.21 queued-job-count (integer(0:MAX)) 97 231 4.4.22 printer-message-from-operator (text(127)) 97 232 4.4.23 color-supported (boolean) 97 233 4.4.24 reference-uri-schemes-supported (1setOf uriScheme) 97 234 4.4.25 pdl-override-supported (type2 keyword) 97 235 4.4.26 printer-up-time (integer(1:MAX)) 98 236 4.4.27 printer-current-time (dateTime) 98 237 4.4.28 multiple-operation-time-out (integer(1:MAX)) 98 238 4.4.29 compression-supported (1setOf type3 keyword) 99 239 4.4.30 job-k-octets-supported (rangeOfInteger(0:MAX)) 99 240 4.4.31 job-impressions-supported (rangeOfInteger(0:MAX)) 99 241 4.4.32 job-media-sheets-supported (rangeOfInteger(0:MAX)) 99 243 5. Conformance 99 244 5.1 Client Conformance Requirements 100 245 5.2 IPP Object Conformance Requirements 100 246 5.2.1 Objects 101 247 5.2.2 Operations 101 248 5.2.3 IPP Object Attributes 101 249 5.2.4 Extensions 102 250 5.2.5 Attribute Syntaxes 102 251 5.3 Charset and Natural Language Requirements 102 252 5.4 Security Conformance Requirements 102 254 6. IANA Considerations (registered and private extensions) 103 255 6.1 Typed 'keyword' and 'enum' Extensions 103 256 6.2 Attribute Extensibility 105 257 6.3 Attribute Syntax Extensibility 106 258 6.4 Operation Extensibility 106 259 6.5 Attribute Groups 106 260 6.6 Status Code Extensibility 107 262 Isaacson, Powell Expires May 16, 1999 263 6.7 Registration of MIME types/sub-types for document-formats 107 264 6.8 Registration of charsets for use in 'charset' attribute values107 266 7. Internationalization Considerations 108 268 8. Security Considerations 110 269 8.1 Security Scenarios 112 270 8.1.1 Client and Server in the Same Security Domain 112 271 8.1.2 Client and Server in Different Security Domains 112 272 8.1.3 Print by Reference 112 273 8.2 URIs for SSL3 and non-SSL3 Access 112 274 8.3 The "requesting-user-name" (name(MAX)) Operation Attribute 113 275 8.4 Restricted Queries 114 276 8.5 Queries on jobs submitted using non-IPP protocols 115 277 8.6 IPP Security Application Profile for SSL3 115 279 9. References 116 281 10.Copyright Notice 119 283 11.Author's Address 119 285 12.Formats for IPP Registration Proposals 122 286 12.1 Type2 keyword attribute values registration 122 287 12.2 Type3 keyword attribute values registration 122 288 12.3 Type2 enum attribute values registration 122 289 12.4 Type3 enum attribute values registration 123 290 12.5 Attribute registration 123 291 12.6 Attribute Syntax registration 124 292 12.7 Operation registration 124 293 12.8 Attribute Group registration 116 294 12.9 Status code registration 124 296 13.APPENDIX A: Terminology 125 297 13.1 Conformance Terminology 125 298 13.1.1 NEED NOT 125 299 13.2 Model Terminology 125 300 13.2.1 Keyword 125 301 13.2.2 Attributes 125 302 13.2.2.1 Attribute Name 126 303 13.2.2.2 Attribute Group Name 126 304 13.2.2.3 Attribute Value 126 305 13.2.2.4 Attribute Syntax 126 306 13.2.3 Supports 126 307 13.2.4 print-stream page 128 308 13.2.5 impression 128 310 14.APPENDIX B: Status Codes and Suggested Status Code Messages 128 311 14.1 Status Codes 129 312 14.1.1 Informational 130 313 14.1.2 Successful Status Codes 130 314 14.1.2.1 successful-ok (0x0000) 130 315 14.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)130 316 14.1.2.3 successful-ok-conflicting-attributes (0x0002) 130 318 Isaacson, Powell Expires May 16, 1999 320 14.1.3 Redirection Status Codes 131 321 14.1.4 Client Error Status Codes 131 322 14.1.4.1 client-error-bad-request (0x0400) 131 323 14.1.4.2 client-error-forbidden (0x0401) 131 324 14.1.4.3 client-error-not-authenticated (0x0402) 131 325 14.1.4.4 client-error-not-authorized (0x0403) 131 326 14.1.4.5 client-error-not-possible (0x0404) 132 327 14.1.4.6 client-error-timeout (0x0405) 132 328 14.1.4.7 client-error-not-found (0x0406) 132 329 14.1.4.8 client-error-gone (0x0407) 132 330 14.1.4.9 client-error-request-entity-too-large (0x0408) 133 331 14.1.4.10client-error-request-value-too-long (0x0409) 133 332 14.1.4.11client-error-document-format-not-supported (0x040A) 133 333 14.1.4.12client-error-attributes-or-values-not-supported (0x040B)133 334 14.1.4.13client-error-uri-scheme-not-supported (0x040C) 134 335 14.1.4.14client-error-charset-not-supported (0x040D) 134 336 14.1.4.15client-error-conflicting-attributes (0x040E) 134 337 14.1.5 Server Error Status Codes 134 338 14.1.5.1 server-error-internal-error (0x0500) 134 339 14.1.5.2 server-error-operation-not-supported (0x0501) 135 340 14.1.5.3 server-error-service-unavailable (0x0502) 135 341 14.1.5.4 server-error-version-not-supported (0x0503) 135 342 14.1.5.5 server-error-device-error (0x0504) 135 343 14.1.5.6 server-error-temporary-error (0x0505) 136 344 14.1.5.7 server-error-not-accepting-jobs (0x0506) 136 345 14.1.5.8 server-error-busy (0x0507) 136 346 14.1.5.9 server-error-job-canceled (0x0508) 136 347 14.2 Status Codes for IPP Operations 137 349 15.APPENDIX C: "media" keyword values 137 351 16.APPENDIX D: Processing IPP Attributes 141 352 16.1 Fidelity 142 353 16.2 Page Description Language (PDL) Override 143 354 16.3 Using Job Template Attributes During Document Processing. 145 356 17.APPENDIX E: Generic Directory Schema 146 358 18.APPENDIX F: Change History for the Model and Semantics document 147 360 1. Introduction 362 The Internet Printing Protocol (IPP) is an application level protocol 363 that can be used for distributed printing using Internet tools and 364 technologies. IPP version 1.0 (IPP/1.0) focuses only on end user 365 functionality. This document is just one of a suite of documents that 366 fully define IPP. The full set of IPP documents includes: 368 Design Goals for an Internet Printing Protocol [IPP-REQ] 369 Rationale for the Structure and Model and Protocol for the Internet 370 Printing Protocol [IPP-RAT] 371 Internet Printing Protocol/1.0: Model and Semantics (this document) 372 Internet Printing Protocol/1.0: Encoding and Transport [IPP-PRO] 374 Isaacson, Powell Expires May 16, 1999 375 Internet Printing Protocol/1.0: Implementer's Guide [IPP-IIG] 376 Mapping between LPD and IPP Protocols [IPP-LPD] 378 Anyone reading these documents for the first time is strongly encouraged 379 to read the IPP documents in the above order. 381 This document is laid out as follows: 383 - The rest of Section 1 is an introduction to the IPP simplified 384 model for distributed printing. 385 - Section 2 introduces the object types covered in the model with 386 their basic behaviors, attributes, and interactions. 387 - Section 3 defines the operations included in IPP/1.0. IPP 388 operations are synchronous, therefore, for each operation, there is 389 a both request and a response. 390 - Section 4 defines the attributes (and their syntaxes) that are used 391 in the model. 392 - Sections 5 - 6 summarizes the implementation conformance 393 requirements for objects that support the protocol and IANA 394 considerations, respectively. 395 - Sections 7 - 12 cover the Internationalization and Security 396 considerations as well as References, Copyright Notice, Author 397 contact information, and Formats for Registration Proposals. 398 - Sections 13 - 15 are appendices that cover Terminology, Status 399 Codes and Messages, and "media" keyword values. 401 Note: This document uses terms such as "attributes", 402 "keywords", and "support". These terms have special meaning 403 and are defined in the model terminology section 13.2. 404 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, 405 SHOULD NOT, MAY, NEED NOT, and OPTIONAL, have special meaning 406 relating to conformance. These terms are defined in section 407 13.1 on conformance terminology, most of which is taken from 408 RFC 2119 [RFC2119]. 410 - Section 16 is an appendix that helps to clarify the effects of 411 interactions between related attributes and their values. 412 - Section 17 is an appendix that enumerates the subset of Printer 413 attributes that form a generic directory schema. These attributes 414 are useful when registering a Printer so that a client can find the 415 Printer not just by name, but by filtered searches as well. 416 - Section 18 is an appendix that provides a Change History 417 summarizing the clarification and changes that might affect an 418 implementation since the June 30, 1998 draft. 420 1.1 Simplified Printing Model 422 In order to achieve its goal of realizing a workable printing protocol 423 for the Internet, the Internet Printing Protocol (IPP) is based on a 424 simplified printing model that abstracts the many components of real 425 world printing solutions. The Internet is a distributed computing 426 environment where requesters of print services (clients, applications, 427 printer drivers, etc.) cooperate and interact with print service 428 providers. This model and semantics document describes a simple, 429 abstract model for IPP even though the underlying configurations may be 431 Isaacson, Powell Expires May 16, 1999 432 complex "n-tier" client/server systems. An important simplifying step 433 in the IPP model is to expose only the key objects and interfaces 434 required for printing. The model described in this model document does 435 not include features, interfaces, and relationships that are beyond the 436 scope of the first version of IPP (IPP/1.0). IPP/1.0 incorporates many 437 of the relevant ideas and lessons learned from other specification and 438 development efforts [HTPP] [ISO10175] [LDPA] [P1387.4] [PSIS] [RFC1179] 439 [SWP]. IPP is heavily influenced by the printing model introduced in 440 the Document Printing Application (DPA) [ISO10175] standard. Although 441 DPA specifies both end user and administrative features, IPP version 1.0 442 (IPP/1.0) focuses only on end user functionality. 444 The IPP/1.0 model encapsulates the important components of distributed 445 printing into two object types: 447 - Printer (Section 2.1) 448 - Job (Section 2.2) 450 Each object type has an associated set of operations (see section 3) and 451 attributes (see section 4). 453 It is important, however, to understand that in real system 454 implementations (which lie underneath the abstracted IPP/1.0 model), 455 there are other components of a print service which are not explicitly 456 defined in the IPP/1.0 model. The following figure illustrates where 457 IPP/1.0 fits with respect to these other components. 459 Isaacson, Powell Expires May 16, 1999 460 +--------------+ 461 | Application | 462 o +. . . . . . . | 463 \|/ | Spooler | 464 / \ +. . . . . . . | +---------+ 465 End-User | Print Driver |---| File | 466 +-----------+ +-----+ +------+-------+ +----+----+ 467 | Browser | | GUI | | | 468 +-----+-----+ +--+--+ | | 469 | | | | 470 | +---+------------+---+ | 471 N D S | | IPP Client |------------+ 472 O I E | +---------+----------+ 473 T R C | | 474 I E U | 475 F C R -------------- Transport ------------------ 476 I T I 477 C O T | --+ 478 A R Y +--------+--------+ | 479 T Y | IPP Server | | 480 I +--------+--------+ | 481 O | | 482 N +-----------------+ | IPP Printer 483 | Print Service | | 484 +-----------------+ | 485 | --+ 486 +-----------------+ 487 | Output Device(s)| 488 +-----------------+ 490 An IPP Printer object encapsulates the functions normally associated 491 with physical output devices along with the spooling, scheduling and 492 multiple device management functions often associated with a print 493 server. Printer objects are optionally registered as entries in a 494 directory where end users find and select them based on some sort of 495 filtered and context based searching mechanism (see section 17). The 496 directory is used to store relatively static information about the 497 Printer, allowing end users to search for and find Printers that match 498 their search criteria, for example: name, context, printer capabilities, 499 etc. The more dynamic information, such as state, currently loaded and 500 ready media, number of jobs at the Printer, errors, warnings, and so 501 forth, is directly associated with the Printer object itself rather than 502 with the entry in the directory which only represents the Printer 503 object. 505 IPP clients implement the IPP protocol on the client side and give end 506 users (or programs running on behalf of end users) the ability to query 507 Printer objects and submit and manage print jobs. An IPP server is just 508 that part of the Printer object that implements the server-side 509 protocol. The rest of the Printer object implements (or gateways into) 510 the application semantics of the print service itself. The Printer 511 objects may be embedded in an output device or may be implemented on a 512 host on the network that communicates with an output device. 514 Isaacson, Powell Expires May 16, 1999 515 When a job is submitted to the Printer object and the Printer object 516 validates the attributes in the submission request, the Printer object 517 creates a new Job object. The end user then interacts with this new Job 518 object to query its status and monitor the progress of the job. End 519 users may also cancel the print job by using the Job object's Cancel-Job 520 operation. The notification service is out of scope for IPP/1.0, but 521 using such a notification service, the end user is able to register for 522 and receive Printer specific and Job specific events. An end user can 523 query the status of Printer objects and can follow the progress of Job 524 objects by polling using the Get-Printer-Attributes, Get-Jobs, and Get- 525 Job-Attributes operations. 527 2. IPP Objects 529 The IPP/1.0 model introduces objects of type Printer and Job. Each type 530 of object models relevant aspects of a real-world entity such as a real 531 printer or real print job. Each object type is defined as a set of 532 possible attributes that may be supported by instances of that object 533 type. For each object (instance), the actual set of supported 534 attributes and values describe a specific implementation. The object's 535 attributes and values describe its state, capabilities, realizable 536 features, job processing functions, and default behaviors and 537 characteristics. For example, the Printer object type is defined as a 538 set of attributes that each Printer object potentially supports. In the 539 same manner, the Job object type is defined as a set of attributes that 540 are potentially supported by each Job object. 542 Each attribute included in the set of attributes defining an object type 543 is labeled as: 545 - "REQUIRED": each object MUST support the attribute. 546 - "OPTIONAL": each object MAY support the attribute. 548 There is no such similar labeling of attribute values. However, if an 549 implementation supports an attribute, it MUST support at least one of 550 the possible values for that attribute. 552 2.1 Printer Object 554 The major component of the IPP/1.0 model is the Printer object. A 555 Printer object implements the server-side of the IPP/1.0 protocol. 556 Using the protocol, end users may query the attributes of the Printer 557 object and submit print jobs to the Printer object. The actual 558 implementation components behind the Printer abstraction may take on 559 different forms and different configurations. However, the model 560 abstraction allows the details of the configuration of real components 561 to remain opaque to the end user. Section 3 describes each of the 562 Printer operations in detail. 564 The capabilities and state of a Printer object are described by its 565 attributes. Printer attributes are divided into two groups: 567 Isaacson, Powell Expires May 16, 1999 568 - "job-template" attributes: These attributes describe supported job 569 processing capabilities and defaults for the Printer object. (See 570 section 4.2) 571 - "printer-description" attributes: These attributes describe the 572 Printer object's identification, state, location, references to 573 other sources of information about the Printer object, etc. (see 574 section 4.4) 576 Since a Printer object is an abstraction of a generic document output 577 device and print service provider, a Printer object could be used to 578 represent any real or virtual device with semantics consistent with the 579 Printer object, such as a fax device, an imager, or even a CD writer. 581 Some examples of configurations supporting a Printer object include: 583 1) An output device with no spooling capabilities 584 2) An output device with a built-in spooler 585 3) A print server supporting IPP with one or more associated output 586 devices 587 3a) The associated output devices may or may not be capable of 588 spooling jobs 589 3b) The associated output devices may or may not support IPP 591 The following figures show some examples of how Printer objects can be 592 realized on top of various distributed printing configurations. The 593 embedded case below represents configurations 1 and 2. The hosted and 594 fan-out figures below represent configurations 3a and 3b. 596 Isaacson, Powell Expires May 16, 1999 597 Legend: 599 ##### indicates a Printer object which is 600 either embedded in an output device or is 601 hosted in a server. The Printer object 602 might or might not be capable of queuing/spooling. 604 any indicates any network protocol or direct 605 connect, including IPP 607 embedded printer: 608 output device 609 +---------------+ 610 O +--------+ | ########### | 611 /|\ | client |------------IPP------------># Printer # | 612 / \ +--------+ | # Object # | 613 | ########### | 614 +---------------+ 616 hosted printer: 617 +---------------+ 618 O +--------+ ########### | | 619 /|\ | client |--IPP--># Printer #-any->| output device | 620 / \ +--------+ # Object # | | 621 ########### +---------------+ 623 +---------------+ 624 fan out: | | 625 +-->| output device | 626 any/ | | 627 O +--------+ ########### / +---------------+ 628 /|\ | client |-IPP-># Printer #--* 629 / \ +--------+ # Object # \ +---------------+ 630 ########### any\ | | 631 +-->| output device | 632 | | 633 +---------------+ 635 2.2 Job Object 637 A Job object is used to model a print job. A Job object contains 638 documents. The information required to create a Job object is sent in a 639 create request from the end user via an IPP Client to the Printer 640 object. The Printer object validates the create request, and if the 641 Printer object accepts the request, the Printer object creates the new 642 Job object. Section 3 describes each of the Job operations in detail. 644 Isaacson, Powell Expires May 16, 1999 645 The characteristics and state of a Job object are described by its 646 attributes. Job attributes are grouped into two groups as follows: 648 - "job-template" attributes: These attributes can be supplied by the 649 client or end user and include job processing instructions which 650 are intended to override any Printer object defaults and/or 651 instructions embedded within the document data. (See section 4.2) 652 - "job-description" attributes: These attributes describe the Job 653 object's identification, state, size, etc. The client supplies some 654 of these attributes, and the Printer object generates others. (See 655 section 4.3) 657 An implementation MUST support at least one document per Job object. An 658 implementation MAY support multiple documents per Job object. A 659 document is either: 661 - a stream of document data in a format supported by the Printer 662 object (typically a Page Description Language - PDL), or 663 - a reference to such a stream of document data 665 In IPP/1.0, a document is not modeled as an IPP object, therefore it has 666 no object identifier or associated attributes. All job processing 667 instructions are modeled as Job object attributes. These attributes are 668 called Job Template attributes and they apply equally to all documents 669 within a Job object. 671 2.3 Object Relationships 673 IPP objects have relationships that are maintained persistently along 674 with the persistent storage of the object attributes. 676 A Printer object can represent either one or more physical output 677 devices or a logical device which "processes" jobs but never actually 678 uses a physical output device to put marks on paper. Examples of 679 logical devices include a Web page publisher or a gateway into an online 680 document archive or repository. A Printer object contains zero or more 681 Job objects. 683 A Job object is contained by exactly one Printer object, however the 684 identical document data associated with a Job object could be sent to 685 either the same or a different Printer object. In this case, a second 686 Job object would be created which would be almost identical to the first 687 Job object, however it would have new (different) Job object identifiers 688 (see section 2.4). 690 A Job object is either empty (before any documents have been added) or 691 contains one or more documents. If the contained document is a stream 692 of document data, that stream can be contained in only one document. 693 However, there can be identical copies of the stream in other documents 694 in the same or different Job objects. If the contained document is just 695 a reference to a stream of document data, other documents (in the same 696 or different Job object(s)) may contain the same reference. 698 Isaacson, Powell Expires May 16, 1999 699 2.4 Object Identity 701 All Printer and Job objects are identified by a Uniform Resource 702 Identifier (URI) [RFC2396] so that they can be persistently and 703 unambiguously referenced. The notion of a URI is a useful concept, 704 however, until the notion of URI is more stable (i.e., defined more 705 completely and deployed more widely), it is expected that the URIs used 706 for IPP objects will actually be URLs [RFC2396]. Since every URL is a 707 specialized form of a URI, even though the more generic term URI is used 708 throughout the rest of this document, its usage is intended to cover the 709 more specific notion of URL as well. 711 An administrator configures Printer objects to either support or not 712 support authentication and/or message privacy using SSL3 [SSL] (the 713 mechanism for security configuration is outside the scope of IPP/1.0). 714 In some situations, both types of connections (both authenticated and 715 unauthenticated) can be established using a single communication channel 716 that has some sort of negotiation mechanism. In other situations, 717 multiple communication channels are used, one for each type of security 718 configuration. Section 8 provides a full description of all security 719 considerations and configurations. 721 If a Printer object supports more than one communication channel, some 722 or all of those channels might support and/or require different security 723 mechanisms. In such cases, an administrator could expose the 724 simultaneous support for these multiple communication channels as 725 multiple URIs for a single Printer object where each URI represents one 726 of the communication channels to the Printer object. To support this 727 flexibility, the IPP Printer object type defines a multi-valued 728 identification attribute called the "printer-uri-supported" attribute. 729 It MUST contain at least one URI. It MAY contain more than one URI. 730 That is, every Printer object will have at least one URI that identifies 731 at least one communication channel to the Printer object, but it may 732 have more than one URI where each URI identifies a different 733 communication channel to the Printer object. The "printer-uri- 734 supported" attribute has a companion attribute, the "uri-security- 735 supported" attribute, that has the same cardinality as "printer-uri- 736 supported". The purpose of the "uri-security-supported" attribute is to 737 indicate the security mechanisms (if any) used for each URI listed in 738 "printer-uri-supported". These two attributes are fully described in 739 sections 4.4.1 and 4.4.2. 741 When a job is submitted to the Printer object via a create request, the 742 client supplies only a single Printer object URI. The client supplied 743 Printer object URI MUST be one of the values in the "printer-uri- 744 supported" Printer attribute. 746 Note: IPP/1.0 does not specify how the client obtains the client 747 supplied URI, but it is RECOMMENDED that a Printer object be registered 748 as an entry in a directory service. End-users and programs can then 749 interrogate the directory searching for Printers. Section 17 defines a 750 generic schema for Printer object entries in the directory service and 751 describes how the entry acts as a bridge to the actual IPP Printer 752 object. The entry in the directory that represents the IPP Printer 754 Isaacson, Powell Expires May 16, 1999 755 object includes the possibly many URIs for that Printer object as values 756 in one its attributes. 758 When a client submits a create request to the Printer object, the 759 Printer object validates the request and creates a new Job object. The 760 Printer object assigns the new Job object a URI which is stored in the 761 "job-uri" Job attribute. This URI is then used by clients as the target 762 for subsequent Job operations. The Printer object generates a Job URI 763 based on its configured security policy and the URI used by the client 764 in the create request. 766 For example, consider a Printer object that supports both a 767 communication channel secured by the use of SSL3 (using HTTP over SSL3 768 with an "https" schemed URI) and another open communication channel that 769 is not secured with SSL3 (using a simple "http" schemed URI). If a 770 client were to submit a job using the secure URI, the Printer object 771 would assign the new Job object a secure URI as well. If a client were 772 to submit a job using the open-channel URI, the Printer would assign the 773 new Job object an open-channel URI. 775 In addition, the Printer object also populates the Job object's "job- 776 printer-uri" attribute. This is a reference back to the Printer object 777 that created the Job object. If a client only has access to a Job 778 object's "job-uri" identifier, the client can query the Job's "job- 779 printer-uri" attribute in order to determine which Printer object 780 created the Job object. If the Printer object supports more than one 781 URI, the Printer object picks the one URI supplied by the client when 782 creating the job to build the value for and to populate the Job's "job- 783 printer-uri" attribute. 785 Allowing Job objects to have URIs allows for flexibility and 786 scalability. For example, in some implementations, the Printer object 787 might create Jobs that are processed in the same local environment as 788 the Printer object itself. In this case, the Job URI might just be a 789 composition of the Printer's URI and some unique component for the Job 790 object, such as the unique 32-bit positive integer mentioned later in 791 this paragraph. In other implementations, the Printer object might be a 792 central clearing-house for validating all Job object creation requests, 793 but the Job object itself might be created in some environment that is 794 remote from the Printer object. In this case, the Job object's URI may 795 have no physical-location relationship at all to the Printer object's 796 URI. Again, the fact that Job objects have URIs allows for flexibility 797 and scalability, however, many existing printing systems have local 798 models or interface constraints that force print jobs to be identified 799 using only a 32-bit positive integer rather than an independent URI. 800 This numeric Job ID is only unique within the context of the Printer 801 object to which the create request was originally submitted. Therefore, 802 in order to allow both types of client access to IPP Job objects (either 803 by Job URI or by numeric Job ID), when the Printer object successfully 804 processes a create request and creates a new Job object, the Printer 805 object MUST generate both a Job URI and a Job ID. The Job ID (stored in 806 the "job-id" attribute) only has meaning in the context of the Printer 807 object to which the create request was originally submitted. This 808 requirement to support both Job URIs and Job IDs allows all types of 810 Isaacson, Powell Expires May 16, 1999 811 clients to access Printer objects and Job objects no matter the local 812 constraints imposed on the client implementation. 814 In addition to identifiers, Printer objects and Job objects have names 815 ("printer-name" and "job-name"). An object name NEED NOT be unique 816 across all instances of all objects. A Printer object's name is chosen 817 and set by an administrator through some mechanism outside the scope of 818 IPP/1.0. A Job object's name is optionally chosen and supplied by the 819 IPP client submitting the job. If the client does not supply a Job 820 object name, the Printer object generates a name for the new Job object. 821 In all cases, the name only has local meaning. 823 To summarize: 825 - Each Printer object is identified with one or more URIs. The 826 Printer's "printer-uri-supported" attribute contains the URI(s). 827 - The Printer object's "uri-security-supported" attribute identifies 828 the communication channel security protocols that may or may not 829 have been configured for the various Printer object URIs (e.g., 830 'ssl3' or 'none'). 831 - Each Job object is identified with a Job URI. The Job's "job-uri" 832 attribute contains the URI. 833 - Each Job object is also identified with Job ID which is a 32-bit, 834 positive integer. The Job's "job-id" attribute contains the Job 835 ID. The Job ID is only unique within the context of the Printer 836 object which created the Job object. 837 - Each Job object has a "job-printer-uri" attribute which contains 838 the URI of the Printer object that was used to create the Job 839 object. This attribute is used to determine the Printer object 840 that created a Job object when given only the URI for the Job 841 object. This linkage is necessary to determine the languages, 842 charsets, and operations which are supported on that Job (the basis 843 for such support comes from the creating Printer object). 844 - Each Printer object has a name (which is not necessarily unique). 845 The administrator chooses and sets this name through some mechanism 846 outside the scope of IPP/1.0 itself. The Printer object's 847 "printer-name" attribute contains the name. 848 - Each Job object has a name (which is not necessarily unique). The 849 client optionally supplies this name in the create request. If the 850 client does not supply this name, the Printer object generates a 851 name for the Job object. The Job object's "job-name" attribute 852 contains the name. 854 3. IPP Operations 856 IPP objects support operations. An operation consists of a request and 857 a response. When a client communicates with an IPP object, the client 858 issues an operation request to the URI for that object. Operation 859 requests and responses have parameters that identify the operation. 860 Operations also have attributes that affect the run-time characteristics 861 of the operation (the intended target, localization information, etc.). 862 These operation-specific attributes are called operation attributes (as 863 compared to object attributes such as Printer object attributes or Job 865 Isaacson, Powell Expires May 16, 1999 866 object attributes). Each request carries along with it any operation 867 attributes, object attributes, and/or document data required to perform 868 the operation. Each request requires a response from the object. Each 869 response indicates success or failure of the operation with a status 870 code as a response parameter. The response contains any operation 871 attributes, object attributes, and/or status messages generated during 872 the execution of the operation request. 874 This section describes the semantics of the IPP operations, both 875 requests and responses, in terms of the parameters, attributes, and 876 other data associated with each operation. 878 The IPP/1.0 Printer operations are: 880 Print-Job (section 3.2.1) 881 Print-URI (section 3.2.2) 882 Validate-Job (section 3.2.3) 883 Create-Job (section 3.2.4) 884 Get-Printer-Attributes (section 3.2.5) 885 Get-Jobs (section 3.2.6) 887 The Job operations are: 889 Send-Document (section 3.3.1) 890 Send-URI (section 3.3.2) 891 Cancel-Job (section 3.3.3) 892 Get-Job-Attributes (section 3.3.4) 894 The Send-Document and Send-URI Job operations are used to add a new 895 document to an existing multi-document Job object created using the 896 Create-Job operation. 898 3.1 Common Semantics 900 All IPP operations require some common parameters and operation 901 attributes. These common elements and their semantic characteristics 902 are defined and described in more detail in the following sections. 904 3.1.1 Required Parameters 906 Every operation request contains the following REQUIRED parameters: 908 - a "version-number", 909 - an "operation-id", 910 - a "request-id", and 911 - the attributes that are REQUIRED for that type of request. 913 Every operation response contains the following REQUIRED parameters: 915 Isaacson, Powell Expires May 16, 1999 916 - a "version-number", 917 - a "status-code", 918 - the "request-id" that was supplied in the corresponding request, 919 and 920 - the attributes that are REQUIRED for that type of response. 922 The encoding and transport document [IPP-PRO] defines special rules for 923 the encoding of these parameters. All other operation elements are 924 represented using the more generic encoding rules for attributes and 925 groups of attributes. 927 3.1.2 Operation IDs and Request IDs 929 Each IPP operation request includes an identifying "operation-id" value. 930 Valid values are defined in the "operations-supported" Printer attribute 931 section (see section 4.4.13). The client specifies which operation is 932 being requested by supplying the correct "operation-id" value. 934 In addition, every invocation of an operation is identified by a 935 "request-id" value. For each request, the client chooses the "request- 936 id" which MUST be an integer (possibly unique depending on client 937 requirements) in the range from 1 to 2**31 - 1 (inclusive). This 938 "request-id" allows clients to manage multiple outstanding requests. The 939 receiving IPP object copies all 32-bits of the client-supplied "request- 940 id" attribute into the response so that the client can match the 941 response with the correct outstanding request, even if the "request-id" 942 is out of range. If the request is terminated before the complete 943 "request-id" is received, the IPP object rejects the request and returns 944 a response with a "request-id" of 0. 946 Note: In some cases, the transport protocol underneath IPP might be a 947 connection oriented protocol that would make it impossible for a client 948 to receive responses in any order other than the order in which the 949 corresponding requests were sent. In such cases, the "request-id" 950 attribute would not be essential for correct protocol operation. 951 However, in other mappings, the operation responses can come back in any 952 order. In these cases, the "request-id" would be essential. 954 3.1.3 Attributes 956 Operation requests and responses are both composed of groups of 957 attributes and/or document data. The attributes groups are: 959 - Operation Attributes: These attributes are passed in the operation 960 and affect the IPP object's behavior while processing the operation 961 request and may affect other attributes or groups of attributes. 962 Some operation attributes describe the document data associated 963 with the print job and are associated with new Job objects, however 964 most operation attributes do not persist beyond the life of the 965 operation. The description of each operation attribute includes 966 conformance statements indicating which operation attributes are 967 REQUIRED and which are OPTIONAL for an IPP object to support and 968 which attributes a client MUST supply in a request and an IPP 969 object MUST supply in a response. 971 Isaacson, Powell Expires May 16, 1999 973 - Job Template Attributes: These attributes affect the processing of 974 a job. A client OPTIONALLY supplies Job Template Attributes in a 975 create request, and the receiving object MUST be prepared to 976 receive all supported attributes. The Job object can later be 977 queried to find out what Job Template attributes were originally 978 requested in the create request, and such attributes are returned 979 in the response as Job Object Attributes. The Printer object can 980 be queried about its Job Template attributes to find out what type 981 of job processing capabilities are supported and/or what the 982 default job processing behaviors are, though such attributes are 983 returned in the response as Printer Object Attributes. The "ipp- 984 attribute-fidelity" operation attribute affects processing of all 985 client-supplied Job Template attributes (see section 16 for a full 986 description of "ipp-attribute-fidelity" and its relationship to 987 other attributes). 988 - Job Object Attributes: These attributes are returned in response to 989 a query operation directed at a Job object. 990 - Printer Object Attributes: These attributes are returned in 991 response to a query operation directed at a Printer object. 992 - Unsupported Attributes: In a create request, the client supplies a 993 set of Operation and Job Template attributes. If any of these 994 attributes or their values is unsupported by the Printer object, 995 the Printer object returns the set of unsupported attributes in the 996 response. Section 16 gives a full description of how Job Template 997 attributes supplied by the client in a create request are processed 998 by the Printer object and how unsupported attributes are returned 999 to the client. Because of extensibility, any IPP object might 1000 receive a request that contains new or unknown attributes or values 1001 for which it has no support. In such cases, the IPP object 1002 processes what it can and returns the unsupported attributes in the 1003 response. 1005 Later in this section, each operation is formally defined by identifying 1006 the allowed and expected groups of attributes for each request and 1007 response. The model identifies a specific order for each group in each 1008 request or response, but the attributes within each group may be in any 1009 order, unless specified otherwise. 1011 Each attribute specification includes the attribute's name followed by 1012 the name of its attribute syntax(es) in parenthesizes. In addition, 1013 each 'integer' attribute is followed by the allowed range in 1014 parentheses, (m:n), for values of that attribute. Each 'text' or 'name' 1015 attribute is followed by the maximum size in octets in parentheses, 1016 (size), for values of that attribute. For more details on attribute 1017 syntax notation, see the descriptions of these attributes syntaxes in 1018 section 4.1. 1020 Note: Document data included in the operation is not strictly an 1021 attribute, but it is treated as a special attribute group for ordering 1022 purposes. The only operations that support supplying the document data 1023 within an operation request are Print-Job and Send-Document. There are 1024 no operation responses that include document data. 1026 Isaacson, Powell Expires May 16, 1999 1027 Note: Some operations are REQUIRED for IPP objects to support; the 1028 others are OPTIONAL (see section 5.2.2). Therefore, before using an 1029 OPTIONAL operation, a client SHOULD first use the REQUIRED Get-Printer- 1030 Attributes operation to query the Printer's "operations-supported" 1031 attribute in order to determine which OPTIONAL Printer and Job 1032 operations are actually supported. The client SHOULD NOT use an 1033 OPTIONAL operation that is not supported. When an IPP object receives a 1034 request to perform an operation it does not support, it returns the 1035 'server-error-operation-not-supported' status code (see section 1036 14.1.5.2). An IPP object is non-conformant if it does not support a 1037 REQUIRED operation. 1039 3.1.4 Character Set and Natural Language Operation Attributes 1041 Some Job and Printer attributes have values that are text strings and 1042 names intended for human understanding rather than machine understanding 1043 (see the 'text' and 'name' attribute syntax descriptions in section 1044 4.1). The following sections describe two special Operation Attributes 1045 called "attributes-charset" and "attributes-natural-language". These 1046 attributes are always part of the Operation Attributes group. For most 1047 attribute groups, the order of the attributes within the group is not 1048 important. However, for these two attributes within the Operation 1049 Attributes group, the order is critical. The "attributes-charset" 1050 attribute MUST be the first attribute in the group and the "attributes- 1051 natural-language" attribute MUST be the second attribute in the group. 1052 In other words, these attributes MUST be supplied in every IPP request 1053 and response, they MUST come first in the group, and MUST come in the 1054 specified order. For job creation operations, the IPP Printer 1055 implementation saves these two attributes with the new Job object as Job 1056 Description attributes. For the sake of brevity in this document, these 1057 operation attribute descriptions are not repeated with every operation 1058 request and response, but have a reference back to this section instead. 1060 3.1.4.1 Request Operation Attributes 1062 The client MUST supply and the Printer object MUST support the following 1063 REQUIRED operation attributes in every IPP/1.0 operation request: 1065 "attributes-charset" (charset): 1066 This operation attribute identifies the charset (coded character 1067 set and encoding method) used by any 'text' and 'name' attributes 1068 that the client is supplying in this request. It also identifies 1069 the charset that the Printer object MUST use (if supported) for all 1070 'text' and 'name' attributes and status messages that the Printer 1071 object returns in the response to this request. See Sections 4.1.1 1072 and 4.1.2 for the specification of the 'text' and 'name' attribute 1073 syntaxes. 1075 All clients and IPP objects MUST support the 'utf-8' charset 1076 [RFC2044] and MAY support additional charsets provided that they 1077 are registered with IANA [IANA-CS]. If the Printer object does not 1078 support the client supplied charset value, the Printer object MUST 1079 reject the request, set the "attributes-charset" to 'utf-8' in the 1081 Isaacson, Powell Expires May 16, 1999 1082 response, and return the 'client-error-charset-not-supported' 1083 status code and any 'text' or 'name' attributes using the 'utf-8' 1084 charset. The Printer object MUST indicate the charset(s) supported 1085 as the values of the "charset-supported" Printer attribute (see 1086 Section 4.4.15), so that the client can query to determine which 1087 charset(s) are supported. 1089 Note to client implementers: Since IPP objects are only required to 1090 support the 'utf-8' charset, in order to maximize interoperability 1091 with multiple IPP object implementations, a client may want to 1092 supply 'utf-8' in the "attributes-charset" operation attribute, 1093 even though the client is only passing and able to present a 1094 simpler charset, such as US-ASCII or ISO-8859-1. Then the client 1095 will have to filter out (or charset convert) those characters that 1096 are returned in the response that it cannot present to its user. 1097 On the other hand, if both the client and the IPP objects also 1098 support a charset in common besides utf-8, the client may want to 1099 use that charset in order to avoid charset conversion or data loss. 1101 See the 'charset' attribute syntax description in Section 4.1.7 for 1102 the syntax and semantic interpretation of the values of this 1103 attribute and for example values. 1105 "attributes-natural-language" (naturalLanguage): 1106 This operation attribute identifies the natural language used by 1107 any 'text' and 'name' attributes that the client is supplying in 1108 this request. This attribute also identifies the natural language 1109 that the Printer object SHOULD use for all 'text' and 'name' 1110 attributes and status messages that the Printer object returns in 1111 the response to this request. 1113 There are no REQUIRED natural languages required for the Printer 1114 object to support. However, the Printer object's "generated- 1115 natural-language-supported" attribute identifies the natural 1116 languages supported by the Printer object and any contained Job 1117 objects for all text strings generated by the IPP object. A client 1118 MAY query this attribute to determine which natural language(s) are 1119 supported for generated messages. 1121 For any of the attributes for which the Printer object generates 1122 text, i.e., for the "job-state-message", "printer-state-message", 1123 and status messages (see Section 3.1.6), the Printer object MUST be 1124 able to generate these text strings in any of its supported natural 1125 languages. If the client requests a natural language that is not 1126 supported, the Printer object MUST return these generated messages 1127 in the Printer's configured natural language as specified by the 1128 Printer's "natural-language-configured" attribute" (see Section 1129 4.4.16). 1131 For other 'text' and 'name' attributes supplied by the client, 1132 authentication system, operator, system administrator, or 1133 manufacturer (i.e., for "job-originating-user-name", "printer-name" 1134 (name), "printer-location" (text), "printer-info" (text), and 1135 "printer-make-and-model" (text)), the Printer object is only 1137 Isaacson, Powell Expires May 16, 1999 1138 required to support the configured natural language of the Printer 1139 identified by the Printer object's "natural-language-configured" 1140 attribute, though support of additional natural languages for these 1141 attributes is permitted. 1143 For any 'text' or 'name' attribute in the request that is in a 1144 different natural language than the value supplied in the 1145 "attributes-natural-language" operation attribute, the client MUST 1146 use the Natural Language Override mechanism (see sections 4.1.1.2 1147 and 4.1.2.2) for each such attribute value supplied. The client 1148 MAY use the Natural Language Override mechanism redundantly, i.e., 1149 use it even when the value is in the same natural language as the 1150 value supplied in the "attributes-natural-language" operation 1151 attribute of the request. 1153 The IPP object MUST accept any natural language and any Natural 1154 Language Override, whether the IPP object supports that natural 1155 language or not (and independent of the value of the "ipp- 1156 attribute-fidelity" Operation attribute). That is the IPP object 1157 accepts all client supplied values no matter what the values are in 1158 the Printer object's "generated-natural-language-supported" 1159 attribute. That attribute, "generated-natural-language-supported", 1160 only applies to generated messages, not client supplied messages. 1161 The IPP object MUST remember that natural language for all client- 1162 supplied attributes, and when returning those attributes in 1163 response to a query, the IPP object MUST indicate that natural 1164 language. 1166 Each value whose attribute syntax type is .text. or .name. (see 1167 sections 4.1.1 and 4.1.2) has an Associated Natural-Language. This 1168 document does not specify how this association is stored in a 1169 Printer or Job object. When such a value is encoded in a request 1170 or response, the natural language is either implicit or explicit: 1172 @ In the implicit case, the value contains only the text/name 1173 value, and the language is specified by the .attributes- 1174 natural-language. operation attribute in the request or 1175 response (see sections 4.1.1.1 textWithoutLanguage and 1176 4.1.2.1 nameWithoutLanguage). 1178 @ In the explicit case (also known as the Natural-Language 1179 Override case), the value contains both the language and 1180 the text/name value (see sections 4.1.1.2 textWithLanguage 1181 and 4.1.2.2 nameWithLanguage). 1183 For example, the "job-name" attribute MAY be supplied by the client 1184 in a create request. The text value for this attribute will be in 1185 the natural language identified by the "attribute-natural-language" 1186 attribute, or if different, as identified by the Natural Language 1187 Override mechanism. If supplied, the IPP object will use the value 1188 of the "job-name" attribute to populate the Job object's "job-name" 1189 attribute. Whenever any client queries the Job object's "job-name" 1190 attribute, the IPP object returns the attribute as stored and uses 1191 the Natural Language Override mechanism to specify the natural 1193 Isaacson, Powell Expires May 16, 1999 1194 language, if it is different from that reported in the "attributes- 1195 natural-language" operation attribute of the response. The IPP 1196 object MAY use the Natural Language Override mechanism redundantly, 1197 i.e., use it even when the value is in the same natural language 1198 as the value supplied in the "attributes-natural-language" 1199 operation attribute of the response. 1201 An IPP object MUST NOT reject a request based on a supplied natural 1202 language in an "attributes-natural-language" Operation attribute or 1203 in any attribute that uses the Natural Language Override. 1205 See the 'naturalLanguage' attribute syntax description in section 1206 4.1.8 for the syntax and semantic interpretation of the values of 1207 this attribute and for example values. 1209 Clients SHOULD NOT supply 'text' or 'name' attributes that use an 1210 illegal combination of natural language and charset. For example, 1211 suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and 1212 'iso-8859-7'. Suppose also, that it supports natural languages 'en' 1213 (English), 'fr' (French), and 'el' (Greek). Although the Printer object 1214 supports the charset 'iso-8859-1' and natural language 'el', it probably 1215 does not support the combination of Greek text strings using the 'iso- 1216 8859-1' charset. The Printer object handles this apparent 1217 incompatibility differently depending on the context in which it occurs: 1219 - In a create request: If the client supplies a text or name 1220 attribute (for example, the "job-name" operation attribute) that 1221 uses an apparently incompatible combination, it is a client choice 1222 that does not affect the Printer object or its correct operation. 1223 Therefore, the Printer object simply accepts the client supplied 1224 value, stores it with the Job object, and responds back with the 1225 same combination whenever the client (or any client) queries for 1226 that attribute. 1227 -In a query-type operation, like Get-Printer-Attributes: If the 1228 client requests an apparently incompatible combination, the Printer 1229 object responds (as described in section 3.1.4.2) using the 1230 Printer's configured natural language rather than the natural 1231 language requested by the client. 1233 In either case, the Printer object does not reject the request because 1234 of the apparent incompatibility. The potential incompatible combination 1235 of charset and natural language can occur either at the global operation 1236 level or at the Natural Language Override attribute-by-attribute level. 1237 In addition, since the response always includes explicit charset and 1238 natural language information, there is never any question or ambiguity 1239 in how the client interprets the response. 1241 3.1.4.2 Response Operation Attributes 1243 The Printer object MUST supply and the client MUST support the following 1244 REQUIRED operation attributes in every IPP/1.0 operation response: 1246 Isaacson, Powell Expires May 16, 1999 1247 "attributes-charset" (charset): 1248 This operation attribute identifies the charset used by any 'text' 1249 and 'name' attributes that the Printer object is returning in this 1250 response. The value in this response MUST be the same value as the 1251 "attributes-charset" operation attribute supplied by the client in 1252 the request. If this is not possible (i.e., the charset requested 1253 is not supported), the request would have been rejected. See 1254 "attributes-charset" described in Section 3.1.4.1 above. 1256 If the Printer object supports more than just the 'utf-8' charset, 1257 the Printer object MUST be able to code convert between each of the 1258 charsets supported on a highest fidelity possible basis in order to 1259 return the 'text' and 'name' attributes in the charset requested by 1260 the client. However, some information loss MAY occur during the 1261 charset conversion depending on the charsets involved. For 1262 example, the Printer object may convert from a UTF-8 'a' to a US- 1263 ASCII 'a' (with no loss of information), from an ISO Latin 1 1264 CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' (losing the 1265 accent), or from a UTF-8 Japanese Kanji character to some ISO Latin 1266 1 error character indication such as '?', decimal code equivalent, 1267 or to the absence of a character, depending on implementation. 1269 Note: Whether an implementation that supports more than one charset 1270 stores the data in the charset supplied by the client or code 1271 converts to one of the other supported charsets, depends on 1272 implementation. The strategy should try to minimize loss of 1273 information during code conversion. On each response, such an 1274 implementation converts from its internal charset to that 1275 requested. 1277 "attributes-natural-language" (naturalLanguage): 1278 This operation attribute identifies the natural language used by 1279 any 'text' and 'name' attributes that the IPP object is returning 1280 in this response. Unlike the "attributes-charset" operation 1281 attribute, the IPP object NEED NOT return the same value as that 1282 supplied by the client in the request. The IPP object MAY return 1283 the natural language of the Job object or the Printer's configured 1284 natural language as identified by the Printer object's "natural- 1285 language-configured" attribute, rather than the natural language 1286 supplied by the client. For any 'text' or 'name' attribute or 1287 status message in the response that is in a different natural 1288 language than the value returned in the "attributes-natural- 1289 language" operation attribute, the IPP object MUST use the Natural 1290 Language Override mechanism (see sections 4.1.1.2 and 4.1.2.2) on 1291 each attribute value returned. The IPP object MAY use the Natural 1292 Language Override mechanism redundantly, i.e., use it even when the 1293 value is in the same natural language as the value supplied in the 1294 "attributes-natural-language" operation attribute of the response. 1296 3.1.5 Operation Targets 1298 All IPP operations are directed at IPP objects. For Printer operations, 1299 the operation is always directed at a Printer object using one of its 1300 URIs (i.e., one of the values in the Printer object's "printer-uri- 1302 Isaacson, Powell Expires May 16, 1999 1303 supported" attribute). Even if the Printer object supports more than 1304 one URI, the client supplies only one URI as the target of the 1305 operation. The client identifies the target object by supplying the 1306 correct URI in the "printer-uri (uri)" operation attribute. 1308 For Job operations, the operation is directed at either: 1310 - The Job object itself using the Job object's URI. In this case, 1311 the client identifies the target object by supplying the correct 1312 URI in the "job-uri (uri)" operation attribute. 1313 - The Printer object that created the Job object using both the 1314 Printer objects URI and the Job object's Job ID. Since the Printer 1315 object that created the Job object generated the Job ID, it MUST be 1316 able to correctly associate the client supplied Job ID with the 1317 correct Job object. The client supplies the Printer object's URI 1318 in the "printer-uri (uri)" operation attribute and the Job object's 1319 Job ID in the "job-id (integer(1:MAX))" operation attribute. 1321 If the operation is directed at the Job object directly using the Job 1322 object's URI, the client MUST NOT include the redundant "job-id" 1323 operation attribute. 1325 The operation target attributes are REQUIRED operation attributes that 1326 MUST be included in every operation request. Like the charset and 1327 natural language attributes (see section 3.1.4), the operation target 1328 attributes are specially ordered operation attributes. In all cases, 1329 the operation target attributes immediately follow the "attributes- 1330 charset" and "attributes-natural-language" attributes within the 1331 operation attribute group, however the specific ordering rules are: 1333 - In the case where there is only one operation target attribute 1334 (i.e., either only the "printer-uri" attribute or only the "job- 1335 uri" attribute), that attribute MUST be the third attribute in the 1336 operation attributes group. 1337 - In the case where Job operations use two operation target 1338 attributes (i.e., the "printer-uri" and "job-id" attributes), the 1339 "printer-uri" attribute MUST be the third attribute and the "job- 1340 id" attribute MUST be the fourth attribute. 1342 In all cases, the target URIs contained within the body of IPP operation 1343 requests and responses must be in absolute format rather than relative 1344 format (a relative URL identifies a resource with the scope of the HTTP 1345 server, but does not include scheme, host or port). 1347 The following rules apply to the use of port numbers in URIs that 1348 identify IPP objects: 1350 1. If the URI scheme allows the port number to be explicitly included 1351 in the URI string, and a port number is specified within the URI, 1352 then that port number MUST be used by the client to contact the IPP 1353 object. 1355 2. If the URI scheme allows the port number to be explicitly included 1356 in the URI string, and a port number is not specified within the 1358 Isaacson, Powell Expires May 16, 1999 1359 URI, then default port number implied by that URI scheme MUST be 1360 used by the client to contact the IPP object. 1362 3. If the URI scheme does not allow an explicit port number to be 1363 specified within the URI, then the default port number implied by 1364 that URI MUST be used by the client to contact the IPP object. 1366 Note: The IPP encoding and transport document [IPP-PRO] shows a mapping 1367 of IPP onto HTTP/1.1 and defines a new default port number for using IPP 1368 over HTTP/1.1. 1370 3.1.6 Operation Status Codes and Messages 1372 Every operation response includes a REQUIRED "status-code" parameter and 1373 an OPTIONAL "status-message" operation attribute. The "status-code" 1374 provides information on the processing of a request. A "status-message" 1375 attribute provides a short textual description of the status of the 1376 operation. The status code is intended for use by automata, and the 1377 status message is intended for the human end user. If a response does 1378 include a "status-message" attribute, an IPP client NEED NOT examine or 1379 display the message, however it SHOULD do so in some implementation 1380 specific manner. 1382 The "status-code" value is a numeric value that has semantic meaning. 1383 The "status-code" syntax is similar to a "type2 enum" (see section 4.1 1384 on "Attribute Syntaxes") except that values can range only from 0x0000 1385 to 0x7FFF. Section 14 describes the status codes, assigns the numeric 1386 values, and suggests a corresponding status message for each status 1387 code. The "status-message" attribute's syntax is "text(255)". A client 1388 implementation of IPP SHOULD convert status code values into any 1389 localized message that has semantic meaning to the end user. 1391 If the Printer object supports the "status-message" operation attribute, 1392 the Printer object MUST be able to generate this message in any of the 1393 natural languages identified by the Printer object's "generated-natural- 1394 language-supported" attribute (see the "attributes-natural-language" 1395 operation attribute specified in section 3.1.4.1). As described in 1396 section 3.1.4.1 for any returned 'text' attribute, if there is a choice 1397 for generating this message, the Printer object uses the natural 1398 language indicated by the value of the "attributes-natural-language" in 1399 the client request if supported, otherwise the Printer object uses the 1400 value in the Printer object's own "natural-language-configured" 1401 attribute. If the Printer object supports the "status-message" 1402 operation attribute, it SHOULD use the REQUIRED 'utf-8' charset to 1403 return a status message for the following error status codes (see 1404 section 14): 'client-error-bad-request', 'client-error-charset-not- 1405 supported', 'server-error-internal-error', 'server-error-operation-not- 1406 supported', and 'server-error-version-not-supported'. In this case, it 1407 MUST set the value of the "attributes-charset" operation attribute to 1408 'utf-8' in the error response. 1410 Isaacson, Powell Expires May 16, 1999 1411 3.1.7 Versions 1413 Each operation request and response carries with it a "version-number" 1414 parameter. Each value of the "version-number" is in the form "X.Y" 1415 where X is the major version number and Y is the minor version number. 1416 By including a version number in the client request, it allows the 1417 client to identify which version of IPP it is interested in using. If 1418 the IPP object does not support that version, the object responds with a 1419 status code of 'server-error-version-not-supported' along with the 1420 closest version number that is supported (see section 14.1.5.4). 1422 There is no version negotiation per se. However, if after receiving a 1423 'server-error-version-not-supported' status code from an IPP object, 1424 there is nothing that prevents a client from trying again with a 1425 different version number. In order to conform to IPP/1.0, an 1426 implementation MUST support at least version '1.0'. 1428 There is only one notion of "version number" that covers both IPP Model 1429 and IPP Protocol changes. Thus the version number MUST change when 1430 introducing a new version of the Model and Semantics document [IPP-MOD] 1431 or a new version of the Encoding and Transport document [IPP-PRO]. 1433 Changes to the major version number indicate structural or syntactic 1434 changes that make it impossible for older version of IPP clients and 1435 Printer objects to correctly parse and process the new or changed 1436 attributes, operations and responses. If the major version number 1437 changes, the minor version numbers is set to zero. As an example, 1438 adding the "ipp-attribute-fidelity" attribute (if it had not been part 1439 of version '1.0'), would have required a change to the major version 1440 number. Items that might affect the changing of the major version 1441 number include any changes to the Model and Semantics document [IPP-MOD] 1442 or the Encoding and Transport [IPP-PRO] itself, such as: 1444 - reordering of ordered attributes or attribute sets 1445 - changes to the syntax of existing attributes 1446 - changing Operation or Job Template attributes from OPTIONAL to 1447 REQUIRED and vice versa 1448 - adding REQUIRED (for an IPP object to support) operation attributes 1449 - adding REQUIRED (for an IPP object to support) operation attribute 1450 groups 1451 - adding values to existing operation attributes 1452 - adding REQUIRED operations 1454 Changes to the minor version number indicate the addition of new 1455 features, attributes and attribute values that may not be understood by 1456 all IPP objects, but which can be ignored if not understood. Items that 1457 might affect the changing of the minor version number include any 1458 changes to the model objects and attributes but not the encoding and 1459 transport rules [IPP-PRO] (except adding attribute syntaxes). Examples 1460 of such changes are: 1462 - grouping all extensions not included in a previous version into a 1463 new version 1464 - adding new attribute values 1466 Isaacson, Powell Expires May 16, 1999 1467 - adding new object attributes 1468 - adding OPTIONAL (for an IPP object to support) operation attributes 1469 (i.e., those attributes that an IPP object can ignore without 1470 confusing clients) 1471 - adding OPTIONAL (for an IPP object to support) operation attribute 1472 groups (i.e., those attributes that an IPP object can ignore 1473 without confusing clients) 1474 - adding new attribute syntaxes 1475 - adding OPTIONAL operations 1476 - changing Job Description attributes or Printer Description 1477 attributes from OPTIONAL to REQUIRED or vice versa. 1479 The encoding of the "operation-id", the "version-number", the "status- 1480 code", and the "request-id" MUST NOT change over any version number 1481 (either major or minor). This rule guarantees that all future versions 1482 will be backwards compatible with all previous versions (at least for 1483 checking the "operation-id", the "version-number", and the "request- 1484 id"). In addition, any protocol elements (attributes, error codes, 1485 tags, etc.) that are not carried forward from one version to the next 1486 are deprecated so that they can never be reused with new semantics. 1488 Implementations that support a certain major version NEED NOT support 1489 ALL previous versions. As each new major version is defined (through 1490 the release of a new specification), that major version will specify 1491 which previous major versions MUST be supported in compliant 1492 implementations. 1494 3.1.8 Job Creation Operations 1496 In order to "submit a print job" and create a new Job object, a client 1497 issues a create request. A create request is any one of following three 1498 operation requests: 1500 - The Print-Job Request: A client that wants to submit a print job 1501 with only a single document uses the Print-Job operation. The 1502 operation allows for the client to "push" the document data to the 1503 Printer object by including the document data in the request 1504 itself. 1506 - The Print-URI Request: A client that wants to submit a print job 1507 with only a single document (where the Printer object "pulls" the 1508 document data instead of the client "pushing" the data to the 1509 Printer object) uses the Print-URI operation. In this case, the 1510 client includes in the request only a URI reference to the document 1511 data (not the document data itself). 1513 - The Create-Job Request: A client that wants to submit a print job 1514 with multiple documents uses the Create-Job operation. This 1515 operation is followed by an arbitrary number of Send-Document 1516 and/or Send-URI operations (each creating another document for the 1517 newly create Job object). The Send-Document operation includes the 1518 document data in the request (the client "pushes" the document data 1519 to the printer), and the Send-URI operation includes only a URI 1521 Isaacson, Powell Expires May 16, 1999 1522 reference to the document data in the request (the Printer "pulls" 1523 the document data from the referenced location). The last Send- 1524 Document or Send-URI request for a given Job object includes a 1525 "last-document" operation attribute set to 'true' indicating that 1526 this is the last request. 1528 Throughout this model specification, the term "create request" is used 1529 to refer to any of these three operation requests. 1531 A Create-Job operation followed by only one Send-Document operation is 1532 semantically equivalent to a Print-Job operation, however, for 1533 performance reasons, the client SHOULD use the Print-Job operation for 1534 all single document jobs. Also, Print-Job is a REQUIRED operation (all 1535 implementations MUST support it) whereas Create-Job is an OPTIONAL 1536 operation, hence some implementations might not support it. 1538 Job submission time is the point in time when a client issues a create 1539 request. The initial state of every Job object is the 'pending' or 1540 'pending-held' state. Later, the Printer object begins processing the 1541 print job. At this point in time, the Job object's state moves to 1542 'processing'. This is known as job processing time. There are 1543 validation checks that must be done at job submission time and others 1544 that must be performed at job processing time. 1546 At job submission time and at the time a Validate-Job operation is 1547 received, the Printer MUST do the following: 1549 1. Process the client supplied attributes and either accept or reject 1550 the request 1551 2. Validate the syntax of and support for the scheme of any client 1552 supplied URI 1554 At job submission time the Printer object MUST validate whether or not 1555 the supplied attributes, attribute syntaxes, and values are supported by 1556 matching them with the Printer object's corresponding "xxx-supported" 1557 attributes. See section 3.2.1.2 for details. [IPP-IIG] presents 1558 suggested steps for an IPP object to either accept or reject any request 1559 and additional steps for processing create requests. 1561 At job submission time the Printer object NEED NOT perform the 1562 validation checks reserved for job processing time such as: 1564 1. Validating the document data 1565 2. Validating the actual contents of any client supplied URI (resolve 1566 the reference and follow the link to the document data) 1568 At job submission time, these additional job processing time validation 1569 checks are essentially useless, since they require actually parsing and 1570 interpreting the document data, are not guaranteed to be 100% accurate, 1571 and MUST be done, yet again, at job processing time. Also, in the case 1572 of a URI, checking for availability at job submission time does not 1573 guarantee availability at job processing time. In addition, at job 1574 processing time, the Printer object might discover any of the following 1575 conditions that were not detectable at job submission time: 1577 Isaacson, Powell Expires May 16, 1999 1578 - runtime errors in the document data, 1579 - nested document data that is in an unsupported format, 1580 - the URI reference is no longer valid (i.e., the server hosting the 1581 document might be down), or 1582 - any other job processing error 1584 At job processing time, since the Printer object has already responded 1585 with a successful status code in the response to the create request, if 1586 the Printer object detects an error, the Printer object is unable to 1587 inform the end user of the error with an operation status code. In 1588 this case, the Printer, depending on the error, can set the "job-state", 1589 "job-state-reasons", or "job-state-message" attributes to the 1590 appropriate value(s) so that later queries can report the correct job 1591 status. 1593 Note: Asynchronous notification of events is outside the scope of 1594 IPP/1.0. 1596 3.2 Printer Operations 1598 All Printer operations are directed at Printer objects. A client MUST 1599 always supply the "printer-uri" operation attribute in order to identify 1600 the correct target of the operation. 1602 3.2.1 Print-Job Operation 1604 This REQUIRED operation allows a client to submit a print job with only 1605 one document and supply the document data (rather than just a reference 1606 to the data). See Section 16 for the suggested steps for processing 1607 create operations and their Operation and Job Template attributes. 1609 3.2.1.1 Print-Job Request 1611 The following groups of attributes are supplied as part of the Print-Job 1612 Request: 1614 Group 1: Operation Attributes 1616 Natural Language and Character Set: 1617 The "attributes-charset" and "attributes-natural-language" 1618 attributes as described in section 3.1.4.1. The Printer object 1619 MUST copy these values to the corresponding Job Description 1620 attributes described in sections 4.3.23 and 4.3.24. 1622 Target: 1623 The "printer-uri" (uri) operation attribute which is the target for 1624 this operation as described in section 3.1.5. 1626 Requesting User Name: 1627 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 1628 by the client as described in section 8.3. 1630 Isaacson, Powell Expires May 16, 1999 1632 "job-name" (name(MAX)): 1633 The client OPTIONALLY supplies this attribute. The Printer object 1634 MUST support this attribute. It contains the client supplied Job 1635 name. If this attribute is supplied by the client, its value is 1636 used for the "job-name" attribute of the newly created Job object. 1637 The client MAY automatically include any information that will help 1638 the end-user distinguish amongst his/her jobs, such as the name of 1639 the application program along with information from the document, 1640 such as the document name, document subject, or source file name. 1641 If this attribute is not supplied by the client, the Printer 1642 generates a name to use in the "job-name" attribute of the newly 1643 created Job object (see Section 4.3.5). 1645 "ipp-attribute-fidelity" (boolean): 1646 The client OPTIONALLY supplies this attribute. The Printer object 1647 MUST support this attribute. The value 'true' indicates that total 1648 fidelity to client supplied Job Template attributes and values is 1649 required, else the Printer object MUST reject the Print-Job 1650 request. The value 'false' indicates that a reasonable attempt to 1651 print the Job object is acceptable and the Printer object MUST 1652 accept the Print-job request. If not supplied, the Printer object 1653 assumes the value is 'false'. All Printer objects MUST support 1654 both types of job processing. See section 16 for a full 1655 description of "ipp-attribute-fidelity" and its relationship to 1656 other attributes, especially the Printer object's "pdl-override- 1657 supported" attribute. 1659 "document-name" (name(MAX)): 1660 The client OPTIONALLY supplies this attribute. The Printer object 1661 MUST support this attribute. It contains the client supplied 1662 document name. The document name MAY be different than the Job 1663 name. Typically, the client software automatically supplies the 1664 document name on behalf of the end user by using a file name or an 1665 application generated name. If this attribute is supplied, its 1666 value can be used in a manner defined by each implementation. 1667 Examples include: printed along with the Job (job start sheet, page 1668 adornments, etc.), used by accounting or resource tracking 1669 management tools, or even stored along with the document as a 1670 document level attribute. IPP/1.0 does not support the concept of 1671 document level attributes. 1673 "document-format" (mimeMediaType) : 1674 The client OPTIONALLY supplies this attribute. The Printer object 1675 MUST support this attribute. The value of this attribute 1676 identifies the format of the supplied document data. If the client 1677 does not supply this attribute, the Printer object assumes that the 1678 document data is in the format defined by the Printer object's 1679 "document-format-default" attribute. If the client supplies this 1680 attribute, but the value is not supported by the Printer object, 1681 i.e., the value is not one of the values of the Printer object's 1682 "document-format-supported" attribute, the Printer object MUST 1683 reject the request and return the 'client-error-document-format- 1684 not-supported' status code. 1686 Isaacson, Powell Expires May 16, 1999 1688 "document-natural-language" (naturalLanguage): 1689 The client OPTIONALLY supplies this attribute. The Printer object 1690 OPTIONALLY supports this attribute. This attribute specifies the 1691 natural language of the document for those document-formats that 1692 require a specification of the natural language in order to image 1693 the document unambiguously. There are no particular values required 1694 for the Printer object to support. 1696 "compression" (type3 keyword) 1697 The client OPTIONALLY supplies this attribute. The Printer object 1698 OPTIONALLY supports this attribute and the "compression-supported" 1699 attribute (see section 4.4.29). The client supplied "compression" 1700 operation attribute identifies the compression algorithm used on 1701 the document data. If the client omits this attribute, the Printer 1702 object MUST assume that the data is not compressed. If the client 1703 supplies the attribute and the Printer object supports the 1704 attribute, the Printer object uses the corresponding decompression 1705 algorithm on the document data. If the client supplies this 1706 attribute, but the value is not supported by the Printer object, 1707 i.e., the value is not one of the values of the Printer object's 1708 "compression-supported" attribute, the Printer object MUST copy the 1709 attribute and its value to the Unsupported Attributes response 1710 group, reject the request, and return the 'client-error-attributes- 1711 or-values-not-supported' status code. 1713 "job-k-octets" (integer(0:MAX)) 1714 The client OPTIONALLY supplies this attribute. The Printer object 1715 OPTIONALLY supports this attribute and the "job-k-octets-supported" 1716 attribute (see section 4.4.30). The client supplied "job-k-octets" 1717 operation attribute identifies the total size of the document(s) in 1718 K octets being submitted (see section 4.3.17 for the complete 1719 semantics). If the client supplies the attribute and the Printer 1720 object supports the attribute, the value of the attribute is used 1721 to populate the Job object's "job-k-octets" Job Description 1722 attribute. 1724 Note: For this attribute and the following two attributes ("job- 1725 impressions", and "job-media-sheets"), if the client supplies the 1726 attribute, but the Printer object does not support the attribute, 1727 the Printer object ignores the client-supplied value. If the 1728 client supplies the attribute and the Printer supports the 1729 attribute, and the value is within the range of the corresponding 1730 Printer object's "xxx-supported" attribute, the Printer object MUST 1731 use the value to populate the Job object's "xxx" attribute. If the 1732 client supplies the attribute and the Printer supports the 1733 attribute, but the value is outside the range of the corresponding 1734 Printer object's "xxx-supported" attribute, the Printer object MUST 1735 copy the attribute and its value to the Unsupported Attributes 1736 response group, reject the request, and return the 'client-error- 1737 attributes-or-values-not-supported' status code. If the client 1738 does not supply the attribute, the Printer object MAY choose to 1739 populate the corresponding Job object attribute depending on 1740 whether the Printer object supports the attribute and is able to 1741 calculate or discern the correct value. 1743 Isaacson, Powell Expires May 16, 1999 1745 "job-impressions" (integer(0:MAX)) 1746 The client OPTIONALLY supplies this attribute. The Printer object 1747 OPTIONALLY supports this attribute and the "job-impressions- 1748 supported" attribute (see section 4.4.31). The client supplied 1749 "job-impressions" operation attribute identifies the total size in 1750 number of impressions of the document(s) being submitted (see 1751 section 4.3.18 for the complete semantics). 1753 See note under "job-k-octets". 1755 "job-media-sheets" (integer(0:MAX)) 1756 The client OPTIONALLY supplies this attribute. The Printer object 1757 OPTIONALLY supports this attribute and the "job-media-sheets- 1758 supported" attribute (see section 4.4.32). The client supplied 1759 "job-media-sheets" operation attribute identifies the total number 1760 of media sheets to be produced for this job (see section 4.3.19 for 1761 the complete semantics). 1763 See note under "job-k-octets". 1765 Group 2: Job Template Attributes 1767 The client OPTIONALLY supplies a set of Job Template attributes as 1768 defined in section 4.2. If the client is not supplying any Job 1769 Template attributes in the request, the client SHOULD omit Group 2 1770 rather than sending an empty group. However, a Printer object MUST 1771 be able to accept an empty group. 1773 Group 3: Document Content 1775 The client MUST supply the document data to be processed. 1777 Note: In addition to the MANDATORY parameters required for every 1778 operation request, the simplest Print-Job Request consists of just the 1779 "attributes-charset" and "attributes-natural-language" operation 1780 attributes; the "printer-uri" target operation attribute; the Document 1781 Content and nothing else. In this simple case, the Printer object: 1783 - creates a new Job object (the Job object contains a single 1784 document), 1785 - stores a generated Job name in the "job-name" attribute in the 1786 natural language and charset requested (see Section 3.1.4.1) (if 1787 those are supported, otherwise using the Printer object's default 1788 natural language and charset), and 1789 - at job processing time, uses its corresponding default value 1790 attributes for the supported Job Template attributes that were not 1791 supplied by the client as IPP attribute or embedded instructions in 1792 the document data. 1794 Isaacson, Powell Expires May 16, 1999 1796 3.2.1.2 Print-Job Response 1798 The Printer object MUST return to the client the following sets of 1799 attributes as part of the Print-Job Response: 1801 Group 1: Operation Attributes 1803 Status Message: 1804 In addition to the REQUIRED status code returned in every response, 1805 the response OPTIONALLY includes a "status-message" (text) 1806 operation attribute as described in sections 14 and 3.1.6. If the 1807 client supplies unsupported or conflicting Job Template attributes 1808 or values, the Printer object MUST reject or accept the Print-Job 1809 request depending on the whether the client supplied a 'true' or 1810 'false' value for the "ipp-attribute-fidelity" operation attribute. 1811 See the Implementer's Guide [IPP-IIG] for a complete description of 1812 the suggested steps for processing a create request. 1814 Natural Language and Character Set: 1815 The "attributes-charset" and "attributes-natural-language" 1816 attributes as described in section 3.1.4.2. 1818 Group 2: Unsupported Attributes 1820 This is a set of Operation and Job Template attributes supplied by 1821 the client (in the request) that are not supported by the Printer 1822 object or that conflict with one another (see the Implementer's 1823 Guide [IPP-IIG]). If the Printer object is not returning any 1824 Unsupported Attributes in the response, the Printer object SHOULD 1825 omit Group 2 rather than sending an empty group. However, a client 1826 MUST be able to accept an empty group. 1828 Unsupported attributes fall into three categories: 1830 1. The Printer object does not support the supplied attribute (no 1831 matter what the attribute syntax or value). 1832 2. The Printer object does support the attribute, but does not 1833 support some or all of the particular attribute syntaxes or 1834 values supplied by the client (i.e., the Printer object does 1835 not have those attribute syntaxes or values in its 1836 corresponding "xxx-supported" attribute). 1837 3. The Printer object does support the attributes and values 1838 supplied, but the particular values are in conflict with one 1839 another, because they violate a constraint, such as not being 1840 able to staple transparencies. 1842 In the case of an unsupported attribute name, the Printer object 1843 returns the client-supplied attribute with a substituted "out-of- 1844 band" value of 'unsupported' indicating no support for the 1845 attribute itself (see the beginning of section 4.1). 1847 In the case of a supported attribute with one or more unsupported 1848 attribute syntaxes or values, the Printer object simply returns the 1849 client-supplied attribute with the unsupported attribute syntaxes 1851 Isaacson, Powell Expires May 16, 1999 1852 or values as supplied by the client. This indicates support for 1853 the attribute, but no support for that particular attribute syntax 1854 or value. If the client supplies a multi-valued attribute with 1855 more than one value and the Printer object supports the attribute 1856 but only supports a subset of the client-supplied attribute 1857 syntaxes or values, the Printer object MUST return only those 1858 attribute syntaxes or values that are unsupported. 1860 In the case of two (or more) supported attribute values that are in 1861 conflict with one another (although each is supported 1862 independently, the values conflict when requested together within 1863 the same job), the Printer object MUST return all the values that 1864 it ignores or substitutes to resolve the conflict, but not any of 1865 the values that it is still using. The choice for exactly how to 1866 resolve the conflict is implementation dependent. See The 1867 Implementer's Guide [IPP-IIG] for an example. 1869 In these three cases, the value of the "ipp-attribute-fidelity" 1870 supplied by the client does not affect what the Printer object 1871 returns. The value of "ipp-attribute-fidelity" only affects 1872 whether the Print-Job operation is accepted or rejected. If the 1873 job is accepted, the client may query the job using the Get-Job- 1874 Attributes operation requesting the unsupported attributes that 1875 were returned in the create response to see which attributes were 1876 ignored (not stored on the Job object) and which attributes were 1877 stored with other (substituted) values. 1879 Group 3: Job Object Attributes 1881 "job-uri" (uri): 1882 The Printer object MUST return the Job object's URI by returning 1883 the contents of the REQUIRED "job-uri" Job object attribute. The 1884 client uses the Job object's URI when directing operations at the 1885 Job object. The Printer object always uses its configured security 1886 policy when creating the new URI. However, if the Printer object 1887 supports more than one URI, the Printer object also uses 1888 information about which URI was used in the Print-Job Request to 1889 generated the new URI so that the new URI references the correct 1890 access channel. In other words, if the Print-Job Request comes in 1891 over a secure channel, the Printer object MUST generate a Job URI 1892 that uses the secure channel as well. 1894 "job-id" (integer(1:MAX)): 1895 The Printer object MUST return the Job object's Job ID by returning 1896 the REQUIRED "job-id" Job object attribute. The client uses this 1897 "job-id" attribute in conjunction with the "printer-uri" attribute 1898 used in the Print-Job Request when directing Job operations at the 1899 Printer object. 1901 "job-state": 1902 The Printer object MUST return the Job object's REQUIRED "job- 1903 state" attribute. The value of this attribute (along with the value 1904 of the next attribute "job-state-reasons") is taken from a 1905 "snapshot" of the new Job object at some meaningful point in time 1907 Isaacson, Powell Expires May 16, 1999 1908 (implementation defined) between when the Printer object receives 1909 the Print-Job Request and when the Printer object returns the 1910 response. 1912 "job-state-reasons": 1913 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1914 "job-state-reasons" attribute. If the Printer object supports this 1915 attribute then it MUST be returned in the response. If this 1916 attribute is not returned in the response, the client can assume 1917 that the "job-state-reasons" attribute is not supported and will 1918 not be returned in a subsequent Job object query. 1920 "job-state-message": 1921 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1922 "job-state-message" attribute. If the Printer object supports this 1923 attribute then it MUST be returned in the response. If this 1924 attribute is not returned in the response, the client can assume 1925 that the "job-state-message" attribute is not supported and will 1926 not be returned in a subsequent Job object query. 1928 "number-of-intervening-jobs": 1929 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1930 "number-of-intervening-jobs" attribute. If the Printer object 1931 supports this attribute then it MUST be returned in the response. 1932 If this attribute is not returned in the response, the client can 1933 assume that the "number-of-intervening-jobs" attribute is not 1934 supported and will not be returned in a subsequent Job object 1935 query. 1937 Note: Since any printer state information which affects a job's 1938 state is reflected in the "job-state" and "job-state-reasons" 1939 attributes, it is sufficient to return only these attributes and no 1940 specific printer status attributes. 1942 Note: In addition to the MANDATORY parameters required for every 1943 operation response, the simplest response consists of the just the 1944 "attributes-charset" and "attributes-natural-language" operation 1945 attributes and the "job-uri", "job-id", and "job-state" Job Object 1946 Attributes. In this simplest case, the status code is "successful-ok" 1947 and there is no "status-message" operation attribute. 1949 3.2.2 Print-URI Operation 1951 This OPTIONAL operation is identical to the Print-Job operation (section 1952 3.2.1) except that a client supplies a URI reference to the document 1953 data using the "document-uri" (uri) operation attribute (in Group 1) 1954 rather than including the document data itself. Before returning the 1955 response, the Printer MUST validate that the Printer supports the 1956 retrieval method (e.g., http, ftp, etc.) implied by the URI, and MUST 1957 check for valid URI syntax. If the client-supplied URI scheme is not 1958 supported, i.e. the value is not in the Printer object's "referenced- 1959 uri-scheme-supported" attribute, the Printer object MUST reject the 1960 request and return the 'client-error-uri-scheme-not-supported' status 1962 Isaacson, Powell Expires May 16, 1999 1963 code. See The Implementer's Guide [IPP-IIG] for suggested additional 1964 checks. The Printer NEED NOT follow the reference and validate the 1965 contents of the reference. 1967 If the Printer object supports this operation, it MUST support the 1968 "reference-uri-schemes-supported" Printer attribute (see section 1969 4.4.24). 1971 It is up to the IPP object to interpret the URI and subsequently "pull" 1972 the document from the source referenced by the URI string. 1974 3.2.3 Validate-Job Operation 1976 This REQUIRED operation is similar to the Print-Job operation (section 1977 3.2.1) except that a client supplies no document data and the Printer 1978 allocates no resources (i.e., it does not create a new Job object). 1979 This operation is used only to verify capabilities of a printer object 1980 against whatever attributes are supplied by the client in the Validate- 1981 Job request. By using the Validate-Job operation a client can validate 1982 that an identical Print-Job operation (with the document data) would be 1983 accepted. The Validate-Job operation also performs the same security 1984 negotiation as the Print-Job operation (see section 8), so that a client 1985 can check that the client and Printer object security requirements can 1986 be met before performing a Print-Job operation. 1988 Note: The Validate-Job operation does not accept a "document-uri" 1989 attribute in order to allow a client to check that the same Print-URI 1990 operation will be accepted, since the client doesn't send the data with 1991 the Print-URI operation. The client SHOULD just issue the Print-URI 1992 request. 1994 The Printer object returns the same status codes, Operation Attributes 1995 (Group 1) and Unsupported Attributes (Group 2) as the Print-Job 1996 operation. However, no Job Object Attributes (Group 3) are returned, 1997 since no Job object is created. 1999 3.2.4 Create-Job Operation 2001 This OPTIONAL operation is similar to the Print-Job operation (section 2002 3.2.1) except that in the Create-Job request, a client does not supply 2003 document data or any reference to document data. Also, the client does 2004 not supply any of the "document-name", "document-format", "compression", 2005 or "document-natural-language" operation attributes. This operation is 2006 followed by one or more Send-Document or Send-URI operations. In each 2007 of those operation requests, the client OPTIONALLY supplies the 2008 "document-name", "document-format", and "document-natural-language" 2009 attributes for each document in the multi-document Job object. 2011 If a Printer object supports the Create-Job operation, it MUST also 2012 support the Send-Document operation and also MAY support the Send-URI 2013 operation. 2015 Isaacson, Powell Expires May 16, 1999 2016 If the Printer object supports this operation, it MUST support the 2017 "multiple-operation-time-out" Printer attribute (see section 4.4.28). 2019 In addition to the Print-Job status codes in the following additional 2020 error status codes not applicable to Print-Job MAY be returned: 2022 3.2.5 Get-Printer-Attributes Operation 2024 This REQUIRED operation allows a client to request the values of the 2025 attributes of a Printer object. In the request, the client supplies 2026 the set of Printer attribute names and/or attribute group names in which 2027 the requester is interested. In the response, the Printer object 2028 returns a corresponding attribute set with the appropriate attribute 2029 values filled in. 2031 For Printer objects, the possible names of attribute groups are: 2033 - 'job-template': all of the Job Template attributes that apply to a 2034 Printer object (the last two columns of the table in Section 4.2). 2035 - 'printer-description': the attributes specified in Section 4.4. 2036 - 'all': the special group 'all' that includes all supported 2037 attributes. 2039 Since a client MAY request specific attributes or named groups, there is 2040 a potential that there is some overlap. For example, if a client 2041 requests, 'printer-name' and 'all', the client is actually requesting 2042 the "printer-name" attribute twice: once by naming it explicitly, and 2043 once by inclusion in the 'all' group. In such cases, the Printer object 2044 NEED NOT return each attribute only once in the response even if it is 2045 requested multiple times. The client SHOULD NOT request the same 2046 attribute in multiple ways. 2048 It is NOT REQUIRED that a Printer object support all attributes 2049 belonging to a group (since some attributes are OPTIONAL). However, it 2050 is REQUIRED that each Printer object support all group names. 2052 3.2.5.1 Get-Printer-Attributes Request 2054 The following sets of attributes are part of the Get-Printer-Attributes 2055 Request: 2057 Group 1: Operation Attributes 2059 Natural Language and Character Set: 2060 The "attributes-charset" and "attributes-natural-language" 2061 attributes as described in section 3.1.4.1. 2063 Target: 2064 The "printer-uri" (uri) operation attribute which is the target for 2065 this operation as described in section 3.1.5. 2067 Isaacson, Powell Expires May 16, 1999 2069 Requesting User Name: 2070 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2071 by the client as described in section 8.3. 2073 "requested-attributes" (1setOf keyword) : 2074 The client OPTIONALLY supplies a set of attribute names and/or 2075 attribute group names in whose values the requester is interested. 2076 The Printer object MUST support this attribute. If the client 2077 omits this attribute, the Printer MUST respond as if this attribute 2078 had been supplied with a value of 'all'. 2080 "document-format" (mimeMediaType) : 2081 The client OPTIONALLY supplies this attribute. The Printer object 2082 MUST support this attribute. This attribute is useful for a 2083 Printer object to determine the set of supported attribute values 2084 that relate to the requested document format. The Printer object 2085 MUST return the attributes and values that it uses to validate a 2086 job on a create or Validate-Job operation in which this document 2087 format is supplied. The Printer object SHOULD return only (1) those 2088 attributes that are supported for the specified format and (2) the 2089 attribute values that are supported for the specified document 2090 format. By specifying the document format, the client can get the 2091 Printer object to eliminate the attributes and values that are not 2092 supported for a specific document format. For example, a Printer 2093 object might have multiple interpreters to support both 2094 'application/postscript' (for PostScript) and 'text/plain' (for 2095 text) documents. However, for only one of those interpreters might 2096 the Printer object be able to support "number-up" with values of 2097 '1', '2', and '4'. For the other interpreter it might be able to 2098 only support "number-up" with a value of '1'. Thus a client can use 2099 the Get-Printer-Attributes operation to obtain the attributes and 2100 values that will be used to accept/reject a create job operation. 2102 If the Printer object does not distinguish between different sets 2103 of supported values for each different document format when 2104 validating jobs in the create and Validate-Job operations, it MUST 2105 NOT distinguish between different document formats in the Get- 2106 Printer-Attributes operation. If the Printer object does 2107 distinguish between different sets of supported values for each 2108 different document format specified by the client, this 2109 specialization applies only to the following Printer object 2110 attributes: 2112 - Printer attributes that are Job Template attributes ("xxx- 2113 default" "xxx-supported", and "xxx-ready" in the Table in 2114 Section 4.2), 2115 - "pdl-override-supported", 2116 - "compression-supported", 2117 - "job-k-octets-supported", 2118 - "job-impressions-supported, 2119 - "job-media-sheets-supported" 2120 - "printer-driver-installer", 2121 - "color-supported", and 2122 - "reference-uri-schemes-supported" 2124 Isaacson, Powell Expires May 16, 1999 2126 The values of all other Printer object attributes (including 2127 "document-format-supported") remain invariant with respect to the 2128 client supplied document format (except for new Printer description 2129 attribute as registered according to section 6.2). 2131 If the client omits this "document-format" operation attribute, the 2132 Printer object MUST respond as if the attribute had been supplied 2133 with the value of the Printer object's "document-format-default" 2134 attribute. It is recommended that the client always supply a value 2135 for "document-format", since the Printer object's "document-format- 2136 default" may be 'application/octet-stream', in which case the 2137 returned attributes and values are for the union of the document 2138 formats that the Printer can automatically sense. For more 2139 details, see the description of the 'mimeMediaType' attribute 2140 syntax in section 4.1.9. 2142 If the client supplies a value for the "document-format" Operation 2143 attribute that is not supported by the Printer, i.e., is not among 2144 the values of the Printer object's "document-format-supported" 2145 attribute, the Printer object MUST reject the operation and return 2146 the 'client-error-document-format-not-supported' status code. 2148 3.2.5.2 Get-Printer-Attributes Response 2150 The Printer object returns the following sets of attributes as part of 2151 the Get-Printer-Attributes Response: 2153 Group 1: Operation Attributes 2155 Status Message: 2156 In addition to the REQUIRED status code returned in every response, 2157 the response OPTIONALLY includes a "status-message" (text) 2158 operation attribute as described in section 3.1.6. 2160 Natural Language and Character Set: 2161 The "attributes-charset" and "attributes-natural-language" 2162 attributes as described in section 3.1.4.2. 2164 Group 2: Unsupported Attributes 2166 This is a set of Operation attributes supplied by the client (in 2167 the request) that are not supported by the Printer object or that 2168 conflict with one another (see sections 3.2.1.2 and 16). The 2169 response NEED NOT contain the "requested-attributes" operation 2170 attribute with any supplied values (attribute keywords) that were 2171 requested by the client but are not supported by the IPP object. 2172 If the Printer object is not returning any Unsupported Attributes 2173 in the response, the Printer object SHOULD omit Group 2 rather than 2174 sending an empty group. However, a client MUST be able to accept 2175 an empty group. 2177 Group 3: Printer Object Attributes 2179 Isaacson, Powell Expires May 16, 1999 2180 This is the set of requested attributes and their current values. 2181 The Printer object ignores (does not respond with) any requested 2182 attribute which is not supported. The Printer object MAY respond 2183 with a subset of the supported attributes and values, depending on 2184 the security policy in force. However, the Printer object MUST 2185 respond with the 'unknown' value for any supported attribute 2186 (including all REQUIRED attributes) for which the Printer object 2187 does not know the value. Also the Printer object MUST respond with 2188 the 'no-value' for any supported attribute (including all REQUIRED 2189 attributes) for which the system administrator has not configured a 2190 value. See the description of the "out-of-band" values in the 2191 beginning of Section 4.1. 2193 3.2.6 Get-Jobs Operation 2195 This REQUIRED operation allows a client to retrieve the list of Job 2196 objects belonging to the target Printer object. The client may also 2197 supply a list of Job attribute names and/or attribute group names. A 2198 group of Job object attributes will be returned for each Job object that 2199 is returned. 2201 This operation is similar to the Get-Job-Attributes operation, except 2202 that this Get-Jobs operation returns attributes from possibly more than 2203 one object (see the description of Job attribute group names in section 2204 3.3.4). 2206 3.2.6.1 Get-Jobs Request 2208 The client submits the Get-Jobs request to a Printer object. 2210 The following groups of attributes are part of the Get-Jobs Request: 2212 Group 1: Operation Attributes 2214 Natural Language and Character Set: 2215 The "attributes-charset" and "attributes-natural-language" 2216 attributes as described in section 3.1.4.1. 2218 Target: 2219 The "printer-uri" (uri) operation attribute which is the target for 2220 this operation as described in section 3.1.5. 2222 Requesting User Name: 2223 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2224 by the client as described in section 8.3. 2226 "limit" (integer(1:MAX)): 2227 The client OPTIONALLY supplies this attribute. The Printer object 2228 MUST support this attribute. It is an integer value that indicates 2229 a limit to the number of Job objects returned. The limit is a 2230 "stateless limit" in that if the value supplied by the client is 2231 'N', then only the first 'N' jobs are returned in the Get-Jobs 2232 Response. There is no mechanism to allow for the next 'M' jobs 2234 Isaacson, Powell Expires May 16, 1999 2235 after the first 'N' jobs. If the client does not supply this 2236 attribute, the Printer object responds with all applicable jobs. 2238 "requested-attributes" (1setOf keyword): 2239 The client OPTIONALLY supplies this attribute. The Printer object 2240 MUST support this attribute. It is a set of Job attribute names 2241 and/or attribute groups names in whose values the requester is 2242 interested. This set of attributes is returned for each Job object 2243 that is returned. The allowed attribute group names are the same 2244 as those defined in the Get-Job-Attributes operation in section 2245 3.3.4. If the client does not supply this attribute, the Printer 2246 MUST respond as if the client had supplied this attribute with two 2247 values: 'job-uri' and 'job-id'. 2249 "which-jobs" (keyword): 2250 The client OPTIONALLY supplies this attribute. The Printer object 2251 MUST support this attribute. It indicates which Job objects MUST 2252 be returned by the Printer object. The values for this attribute 2253 are: 2255 'completed': This includes any Job object whose state is 2256 'completed', 'canceled', or 'aborted'. 2257 'not-completed': This includes any Job object whose state is 2258 'pending', 'processing', 'processing-stopped', or 'pending- 2259 held'. 2261 A Printer object MUST support both values. However, if the 2262 implementation does not keep jobs in the 'completed', 'canceled', 2263 and 'aborted' states, then it returns no jobs when the 'completed' 2264 value is supplied. 2266 If a client supplies some other value, the Printer object MUST copy 2267 the attribute and the unsupported value to the Unsupported 2268 Attributes response group, reject the request, and return the 2269 'client-error-attributes-or-values-not-supported' status code. 2271 If the client does not supply this attribute, the Printer object 2272 MUST respond as if the client had supplied the attribute with a 2273 value of 'not-completed'. 2275 "my-jobs" (boolean): 2276 The client OPTIONALLY supplies this attribute. The Printer object 2277 MUST support this attribute. It indicates whether all jobs or just 2278 the jobs submitted by the requesting user of this request MUST be 2279 returned by the Printer object. If the client does not supply this 2280 attribute, the Printer object MUST respond as if the client had 2281 supplied the attribute with a value of 'false', i.e., all jobs. 2282 The means for authenticating the requesting user and matching the 2283 jobs is described in section 8. 2285 3.2.6.2 Get-Jobs Response 2287 The Printer object returns all of the Job objects that match the 2288 criteria as defined by the attribute values supplied by the client in 2290 Isaacson, Powell Expires May 16, 1999 2291 the request. It is possible that no Job objects are returned since 2292 there may literally be no Job objects at the Printer, or there may be no 2293 Job objects that match the criteria supplied by the client. If the 2294 client requests any Job attributes at all, there is a set of Job Object 2295 Attributes returned for each Job object. 2297 Group 1: Operation Attributes 2299 Status Message: 2300 In addition to the REQUIRED status code returned in every response, 2301 the response OPTIONALLY includes a "status-message" (text) 2302 operation attribute as described in sections 14 and 3.1.6. 2304 Natural Language and Character Set: 2305 The "attributes-charset" and "attributes-natural-language" 2306 attributes as described in section 3.1.4.2. 2308 Group 2: Unsupported Attributes 2310 This is a set of Operation attributes supplied by the client (in 2311 the request) that are not supported by the Printer object or that 2312 conflict with one another (see sections 3.2.1.2 and the 2313 Implementer's Guide [IPP-IIG]). The response NEED NOT contain the 2314 "requested-attributes" operation attribute with any supplied values 2315 (attribute keywords) that were requested by the client but are not 2316 supported by the IPP object. If the Printer object is not 2317 returning any Unsupported Attributes in the response, the Printer 2318 object SHOULD omit Group 2 rather than sending an empty group. 2319 However, a client MUST be able to accept an empty group. 2321 Groups 3 to N: Job Object Attributes 2323 The Printer object responds with one set of Job Object Attributes 2324 for each returned Job object. The Printer object ignores (does not 2325 respond with) any requested attribute or value which is not 2326 supported or which is restricted by the security policy in force, 2327 including whether the requesting user is the user that submitted 2328 the job (job originating user) or not (see section 8). However, 2329 the Printer object MUST respond with the 'unknown' value for any 2330 supported attribute (including all REQUIRED attributes) for which 2331 the Printer object does not know the value, unless it would violate 2332 the security policy. See the description of the "out-of-band" 2333 values in the beginning of Section 4.1. 2335 Jobs are returned in the following order: 2337 - If the client requests all 'completed' Jobs (Jobs in the 2338 'completed', 'aborted', or 'canceled' states), then the Jobs 2339 are returned newest to oldest (with respect to actual 2340 completion time) 2341 - If the client requests all 'not-completed' Jobs (Jobs in the 2342 'pending', 'processing', 'pending-held', and 'processing- 2343 stopped' states), then Jobs are returned in relative 2344 chronological order of expected time to complete (based on 2346 Isaacson, Powell Expires May 16, 1999 2347 whatever scheduling algorithm is configured for the Printer 2348 object). 2350 3.3 Job Operations 2352 All Job operations are directed at Job objects. A client MUST always 2353 supply some means of identifying the Job object in order to identify the 2354 correct target of the operation. That job identification MAY either be 2355 a single Job URI or a combination of a Printer URI with a Job ID. The 2356 IPP object implementation MUST support both forms of identification for 2357 every job. 2359 3.3.1 Send-Document Operation 2361 This OPTIONAL operation allows a client to create a multi-document Job 2362 object that is initially "empty" (contains no documents). In the 2363 Create-Job response, the Printer object returns the Job object's URI 2364 (the "job-uri" attribute) and the Job object's 32-bit identifier (the 2365 "job-id" attribute). For each new document that the client desires to 2366 add, the client uses a Send-Document operation. Each Send-Document 2367 Request contains the entire stream of document data for one document. 2369 Since the Create-Job and the send operations (Send-Document or Send-URI 2370 operations) that follow could occur over an arbitrarily long period of 2371 time for a particular job, a client MUST send another send operation 2372 within an IPP Printer defined minimum time interval after the receipt of 2373 the previous request for the job. If a Printer object supports multiple 2374 document jobs, the Printer object MUST support the "multiple-operation- 2375 time-out" attribute (see section 4.4.28). This attribute indicates the 2376 minimum number of seconds the Printer object will wait for the next send 2377 operation before taking some recovery action. 2379 An IPP object MUST recover from an errant client that does not supply a 2380 send operation, sometime after the minimum time interval specified by 2381 the Printer object's "multiple-operation-time-out" attribute. Such 2382 recovery MAY include any of the following or other recovery actions: 2384 1. Assume that the Job is an invalid job, start the process of 2385 changing the job state to 'aborted', add the 'aborted-by-system' 2386 value to the job's "job-state-reasons" attribute (see section 2387 4.3.8), if supported, and clean up all resources associated with 2388 the Job. In this case, if another send operation is finally 2389 received, the Printer responds with an "client-error-not-possible" 2390 or "client-error-not-found" depending on whether or not the Job 2391 object is still around when the send operation finally arrives. 2392 2. Assume that the last send operation received was in fact the last 2393 document (as if the "last-document" flag had been set to 'true'), 2394 close the Job object, and proceed to process it (i.e., move the 2395 Job's state to 'pending'). 2396 3. Assume that the last send operation received was in fact the last 2397 document, close the Job, but move it to the 'pending-held' and add 2398 the 'submission-interrupted' value to the job's "job-state-reasons" 2400 Isaacson, Powell Expires May 16, 1999 2401 attribute (see section 4.3.8), if supported. This action allows 2402 the user or an operator to determine whether to continue processing 2403 the Job by moving it back to the 'pending' state or to cancel the 2404 job. 2406 Each implementation is free to decide the "best" action to take 2407 depending on local policy, whether any documents have been added, 2408 whether the implementation spools jobs or not, and/or any other piece 2409 of information available to it. If the choice is to abort the Job 2410 object, it is possible that the Job object may already have been 2411 processed to the point that some media sheet pages have been printed. 2413 3.3.1.1 Send-Document Request 2415 The following attribute sets are part of the Send-Document Request: 2417 Group 1: Operation Attributes 2419 Natural Language and Character Set: 2420 The "attributes-charset" and "attributes-natural-language" 2421 attributes as described in section 3.1.4.1. 2423 Target: 2424 Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX))or 2425 (2) the "job-uri" (uri) operation attribute(s) which define the 2426 target for this operation as described in section 3.1.5. 2428 Requesting User Name: 2429 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2430 by the client as described in section 8.3. 2432 "document-name" (name(MAX)): 2433 The client OPTIONALLY supplies this attribute. The Printer object 2434 MUST support this attribute. It contains the client supplied 2435 document name. The document name MAY be different than the Job 2436 name. It might be helpful, but NEED NOT be unique across multiple 2437 documents in the same Job. Typically, the client software 2438 automatically supplies the document name on behalf of the end user 2439 by using a file name or an application generated name. See the 2440 description of the "document-name" operation attribute in the 2441 Print-Job Request (section 3.2.1.1) for more information about this 2442 attribute. 2444 "document-format" (mimeMediaType) : 2445 The client OPTIONALLY supplies this attribute. The Printer object 2446 MUST support this attribute. The value of this attribute 2447 identifies the format of the supplied document data. If the client 2448 does not supply this attribute, the Printer object assumes that the 2449 document data is in the format defined by the Printer object's 2450 "document-format-default" attribute. If the client supplies this 2451 attribute, but the value is not supported by the Printer object, 2452 i.e., the value is not one of the values of the Printer object's 2453 "document-format-supported" attribute, the Printer object MUST 2455 Isaacson, Powell Expires May 16, 1999 2456 reject the request and return the 'client-error-document-format- 2457 not-supported' status code. 2459 "document-natural-language" (naturalLanguage): 2460 The client OPTIONALLY supplies this attribute. The Printer object 2461 OPTIONALLY supports this attribute. This attribute specifies the 2462 natural language of the document for those document-formats that 2463 require a specification of the natural language in order to image 2464 the document unambiguously. There are no particular values 2465 required for the Printer object to support. 2467 "compression" (type3 keyword) 2468 The client OPTIONALLY supplies this attribute. The Printer object 2469 OPTIONALLY supports this attribute and the "compression-supported" 2470 attribute (see section 4.4.29). The client supplied "compression" 2471 operation attribute identifies the compression algorithm used on 2472 the document data. If the client omits this attribute, the Printer 2473 object MUST assume that the data is not compressed. If the client 2474 supplies the attribute and the Printer object supports the 2475 attribute, the Printer object MUST use the corresponding 2476 decompression algorithm on the document data. If the client 2477 supplies this attribute, but the value is not supported by the 2478 Printer object, i.e., the value is not one of the values of the 2479 Printer object's "compression-supported" attribute, the Printer 2480 object MUST copy the attribute and its value to the Unsupported 2481 Attributes response group, reject the request, and return the 2482 'client-error-attributes-or-values-not-supported' status code. 2484 "last-document" (boolean): 2485 The client MUST supply this attribute. The Printer object MUST 2486 support this attribute. It is a boolean flag that is set to 'true' 2487 if this is the last document for the Job, 'false' otherwise. 2489 Group 2: Document Content 2491 The client MUST supply the document data if the "last-document" 2492 flag is set to 'false'. However, since a client might not know 2493 that the previous document sent with a Send-Document (or Send-URI) 2494 operation was the last document (i.e., the "last-document" 2495 attribute was set to 'false'), it is legal to send a Send-Document 2496 request with no document data where the "last-document" flag is set 2497 to 'true'. Such a request MUST NOT increment the value of the Job 2498 object's "number-of-documents" attribute, since no real document 2499 was added to the job. 2501 3.3.1.2 Send-Document Response 2503 The following sets of attributes are part of the Send-Document Response: 2505 Isaacson, Powell Expires May 16, 1999 2506 Group 1: Operation Attributes 2508 Status Message: 2509 In addition to the REQUIRED status code returned in every response, 2510 the response OPTIONALLY includes a "status-message" (text) 2511 operation attribute as described in sections 14 and 3.1.6. 2513 Natural Language and Character Set: 2514 The "attributes-charset" and "attributes-natural-language" 2515 attributes as described in section 3.1.4.2. 2517 Group 2: Unsupported Attributes 2519 This is a set of Operation attributes supplied by the client (in 2520 the request) that are not supported by the Printer object or that 2521 conflict with one another (see sections 3.2.1.2 and the 2522 Implementer's Guide [IPP-IIG]). If the Printer object is not 2523 returning any Unsupported Attributes in the response, the Printer 2524 object SHOULD omit Group 2 rather than sending an empty group. 2525 However, a client MUST be able to accept an empty group. 2527 Group 3: Job Object Attributes 2529 This is the same set of attributes as described in the Print-Job 2530 response (see section 3.2.1.2). 2532 3.3.2 Send-URI Operation 2534 This OPTIONAL operation is identical to the Send-Document operation (see 2535 section 3.3.1) except that a client MUST supply a URI reference 2536 ("document-uri" operation attribute) rather than the document data 2537 itself. If a Printer object supports this operation, clients can use 2538 both Send-URI or Send-Document operations to add new documents to an 2539 existing multi-document Job object. However, if a client needs to 2540 indicate that the previous Send-URI or Send-Document was the last 2541 document, the client MUST use the Send-Document operation with no 2542 document data and the "last-document" flag set to 'true' (rather than 2543 using a Send-URI operation with no "document-uri" operation attribute). 2545 If a Printer object supports this operation, it MUST also support the 2546 Print-URI operation (see section 3.2.2). 2548 The Printer object MUST validate the syntax and URI scheme of the 2549 supplied URI before returning a response, just as in the Print-URI 2550 operation. 2552 3.3.3 Cancel-Job Operation 2554 This REQUIRED operation allows a client to cancel a Print Job from the 2555 time the job is created up to the time it is completed, canceled, or 2556 aborted. Since a Job might already be printing by the time a Cancel-Job 2557 is received, some media sheet pages might be printed before the job is 2558 actually terminated. 2560 Isaacson, Powell Expires May 16, 1999 2561 3.3.3.1 Cancel-Job Request 2563 The following groups of attributes are part of the Cancel-Job Request: 2565 Group 1: Operation Attributes 2567 Natural Language and Character Set: 2568 The "attributes-charset" and "attributes-natural-language" 2569 attributes as described in section 3.1.4.1. 2571 Target: 2572 Either (1) the "printer-uri" (uri) plus "job-id" 2573 (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) 2574 which define the target for this operation as described in section 2575 3.1.5. 2577 Requesting User Name: 2578 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2579 by the client as described in section 8.3. 2581 "message" (text(127)): 2582 The client OPTIONALLY supplies this attribute. The Printer object 2583 OPTIONALLY supports this attribute. It is a message to the 2584 operator. This "message" attribute is not the same as the "job- 2585 message-from-operator" attribute. That attribute is used to report 2586 a message from the operator to the end user that queries that 2587 attribute. This "message" operation attribute is used to send a 2588 message from the client to the operator along with the operation 2589 request. It is an implementation decision of how or where to 2590 display this message to the operator (if at all). 2592 3.3.3.2 Cancel-Job Response 2594 The following sets of attributes are part of the Cancel-Job Response: 2596 Group 1: Operation Attributes 2598 Status Message: 2599 In addition to the REQUIRED status code returned in every response, 2600 the response OPTIONALLY includes a "status-message" (text) 2601 operation attribute as described in sections 14 and 3.1.6. 2603 If the job is already in the 'completed', 'aborted', or 'canceled' 2604 state, or the 'process-to-stop-point' value is set in the Job's 2605 "job-state-reasons" attribute, the Printer object MUST reject the 2606 request and return the 'client-error-not-possible' error status 2607 code. 2609 Natural Language and Character Set: 2610 The "attributes-charset" and "attributes-natural-language" 2611 attributes as described in section 3.1.4.2. 2613 Isaacson, Powell Expires May 16, 1999 2615 Group 2: Unsupported Attributes 2617 This is a set of Operation attributes supplied by the client (in 2618 the request) that are not supported by the Printer object or that 2619 conflict with one another (see section 3.2.1.2 and the 2620 Implementer's Guide [IPP-IIG]). If the Printer object is not 2621 returning any Unsupported Attributes in the response, the Printer 2622 object SHOULD omit Group 2 rather than sending an empty group. 2623 However, a client MUST be able to accept an empty group. 2625 Once a successful response has been sent, the implementation guarantees 2626 that the Job will eventually end up in the 'canceled' state. Between the 2627 time of the Cancel-Job operation is accepted and when the job enters the 2628 'canceled' job-state (see section 4.3.7), the "job-state-reasons" 2629 attribute SHOULD contain the ' processing-to-stop-point ' value which 2630 indicates to later queries that although the Job might still be 2631 'processing', it will eventually end up in the 'canceled' state, not the 2632 'completed' state. 2634 3.3.4 Get-Job-Attributes Operation 2636 This REQUIRED operation allows a client to request the values of 2637 attributes of a Job object and it is almost identical to the Get- 2638 Printer-Attributes operation (see section 3.2.5). The only differences 2639 are that the operation is directed at a Job object rather than a Printer 2640 object, there is no "document-format" operation attribute used when 2641 querying a Job object, and the returned attribute group is a set of Job 2642 object attributes rather than a set of Printer object attributes. 2644 For Jobs, the possible names of attribute groups are: 2646 - 'job-template': all of the Job Template attributes that apply to a 2647 Job object (the first column of the table in Section 4.2). 2648 - 'job-description': all of the Job Description attributes specified 2649 in Section 4.3. 2650 - 'all': the special group 'all' that includes all supported 2651 attributes. 2653 Since a client MAY request specific attributes or named groups, there is 2654 a potential that there is some overlap. For example, if a client 2655 requests, 'job-name' and 'job-description', the client is actually 2656 requesting the "job-name" attribute once by naming it explicitly, and 2657 once by inclusion in the 'job-description' group. In such cases, the 2658 Printer object NEED NOT return the attribute only once in the response 2659 even if it is requested multiple times. The client SHOULD NOT request 2660 the same attribute in multiple ways. 2662 It is NOT REQUIRED that a Job object support all attributes belonging to 2663 a group (since some attributes are OPTIONAL). However it is REQUIRED 2664 that each Job object support all group names. 2666 Isaacson, Powell Expires May 16, 1999 2667 3.3.4.1 Get-Job-Attributes Request 2669 The following groups of attributes are part of the Get-Job-Attributes 2670 Request when the request is directed at a Job object: 2672 Group 1: Operation Attributes 2674 Natural Language and Character Set: 2675 The "attributes-charset" and "attributes-natural-language" 2676 attributes as described in section 3.1.4.1. 2678 Target: 2679 Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) 2680 or (2) the "job-uri" (uri) operation attribute(s) which define the 2681 target for this operation as described in section 3.1.5. 2683 Requesting User Name: 2684 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2685 by the client as described in section 8.3. 2687 "requested-attributes" (1setOf keyword) : 2688 The client OPTIONALLY supplies this attribute. The IPP object MUST 2689 support this attribute. It is a set of attribute names and/or 2690 attribute group names in whose values the requester is interested. 2691 If the client omits this attribute, the IPP object MUST respond as 2692 if this attribute had been supplied with a value of 'all'. 2694 3.3.4.2 Get-Job-Attributes Response 2696 The Printer object returns the following sets of attributes as part of 2697 the Get-Job-Attributes Response: 2699 Group 1: Operation Attributes 2701 Status Message: 2702 In addition to the REQUIRED status code returned in every response, 2703 the response OPTIONALLY includes a "status-message" (text) 2704 operation attribute as described in sections 14 and 3.1.6. 2706 Natural Language and Character Set: 2707 The "attributes-charset" and "attributes-natural-language" 2708 attributes as described in section 3.1.4.2. The "attributes- 2709 natural-language" MAY be the natural language of the Job object, 2710 rather than the one requested. 2712 Group 2: Unsupported Attributes 2714 This is a set of Operation attributes supplied by the client (in 2715 the request) that are not supported by the Printer object or that 2716 conflict with one another (see sections 3.2.1.2 and the 2717 Implementer's Guide [IPP-IIG]). The response NEED NOT contain the 2718 "requested-attributes" operation attribute with any supplied values 2719 (attribute keywords) that were requested by the client but are not 2721 Isaacson, Powell Expires May 16, 1999 2722 supported by the IPP object. If the Printer object is not 2723 returning any Unsupported Attributes in the response, the Printer 2724 object SHOULD omit Group 2 rather than sending an empty group. 2725 However, a client MUST be able to accept an empty group. 2727 Group 3: Job Object Attributes 2729 This is the set of requested attributes and their current values. 2730 The IPP object ignores (does not respond with) any requested 2731 attribute or value which is not supported or which is restricted by 2732 the security policy in force, including whether the requesting user 2733 is the user that submitted the job (job originating user) or not 2734 (see section 8). However, the IPP object MUST respond with the 2735 'unknown' value for any supported attribute (including all REQUIRED 2736 attributes) for which the IPP object does not know the value, 2737 unless it would violate the security policy. See the description 2738 of the "out-of-band" values in the beginning of Section 4.1. 2740 4. Object Attributes 2742 This section describes the attributes with their corresponding attribute 2743 syntaxes and values that are part of the IPP model. The sections below 2744 show the objects and their associated attributes which are included 2745 within the scope of this protocol. Many of these attributes are derived 2746 from other relevant specifications: 2748 - Document Printing Application (DPA) [ISO10175] 2749 - RFC 1759 Printer MIB [RFC1759] 2751 Each attribute is uniquely identified in this document using a "keyword" 2752 (see section 13.2.1) which is the name of the attribute. The keyword is 2753 included in the section header describing that attribute. 2755 Note: Not only are keywords used to identify attributes, but one of the 2756 attribute syntaxes described below is "keyword" so that some attributes 2757 have keyword values. Therefore, these attributes are defined as having 2758 an attribute syntax that is a set of keywords. 2760 4.1 Attribute Syntaxes 2762 This section defines the basic attribute syntax types that all clients 2763 and IPP objects MUST be able to accept in responses and accept in 2764 requests, respectively. Each attribute description in sections 3 and 4 2765 includes the name of attribute syntax(es) in the heading (in 2766 parentheses). A conforming implementation of an attribute MUST include 2767 the semantics of the attribute syntax(es) so identified. Section 6.3 2768 describes how the protocol can be extended with new attribute syntaxes. 2770 The attribute syntaxes are specified in the following sub-sections, 2771 where the sub-section heading is the keyword name of the attribute 2772 syntax inside the single quotes. In operation requests and responses 2773 each attribute value MUST be represented as one of the attribute 2775 Isaacson, Powell Expires May 16, 1999 2776 syntaxes specified in the sub-section heading for the attribute. In 2777 addition, the value of an attribute in a response (but not in a request) 2778 MAY be one of the "out-of-band" values. Standard "out-of-band" values 2779 are: 2781 'unknown': The attribute is supported by the IPP object, but the 2782 value is unknown to the IPP object for some reason. 2783 'unsupported': The attribute is unsupported by the IPP object. This 2784 value MUST be returned only as the value of an attribute in the 2785 Unsupported Attributes Group. 2786 'no-value': The attribute is supported by the Printer object, but the 2787 system administrator has not yet configured a value. 2789 The Encoding and Transport specification [IPP-PRO] defines mechanisms 2790 for passing "out-of-band" values. All attributes in a request MUST have 2791 one or more values as defined in Sections 4.2 to 4.4. Thus clients MUST 2792 NOT supply attributes with "out-of-band" values. All attribute in a 2793 response MUST have one or more values as defined in Sections 4.2 to 4.4 2794 or a single "out-of-band" value. 2796 Most attributes are defined to have a single attribute syntax. However, 2797 a few attributes (e.g., "job-sheet", "media", "job-hold-until") are 2798 defined to have several attribute syntaxes, depending on the value. 2799 These multiple attribute syntaxes are separated by the "|" character in 2800 the sub-section heading to indicate the choice. Since each value MUST 2801 be tagged as to its attribute syntax in the protocol, a single-valued 2802 attribute instance may have any one of its attribute syntaxes and a 2803 multi-valued attribute instance may have a mixture of its defined 2804 attribute syntaxes. 2806 4.1.1 'text' 2808 A text attribute is an attribute whose value is a sequence of zero or 2809 more characters encoded in a maximum of 1023 ('MAX') octets. MAX is the 2810 maximum length for each value of any text attribute. However, if an 2811 attribute will always contain values whose maximum length is much less 2812 than MAX, the definition of that attribute will include a qualifier that 2813 defines the maximum length for values of that attribute. For example: 2814 the "printer-location" attribute is specified as "printer-location 2815 (text(127))". In this case, text values for "printer-location" MUST NOT 2816 exceed 127 octets; if supplied with a longer text string via some 2817 external interface (other than the protocol), implementations are free 2818 to truncate to this shorter length limitation. 2820 In this specification, all text attributes are defined using the 'text' 2821 syntax. However, 'text' is used only for brevity; the formal 2822 interpretation of 'text' is: 'textWithoutLanguage | textWithLanguage'. 2823 That is, for any attribute defined in this specification using the 2824 'text' attribute syntax, all IPP objects and clients MUST support both 2825 the 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes. 2826 However, in actual usage and protocol execution, objects and clients 2828 Isaacson, Powell Expires May 16, 1999 2829 accept and return only one of the two syntax per attribute. The syntax 2830 'text' never appears "on-the-wire". 2832 Both 'textWithoutLanguage' and 'textWithLanguage' are needed to support 2833 the real world needs of interoperability between sites and systems that 2834 use different natural languages as the basis for human communication. 2835 Generally, one natural language applies to all text attributes in a 2836 given request or response. The language is indicated by the "attributes- 2837 natural-language" operation attribute defined in section 3.1.4 or 2838 "attributes-natural-language" job attribute defined in section 4.3.24, 2839 and there is no need to identify the natural language for each text 2840 string on a value-by-value basis. In these cases, the attribute syntax 2841 'textWithoutLanguage' is used for text attributes. In other cases, the 2842 client needs to supply or the Printer object needs to return a text 2843 value in a natural language that is different from the rest of the text 2844 values in the request or response. In these cases, the client or 2845 Printer object uses the attribute syntax 'textWithLanguage' for text 2846 attributes (this is the Natural Language Override mechanism described in 2847 section 3.1.4). 2849 The 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes are 2850 described in more detail in the following sections. 2852 4.1.1.1 'textWithoutLanguage' 2854 The 'textWithoutLanguage' syntax indicates a value that is sequence of 2855 zero or more characters. Text strings are encoded using the rules of 2856 some charset. The Printer object MUST support the UTF-8 charset 2857 [RFC2044] and MAY support additional charsets to represent 'text' 2858 values, provided that the charsets are registered with IANA [IANA-CS]. 2859 See Section 4.1.7 for the specification of the 'charset' attribute 2860 syntax, including restricted semantics and examples of charsets. 2862 4.1.1.2 'textWithLanguage' 2864 The 'textWithLanguage' attribute syntax is a compound attribute syntax 2865 consisting of two parts: a 'textWithoutLanguage' part plus an additional 2866 'naturalLanguage' (see section 4.1.8) part that overrides the natural 2867 language in force. The 'naturalLanguage' part explicitly identifies the 2868 natural language that applies to the text part of that value and that 2869 value alone. For any give text attribute, the 'textWithoutLanguage' 2870 part is limited to the maximum length defined for that attribute, but 2871 the 'naturalLanguage' part is always limited to 63 octets. Using the 2872 'textWithLanguage' attribute syntax rather than the normal 2873 'textWithoutLanguage' syntax is the so-called Natural Language Override 2874 mechanism and MUST be supported by all IPP objects and clients. 2876 If the attribute is multi-valued (1setOf text), then the 2877 'textWithLanguage' attribute syntax MUST be used to explicitly specify 2878 each attribute value whose natural language needs to be overridden. 2879 Other values in a multi-valued 'text' attribute in a request or a 2880 response revert to the natural language of the operation attribute. 2882 Isaacson, Powell Expires May 16, 1999 2883 In a create request, the Printer object MUST accept and store with the 2884 Job object any natural language in the "attributes-natural-language" 2885 operation attribute, whether the Printer object supports that natural 2886 language or not. Furthermore, the Printer object MUST accept and store 2887 any 'textWithLanguage' attribute value, whether the Printer object 2888 supports that natural language or not. These requirements are 2889 independent of the value of the "ipp-attribute-fidelity" operation 2890 attribute that the client MAY supply. 2892 Example: If the client supplies the "attributes-natural-language" 2893 operation attribute with the value: 'en' indicating English, but the 2894 value of the "job-name" attribute is in French, the client MUST use the 2895 'textWithLanguage' attribute syntax with the following two values: 2897 'fr': Natural Language Override indicating French 2898 'Rapport Mensuel': the job name in French 2900 See the Encoding and Transport document [IPP-PRO] for a detailed example 2901 of the 'textWithLanguage' attribute syntax. 2903 4.1.2 'name' 2905 This syntax type is used for user-friendly strings, such as a Printer 2906 name, that, for humans, are more meaningful than identifiers. Names are 2907 never translated from one natural language to another. The 'name' 2908 attribute syntax is essentially the same as 'text', including the 2909 REQUIRED support of UTF-8 except that the sequence of characters is 2910 limited so that its encoded form MUST NOT exceed 255 (MAX) octets. 2912 Also like 'text', 'name' is really an abbreviated notation for either 2913 'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP objects 2914 and clients MUST support both the 'nameWithoutLanguage' and 2915 'nameWithLanguage' attribute syntaxes. However, in actual usage and 2916 protocol execution, objects and clients accept and return only one of 2917 the two syntax per attribute. The syntax 'name' never appears "on-the- 2918 wire". 2920 Note: Only the 'text' and 'name' attribute syntaxes permit the Natural 2921 Language Override mechanism. 2923 Some attributes are defined as 'type3 keyword | name'. These attributes 2924 support values that are either type3 keywords or names. This dual- 2925 syntax mechanism enables a site administrator to extend these attributes 2926 to legally include values that are locally defined by the site 2927 administrator. Such names are not registered with IANA. 2929 4.1.2.1 'nameWithoutLanguage' 2931 The nameWithoutLanguage' syntax indicates a value that is sequence of 2932 zero or more characters so that its encoded form does not exceed MAX 2933 octets. 2935 Isaacson, Powell Expires May 16, 1999 2936 4.1.2.2 'nameWithLanguage' 2938 The 'nameWithLanguage' attribute syntax is a compound attribute syntax 2939 consisting of two parts: a 'nameWithoutLanguage' part plus an additional 2940 'naturalLanguage' (see section 4.1.8) part that overrides the natural 2941 language in force. The 'naturalLanguage' part explicitly identifies the 2942 natural language that applies to that name value and that name value 2943 alone. 2945 The 'nameWithLanguage' attribute syntax behaves the same as the 2946 'textWithLanguage' syntax. If a name is in a language that is different 2947 than the rest of the object or operation, then this 'nameWithLanguage' 2948 syntax is used rather than the generic 'nameWithoutLanguage' syntax. 2950 Example: If the client supplies the "attributes-natural-language" 2951 operation attribute with the value: 'en' indicating English, but the 2952 "printer-name" attribute is in German, the client MUST use the 2953 'nameWithLanguage' attribute syntax as follows: 2955 'de': Natural Language Override indicating German 2956 'Farbdrucker': the Printer name in German 2958 4.1.2.3 Matching 'name' attribute values 2960 For purposes of matching two 'name' attribute values for equality, such 2961 as in job validation (where a client-supplied value for attribute "xxx" 2962 is checked to see if the value is among the values of the Printer 2963 object's corresponding "xxx-supported" attribute), the following match 2964 rules apply: 2966 1. 'keyword' values never match 'name' values. 2968 2. 'name' (nameWithoutLanguage and nameWithLanguage) values match 2969 if (1) the name parts match and (2) the Associated Natural-Language 2970 parts (see section 3.1.4.1) match. The matching rules are: 2972 a. the name parts match if the two names are identical 2973 character by character, except it is RECOMMENDED that case be 2974 ignored. For example: 'Ajax-letter-head-white' MUST match 2975 'Ajax-letter-head-white' and SHOULD match 'ajax-letter-head- 2976 white' and 'AJAX-LETTER-HEAD-WHITE'. 2978 b. the Associated Natural-Language parts match if the shorter 2979 of the two meets the syntactic requirements of RFC 1766 2980 [RFC1766] and matches byte for byte with the longer. For 2981 example, 'en' matches 'en', 'en-us' and 'en-gb', but matches 2982 neither 'fr' nor 'e'. 2984 4.1.3 'keyword' 2986 The 'keyword' attribute syntax is a sequence of characters, length: 1 to 2987 255, containing only the US-ASCII [ASCII] encoded values for lowercase 2988 letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot ("."), and 2990 Isaacson, Powell Expires May 16, 1999 2991 underscore ("_"). The first character MUST be a lowercase letter. 2992 Furthermore, keywords MUST be in U.S. English. 2994 This syntax type is used for enumerating semantic identifiers of 2995 entities in the abstract protocol, i.e., entities identified in this 2996 document. Keywords are used as attribute names or values of attributes. 2997 Unlike 'text' and 'name' attribute values, 'keyword' values MUST NOT use 2998 the Natural Language Override mechanism, since they MUST always be US- 2999 ASCII and U.S. English. 3001 Keywords are for use in the protocol. A user interface will likely 3002 provide a mapping between protocol keywords and displayable user- 3003 friendly words and phrases which are localized to the natural language 3004 of the user. While the keywords specified in this document MAY be 3005 displayed to users whose natural language is U.S. English, they MAY be 3006 mapped to other U.S. English words for U.S. English users, since the 3007 user interface is outside the scope of this document. 3009 In the definition for each attribute of this syntax type, the full set 3010 of defined keyword values for that attribute are listed. 3012 When a keyword is used to represent an attribute (its name), it MUST be 3013 unique within the full scope of all IPP objects and attributes. When a 3014 keyword is used to represent a value of an attribute, it MUST be unique 3015 just within the scope of that attribute. That is, the same keyword MUST 3016 NOT be used for two different values within the same attribute to mean 3017 two different semantic ideas. However, the same keyword MAY be used 3018 across two or more attributes, representing different semantic ideas for 3019 each attribute. Section 6.1 describes how the protocol can be extended 3020 with new keyword values. Examples of attribute name keywords: 3022 "job-name" 3023 "attributes-charset" 3025 Note: This document uses "type1", "type2", and "type3" prefixes to the 3026 "keyword" basic syntax to indicate different levels of review for 3027 extensions (see section 6.1). 3029 4.1.4 'enum' 3031 The 'enum' attribute syntax is an enumerated integer value that is in 3032 the range from 1 to 2**31 - 1 (MAX). Each value has an associated 3033 'keyword' name. In the definition for each attribute of this syntax 3034 type, the full set of possible values for that attribute are listed. 3035 This syntax type is used for attributes for which there are enum values 3036 assigned by other standards, such as SNMP MIBs. A number of attribute 3037 enum values in this specification are also used for corresponding 3038 attributes in other standards [RFC1759]. This syntax type is not used 3039 for attributes to which the system administrator may assign values. 3040 Section 6.1 describes how the protocol can be extended with new enum 3041 values. 3043 Isaacson, Powell Expires May 16, 1999 3044 Enum values are for use in the protocol. A user interface will provide 3045 a mapping between protocol enum values and displayable user-friendly 3046 words and phrases which are localized to the natural language of the 3047 user. While the enum symbols specified in this document MAY be 3048 displayed to users whose natural language is U.S. English, they MAY be 3049 mapped to other U.S. English words for U.S. English users, since the 3050 user interface is outside the scope of this document. 3052 Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP "out- 3053 of-band" value 'unknown'. See the description of the "out-of-band" 3054 values at the beginning of Section 4.1. Therefore, attributes of type 3055 'enum' start at '3'. 3057 Note: This document uses "type1", "type2", and "type3" prefixes to the 3058 "enum" basic syntax to indicate different levels of review for 3059 extensions (see section 6.1). 3061 4.1.5 'uri' 3063 The 'uri' attribute syntax is any valid Uniform Resource Identifier or 3064 URI [RFC2396]. Most often, URIs are simply Uniform Resource Locators or 3065 URLs. The maximum length of URIs used as values of IPP attributes is 3066 1023 octets. Although most other IPP attribute syntax types allow for 3067 only lower-cased values, this attribute syntax type conforms to the 3068 case-sensitive and case-insensitive rules specified in [RFC2396]. 3070 4.1.6 'uriScheme' 3072 The 'uriScheme' attribute syntax is a sequence of characters 3073 representing a URI scheme according to RFC 2396 [RFC2396]. Though RFC 3074 2396 requires that the values be case-insensitive, IPP requires all 3075 lower case values in IPP attributes to simplify comparing by IPP clients 3076 and Printer objects. Standard values for this syntax type are the 3077 following keywords: 3079 'http': for HTTP schemed URIs (e.g., "http:.") 3080 'https': for use with HTTPS schemed URIs (e.g., "https:...") (not on 3081 IETF standards track) 3082 'ftp': for FTP schemed URIs (e.g., "ftp:...") 3083 'mailto': for SMTP schemed URIs (e.g., "mailto:...") 3084 'file': for file schemed URIs (e.g., "file:...") 3086 A Printer object MAY support any URI 'scheme' that has been registered 3087 with IANA [IANA-MT]. The maximum length of URI 'scheme' values used to 3088 represent IPP attribute values is 63 octets. 3090 4.1.7 'charset' 3092 The 'charset' attribute syntax is a standard identifier for a charset. 3093 A charset is a coded character set and encoding scheme. Charsets are 3094 used for labeling certain document contents and 'text' and 'name' 3095 attribute values. The syntax and semantics of this attribute syntax are 3097 Isaacson, Powell Expires May 16, 1999 3098 specified in RFC 2046 [RFC2046] and contained in the IANA character-set 3099 Registry [IANA-CS] according to the IANA procedures [RFC2278]. Though 3100 RFC 2046 requires that the values be case-insensitive US-ASCII, IPP 3101 requires all lower case values in IPP attributes to simplify comparing 3102 by IPP clients and Printer objects. When a character-set in the IANA 3103 registry has more than one name (alias), the name labeled as "(preferred 3104 MIME name)", if present, MUST be used. 3106 The maximum length of 'charset' values used to represent IPP attribute 3107 values is 63 octets. 3109 Some examples are: 3111 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set 3112 (UCS) represented as the UTF-8 [RFC2279] transfer encoding scheme 3113 in which US-ASCII is a subset charset. 3114 'us-ascii': 7-bit American Standard Code for Information Interchange 3115 (ASCII), ANSI X3.4-1986 [ASCII]. That standard defines US-ASCII, 3116 but RFC 2045 [RFC2045] eliminates most of the control characters 3117 from conformant usage in MIME and IPP. 3118 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet Nr 3119 1 [ISO8859-1]. That standard defines a coded character set that is 3120 used by Latin languages in the Western Hemisphere and Western 3121 Europe. US-ASCII is a subset charset. 3122 'iso-10646-ucs-2': ISO 10646 Universal Multiple-Octet Coded 3123 Character Set (UCS) represented as two octets (UCS-2), with the 3124 high order octet of each pair coming first (so-called Big Endian 3125 integer). 3127 Some attribute descriptions MAY place additional requirements on charset 3128 values that may be used, such as REQUIRED values that MUST be supported 3129 or additional restrictions, such as requiring that the charset have US- 3130 ASCII as a subset charset. 3132 4.1.8 'naturalLanguage' 3134 The 'naturalLanguage' attribute syntax is a standard identifier for a 3135 natural language and optionally a country. The values for this syntax 3136 type are defined by RFC 1766 [RFC1766]. Though RFC 1766 requires that 3137 the values be case-insensitive US-ASCII, IPP requires all lower case to 3138 simplify comparing by IPP clients and Printer objects. Examples 3139 include: 3141 'en': for English 3142 'en-us': for US English 3143 'fr': for French 3144 'de': for German 3146 The maximum length of 'naturalLanguage' values used to represent IPP 3147 attribute values is 63 octets. 3149 Isaacson, Powell Expires May 16, 1999 3150 4.1.9 'mimeMediaType' 3152 The 'mimeMediaType' attribute syntax is the Internet Media Type 3153 (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and 3154 registered according to the procedures of RFC 2048 [RFC2048] for 3155 identifying a document format. The value MAY include a charset 3156 parameter, depending on the specification of the Media Type in the IANA 3157 Registry [IANA-MT]. Although most other IPP syntax types allow for only 3158 lower-cased values, this syntax type allows for mixed-case values which 3159 are case-insensitive. 3161 Examples are: 3163 'text/html': An HTML document 3164 'text/plain': A plain text document in US-ASCII (RFC 2046 indicates 3165 that in the absence of the charset parameter MUST mean US-ASCII 3166 rather than simply unspecified) [RFC2046]. 3167 'text/plain; charset=US-ASCII': A plain text document in US-ASCII 3168 [52, 56]. 3169 'text/plain; charset=ISO-8859-1': A plain text document in ISO 8859- 3170 1 (Latin 1) [ISO8859-1]. 3171 'text/plain; charset=utf-8': A plain text document in ISO 10646 3172 represented as UTF-8 [RFC2044] 3173 'text/plain, charset=iso-10646-ucs-2': A plain text document in ISO 3174 10646 represented in two octets (UCS-2) [ISO10646-1] 3175 'application/postscript': A PostScript document [RFC2046] 3176 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape 3177 sequence embedded in the document data) 3178 'application/octet-stream': Auto-sense - see below 3180 One special type is 'application/octet-stream'. If the Printer object 3181 supports this value, the Printer object MUST be capable of auto-sensing 3182 the format of the document data. If the Printer object's default value 3183 attribute "document-format-default" is set to 'application/octet- 3184 stream', the Printer object not only supports auto-sensing of the 3185 document format, but will depend on the result of applying its auto- 3186 sensing when the client does not supply the "document-format" attribute. 3187 If the client supplies a document format value, the Printer MUST rely on 3188 the supplied attribute, rather than trust its auto-sensing algorithm. 3189 To summarize: 3191 1. If the client does not supply a document format value, the Printer 3192 MUST rely on its default value setting (which may be 3193 'application/octet-stream' indicating an auto-sensing mechanism). 3194 2. If the client supplies a value other than 'application/octet- 3195 stream', the client is supplying valid information about the format 3196 of the document data and the Printer object MUST trust the client 3197 supplied value more than the outcome of applying an automatic 3198 format detection mechanism. For example, the client may be 3199 requesting the printing of a PostScript file as a 'text/plain' 3200 document. The Printer object MUST print a text representation of 3201 the PostScript commands rather than interpret the stream of 3202 PostScript commands and print the result. 3204 Isaacson, Powell Expires May 16, 1999 3206 3. If the client supplies a value of 'application/octet-stream', the 3207 client is indicating that the Printer object MUST use its auto- 3208 sensing mechanism on the client supplied document data whether 3209 auto-sensing is the Printer object's default or not. 3211 Note: Since the auto-sensing algorithm is probabilistic, if the client 3212 requests both auto-sensing ("document-format" set to 'application/octet- 3213 stream') and true fidelity ("ipp-attribute-fidelity" set to 'true'), the 3214 Printer object might not be able to guarantee exactly what the end user 3215 intended (the auto-sensing algorithm might mistake one document format 3216 for another ), but it is able to guarantee that its auto-sensing 3217 mechanism be used. 3219 The maximum length of a 'mimeMediaType' value to represent IPP attribute 3220 values is 255 octets. 3222 4.1.10 'octetString' 3224 The 'octetString' attribute syntax is a sequence of octets encoded in a 3225 maximum of 1023 octets which is indicated in sub-section headers using 3226 the notation: octetString(MAX). This syntax type is used for opaque 3227 data. 3229 4.1.11 'boolean' 3231 The 'boolean' attribute syntax has only two values: 'true' and 'false'. 3233 4.1.12 'integer' 3235 The 'integer' attribute syntax is an integer value that is in the range 3236 from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual attribute may 3237 specify the range constraint explicitly in sub-section headers if the 3238 range is different from the full range of possible integer values. For 3239 example: job-priority (integer(1:100)) for the "job-priority" 3240 attribute. However, the enforcement of that additional constraint is up 3241 to the IPP objects, not the protocol. 3243 4.1.13 'rangeOfInteger' 3245 The 'rangeOfInteger' attribute syntax is an ordered pair of integers 3246 that defines an inclusive range of integer values. The first integer 3247 specifies the lower bound and the second specifies the upper bound. If 3248 a range constraint is specified in the header description for an 3249 attribute in this document whose attribute syntax is 'rangeOfInteger' 3250 (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum value), 3251 then the constraint applies to both integers. 3253 4.1.14 'dateTime' 3255 The 'dateTime' attribute syntax is a standard, fixed length, 11 octet 3256 representation of the "DateAndTime" syntax as defined in RFC 1903 3258 Isaacson, Powell Expires May 16, 1999 3259 [RFC1903]. RFC 1903 also identifies an 8 octet representation of a 3260 "DateAndTime" value, but IPP objects MUST use the 11 octet 3261 representation. A user interface will provide a mapping between 3262 protocol dateTime values and displayable user-friendly words or 3263 presentation values and phrases which are localized to the natural 3264 language and date format of the user. 3266 4.1.15 'resolution' 3268 The 'resolution' attribute syntax specifies a two-dimensional resolution 3269 in the indicated units. It consists of 3 values: a cross feed direction 3270 resolution (positive integer value), a feed direction resolution 3271 (positive integer value), and a units value. The semantics of these 3272 three components are taken from the Printer MIB [RFC1759] suggested 3273 values. That is, the cross feed direction component resolution 3274 component is the same as the prtMarkerAddressabilityXFeedDir object in 3275 the Printer MIB, the feed direction component resolution component is 3276 the same as the prtMarkerAddressabilityFeedDir in the Printer MIB, and 3277 the units component is the same as the prtMarkerAddressabilityUnit 3278 object in the Printer MIB (namely, '3' indicates dots per inch and '4' 3279 indicates dots per centimeter). All three values MUST be present even 3280 if the first two values are the same. Example: '300', '600', '3' 3281 indicates a 300 dpi cross-feed direction resolution, a 600 dpi feed 3282 direction resolution, since a '3' indicates dots per inch (dpi). 3284 4.1.16 '1setOf X' 3286 The '1setOf X' attribute syntax is 1 or more values of attribute syntax 3287 type X. This syntax type is used for multi-valued attributes. The 3288 syntax type is called '1setOf' rather than just 'setOf' as a reminder 3289 that the set of values MUST NOT be empty (i.e., a set of size 0). Sets 3290 are normally unordered. However each attribute description of this type 3291 may specify that the values MUST be in a certain order for that 3292 attribute. 3294 4.2 Job Template Attributes 3296 Job Template attributes describe job processing behavior. Support for 3297 Job Template attributes by a Printer object is OPTIONAL (see section 3298 13.2.3 for a description of support for OPTIONAL attributes). Also, 3299 clients OPTIONALLY supply Job Template attributes in create requests. 3301 Job Template attributes conform to the following rules. For each Job 3302 Template attribute called "xxx": 3304 1. If the Printer object supports "xxx" then it MUST support both a 3305 "xxx-default" attribute (unless there is a "No" in the table below) 3306 and a "xxx-supported" attribute. If the Printer object doesn't 3307 support "xxx", then it MUST support neither an "xxx-default" 3308 attribute nor an "xxx-supported" attribute, and it MUST treat an 3309 attribute "xxx" supplied by a client as unsupported. An attribute 3310 "xxx" may be supported for some document formats and not supported 3312 Isaacson, Powell Expires May 16, 1999 3313 for other document formats. For example, it is expected that a 3314 Printer object would only support "orientation-requested" for some 3315 document formats (such as 'text/plain' or 'text/html') but not 3316 others (such as 'application/postscript'). 3318 2. "xxx" is OPTIONALLY supplied by the client in a create request. 3319 If "xxx" is supplied, the client is indicating a desired job 3320 processing behavior for this Job. When "xxx" is not supplied, the 3321 client is indicating that the Printer object apply its default job 3322 processing behavior at job processing time if the document content 3323 does not contain an embedded instruction indicating an xxx-related 3324 behavior. 3326 Note: Since an administrator MAY change the default value attribute 3327 after a Job object has been submitted but before it has been 3328 processed, the default value used by the Printer object at job 3329 processing time may be different that the default value in effect 3330 at job submission time. 3332 3. The "xxx-supported" attribute is a Printer object attribute that 3333 describes which job processing behaviors are supported by that 3334 Printer object. A client can query the Printer object to find out 3335 what xxx-related behaviors are supported by inspecting the returned 3336 values of the "xxx-supported" attribute. 3338 Note: The "xxx" in each "xxx-supported" attribute name is singular, 3339 even though an "xxx-supported" attribute usually has more than one 3340 value, such as "job-sheet-supported", unless the "xxx" Job Template 3341 attribute is plural, such as "finishings" or "sides". In such 3342 cases the "xxx-supported" attribute names are: "finishings- 3343 supported" and "sides-supported". 3345 4. The "xxx-default" default value attribute describes what will be 3346 done at job processing time when no other job processing 3347 information is supplied by the client (either explicitly as an IPP 3348 attribute in the create request or implicitly as an embedded 3349 instruction within the document data). 3351 If an application wishes to present an end user with a list of supported 3352 values from which to choose, the application SHOULD query the Printer 3353 object for its supported value attributes. The application SHOULD also 3354 query the default value attributes. If the application then limits 3355 selectable values to only those value that are supported, the 3356 application can guarantee that the values supplied by the client in the 3357 create request all fall within the set of supported values at the 3358 Printer. When querying the Printer, the client MAY enumerate each 3359 attribute by name in the Get-Printer-Attributes Request, or the client 3360 MAY just name the "job-template" group in order to get the complete set 3361 of supported attributes (both supported and default attributes). 3363 The "finishings" attribute is an example of a Job Template attribute. 3364 It can take on a set of values such as 'staple', 'punch', and/or 3365 'cover'. A client can query the Printer object for the "finishings- 3366 supported" attribute and the "finishings-default" attribute. The 3368 Isaacson, Powell Expires May 16, 1999 3369 supported attribute contains a set of supported values. The default 3370 value attribute contains the finishing value(s) that will be used for a 3371 new Job if the client does not supply a "finishings" attribute in the 3372 create request and the document data does not contain any corresponding 3373 finishing instructions. If the client does supply the "finishings" 3374 attribute in the create request, the IPP object validates the value or 3375 values to make sure that they are a subset of the supported values 3376 identified in the Printer object's "finishings-supported" attribute. 3377 See section 3.2.1.2. 3379 The table below summarizes the names and relationships for all Job 3380 Template attributes. The first column of the table (labeled "Job 3381 Attribute") shows the name and syntax for each Job Template attribute in 3382 the Job object. These are the attributes that can optionally be supplied 3383 by the client in a create request. The last two columns (labeled 3384 "Printer: Default Value Attribute" and "Printer: Supported Values 3385 Attribute") shows the name and syntax for each Job Template attribute in 3386 the Printer object (the default value attribute and the supported values 3387 attribute). A "No" in the table means the Printer MUST NOT support the 3388 attribute (that is, the attribute is simply not applicable). For 3389 brevity in the table, the 'text' and 'name' entries do not show the 3390 maximum length for each attribute. 3392 Isaacson, Powell Expires May 16, 1999 3393 +===================+======================+======================+ 3394 | Job Attribute |Printer: Default Value| Printer: Supported | 3395 | | Attribute | Values Attribute | 3396 +===================+======================+======================+ 3397 | job-priority | job-priority-default |job-priority-supported| 3398 | (integer 1:100) | (integer 1:100) |(integer 1:100) | 3399 +-------------------+----------------------+----------------------+ 3400 | job-hold-until | job-hold-until- |job-hold-until- | 3401 | (type3 keyword | | default | supported | 3402 | name) | (type3 keyword | |(1setOf | 3403 | | name) | type3 keyword | name)| 3404 +-------------------+----------------------+----------------------+ 3405 | job-sheets | job-sheets-default |job-sheets-supported | 3406 | (type3 keyword | | (type3 keyword | |(1setOf | 3407 | name) | name) | type3 keyword | name)| 3408 +-------------------+----------------------+----------------------+ 3409 |multiple-document- |multiple-document- |multiple-document- | 3410 | handling | handling-default |handling-supported | 3411 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 3412 +-------------------+----------------------+----------------------+ 3413 | copies | copies-default | copies-supported | 3414 | (integer (1:MAX)) | (integer (1:MAX)) | (rangeOfInteger | 3415 | | | (1:MAX)) | 3416 +-------------------+----------------------+----------------------+ 3417 | finishings | finishings-default | finishings-supported | 3418 |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | 3419 +-------------------+----------------------+----------------------+ 3420 | page-ranges | No | page-ranges- | 3421 | (1setOf | | supported (boolean) | 3422 | rangeOfInteger | | | 3423 | (1:MAX)) | | | 3424 +-------------------+----------------------+----------------------+ 3425 | sides | sides-default | sides-supported | 3426 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 3427 +-------------------+----------------------+----------------------+ 3428 | number-up | number-up-default | number-up-supported | 3429 | (integer (1:MAX)) | (integer (1:MAX)) |(1setOf integer | 3430 | | | (1:MAX) | | 3431 | | | rangeOfInteger | 3432 | | | (1:MAX)) | 3433 +-------------------+----------------------+----------------------+ 3434 | orientation- |orientation-requested-|orientation-requested-| 3435 | requested | default | supported | 3436 | (type2 enum) | (type2 enum) | (1setOf type2 enum) | 3437 +-------------------+----------------------+----------------------+ 3438 | media | media-default | media-supported | 3439 | (type3 keyword | | (type3 keyword | |(1setOf | 3440 | name) | name) | type3 keyword | name)| 3441 | | | | 3442 | | | media-ready | 3443 | | |(1setOf | 3444 | | | type3 keyword | name)| 3445 +-------------------+----------------------+----------------------+ 3447 Isaacson, Powell Expires May 16, 1999 3448 +===================+======================+======================+ 3449 | Job Attribute |Printer: Default Value| Printer: Supported | 3450 | | Attribute | Values Attribute | 3451 +===================+======================+======================+ 3452 | printer-resolution| printer-resolution- | printer-resolution- | 3453 | (resolution) | default | supported | 3454 | | (resolution) |(1setOf resolution) | 3455 +-------------------+----------------------+----------------------+ 3456 | print-quality | print-quality-default| print-quality- | 3457 | (type2 enum) | (type2 enum) | supported | 3458 | | |(1setOf type2 enum) | 3459 +-------------------+----------------------+----------------------+ 3461 4.2.1 job-priority (integer(1:100)) 3463 This attribute specifies a priority for scheduling the Job. A higher 3464 value specifies a higher priority. The value 1 indicates the lowest 3465 possible priority. The value 100 indicates the highest possible 3466 priority. Among those jobs that are ready to print, a Printer MUST 3467 print all jobs with a priority value of n before printing those with a 3468 priority value of n-1 for all n. 3470 If the Printer object supports this attribute, it MUST always support 3471 the full range from 1 to 100. No administrative restrictions are 3472 permitted. This way an end-user can always make full use of the entire 3473 range with any Printer object. If privileged jobs are implemented 3474 outside IPP/1.0, they MUST have priorities higher than 100, rather than 3475 restricting the range available to end-users. 3477 If the client does not supply this attribute and this attribute is 3478 supported by the Printer object, the Printer object MUST use the value 3479 of the Printer object's "job-priority-default" at job submission time 3480 (unlike most Job Template attributes that are used if necessary at job 3481 processing time). 3483 The syntax for the "job-priority-supported" is also integer(1:100). 3484 This single integer value indicates the number of priority levels 3485 supported. The Printer object MUST take the value supplied by the 3486 client and map it to the closest integer in a sequence of n integers 3487 values that are evenly distributed over the range from 1 to 100 using 3488 the formula: 3490 roundToNearestInt((100x+50)/n) 3492 where n is the value of "job-priority-supported" and x ranges from 0 3493 through n-1. 3495 For example, if n=1 the sequence of values is 50; if n=2, the sequence 3496 of values is: 25 and 75; if n = 3, the sequence of values is: 17, 50 3497 and 83; if n = 10, the sequence of values is: 5, 15, 25, 35, 45, 55, 3498 65, 75, 85, and 95; if n = 100, the sequence of values is: 1, 2, 3, . 3499 100. 3501 Isaacson, Powell Expires May 16, 1999 3502 If the value of the Printer object's "job-priority-supported" is 10 and 3503 the client supplies values in the range 1 to 10, the Printer object maps 3504 them to 5, in the range 11 to 20, the Printer object maps them to 15, 3505 etc. 3507 4.2.2 job-hold-until (type3 keyword | name (MAX)) 3509 This attribute specifies the named time period during which the Job MUST 3510 become a candidate for printing. 3512 Standard keyword values for named time periods are: 3514 'no-hold': immediately, if there are not other reasons to hold the 3515 job 3516 'day-time': during the day 3517 'evening': evening 3518 'night': night 3519 'weekend': weekend 3520 'second-shift': second-shift (after close of business) 3521 'third-shift': third-shift (after midnight) 3523 An administrator MUST associate allowable print times with a named time 3524 period (by means outside IPP/1.0). An administrator is encouraged to 3525 pick names that suggest the type of time period. An administrator MAY 3526 define additional values using the 'name' or 'keyword' attribute syntax, 3527 depending on implementation. 3529 If the value of this attribute specifies a time period that is in the 3530 future, the Printer MUST add the 'job-hold-until-specified' value to the 3531 job's "job-state-reasons" attribute, move the job to the 'pending-held' 3532 state, and MUST NOT schedule the job for printing until the specified 3533 time-period arrives. When the specified time period arrives, the 3534 Printer MUST remove the 'job-hold-until-specified' value from the job's 3535 "job-state-reason" attribute and, if there are no other job state 3536 reasons that keep the job in the 'pending-held' state, the Printer MUST 3537 consider the job as a candidate for processing by moving the job to the 3538 'pending' state. 3540 If this job attribute value is the named value 'no-hold', or the 3541 specified time period has already started, the job MUST be a candidate 3542 for processing immediately. 3544 If the client does not supply this attribute and this attribute is 3545 supported by the Printer object, the Printer object MUST use the value 3546 of the Printer object's "job-hold-until-default" at job submission time 3547 (unlike most Job Template attributes that are used if necessary at job 3548 processing time). 3550 4.2.3 job-sheets (type3 keyword | name(MAX)) 3552 This attribute determines which job start/end sheet(s), if any, MUST be 3553 printed with a job. 3555 Isaacson, Powell Expires May 16, 1999 3556 Standard keyword values are: 3558 'none': no job sheet is printed 3559 'standard': one or more site specific standard job sheets are 3560 printed, e.g. a single start sheet or both start and end sheet is 3561 printed 3563 An administrator MAY define additional values using the 'name' or 3564 'keyword' attribute syntax, depending on implementation. 3566 Note: The effect of this attribute on jobs with multiple documents MAY 3567 be affected by the "multiple-document-handling" job attribute (section 3568 4.2.4), depending on the job sheet semantics. 3570 4.2.4 multiple-document-handling (type2 keyword) 3572 This attribute is relevant only if a job consists of two or more 3573 documents. The attribute controls finishing operations and the placement 3574 of one or more print-stream pages into impressions and onto media 3575 sheets. When the value of the "copies" attribute exceeds 1, it also 3576 controls the order in which the copies that result from processing the 3577 documents are produced. For the purposes of this explanations, if "a" 3578 represents an instance of document data, then the result of processing 3579 the data in document "a" is a sequence of media sheets represented by 3580 "a(*)". 3582 Standard keyword values are: 3584 'single-document': If a Job object has multiple documents, say, the 3585 document data is called a and b, then the result of processing all 3586 the document data (a and then b) MUST be treated as a single 3587 sequence of media sheets for finishing operations; that is, 3588 finishing would be performed on the concatenation of the sequences 3589 a(*),b(*). The Printer object MUST NOT force the data in each 3590 document instance to be formatted onto a new print-stream page, nor 3591 to start a new impression on a new media sheet. If more than one 3592 copy is made, the ordering of the sets of media sheets resulting 3593 from processing the document data MUST be a(*), b(*), a(*), b(*), 3594 ..., and the Printer object MUST force each copy (a(*),b(*)) to 3595 start on a new media sheet. 3596 'separate-documents-uncollated-copies': If a Job object has multiple 3597 documents, say, the document data is called a and b, then the 3598 result of processing the data in each document instance MUST be 3599 treated as a single sequence of media sheets for finishing 3600 operations; that is, the sets a(*) and b(*) would each be finished 3601 separately. The Printer object MUST force each copy of the result 3602 of processing the data in a single document to start on a new media 3603 sheet. If more than one copy is made, the ordering of the sets of 3604 media sheets resulting from processing the document data MUST be 3605 a(*), a(*), ..., b(*), b(*) ... . 3606 'separate-documents-collated-copies': If a Job object has multiple 3607 documents, say, the document data is called a and b, then the 3608 result of processing the data in each document instance MUST be 3610 Isaacson, Powell Expires May 16, 1999 3611 treated as a single sequence of media sheets for finishing 3612 operations; that is, the sets a(*) and b(*) would each be finished 3613 separately. The Printer object MUST force each copy of the result 3614 of processing the data in a single document to start on a new media 3615 sheet. If more than one copy is made, the ordering of the sets of 3616 media sheets resulting from processing the document data MUST be 3617 a(*), b(*), a(*), b(*), ... . 3618 'single-document-new-sheet': Same as 'single-document', except that 3619 the Printer object MUST ensure that the first impression of each 3620 document instance in the job is placed on a new media sheet. This 3621 value allows multiple documents to be stapled together with a 3622 single staple where each document starts on a new sheet. 3624 The 'single-document' value is the same as 'separate-documents-collated- 3625 copies' with respect to ordering of print-stream pages, but not media 3626 sheet generation, since 'single-document' will put the first page of the 3627 next document on the back side of a sheet if an odd number of pages have 3628 been produced so far for the job, while 'separate-documents-collated- 3629 copies' always forces the next document or document copy on to a new 3630 sheet. In addition, if the "finishings" attribute specifies 'staple', 3631 then with 'single-document', documents a and b are stapled together as a 3632 single document with no regard to new sheets, with 'single-document-new- 3633 sheet', documents a and b are stapled together as a single document, but 3634 document b starts on a new sheet, but with 'separate-documents- 3635 uncollated-copies' and 'separate-documents-collated-copies', documents a 3636 and b are stapled separately. 3638 Note: None of these values provide means to produce uncollated sheets 3639 within a document, i.e., where multiple copies of sheet n are produced 3640 before sheet n+1 of the same document. 3642 The relationship of this attribute and the other attributes that control 3643 document processing is described in section 16.3. 3645 4.2.5 copies (integer(1:MAX)) 3647 This attribute specifies the number of copies to be printed. 3649 On many devices the supported number of collated copies will be limited 3650 by the number of physical output bins on the device, and may be 3651 different from the number of uncollated copies which can be supported. 3653 Note: The effect of this attribute on jobs with multiple documents is 3654 controlled by the "multiple-document-handling" job attribute (section 3655 4.2.4) and the relationship of this attribute and the other attributes 3656 that control document processing is described in section 16.3. 3658 4.2.6 finishings (1setOf type2 enum) 3660 This attribute identifies the finishing operations that the Printer uses 3661 for each copy of each printed document in the Job. For Jobs with 3662 multiple documents, the "multiple-document-handling" attribute 3663 determines what constitutes a "copy" for purposes of finishing. 3665 Isaacson, Powell Expires May 16, 1999 3666 Standard enum values are: 3668 Value Symbolic Name and Description 3670 '3' 'none': Perform no finishing 3671 '4' 'staple': Bind the document(s) with one or more staples. The 3672 exact number and placement of the staples is site- 3673 defined. 3674 '5' 'punch': This value indicates that holes are required in the 3675 finished document. The exact number and placement of the 3676 holes is site-defined The punch specification MAY be 3677 satisfied (in a site- and implementation-specific manner) 3678 either by drilling/punching, or by substituting pre- 3679 drilled media. 3680 '6' 'cover': This value is specified when it is desired to select 3681 a non-printed (or pre-printed) cover for the document. 3682 This does not supplant the specification of a printed 3683 cover (on cover stock medium) by the document itself. 3684 '7' 'bind': This value indicates that a binding is to be applied 3685 to the document; the type and placement of the binding is 3686 site-defined." 3688 Note: The effect of this attribute on jobs with multiple documents is 3689 controlled by the "multiple-document-handling" job attribute (section 3690 4.2.4) and the relationship of this attribute and the other attributes 3691 that control document processing is described in section 16.3. 3693 If the client supplies a value of 'none' along with any other 3694 combination of values, it is the same as if only that other combination 3695 of values had been supplied (that is the 'none' value has no effect). 3697 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 3699 This attribute identifies the range(s) of print-stream pages that the 3700 Printer object uses for each copy of each document which are to be 3701 printed. Nothing is printed for any pages identified that do not exist 3702 in the document(s). Ranges MUST be in ascending order, for example: 1- 3703 3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling Printer 3704 object can process the job in a single pass. If the ranges are not 3705 ascending or are overlapping, the IPP object MUST reject the request and 3706 return the 'client-error-bad-request' status code. The attribute is 3707 associated with print-stream pages not application-numbered pages (for 3708 example, the page numbers found in the headers and or footers for 3709 certain word processing applications). 3711 For Jobs with multiple documents, the "multiple-document-handling" 3712 attribute determines what constitutes a "copy" for purposes of the 3713 specified page range(s). When "multiple-document-handling" is 'single- 3714 document', the Printer object MUST apply each supplied page range once 3715 to the concatenation of the print-stream pages. For example, if there 3716 are 8 documents of 10 pages each, the page-range '41:60' prints the 3717 pages in the 5th and 6th documents as a single document and none of the 3718 pages of the other documents are printed. When "multiple-document- 3720 Isaacson, Powell Expires May 16, 1999 3721 handling" is 'separate-document-uncollated-copies' or 'separate- 3722 document-collated-copies', the Printer object MUST apply each supplied 3723 page range repeatedly to each document copy. For the same job, the 3724 page-range '1:3, 10:10' would print the first 3 pages and the 10th page 3725 of each of the 8 documents in the Job, as 8 separate documents. 3727 In most cases, the exact pages to be printed will be generated by a 3728 device driver and this attribute would not be required. However, when 3729 printing an archived document which has already been formatted, the end 3730 user may elect to print just a subset of the pages contained in the 3731 document. In this case, if page-range = n.m is specified, the first 3732 page to be printed will be page n. All subsequent pages of the document 3733 will be printed through and including page m. 3735 "page-ranges-supported" is a boolean value indicating whether or not the 3736 printer is capable of supporting the printing of page ranges. This 3737 capability may differ from one PDL to another. There is no "page-ranges- 3738 default" attribute. If the "page-ranges" attribute is not supplied by 3739 the client, all pages of the document will be printed. 3741 Note: The effect of this attribute on jobs with multiple documents is 3742 controlled by the "multiple-document-handling" job attribute (section 3743 4.2.4) and the relationship of this attribute and the other attributes 3744 that control document processing is described in section 16.3. 3746 4.2.8 sides (type2 keyword) 3748 This attribute specifies how print-stream pages are to be imposed upon 3749 the sides of an instance of a selected medium, i.e., an impression. 3751 The standard keyword values are: 3753 'one-sided': imposes each consecutive print-stream page upon the same 3754 side of consecutive media sheets. 3755 'two-sided-long-edge': imposes each consecutive pair of print-stream 3756 pages upon front and back sides of consecutive media sheets, such 3757 that the orientation of each pair of print-stream pages on the 3758 medium would be correct for the reader as if for binding on the 3759 long edge. This imposition is sometimes called 'duplex' or 'head- 3760 to-head'. 3761 'two-sided-short-edge': imposes each consecutive pair of print-stream 3762 pages upon front and back sides of consecutive media sheets, such 3763 that the orientation of each pair of print-stream pages on the 3764 medium would be correct for the reader as if for binding on the 3765 short edge. This imposition is sometimes called 'tumble' or 'head- 3766 to-toe'. 3768 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 3769 all work the same for portrait or landscape. However 'head-to-toe' is 3770 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 3771 switches between 'duplex' and 'tumble' when using portrait and landscape 3772 modes. 3774 Isaacson, Powell Expires May 16, 1999 3775 Note: The effect of this attribute on jobs with multiple documents is 3776 controlled by the "multiple-document-handling" job attribute (section 3777 4.2.4) and the relationship of this attribute and the other attributes 3778 that control document processing is described in section 16.3. 3780 4.2.9 number-up (integer(1:MAX)) 3782 This attribute specifies the number of print-stream pages to impose upon 3783 a single side of an instance of a selected medium. For example, if the 3784 value is: 3786 Value Description 3788 '1' the Printer MUST place one print-stream page on a single side 3789 of an instance of the selected medium (MAY add some sort 3790 of translation, scaling, or rotation). 3791 '2' the Printer MUST place two print-stream pages on a single side 3792 of an instance of the selected medium (MAY add some sort 3793 of translation, scaling, or rotation). 3794 '4' the Printer MUST place four print-stream pages on a single 3795 side of an instance of the selected medium (MAY add some 3796 sort of translation, scaling, or rotation). 3798 This attribute primarily controls the translation, scaling and rotation 3799 of print-stream pages. 3801 Note: The effect of this attribute on jobs with multiple documents is 3802 controlled by the "multiple-document-handling" job attribute (section 3803 4.2.4) and the relationship of this attribute and the other attributes 3804 that control document processing is described in section 16.3. 3806 4.2.10 orientation-requested (type2 enum) 3808 This attribute indicates the desired orientation for printed print- 3809 stream pages; it does not describe the orientation of the client- 3810 supplied print-stream pages. 3812 For some document formats (such as 'application/postscript'), the 3813 desired orientation of the print-stream pages is specified within the 3814 document data. This information is generated by a device driver prior 3815 to the submission of the print job. Other document formats (such as 3816 'text/plain') do not include the notion of desired orientation within 3817 the document data. In the latter case it is possible for the Printer 3818 object to bind the desired orientation to the document data after it has 3819 been submitted. It is expected that a Printer object would only support 3820 "orientations-requested" for some document formats (e.g., 'text/plain' 3821 or 'text/html') but not others (e.g., 'application/postscript'). This 3822 is no different than any other Job Template attribute since section 4.2, 3823 item 1, points out that a Printer object may support or not support any 3824 Job Template attribute based on the document format supplied by the 3825 client. However, a special mention is made here since it is very likely 3826 that a Printer object will support "orientation-requested" for only a 3827 subset of the supported document formats. 3829 Isaacson, Powell Expires May 16, 1999 3830 Standard enum values are: 3832 Value Symbolic Name and Description 3834 '3' 'portrait': The content will be imaged across the short edge 3835 of the medium. 3836 '4' 'landscape': The content will be imaged across the long edge 3837 of the medium. Landscape is defined to be a rotation of 3838 the print-stream page to be imaged by +90 degrees with 3839 respect to the medium (i.e. anti-clockwise) from the 3840 portrait orientation. Note: The +90 direction was 3841 chosen because simple finishing on the long edge is the 3842 same edge whether portrait or landscape 3843 '5' 'reverse-landscape': The content will be imaged across the 3844 long edge of the medium. Reverse-landscape is defined to 3845 be a rotation of the print-stream page to be imaged by - 3846 90 degrees with respect to the medium (i.e. clockwise) 3847 from the portrait orientation. Note: The 'reverse- 3848 landscape' value was added because some applications 3849 rotate landscape -90 degrees from portrait, rather than 3850 +90 degrees. 3851 '6' 'reverse-portrait': The content will be imaged across the 3852 short edge of the medium. Reverse-portrait is defined to 3853 be a rotation of the print-stream page to be imaged by 3854 180 degrees with respect to the medium from the portrait 3855 orientation. Note: The 'reverse-portrait' value was 3856 added for use with the "finishings" attribute in cases 3857 where the opposite edge is desired for finishing a 3858 portrait document on simple finishing devices that have 3859 only one finishing position. Thus a 'text'/plain' 3860 portrait document can be stapled "on the right" by a 3861 simple finishing device as is common use with some middle 3862 eastern languages such as Hebrew. 3864 Note: The effect of this attribute on jobs with multiple documents is 3865 controlled by the "multiple-document-handling" job attribute (section 3866 4.2.4) and the relationship of this attribute and the other attributes 3867 that control document processing is described in section 16.3. 3869 4.2.11 media (type3 keyword | name(MAX)) 3871 This attribute identifies the medium that the Printer uses for all 3872 impressions of the Job. 3874 The values for "media" include medium-names, medium-sizes, input-trays 3875 and electronic forms so that one attribute specifies the media. If a 3876 Printer object supports a medium name as a value of this attribute, such 3877 a medium name implicitly selects an input-tray that contains the 3878 specified medium. If a Printer object supports a medium size as a value 3879 of this attribute, such a medium size implicitly selects a medium name 3880 that in turn implicitly selects an input-tray that contains the medium 3881 with the specified size. If a Printer object supports an input-tray as 3882 the value of this attribute, such an input-tray implicitly selects the 3884 Isaacson, Powell Expires May 16, 1999 3885 medium that is in that input-tray at the time the job prints. This case 3886 includes manual-feed input-trays. If a Printer object supports an 3887 electronic form as the value of this attribute, such an electronic form 3888 implicitly selects a medium-name that in turn implicitly selects an 3889 input-tray that contains the medium specified by the electronic form. 3890 The electronic form also implicitly selects an image that the Printer 3891 MUST merge with the document data as its prints each page. 3893 Standard keyword values are (taken from ISO DPA and the Printer MIB) and 3894 are listed in section 15. An administrator MAY define additional values 3895 using the 'name' or 'keyword' attribute syntax, depending on 3896 implementation. 3898 There is also an additional Printer attribute named "media-ready" which 3899 differs from "media-supported" in that legal values only include the 3900 subset of "media-supported" values that are physically loaded and ready 3901 for printing with no operator intervention required. If an IPP object 3902 supports "media-supported", it NEED NOT support "media-ready". 3904 The relationship of this attribute and the other attributes that control 3905 document processing is described in section 16.3. 3907 4.2.12 printer-resolution (resolution) 3909 This attribute identifies the resolution that Printer uses for the Job. 3911 4.2.13 print-quality (type2 enum) 3913 This attribute specifies the print quality that the Printer uses for the 3914 Job. 3916 The standard enum values are: 3918 Value Symbolic Name and Description 3920 '3' 'draft': lowest quality available on the printer 3921 '4' 'normal': normal or intermediate quality on the printer 3922 '5' 'high': highest quality available on the printer 3924 4.3 Job Description Attributes 3926 The attributes in this section form the attribute group called "job- 3927 description". The following table summarizes these attributes. The 3928 third column indicates whether the attribute is a REQUIRED attribute 3929 that MUST be supported by Printer objects. If it is not indicated as 3930 REQUIRED, then it is OPTIONAL. The maximum size in octets for 'text' 3931 and 'name' attributes is indicated in parenthesizes. 3933 Isaacson, Powell Expires May 16, 1999 3934 +----------------------------+----------------------+----------------+ 3935 | Attribute | Syntax | REQUIRED? | 3936 +----------------------------+----------------------+----------------+ 3937 | job-uri | uri | REQUIRED | 3938 +----------------------------+----------------------+----------------+ 3939 | job-id | integer(1:MAX) | REQUIRED | 3940 +----------------------------+----------------------+----------------+ 3941 | job-printer-uri | uri | REQUIRED | 3942 +----------------------------+----------------------+----------------+ 3943 | job-more-info | uri | | 3944 +----------------------------+----------------------+----------------+ 3945 | job-name | name (MAX) | REQUIRED | 3946 +----------------------------+----------------------+----------------+ 3947 | job-originating-user-name | name (MAX) | REQUIRED | 3948 +----------------------------+----------------------+----------------+ 3949 | job-state | type1 enum | REQUIRED | 3950 +----------------------------+----------------------+----------------+ 3951 | job-state-reasons | 1setOf type2 keyword | | 3952 +----------------------------+----------------------+----------------+ 3953 | job-state-message | text (MAX) | | 3954 +----------------------------+----------------------+----------------+ 3955 | number-of-documents | integer (0:MAX) | | 3956 +----------------------------+----------------------+----------------+ 3957 | output-device-assigned | name (127) | | 3958 +----------------------------+----------------------+----------------+ 3959 | time-at-creation | integer (0:MAX) | | 3960 +----------------------------+----------------------+----------------+ 3961 | time-at-processing | integer (0:MAX) | | 3962 +----------------------------+----------------------+----------------+ 3963 | time-at-completed | integer (0:MAX) | | 3964 +----------------------------+----------------------+----------------+ 3965 | number-of-intervening-jobs | integer (0:MAX) | | 3966 +----------------------------+----------------------+----------------+ 3967 | job-message-from-operator | text (127) | | 3968 +----------------------------+----------------------+----------------+ 3969 | job-k-octets | integer (0:MAX) | | 3970 +----------------------------+----------------------+----------------+ 3971 | job-impressions | integer (0:MAX) | | 3972 +----------------------------+----------------------+----------------+ 3973 | job-media-sheets | integer (0:MAX) | | 3974 +----------------------------+----------------------+----------------+ 3975 | job-k-octets-processed | integer (0:MAX) | | 3976 +----------------------------+----------------------+----------------+ 3977 | job-impressions-completed | integer (0:MAX) | | 3978 +----------------------------+----------------------+----------------+ 3979 | job-media-sheets-completed | integer (0:MAX) | | 3980 +----------------------------+----------------------+----------------+ 3981 | attributes-charset | charset | REQUIRED | 3982 +----------------------------+----------------------+----------------+ 3983 | attributes-natural-language| naturalLanguage | REQUIRED | 3984 +----------------------------+----------------------+----------------+ 3986 Isaacson, Powell Expires May 16, 1999 3987 4.3.1 job-uri (uri) 3989 This REQUIRED attribute contains the URI for the job. The Printer 3990 object, on receipt of a new job, generates a URI which identifies the 3991 new Job. The Printer object returns the value of the "job-uri" 3992 attribute as part of the response to a create request. The precise 3993 format of a Job URI is implementation dependent. If the Printer object 3994 supports more than one URI and there is some relationship between the 3995 newly formed Job URI and the Printer object's URI, the Printer object 3996 uses the Printer URI supplied by the client in the create request. For 3997 example, if the create request comes in over a secure channel, the new 3998 Job URI MUST use the same secure channel. This can be guaranteed 3999 because the Printer object is responsible for generating the Job URI and 4000 the Printer object is aware of its security configuration and policy as 4001 well as the Printer URI used in the create request. 4003 For a description of this attribute and its relationship to "job-id" and 4004 "job-printer-uri" attribute, see the discussion in section 2.4 on 4005 "Object Identity". 4007 4.3.2 job-id (integer(1:MAX)) 4009 This REQUIRED attribute contains the ID of the job. The Printer, on 4010 receipt of a new job, generates an ID which identifies the new Job on 4011 that Printer. The Printer returns the value of the "job-id" attribute 4012 as part of the response to a create request. The 0 value is not 4013 included to allow for compatibility with SNMP index values which also 4014 cannot be 0. 4016 For a description of this attribute and its relationship to "job-uri" 4017 and "job-printer-uri" attribute, see the discussion in section 2.4 on 4018 "Object Identity". 4020 4.3.3 job-printer-uri (uri) 4022 This REQUIRED attribute identifies the Printer object that created this 4023 Job object. When a Printer object creates a Job object, it populates 4024 this attribute with the Printer object URI that was used in the create 4025 request. This attribute permits a client to identify the Printer object 4026 that created this Job object when only the Job object's URI is available 4027 to the client. The client queries the creating Printer object to 4028 determine which languages, charsets, operations, are supported for this 4029 Job. 4031 For a description of this attribute and its relationship to "job-uri" 4032 and "job-id" attribute, see the discussion in section 2.4 on "Object 4033 Identity". 4035 4.3.4 job-more-info (uri) 4037 Similar to "printer-more-info", this attribute contains the URI 4038 referencing some resource with more information about this Job object, 4039 perhaps an HTML page containing information about the Job. 4041 Isaacson, Powell Expires May 16, 1999 4042 4.3.5 job-name (name(MAX)) 4044 This REQUIRED attribute is the name of the job. It is a name that is 4045 more user friendly than the "job-uri" attribute value. It does not need 4046 to be unique between Jobs. The Job's "job-name" attribute is set to the 4047 value supplied by the client in the "job-name" operation attribute in 4048 the create request (see Section 3.2.1.1). If, however, the "job-name" 4049 operation attribute is not supplied by the client in the create request, 4050 the Printer object, on creation of the Job, MUST generate a name. The 4051 printer SHOULD generate the value of the Job's "job-name" attribute from 4052 the first of the following sources that produces a value: 1) the 4053 "document-name" operation attribute of the first (or only) document, 2) 4054 the "document-URI" attribute of the first (or only) document, or 3) any 4055 other piece of Job specific and/or Document Content information. 4057 4.3.6 job-originating-user-name (name(MAX)) 4059 This REQUIRED attribute contains the name of the end user that submitted 4060 the print job. The Printer object sets this attribute to the most 4061 authenticated printable name that it can obtain from the authentication 4062 service over which the IPP operation was received. Only if such is not 4063 available, does the Printer object use the value supplied by the client 4064 in the "requesting-user-name" operation attribute of the create 4065 operation (see Section 8). 4067 Note: The Printer object needs to keep an internal originating user id 4068 of some form, typically as a credential of a principal, with the Job 4069 object. Since such an internal attribute is implementation-dependent 4070 and not of interest to clients, it is not specified as a Job Description 4071 attribute. This originating user id is used for authorization checks 4072 (if any) on all subsequent operation. 4074 4.3.7 job-state (type1 enum) 4076 This REQUIRED attribute identifies the current state of the job. Even 4077 though the IPP protocol defines eight values for job states, 4078 implementations only need to support those states which are appropriate 4079 for the particular implementation. In other words, a Printer supports 4080 only those job states implemented by the output device and available to 4081 the Printer object implementation. 4083 Standard enum values are: 4085 Values Symbolic Name and Description 4087 '3' 'pending': The job is a candidate to start processing, but is 4088 not yet processing. 4090 '4' 'pending-held': The job is not a candidate for processing for 4091 any number of reasons but will return to the 'pending' 4092 state as soon as the reasons are no longer present. The 4093 job's "job-state-reason" attribute MUST indicate why the 4094 job is no longer a candidate for processing. 4096 Isaacson, Powell Expires May 16, 1999 4098 '5' 'processing': One or more of: 4100 1. the job is using, or is attempting to use, one or 4101 more purely software processes that are analyzing, 4102 creating, or interpreting a PDL, etc., 4103 2. the job is using, or is attempting to use, one or 4104 more hardware devices that are interpreting a PDL, making 4105 marks on a medium, and/or performing finishing, such as 4106 stapling, etc., 4107 3. the Printer object has made the job ready for 4108 printing, but the output device is not yet printing it, 4109 either because the job hasn't reached the output device 4110 or because the job is queued in the output device or some 4111 other spooler, awaiting the output device to print it. 4113 When the job is in the 'processing' state, the entire job 4114 state includes the detailed status represented in the 4115 printer's "printer-state", "printer-state-reasons", and 4116 "printer-state-message" attributes. 4118 Implementations MAY, though they NEED NOT, include 4119 additional values in the job's "job-state-reasons" 4120 attribute to indicate the progress of the job, such as 4121 adding the 'job-printing' value to indicate when the 4122 output device is actually making marks on paper and/or 4123 the 'processing-to-stop-point' value to indicate that the 4124 IPP object is in the process of canceling or aborting the 4125 job. Most implementations won't bother with this nuance. 4127 '6' 'processing-stopped': The job has stopped while processing 4128 for any number of reasons and will return to the 4129 'processing' state as soon as the reasons are no longer 4130 present. 4132 The job's "job-state-reason" attribute MAY indicate why 4133 the job has stopped processing. For example, if the 4134 output device is stopped, the 'printer-stopped' value MAY 4135 be included in the job's "job-state-reasons" attribute. 4137 Note: When an output device is stopped, the device 4138 usually indicates its condition in human readable form 4139 locally at the device. A client can obtain more complete 4140 device status remotely by querying the Printer object's 4141 "printer-state", "printer-state-reasons" and "printer- 4142 state-message" attributes. 4144 '7' 'canceled': The job has been canceled by a Cancel-Job 4145 operation and the Printer object has completed canceling 4146 the job and all job status attributes have reached their 4147 final values for the job. While the Printer object is 4148 canceling the job, the job remains in its current state, 4150 Isaacson, Powell Expires May 16, 1999 4151 but the job's "job-state-reasons" attribute SHOULD 4152 contain the 'processing-to-stop-point' value and one of 4153 the 'canceled-by-user', 'canceled-by-operator', or 4154 'canceled-at-device' value. When the job moves to the 4155 'canceled' state, the 'processing-to-stop-point' value, 4156 if present, MUST be removed, but the 'canceled-by-xxx', 4157 if present, MUST remain. 4159 '8' 'aborted': The job has been aborted by the system, usually 4160 while the job was in the 'processing' or 'processing- 4161 stopped' state and the Printer has completed aborting the 4162 job and all job status attributes have reached their 4163 final values for the job. While the Printer object is 4164 aborting the job, the job remains in its current state, 4165 but the job's "job-state-reasons" attribute SHOULD 4166 contain the 'processing-to-stop-point' and 'aborted-by- 4167 system' values. When the job moves to the 'aborted' 4168 state, the 'processing-to-stop-point' value, if present, 4169 MUST be removed, but the 'aborted-by-system' value, if 4170 present, MUST remain. 4172 '9' 'completed': The job has completed successfully or with 4173 warnings or errors after processing and all of the job 4174 media sheets have been successfully stacked in the 4175 appropriate output bin(s) and all job status attributes 4176 have reached their final values for the job. The job's 4177 "job-state-reasons" attribute SHOULD contain one of: 4178 'completed-successfully', 'completed-with-warnings', or 4179 'completed-with-errors' values. 4181 The final value for this attribute MUST be one of: 'completed', 4182 'canceled', or 'aborted' before the Printer removes the job altogether. 4183 The length of time that jobs remain in the 'canceled', 'aborted', and 4184 'completed' states depends on implementation. 4186 The following figure shows the normal job state transitions. 4188 +----> canceled 4189 / 4190 +----> pending --------> processing ---------+------> completed 4191 | ^ ^ \ 4192 --->+ | | +----> aborted 4193 | v v / 4194 +----> pending-held processing-stopped ---+ 4196 Normally a job progresses from left to right. Other state transitions 4197 are unlikely, but are not forbidden. Not shown are the transitions to 4198 the 'canceled' state from the 'pending', 'pending-held', and 4199 'processing-stopped' states. 4201 Jobs reach one of the three terminal states: 'completed', 'canceled', or 4202 'aborted', after the jobs have completed all activity, including 4203 stacking output media, after the jobs have completed all activity, and 4204 all job status attributes have reached their final values for the job. 4206 Isaacson, Powell Expires May 16, 1999 4207 Note: As with all other IPP attributes, if the implementation can not 4208 determine the correct value for this attribute, it SHOULD respond with 4209 the out-of-band value 'unknown' (see section 4.1) rather than try to 4210 guess at some possibly incorrect value and give the end user the wrong 4211 impression about the state of the Job object. For example, if the 4212 implementation is just a gateway into some printing system that does not 4213 provide detailed status about the print job, the IPP Job object's state 4214 might literally be 'unknown'. 4216 4.3.8 job-state-reasons (1setOf type2 keyword) 4218 This attribute provides additional information about the job's current 4219 state, i.e., information that augments the value of the job's "job- 4220 state" attribute. 4222 Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT 4223 implement them, even if (1) the output device supports the functionality 4224 represented by the reason and (2) is available to the Printer object 4225 implementation. These values MAY be used with any job state or states 4226 for which the reason makes sense. Furthermore, when implemented, the 4227 Printer MUST return these values when the reason applies and MUST NOT 4228 return them when the reason no longer applies whether the value of the 4229 Job's "job-state" attribute changed or not. When the Job does not have 4230 any reasons for being in its current state, the value of the Job's "job- 4231 state-reasons" attribute MUST be 'none'. 4233 Note: While values cannot be added to the 'job-state' attribute without 4234 impacting deployed clients that take actions upon receiving "job-state" 4235 values, it is the intent that additional "job-state-reasons" values can 4236 be defined and registered without impacting such deployed clients. In 4237 other words, the "job-state-reasons" attribute is intended to be 4238 extensible. 4240 The following standard keyword values are defined. For ease of 4241 understanding, the values are presented in the order in which the 4242 reasons are likely to occur (if implemented), starting with the 'job- 4243 incoming' value: 4245 'none': There are no reasons for the job's current state. 4246 'job-incoming': The Create-Job operation has been accepted by the 4247 Printer, but the Printer is expecting additional Send-Document 4248 and/or Send-URI operations and/or is accessing/accepting document 4249 data. 4250 'submission-interrupted': The job was not completely submitted for 4251 some unforeseen reason, such as: (1) the Printer has crashed before 4252 the job was closed by the client, (2) the Printer or the document 4253 transfer method has crashed in some non-recoverable way before the 4254 document data was entirely transferred to the Printer, (3) the 4255 client crashed or failed to close the job before the time-out 4256 period. See section 4.4.28. 4257 'job-outgoing': The Printer is transmitting the job to the output 4258 device. 4260 Isaacson, Powell Expires May 16, 1999 4262 'job-hold-until-specified': The value of the job's "job-hold-until" 4263 attribute was specified with a time period that is still in the 4264 future. The job MUST NOT be a candidate for processing until this 4265 reason is removed and there are no other reasons to hold the job. 4266 'resources-are-not-ready': At least one of the resources needed by 4267 the job, such as media, fonts, resource objects, etc., is not ready 4268 on any of the physical printer's for which the job is a candidate. 4269 This condition MAY be detected when the job is accepted, or 4270 subsequently while the job is pending or processing, depending on 4271 implementation. The job may remain in its current state or be 4272 moved to the 'pending-held' state, depending on implementation 4273 and/or job scheduling policy. 4274 'printer-stopped-partly': The value of the Printer's "printer-state- 4275 reasons" attribute contains the value 'stopped-partly'. 4276 'printer-stopped': The value of the Printer's "printer-state" 4277 attribute is 'stopped'. 4278 'job-interpreting': Job is in the 'processing' state, but more 4279 specifically, the Printer is interpreting the document data. 4280 'job-queued': Job is in the 'processing' state, but more 4281 specifically, the Printer has queued the document data. 4282 'job-transforming': Job is in the 'processing' state, but more 4283 specifically, the Printer is interpreting document data and 4284 producing another electronic representation. 4285 'job-printing': The output device is marking media. This value is 4286 useful for Printers which spend a great deal of time processing (1) 4287 when no marking is happening and then want to show that marking is 4288 now happening or (2) when the job is in the process of being 4289 canceled or aborted while the job remains in the 'processing' 4290 state, but the marking has not yet stopped so that impression or 4291 sheet counts are still increasing for the job. 4292 'job-canceled-by-user': The job was canceled by the owner of the job 4293 using the Cancel-Job request, i.e., by a user whose authenticated 4294 identity is the same as the value of the originating user that 4295 created the Job object, or by some other authorized end-user, such 4296 as a member of the job owner's security group. 4297 'job-canceled-by-operator': The job was canceled by the operator 4298 using the Cancel-Job request, i.e., by a user who has been 4299 authenticated as having operator privileges (whether local or 4300 remote). If the security policy is to allow anyone to cancel 4301 anyone's job, then this value may be used when the job is canceled 4302 by other than the owner of the job. For such a security policy, in 4303 effect, everyone is an operator as far as canceling jobs with IPP 4304 is concerned. 4305 'job-canceled-at-device': The job was canceled by an unidentified 4306 local user, i.e., a user at a console at the device. 4307 'aborted-by-system': The job (1) is in the process of being aborted, 4308 (2) has been aborted by the system and placed in the 'aborted' 4309 state, or (3) has been aborted by the system and placed in the 4310 'pending-held' state, so that a user or operator can manually try 4311 the job again. 4312 'processing-to-stop-point': The requester has issued a Cancel-job 4313 operation or the Printer object has aborted the job, but is still 4314 performing some actions on the job until a specified stop point 4315 occurs or job termination/cleanup is completed. 4317 Isaacson, Powell Expires May 16, 1999 4318 This reason is recommended to be used in conjunction with the 4319 'processing' job state to indicate that the Printer object is still 4320 performing some actions on the job while the job remains in the 4321 'processing' state. After all the job's job description attributes 4322 have stopped incrementing, the Printer object moves the job from 4323 the 'processing' state to the 'canceled' or 'aborted' job states. 4325 'service-off-line': The Printer is off-line and accepting no jobs. 4326 All 'pending' jobs are put into the 'pending-held' state. This 4327 situation could be true if the service's or document transform's 4328 input is impaired or broken. 4329 'job-completed-successfully': The job completed successfully. 4330 'job-completed-with-warnings': The job completed with warnings. 4331 'job-completed-with-errors': The job completed with errors (and 4332 possibly warnings too). 4334 4.3.9 job-state-message (text(MAX)) 4336 This attribute specifies information about the "job-state" and "job- 4337 state-reasons" attributes in human readable text. If the Printer object 4338 supports this attribute, the Printer object MUST be able to generate 4339 this message in any of the natural languages identified by the Printer's 4340 "generated-natural-language-supported" attribute (see the "attributes- 4341 natural-language" operation attribute specified in Section 3.1.4.1). 4343 Note: the value SHOULD NOT contain additional information not contained 4344 in the values of the "job-state" and "job-states-reasons" attributes, 4345 such as interpreter error information. Otherwise, application programs 4346 might attempt to parse the (localized text). For such additional 4347 information such as interpreter errors for application program 4348 consumption, a new attribute with keyword values, needs to be developed 4349 and registered. 4351 4.3.10 number-of-documents (integer(0:MAX)) 4353 This attribute indicates the number of documents in the job, i.e., the 4354 number of Send-Document, Send-URI, Print-Job, or Print-URI operations 4355 that the Printer has accepted for this job, regardless of whether the 4356 document data has reached the Printer object or not. 4358 Implementations supporting the OPTIONAL Create-Job/Send-Document/Send- 4359 URI operations SHOULD support this attribute so that clients can query 4360 the number of documents in each job. 4362 4.3.11 output-device-assigned (name(127)) 4364 This attribute identifies the output device to which the Printer object 4365 has assigned this job. If an output device implements an embedded 4366 Printer object, the Printer object NEED NOT set this attribute. If a 4368 Isaacson, Powell Expires May 16, 1999 4369 print server implements a Printer object, the value MAY be empty (zero- 4370 length string) or not returned until the Printer object assigns an 4371 output device to the job. This attribute is particularly useful when a 4372 single Printer object support multiple devices (so called "fan-out"). 4374 4.3.12 time-at-creation (integer(0:MAX)) 4376 This attribute indicates the point in time at which the Job object was 4377 created. In order to populate this attribute, the Printer object uses 4378 the value in its "printer-up-time" attribute at the time the Job object 4379 is created. 4381 4.3.13 time-at-processing (integer(0:MAX)) 4383 This attribute indicates the point in time at which the Job object began 4384 processing. In order to populate this attribute, the Printer object 4385 uses the value in its "printer-up-time" attribute at the time the Job 4386 object is moved into the 'processing' state for the first time. 4388 4.3.14 time-at-completed (integer(0:MAX)) 4390 This attribute indicates the point in time at which the Job object 4391 completed (or was cancelled or aborted). In order to populate this 4392 attribute, the Printer object uses the value in its "printer-up-time" 4393 attribute at the time the Job object is moved into the 'completed' or 4394 'canceled' or 'aborted' state. 4396 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 4398 This attribute indicates the number of jobs that are "ahead" of this job 4399 in the relative chronological order of expected time to complete (i.e., 4400 the current scheduled order). For efficiency, it is only necessary to 4401 calculate this value when an operation is performed that requests this 4402 attribute. 4404 4.3.16 job-message-from-operator (text(127)) 4406 This attribute provides a message from an operator, system administrator 4407 or "intelligent" process to indicate to the end user the reasons for 4408 modification or other management action taken on a job. 4410 4.3.17 job-k-octets (integer(0:MAX)) 4412 This attribute specifies the total size of the document(s) in K octets, 4413 i.e., in units of 1024 octets requested to be processed in the job. The 4414 value MUST be rounded up, so that a job between 1 and 1024 octets MUST 4415 be indicated as being 1, 1025 to 2048 MUST be 2, etc. 4417 This value MUST NOT include the multiplicative factors contributed by 4418 the number of copies specified by the "copies" attribute, independent of 4419 whether the device can process multiple copies without making multiple 4421 Isaacson, Powell Expires May 16, 1999 4422 passes over the job or document data and independent of whether the 4423 output is collated or not. Thus the value is independent of the 4424 implementation and indicates the size of the document(s) measured in K 4425 octets independent of the number of copies. 4427 This value MUST also not include the multiplicative factor due to a 4428 copies instruction embedded in the document data. If the document data 4429 actually includes replications of the document data, this value will 4430 include such replication. In other words, this value is always the size 4431 of the source document data, rather than a measure of the hardcopy 4432 output to be produced. 4434 Note: This attribute and the following two attributes ("job-impressions" 4435 and "job-media-sheets") are not intended to be counters; they are 4436 intended to be useful routing and scheduling information if known. For 4437 these three attributes, the Printer object may try to compute the value 4438 if it is not supplied in the create request. Even if the client does 4439 supply a value for these three attributes in the create request, the 4440 Printer object MAY choose to change the value if the Printer object is 4441 able to compute a value which is more accurate than the client supplied 4442 value. The Printer object may be able to determine the correct value 4443 for these three attributes either right at job submission time or at any 4444 later point in time. 4446 4.3.18 job-impressions (integer(0:MAX)) 4448 This attribute specifies the total size in number of impressions of the 4449 document(s) being submitted (see the definition of impression in section 4450 13.2.5). 4452 As with "job-k-octets", this value MUST NOT include the multiplicative 4453 factors contributed by the number of copies specified by the "copies" 4454 attribute, independent of whether the device can process multiple copies 4455 without making multiple passes over the job or document data and 4456 independent of whether the output is collated or not. Thus the value is 4457 independent of the implementation and reflects the size of the 4458 document(s) measured in impressions independent of the number of copies. 4460 As with "job-k-octets", this value MUST also not include the 4461 multiplicative factor due to a copies instruction embedded in the 4462 document data. If the document data actually includes replications of 4463 the document data, this value will include such replication. In other 4464 words, this value is always the number of impressions in the source 4465 document data, rather than a measure of the number of impressions to be 4466 produced by the job. 4468 See the Note in the "job-k-octets" attribute that also applies to this 4469 attribute. 4471 4.3.19 job-media-sheets (integer(0:MAX)) 4473 This attribute specifies the total number of media sheets to be produced 4474 for this job. 4476 Isaacson, Powell Expires May 16, 1999 4477 Unlike the "job-k-octets" and the "job-impressions" attributes, this 4478 value MUST include the multiplicative factors contributed by the number 4479 of copies specified by the "copies" attribute and a 'number of copies' 4480 instruction embedded in the document data, if any. This difference 4481 allows the system administrator to control the lower and upper bounds of 4482 both (1) the size of the document(s) with "job-k-octets-supported" and 4483 "job-impressions-supported" and (2) the size of the job with "job-media- 4484 sheets-supported". 4486 See the Note in the "job-k-octets" attribute that also applies to this 4487 attribute. 4489 4.3.20 job-k-octets-processed (integer(0:MAX)) 4491 This attribute specifies the total number of octets processed in K 4492 octets, i.e., in units of 1024 octets so far. The value MUST be rounded 4493 up, so that a job between 1 and 1024 octets inclusive MUST be indicated 4494 as being 1, 1025 to 2048 inclusive MUST be 2, etc. 4496 For implementations where multiple copies are produced by the 4497 interpreter with only a single pass over the data, the final value MUST 4498 be equal to the value of the "job-k-octets" attribute. For 4499 implementations where multiple copies are produced by the interpreter by 4500 processing the data for each copy, the final value MUST be a multiple of 4501 the value of the "job-k-octets" attribute. 4503 Note: This attribute and the following two attributes ("job-impressions- 4504 completed" and "job-sheets-completed") are intended to be counters. That 4505 is, the value for a job that has not started processing MUST be 0. When 4506 the job's "job-state" is 'processing' or 'processing-stopped', this 4507 value is intended to contain the amount of the job that has been 4508 processed to the time at which the attributes are requested. 4510 4.3.21 job-impressions-completed (integer(0:MAX)) 4512 This job attribute specifies the number of impressions completed for the 4513 job so far. For printing devices, the impressions completed includes 4514 interpreting, marking, and stacking the output. 4516 See the note in "job-k-octets-processed" which also applies to this 4517 attribute. 4519 4.3.22 job-media-sheets-completed (integer(0:MAX)) 4521 This job attribute specifies the media-sheets completed marking and 4522 stacking for the entire job so far whether those sheets have been 4523 processed on one side or on both. 4525 See the note in "job-k-octets-processed" which also applies to this 4526 attribute. 4528 Isaacson, Powell Expires May 16, 1999 4529 4.3.23 attributes-charset (charset) 4531 This REQUIRED attribute is populated using the value in the client 4532 supplied "attributes-charset" attribute in the create request. It 4533 identifies the charset (coded character set and encoding method) used by 4534 any Job attributes with attribute syntax 'text' and 'name' that were 4535 supplied by the client in the create request. See Section 3.1.4 for a 4536 complete description of the "attributes-charset" operation attribute. 4538 This attribute does not indicate the charset in which the 'text' and 4539 'name' values are stored internally in the Job object. The internal 4540 charset is implementation-defined. The IPP object MUST convert from 4541 whatever the internal charset is to that being requested in an operation 4542 as specified in Section 3.1.4. 4544 4.3.24 attributes-natural-language (naturalLanguage) 4546 This REQUIRED attribute is populated using the value in the client 4547 supplied "attributes-natural-language" attribute in the create request. 4548 It identifies the natural language used for any Job attributes with 4549 attribute syntax 'text' and 'name' that were supplied by the client in 4550 the create request. See Section 3.1.4 for a complete description of the 4551 "attributes-natural-language" operation attribute. See Sections 4.1.1.2 4552 and 4.1.2.2 for how a Natural Language Override may be supplied 4553 explicitly for each 'text' and 'name' attribute value that differs from 4554 the value identified by the "attributes-natural-language" attribute. 4556 4.4 Printer Description Attributes 4558 These attributes form the attribute group called "printer-description". 4559 The following table summarizes these attributes, their syntax, and 4560 whether or not they are REQUIRED for a Printer object to support. If 4561 they are not indicated as REQUIRED, they are OPTIONAL. The maximum size 4562 in octets for 'text' and 'name' attributes is indicated in 4563 parenthesizes. 4565 Note: How these attributes are set by an Administrator is outside the 4566 scope of this specification. 4568 Isaacson, Powell Expires May 16, 1999 4569 +----------------------------+----------------------+----------------+ 4570 | Attribute | Syntax | REQUIRED? | 4571 +----------------------------+----------------------+----------------+ 4572 | printer-uri-supported | 1setOf uri | REQUIRED | 4573 +----------------------------+----------------------+----------------+ 4574 | uri-security-supported | 1setOf type2 keyword | REQUIRED | 4575 +----------------------------+----------------------+----------------+ 4576 | printer-name | name (127) | REQUIRED | 4577 +----------------------------+----------------------+----------------+ 4578 | printer-location | text (127) | | 4579 +----------------------------+----------------------+----------------+ 4580 | printer-info | text (127) | | 4581 +----------------------------+----------------------+----------------+ 4582 | printer-more-info | uri | | 4583 +----------------------------+----------------------+----------------+ 4584 | printer-driver-installer | uri | | 4585 +----------------------------+----------------------+----------------+ 4586 | printer-make-and-model | text (127) | | 4587 +----------------------------+----------------------+----------------+ 4588 | printer-more-info- | uri | | 4589 | manufacturer | | | 4590 +----------------------------+----------------------+----------------+ 4591 | printer-state | type1 enum | REQUIRED | 4592 +----------------------------+----------------------+----------------+ 4593 | printer-state-reasons | 1setOf type2 keyword | | 4594 +----------------------------+----------------------+----------------+ 4595 | printer-state-message | text (MAX) | | 4596 +----------------------------+----------------------+----------------+ 4597 | operations-supported | 1setOf type2 enum | REQUIRED | 4598 +----------------------------+----------------------+----------------+ 4599 | charset-configured | charset | REQUIRED | 4600 +----------------------------+----------------------+----------------+ 4601 | charset-supported | 1setOf charset | REQUIRED | 4602 +----------------------------+----------------------+----------------+ 4603 | natural-language-configured| naturalLanguage | REQUIRED | 4604 +----------------------------+----------------------+----------------+ 4605 | generated-natural-language-| 1setOf | REQUIRED | 4606 | supported | naturalLanguage | | 4607 +----------------------------+----------------------+----------------+ 4608 | document-format-default | mimeMediaType | REQUIRED | 4609 +----------------------------+----------------------+----------------+ 4610 | document-format- | 1setOf | REQUIRED | 4611 | supported | mimeMediaType | | 4612 +----------------------------+----------------------+----------------+ 4613 | printer-is-accepting-jobs | boolean | REQUIRED | 4614 +----------------------------+----------------------+----------------+ 4615 | queued-job-count | integer (0:MAX) | RECOMMENDED | 4616 +----------------------------+----------------------+----------------+ 4617 | printer-message-from- | text (127) | | 4618 | operator | | | 4619 +----------------------------+----------------------+----------------+ 4620 | color-supported | boolean | | 4621 +----------------------------+----------------------+----------------+ 4623 Isaacson, Powell Expires May 16, 1999 4624 +----------------------------+----------------------+----------------+ 4625 | Attribute | Syntax | REQUIRED? | 4626 +----------------------------+----------------------+----------------+ 4627 | reference-uri-schemes- | 1setOf uriScheme | | 4628 | supported | | | 4629 +----------------------------+----------------------+----------------+ 4630 | pdl-override-supported | type2 keyword | REQUIRED | 4631 +----------------------------+----------------------+----------------+ 4632 | printer-up-time | integer (1:MAX) | REQUIRED | 4633 +----------------------------+----------------------+----------------+ 4634 | printer-current-time | dateTime | | 4635 +----------------------------+----------------------+----------------+ 4636 | multiple-operation-time-out| integer (1:MAX) | | 4637 +----------------------------+----------------------+----------------+ 4638 | compression-supported | 1setOf type3 keyword | | 4639 +----------------------------+----------------------+----------------+ 4640 | job-k-octets-supported | rangeOfInteger | | 4641 | | (0:MAX) | | 4642 +----------------------------+----------------------+----------------+ 4643 | job-impressions-supported | rangeOfInteger | | 4644 | | (0:MAX) | | 4645 +----------------------------+----------------------+----------------+ 4646 | job-media-sheets-supported | rangeOfInteger | | 4647 | | (0:MAX) | | 4648 +----------------------------+----------------------+----------------+ 4650 4.4.1 printer-uri-supported (1setOf uri) 4652 This REQUIRED Printer attribute contains at least one URI for the 4653 Printer object. It OPTIONALLY contains more than one URI for the 4654 Printer object. An administrator determines a Printer object's URI(s) 4655 and configures this attribute to contain those URIs by some means 4656 outside the scope of IPP/1.0. The precise format of this URI is 4657 implementation dependent and depends on the protocol. See the next 4658 section for a description "uri-security-supported" which is the REQUIRED 4659 companion attribute to this "printer-uri-supported" attribute. See 4660 section 2.4 on Printer object identity and section 8.2 on security and 4661 URIs for more information. 4663 4.4.2 uri-security-supported (1setOf type2 keyword) 4665 This REQUIRED Printer attribute MUST have the same cardinality (contain 4666 the same number of values) as the "printer-uri-supported" attribute. 4667 This attribute identifies the security mechanisms used for each URI 4668 listed in the "printer-uri-supported" attribute. The "i th" value in 4669 "uri-security-supported" corresponds to the "i th" value in "printer- 4670 uri-supported" and it describes the security mechanisms used for 4671 accessing the Printer object via that URI. The following standard values 4672 are defined: 4674 'none': There are no secure communication channel protocols in use 4675 for the given URI. 4677 Isaacson, Powell Expires May 16, 1999 4679 'ssl3': SSL3 [SSL] is the secure communications channel protocol in 4680 use for the given URI. 4682 Consider the following example. For a single Printer object, an 4683 administrator configures the "printer-uri-supported" and "uri-security- 4684 supported" attributes as follows: 4686 "printer-uri-supported": 'http://acme.com/open-use-printer', 4687 'http://acme.com/restricted-use-printer', 'http://acme.com/private- 4688 printer' 4689 "uri-security-supported": 'none', 'none', 'ssl3' 4691 In this case, one Printer object has three URIs. 4693 - For the first URI, 'http://acme.com/open-use-printer', the value 4694 'none' in "uri-security-supported" indicates that there is no 4695 secure channel protocol configured to run under HTTP. The name 4696 implies that there is no Basic or Digest authentication being used, 4697 but it is up to the client to determine that while using HTTP 4698 underneath the IPP application protocol. 4699 - For the second URI, 'http://acme.com/restricted-use-printer', the 4700 value 'none' in "uri-security-supported" indicates that there is no 4701 secure channel protocol configured to run under HTTP. In this 4702 case, although the name does imply that there is some sort of Basic 4703 or Digest authentication being used within HTTP, it is up to the 4704 client to determine that while using HTTP and by processing any 4705 '401 Unauthorized' HTTP error messages. 4706 - For the third URI, 'http://acme.com/private-printer', the value 4707 'ssl3' in "uri-security-supported" indicates that SSL3 is being 4708 used to secure the channel. The client SHOULD be prepared to use 4709 SSL3 framing to negotiate an acceptable ciphersuite to use while 4710 communicating with the Printer object. In this case, the name 4711 implies the use of a secure communications channel, but the fact is 4712 made explicit by the presence of the 'ssl3' value in "uri-security- 4713 supported". The client does not need to resort to understanding 4714 which security it must use by following naming conventions or by 4715 parsing the URI to determine which security mechanisms are implied. 4717 It is expected that many IPP Printer objects will be configured to 4718 support only one channel (either configured to use SSL3 access or not), 4719 and will therefore only ever have one URI listed in the "printer-uri- 4720 supported" attribute. No matter the configuration of the Printer object 4721 (whether it has only one URI or more than one URI), a client MUST supply 4722 only one URI in the target "printer-uri" operation attribute. 4724 4.4.3 printer-name (name(127)) 4726 This REQUIRED Printer attribute contains the name of the Printer object. 4727 It is a name that is more end-user friendly than a URI. An administrator 4728 determines a printer's name and sets this attribute to that name. This 4729 name may be the last part of the printer's URI or it may be unrelated. 4730 In non-US-English locales, a name may contain characters that are not 4731 allowed in a URI. 4733 Isaacson, Powell Expires May 16, 1999 4734 4.4.4 printer-location (text(127)) 4736 This Printer attribute identifies the location of the device. This could 4737 include things like: "in Room 123A, second floor of building XYZ". 4739 4.4.5 printer-info (text(127)) 4741 This Printer attribute identifies the descriptive information about this 4742 Printer object. This could include things like: "This printer can be 4743 used for printing color transparencies for HR presentations", or "Out of 4744 courtesy for others, please print only small (1-5 page) jobs at this 4745 printer", or even "This printer is going away on July 1, 1997, please 4746 find a new printer". 4748 4.4.6 printer-more-info (uri) 4750 This Printer attribute contains a URI used to obtain more information 4751 about this specific Printer object. For example, this could be an HTTP 4752 type URI referencing an HTML page accessible to a Web Browser. The 4753 information obtained from this URI is intended for end user consumption. 4754 Features outside the scope of IPP can be accessed from this URI. The 4755 information is intended to be specific to this printer instance and site 4756 specific services (e.g. job pricing, services offered, end user 4757 assistance). The device manufacturer may initially populate this 4758 attribute. 4760 4.4.7 printer-driver-installer (uri) 4762 This Printer attribute contains a URI to use to locate the driver 4763 installer for this Printer object. This attribute is intended for 4764 consumption by automata. The mechanics of print driver installation is 4765 outside the scope of IPP. The device manufacturer may initially 4766 populate this attribute. 4768 4.4.8 printer-make-and-model (text(127)) 4770 This Printer attribute identifies the make and model of the device. The 4771 device manufacturer may initially populate this attribute. 4773 4.4.9 printer-more-info-manufacturer (uri) 4775 This Printer attribute contains a URI used to obtain more information 4776 about this type of device. The information obtained from this URI is 4777 intended for end user consumption. Features outside the scope of IPP 4778 can be accessed from this URI (e.g., latest firmware, upgrades, print 4779 drivers, optional features available, details on color support). The 4780 information is intended to be germane to this printer without regard to 4781 site specific modifications or services. The device manufacturer may 4782 initially populate this attribute. 4784 Isaacson, Powell Expires May 16, 1999 4785 4.4.10 printer-state (type1 enum) 4787 This REQUIRED Printer attribute identifies the current state of the 4788 device. The "printer-state reasons" attribute augments the "printer- 4789 state" attribute to give more detailed information about the Printer in 4790 the given printer state. 4792 A Printer object need only update this attribute before responding to an 4793 operation which requests the attribute; the Printer object NEED NOT 4794 update this attribute continually, since asynchronous event notification 4795 is not part of IPP/1.0. A Printer NEED NOT implement all values if they 4796 are not applicable to a given implementation. 4798 The following standard enum values are defined: 4800 Value Symbolic Name and Description 4802 '3' 'idle': If a Printer receives a job (whose required resources 4803 are ready) while in this state, such a job MUST transit 4804 into the 'processing' state immediately. If the 4805 "printer-state-reasons" attribute contains any reasons, 4806 they MUST be reasons that would not prevent a job from 4807 transiting into the 'processing' state immediately, e.g., 4808 'toner-low'. Note: if a Printer controls more than one 4809 output device, the above definition implies that a 4810 Printer is 'idle' if at least one output device is idle. 4812 '4' 'processing': If a Printer receives a job (whose required 4813 resources are ready) while in this state, such a job MUST 4814 transit into the 'pending' state immediately. Such a job 4815 MUST transit into the 'processing' state only after jobs 4816 ahead of it complete. If the "printer-state-reasons" 4817 attribute contains any reasons, they MUST be reasons that 4818 do not prevent the current job from printing, e.g. 4819 'toner-low'. Note: if a Printer controls more than one 4820 output device, the above definition implies that a 4821 Printer is 'processing' if at least one output device is 4822 processing, and none is idle. 4824 '5' 'stopped': If a Printer receives a job (whose required 4825 resources are ready) while in this state, such a job MUST 4826 transit into the 'pending' state immediately. Such a job 4827 MUST transit into the 'processing' state only after some 4828 human fixes the problem that stopped the printer and 4829 after jobs ahead of it complete processing. If 4830 supported, the "printer-state-reasons" attribute MUST 4831 contain at least one reason, e.g. 'media-jam', which 4832 prevents it from either processing the current job or 4833 transitioning a 'pending' job to the 'processing' state. 4835 Note: if a Printer controls more than one output device, 4836 the above definition implies that a Printer is 'stopped' 4837 only if all output devices are stopped. Also, it is 4838 tempting to define 'stopped' as when a sufficient number 4840 Isaacson, Powell Expires May 16, 1999 4841 of output devices are stopped and leave it to an 4842 implementation to define the sufficient number. But such 4843 a rule complicates the definition of 'stopped' and 4844 'processing'. For example, with this alternate definition 4845 of 'stopped', a job can move from 'pending' to 4846 'processing' without human intervention, even though the 4847 Printer is stopped. 4849 4.4.11 printer-state-reasons (1setOf type2 keyword) 4851 This Printer attribute supplies additional detail about the device's 4852 state. 4854 Each keyword value MAY have a suffix to indicate its level of severity. 4855 The three levels are: report (least severe), warning, and error (most 4856 severe). 4858 - '-report': This suffix indicates that the reason is a "report". An 4859 implementation may choose to omit some or all reports. Some reports 4860 specify finer granularity about the printer state; others serve as 4861 a precursor to a warning. A report MUST contain nothing that could 4862 affect the printed output. 4863 - '-warning': This suffix indicates that the reason is a "warning". 4864 An implementation may choose to omit some or all warnings. Warnings 4865 serve as a precursor to an error. A warning MUST contain nothing 4866 that prevents a job from completing, though in some cases the 4867 output may be of lower quality. 4868 - '-error': This suffix indicates that the reason is an "error". An 4869 implementation MUST include all errors. If this attribute contains 4870 one or more errors, printer MUST be in the stopped state. 4872 If the implementation does not add any one of the three suffixes, all 4873 parties MUST assume that the reason is an "error". 4875 If a Printer object controls more than one output device, each value of 4876 this attribute MAY apply to one or more of the output devices. An error 4877 on one output device that does not stop the Printer object as a whole 4878 MAY appear as a warning in the Printer's "printer-state-reasons 4879 attribute". If the "printer-state" for such a Printer has a value of 4880 'stopped', then there MUST be an error reason among the values in the 4881 "printer-state-reasons" attribute. 4883 The following standard keyword values are defined: 4885 'other': The device has detected an error other than one listed in 4886 this document. 4887 'none': There are not reasons. This state reason is semantically 4888 equivalent to "printer-state-reasons" without any value. 4889 'media-needed': A tray has run out of media. 4890 'media-jam': The device has a media jam. 4891 'paused': Someone has paused the Printer object. In this state, a 4892 Printer MUST NOT produce printed output, but it MUST perform other 4893 operations requested by a client. If a Printer had been printing a 4895 Isaacson, Powell Expires May 16, 1999 4896 job when the Printer was paused, the Printer MUST resume printing 4897 that job when the Printer is no longer paused and leave no evidence 4898 in the printed output of such a pause. 4899 'shutdown': Someone has removed a Printer object from service, and 4900 the device may be powered down or physically removed. In this 4901 state, a Printer object MUST NOT produce printed output, and unless 4902 the Printer object is realized by a print server that is still 4903 active, the Printer object MUST perform no other operations 4904 requested by a client, including returning this value. If a Printer 4905 object had been printing a job when it was shutdown, the Printer 4906 NEED NOT resume printing that job when the Printer is no longer 4907 shutdown. If the Printer resumes printing such a job, it may leave 4908 evidence in the printed output of such a shutdown, e.g. the part 4909 printed before the shutdown may be printed a second time after the 4910 shutdown. 4911 'connecting-to-device': The Printer object has scheduled a job on the 4912 output device and is in the process of connecting to a shared 4913 network output device (and might not be able to actually start 4914 printing the job for an arbitrarily long time depending on the 4915 usage of the output device by other servers on the network). 4916 'timed-out': The server was able to connect to the output device (or 4917 is always connected), but was unable to get a response from the 4918 output device. 4919 'stopping': The Printer object is in the process of stopping the 4920 device and will be stopped in a while. When the device is stopped, 4921 the Printer object will change the Printer object's state to 4922 'stopped'. The 'stopping-warning' reason is never an error, even 4923 for a Printer with a single output device. When an output-device 4924 ceases accepting jobs, the Printer will have this reason while the 4925 output device completes printing. 4926 'stopped-partly': When a Printer object controls more than one output 4927 device, this reason indicates that one or more output devices are 4928 stopped. If the reason is a report, fewer than half of the output 4929 devices are stopped. If the reason is a warning, fewer than all of 4930 the output devices are stopped. 4931 'toner-low': The device is low on toner. 4932 'marker-supply-low': The device is low on marker supply (ink, paint, 4933 etc.). 4934 'spool-area-full': The limit of persistent storage allocated for 4935 spooling has been reached. 4936 'cover-open': One or more covers on the device are open. 4937 'interlock-open': One or more interlock devices on the printer are 4938 unlocked. 4939 'door-open': One or more doors on the device are open. 4940 'input-tray-missing': One or more input trays are not in the device. 4941 'media-low': At least one input tray is low on media. 4942 'media-empty': At least one input tray is empty. 4943 'output-tray-missing': One or more output trays are not in the device 4944 'output-area-almost-full': One or more output area is almost full 4945 (e.g. tray, stacker, collator). 4946 'output-area-full': One or more output area is full. (e.g. tray, 4947 stacker, collator) 4948 'marker-supply-low': The device is low on at least one marker supply. 4949 (e.g. toner, ink, ribbon) 4951 Isaacson, Powell Expires May 16, 1999 4953 'marker-supply-empty: The device is out of at least one marker 4954 supply. (e.g. toner, ink, ribbon) 4955 'marker-waste-almost-full': The device marker supply waste receptacle 4956 is almost full. 4957 'marker-waste-full': The device marker supply waste receptacle is 4958 full. 4959 'fuser-over-temp': The fuser temperature is above normal. 4960 'fuser-under-temp': The fuser temperature is below normal. 4961 'opc-near-eol': The optical photo conductor is near end of life. 4962 'opc-life-over': The optical photo conductor is no longer 4963 functioning. 4964 'developer-low': The device is low on developer. 4965 'developer-empty: The device is out of developer. 4966 'interpreter-resource-unavailable': An interpreter resource is 4967 unavailable (i.e. font, form) 4969 4.4.12 printer-state-message (text(MAX)) 4971 This Printer attribute specifies the additional information about the 4972 printer state and printer state reasons in human readable text. If the 4973 Printer object supports this attribute, the Printer object MUST be able 4974 to generate this message in any of the natural languages identified by 4975 the Printer's "generated-natural-language-supported" attribute (see the 4976 "attributes-natural-language" operation attribute specified in Section 4977 3.1.4.1). 4979 4.4.13 operations-supported (1setOf type2 enum) 4981 This REQUIRED Printer attribute specifies the set of supported 4982 operations for this Printer object and contained Job objects. All 32- 4983 bit enum values for this attribute MUST NOT exceed 0x8FFF, since these 4984 values are passed in two octets in each Protocol request [IPP-PRO]. 4986 The following standard enum and "operation-id" (see section 3.1.2) 4987 values are defined: 4989 Value Operation Name 4990 ----------------- ------------------------------------- 4992 0x0000 reserved, not used 4993 0x0001 reserved, not used 4994 0x0002 Print-Job 4995 0x0003 Print-URI 4996 0x0004 Validate-Job 4997 0x0005 Create-Job 4998 0x0006 Send-Document 4999 0x0007 Send-URI 5000 0x0008 Cancel-Job 5001 0x0009 Get-Job-Attributes 5002 0x000A Get-Jobs 5003 0x000B Get-Printer-Attributes 5004 0x000C-0x3FFF reserved for future operations 5006 Isaacson, Powell Expires May 16, 1999 5007 0x4000-0x8FFF reserved for private extensions 5009 This allows for certain vendors to implement private extensions that are 5010 guaranteed to not conflict with future registered extensions. However, 5011 there is no guarantee that two or more private extensions will not 5012 conflict. 5014 4.4.14 charset-configured (charset) 5016 This REQUIRED Printer attribute identifies the charset that the Printer 5017 object has been configured to represent 'text' and 'name' Printer 5018 attributes that are set by the operator, system administrator, or 5019 manufacturer, i.e., for "printer-name" (name), "printer-location" 5020 (text), "printer-info" (text), and "printer-make-and-model" (text). 5021 Therefore, the value of the Printer object's "charset-configured" 5022 attribute MUST also be among the values of the Printer object's 5023 "charset-supported" attribute. 5025 4.4.15 charset-supported (1setOf charset) 5027 This REQUIRED Printer attribute identifies the set of charsets that the 5028 Printer and contained Job objects support in attributes with attribute 5029 syntax 'text' and 'name'. At least the value 'utf-8' MUST be present, 5030 since IPP objects MUST support the UTF-8 [RFC2044] charset. If a 5031 Printer object supports a charset, it means that for all attributes of 5032 syntax 'text' and 'name' the IPP object MUST (1) accept the charset in 5033 requests and return the charset in responses as needed. 5035 If more charsets than UTF-8 are supported, the IPP object MUST perform 5036 charset conversion between the charsets as described in Section 3.2.1.2. 5038 4.4.16 natural-language-configured (naturalLanguage) 5040 This REQUIRED Printer attribute identifies the natural language that the 5041 Printer object has been configured to represent 'text' and 'name' 5042 Printer attributes that are set by the operator, system administrator, 5043 or manufacturer, i.e., for "printer-name" (name), "printer-location" 5044 (text), "printer-info" (text), and "printer-make-and-model" (text). 5045 When returning these Printer attributes, the Printer object MAY return 5046 them in the configured natural language specified by this attribute, 5047 instead of the natural language requested by the client in the 5048 "attributes-natural-language" operation attribute. See Section 3.1.4.1 5049 for the specification of the OPTIONAL multiple natural language support. 5050 Therefore, the value of the Printer object's "natural-language- 5051 configured" attribute MUST also be among the values of the Printer 5052 object's "generated-natural-language-supported" attribute. 5054 4.4.17 generated-natural-language-supported (1setOf naturalLanguage) 5056 This REQUIRED Printer attribute identifies the natural language(s) that 5057 the Printer object and contained Job objects support in attributes with 5058 attribute syntax 'text' and 'name'. The natural language(s) supported 5060 Isaacson, Powell Expires May 16, 1999 5061 depends on implementation and/or configuration. Unlike charsets, IPP 5062 objects MUST accept requests with any natural language or any Natural 5063 Language Override whether the natural language is supported or not. 5065 If a Printer object supports a natural language, it means that for any 5066 of the attributes for which the Printer or Job object generates 5067 messages, i.e., for the "job-state-message" and "printer-state-message" 5068 attributes and Operation Messages (see Section 3.1.5) in operation 5069 responses, the Printer and Job objects MUST be able to generate messages 5070 in any of the Printer's supported natural languages. See section 3.1.4 5071 for the specification of 'text' and 'name' attributes in operation 5072 requests and responses. 5074 Note: A Printer object that supports multiple natural languages, often 5075 has separate catalogs of messages, one for each natural language 5076 supported. 5078 4.4.18 document-format-default (mimeMediaType) 5080 This REQUIRED Printer attribute identifies the document format that the 5081 Printer object has been configured to assume if the client does not 5082 supply a "document-format" operation attribute in any of the operation 5083 requests that supply document data. The standard values for this 5084 attribute are Internet Media types (sometimes called MIME types). For 5085 further details see the description of the 'mimeMediaType' attribute 5086 syntax in Section 4.1.9. 5088 4.4.19 document-format-supported (1setOf mimeMediaType) 5090 This REQUIRED Printer attribute identifies the set of document formats 5091 that the Printer object and contained Job objects can support. For 5092 further details see the description of the 'mimeMediaType' attribute 5093 syntax in Section 4.1.9. 5095 4.4.20 printer-is-accepting-jobs (boolean) 5097 This REQUIRED Printer attribute indicates whether the printer is 5098 currently able to accept jobs, i.e., is accepting Print-Job, Print-URI, 5099 and Create-Job requests. If the value is 'true', the printer is 5100 accepting jobs. If the value is 'false', the Printer object is 5101 currently rejecting any jobs submitted to it. In this case, the Printer 5102 object returns the 'server-error-not-accepting-jobs' status code. 5104 Note: This value is independent of the "printer-state" and "printer- 5105 state-reasons" attributes because its value does not affect the current 5106 job; rather it affects future jobs. This attribute may cause the 5107 Printer to reject jobs when the "printer-state" is 'idle' or it may 5108 cause the Printer object to accepts jobs when the "printer-state" is 5109 'stopped'. 5111 Isaacson, Powell Expires May 16, 1999 5112 4.4.21 queued-job-count (integer(0:MAX)) 5114 This RECOMMENDED Printer attribute contains a count of the number of 5115 jobs that are either 'pending', 'processing', 'pending-held', or 5116 'processing-stopped' and is set by the Printer object. 5118 4.4.22 printer-message-from-operator (text(127)) 5120 This Printer attribute provides a message from an operator, system 5121 administrator or "intelligent" process to indicate to the end user 5122 information or status of the printer, such as why it is unavailable or 5123 when it is expected to be available. 5125 4.4.23 color-supported (boolean) 5127 This Printer attribute identifies whether the device is capable of any 5128 type of color printing at all, including highlight color. All document 5129 instructions having to do with color are embedded within the document 5130 PDL (none are external IPP attributes in IPP/1.0). 5132 Note: end-users are able to determine the nature and details of the 5133 color support by querying the "printer-more-info-manufacturer" Printer 5134 attribute. 5136 4.4.24 reference-uri-schemes-supported (1setOf uriScheme) 5138 This Printer attribute specifies which URI schemes are supported for use 5139 in the "document-uri" operation attribute of the Print-URI or Send-URI 5140 operation. If a Printer object supports these optional operations, it 5141 MUST support the "reference-uri-schemes-supported" Printer attribute 5142 with at least the following schemed URI value: 5144 'ftp': The Printer object will use an FTP 'get' operation as defined 5145 in RFC 2228 [RFC2228] using FTP URLs as defined by [RFC2396] 5146 and[RFC2316]. 5148 The Printer object MAY OPTIONALLY support other URI schemes (see section 5149 4.1.6). 5151 4.4.25 pdl-override-supported (type2 keyword) 5153 This REQUIRED Printer attribute expresses the ability for a particular 5154 Printer implementation to either attempt to override document data 5155 instructions with IPP attributes or not. 5157 This attribute takes on the following values: 5159 - 'attempted': This value indicates that the Printer object attempts 5160 to make the IPP attribute values take precedence over embedded 5161 instructions in the document data, however there is no guarantee. 5163 Isaacson, Powell Expires May 16, 1999 5165 - 'not-attempted': This value indicates that the Printer object makes 5166 no attempt to make the IPP attribute values take precedence over 5167 embedded instructions in the document data. 5169 Section 16 contains a full description of how this attribute interacts 5170 with and affects other IPP attributes, especially the "ipp-attribute- 5171 fidelity" attribute. 5173 4.4.26 printer-up-time (integer(1:MAX)) 5175 This REQUIRED Printer attribute indicates the amount of time (in 5176 seconds) that this instance of this Printer implementation has been up 5177 and running. This value is used to populate the Job attributes "time- 5178 at-creation", "time-at-processing", and "time-at-completed". These time 5179 values are all measured in seconds and all have meaning only relative to 5180 this attribute, "printer-up-time". The value is a monotonically 5181 increasing value starting from 1 when the Printer object is started-up 5182 (initialized, booted, etc.). 5184 If the Printer object goes down at some value 'n', and comes back up, 5185 the implementation MAY: 5187 1. Know how long it has been down, and resume at some value greater 5188 than 'n', or 5189 2. Restart from 1. 5191 In the first case, the Printer SHOULD not tweak any existing related Job 5192 attributes ("time-at-creation", "time-at-processing", and "time-at- 5193 completed"). In the second case, the Printer object SHOULD reset those 5194 attributes to 0. If a client queries a time-related Job attribute and 5195 finds the value to be 0, the client MUST assume that the Job was 5196 submitted in some life other than the Printer's current life. 5198 4.4.27 printer-current-time (dateTime) 5200 This Printer attribute indicates the current absolute wall-clock time. 5201 If an implementation supports this attribute, then a client could 5202 calculate the absolute wall-clock time each Job's "time-at-creation", 5203 "time-at-processing", and "time-at-completed" attributes by using both 5204 "printer-up-time" and this attribute, "printer-current-time". If an 5205 implementation does not support this attribute, a client can only 5206 calculate the relative time of certain events based on the REQUIRED 5207 "printer-up-time" attribute. 5209 4.4.28 multiple-operation-time-out (integer(1:MAX)) 5211 This Printer attributes identifies the minimum time (in seconds) that 5212 the Printer object waits for additional Send-Document or Send-URI 5213 operations to follow a still-open multi-document Job object before 5214 taking any recovery actions, such as the ones indicated in section 5215 3.3.1. 5217 Isaacson, Powell Expires May 16, 1999 5218 It is RECOMMENDED that vendors supply a value for this attribute that is 5219 between 60 and 240 seconds. An implementation MAY allow a system 5220 administrator to set this attribute. If so, the system administrator 5221 MAY be able to set values outside this range. 5223 4.4.29 compression-supported (1setOf type3 keyword) 5225 This Printer attribute identifies the set of supported compression 5226 algorithms for document data. Compression only applies to the document 5227 data; compression does not apply to the encoding of the IPP operation 5228 itself. The supported values are used to validate the client supplied 5229 "compression" operation attributes in Print-Job, Send-Document, and 5230 Send-URI requests. 5232 Standard values are : 5234 'none': no compression is used. 5235 'deflate': ZIP public domain inflate/deflate) compression technology 5236 'gzip' GNU zip compression technology described in RFC 1952 5237 [RFC1952]. 5238 'compress': UNIX compression technology 5240 4.4.30 job-k-octets-supported (rangeOfInteger(0:MAX)) 5242 This Printer attribute specifies the upper and lower bounds of total 5243 sizes of jobs in K octets, i.e., in units of 1024 octets. The supported 5244 values are used to validate the client supplied "job-k-octets" operation 5245 attributes in create requests. The corresponding job description 5246 attribute "job-k-octets" is defined in section 4.3.17. 5248 4.4.31 job-impressions-supported (rangeOfInteger(0:MAX)) 5250 This Printer attribute specifies the upper and lower bounds for the 5251 number of impressions per job. The supported values are used to validate 5252 the client supplied "job-impressions" operation attributes in create 5253 requests. The corresponding job description attribute "job-impressions" 5254 is defined in section 4.3.18. 5256 4.4.32 job-media-sheets-supported (rangeOfInteger(0:MAX)) 5258 This Printer attribute specifies the upper and lower bounds for the 5259 number of media sheets per job. The supported values are used to 5260 validate the client supplied "job-media-sheets" operation attributes in 5261 create requests. The corresponding Job attribute "job-media-sheets" is 5262 defined in section 4.3.19. 5264 5. Conformance 5266 This section describes conformance issues and requirements. This 5267 document introduces model entities such as objects, operations, 5269 Isaacson, Powell Expires May 16, 1999 5270 attributes, attribute syntaxes, and attribute values. These conformance 5271 sections describe the conformance requirements which apply to these 5272 model entities. 5274 5.1 Client Conformance Requirements 5276 A conforming client MUST support all REQUIRED operations as defined in 5277 this document. For each attribute included in an operation request, a 5278 conforming client MUST supply a value whose type and value syntax 5279 conforms to the requirements of the Model document as specified in 5280 Sections 3 and 4. A conforming client MAY supply any registered 5281 extensions and/or private extensions in an operation request, as long as 5282 they meet the requirements in Section 6. 5284 Otherwise, there are no conformance requirements placed on the user 5285 interfaces provided by IPP clients or their applications. For example, 5286 one application might not allow an end user to submit multiple documents 5287 per job, while another does. One application might first query a 5288 Printer object in order to supply a graphical user interface (GUI) 5289 dialogue box with supported and default values whereas a different 5290 implementation might not. 5292 When sending a request, an IPP client NEED NOT supply any attributes 5293 that are indicated as OPTIONALLY supplied by the client. 5295 A client MUST be able to accept any of the attribute syntaxes defined in 5296 Section 4.1, including their full range, that may be returned to it in a 5297 response from a Printer object. In particular for each attribute that 5298 the client supports whose attribute syntax is 'text', the client MUST 5299 accept and process both the 'textWithoutLanguage' and 'textWithLanguage' 5300 forms. Similarly, for each attribute that the client supports whose 5301 attribute syntax is 'name', the client MUST accept and process both the 5302 'nameWithoutLanguage' and 'nameWithLanguage' forms. For presentation 5303 purposes, truncation of long attribute values is not recommended. A 5304 recommended approach would be for the client implementation to allow the 5305 user to scroll through long attribute values. 5307 A query response may contain attribute groups, attributes, and values 5308 that the client does not expect. Therefore, a client implementation 5309 MUST gracefully handle such responses and not refuse to inter-operate 5310 with a conforming Printer that is returning extended registered or 5311 private attributes and/or attribute values that conform to Section 6. 5312 Clients may choose to ignore any parameters, attributes, or values that 5313 they do not understand. 5315 5.2 IPP Object Conformance Requirements 5317 This section specifies the conformance requirements for conforming 5318 implementations with respect to objects, operations, and attributes. 5320 Isaacson, Powell Expires May 16, 1999 5321 5.2.1 Objects 5323 Conforming implementations MUST implement all of the model objects as 5324 defined in this specification in the indicated sections: 5326 Section 2.1 - Printer Object 5327 Section 2.2 - Job Object 5329 5.2.2 Operations 5331 Conforming IPP object implementations MUST implement all of the REQUIRED 5332 model operations, including REQUIRED responses, as defined in this 5333 specification in the indicated sections: 5335 For a Printer object: 5336 Print-Job (section 3.2.1) REQUIRED 5337 Print-URI (section 3.2.2) OPTIONAL 5338 Validate-Job (section 3.2.3) REQUIRED 5339 Create-Job (section 3.2.4) OPTIONAL 5340 Get-Printer-Attributes (section 3.2.5) REQUIRED 5341 Get-Jobs (section 3.2.6) REQUIRED 5343 For a Job object: 5344 Send-Document (section 3.3.1) OPTIONAL 5345 Send-URI (section 3.3.2) OPTIONAL 5346 Cancel-Job (section 3.3.3) REQUIRED 5347 Get-Job-Attributes (section 3.3.4) REQUIRED 5349 Conforming IPP objects MUST support all REQUIRED operation attributes 5350 and all values of such attributes if so indicated in the description. 5351 Conforming IPP objects MUST ignore all unsupported or unknown operation 5352 attributes or operation attribute groups received in a request, but MUST 5353 reject a request that contains a supported operation attribute that 5354 contains an unsupported value. 5356 The following section on object attributes specifies the support 5357 required for object attributes. 5359 5.2.3 IPP Object Attributes 5361 Conforming IPP objects MUST support all of the REQUIRED object 5362 attributes, as defined in this specification in the indicated sections. 5364 If an object supports an attribute, it MUST support only those values 5365 specified in this document or through the extension mechanism described 5366 in section 5.2.4. It MAY support any non-empty subset of these values. 5367 That is, it MUST support at least one of the specified values and at 5368 most all of them. 5370 Isaacson, Powell Expires May 16, 1999 5371 5.2.4 Extensions 5373 A conforming IPP object MAY support registered extensions and private 5374 extensions, as long as they meet the requirements specified in Section 5375 6. 5377 For each attribute included in an operation response, a conforming IPP 5378 object MUST return a value whose type and value syntax conforms to the 5379 requirement of the Model document as specified in Sections 3 and 4. 5381 5.2.5 Attribute Syntaxes 5383 An IPP object MUST be able to accept any of the attribute syntaxes 5384 defined in Section 4.1, including their full range, in any operation in 5385 which a client may supply attributes or the system administrator may 5386 configure attributes (by means outside the scope of IPP/1.0). In 5387 particular for each attribute that the IPP object supports whose 5388 attribute syntax is 'text', the IPP object MUST accept and process both 5389 the 'textWithoutLanguage' and 'textWithLanguage' forms. Similarly, for 5390 each attribute that the IPP object supports whose attribute syntax is 5391 'name', the IPP object MUST accept and process both the 5392 'nameWithoutLanguage' and 'nameWithLanguage' forms. Furthermore, an IPP 5393 object MUST return attributes to the client in operation responses that 5394 conform to the syntax specified in Section 4.1, including their full 5395 range if supplied previously by a client. 5397 5.3 Charset and Natural Language Requirements 5399 All clients and IPP objects MUST support the 'utf-8' charset as defined 5400 in section 4.1.7. 5402 IPP objects MUST be able to accept any client request which correctly 5403 uses the "attributes-natural-language" operation attribute or the 5404 Natural Language Override mechanism on any individual attribute whether 5405 or not the natural language is supported by the IPP object. If an IPP 5406 object supports a natural language, then it MUST be able to translate 5407 (perhaps by table lookup) all generated 'text' or 'name' attribute 5408 values into one of the supported languages (see section 3.1.4). That 5409 is, the IPP object that supports a natural language NEED NOT be a 5410 general purpose translator of any arbitrary 'text' or 'name' value 5411 supplied by the client into that natural language. However, the object 5412 MUST be able to translate (automatically generate) any of its own 5413 attribute values and messages into that natural language. 5415 5.4 Security Conformance Requirements 5417 Conforming IPP Printer objects MAY support Secure Socket Layer Version 3 5418 (SSL3) [SSL] access, support access without SSL3 or support both means 5419 of access. 5421 Isaacson, Powell Expires May 16, 1999 5422 Conforming IPP clients SHOULD support SSL3 access and non-SSL3 access. 5423 Note: This client requirement to support both means that conforming IPP 5424 clients will be able to inter-operate with any IPP Printer object. 5426 For a detailed discussion of security considerations and the IPP 5427 application security profile required for SSL3 support, see section 8. 5429 6. IANA Considerations (registered and private extensions) 5431 This section describes how IPP can be extended to allow the following 5432 registered and private extensions to IPP: 5434 1. keyword attribute values 5435 2. enum attribute values 5436 3. attributes 5437 4. attribute syntaxes 5438 5. operations 5439 6. attribute groups 5440 7. status codes 5442 Extensions registered for use with IPP/1.0 are OPTIONAL for client and 5443 IPP object conformance to the IPP/1.0 Model specification. 5445 These extension procedures are aligned with the guidelines as set forth 5446 by the IESG [IANA-CON]. Section 12 describes how to propose new 5447 registrations for consideration. IANA will reject registration 5448 proposals that leave out required information or do not follow the 5449 appropriate format described in Section 12. IPP/1.0 may also be 5450 extended by an appropriate RFC that specifies any of the above 5451 extensions. 5453 6.1 Typed 'keyword' and 'enum' Extensions 5455 IPP allows for 'keyword' and 'enum' extensions (see sections 4.1.2.3 and 5456 4.1.4). This document uses prefixes to the 'keyword' and 'enum' basic 5457 attribute syntax type in order to communicate extra information to the 5458 reader through its name. This extra information is not represented in 5459 the protocol because it is unimportant to a client or Printer object. 5460 The list below describes the prefixes and their meaning. 5462 "type1": The IPP specification must be revised to add a new keyword 5463 or a new enum. No private keywords or enums are allowed. 5465 "type2": Implementers can, at any time, add new keyword or enum 5466 values by proposing the complete specification to IANA: 5468 iana@iana.org 5470 IANA will forward the registration proposal to the IPP Designated 5471 Expert who will review the proposal with a mailing list that the 5473 Isaacson, Powell Expires May 16, 1999 5474 Designated Expert keeps for this purpose. Initially, that list 5475 will be the mailing list used by the IPP WG: 5477 ipp@pwg.org 5479 even after the IPP WG is disbanded as permitted by [IANA-CON]. The 5480 IPP Designated Expert is appointed by the IESG Area Director 5481 responsible for IPP, according to [IANA-CON]. 5483 When a type2 keyword or enum is approved, the IPP Designated Expert 5484 becomes the point of contact for any future maintenance that might 5485 be required for that registration. 5487 "type3": Implementers can, at any time, add new keyword and enum 5488 values by submitting the complete specification to IANA as for 5489 type2 who will forward the proposal to the IPP Designated Expert. 5490 While no additional technical review is required, the IPP 5491 Designated Expert may, at his/her discretion, forward the proposal 5492 to the same mailing list as for type2 registrations for advice and 5493 comment. 5495 When a type3 keyword or enum is approved by the IPP Designated 5496 Expert, the original proposer becomes the point of contact for any 5497 future maintenance that might be required for that registration. 5499 For type2 and type3 keywords, the proposer includes the name of the 5500 keyword in the registration proposal and the name is part of the 5501 technical review. 5503 After type2 and type3 enums specifications are approved, the IPP 5504 Designated Expert in consultation with IANA assigns the next available 5505 enum number for each enum value. 5507 IANA will publish approved type2 and type3 keyword and enum attributes 5508 value registration specifications in: 5510 ftp.isi.edu/iana/assignments/ipp/attribute-values/xxx/yyy.txt 5512 where xxx is the attribute name that specifies the initial values and 5513 yyy.txt is a descriptive file name that contains one or more enums or 5514 keywords approved at the same time. For example, if several additional 5515 enums for stapling are approved for use with the "finishings" attribute 5516 (and "finishings-default" and "finishings-supported" attributes), IANA 5517 will publish the additional values in the file: 5519 ftp.isi.edu/iana/assignments/ipp/attribute- 5520 values/finishings/stapling.txt. 5522 Note: Some attributes are defined to be: 'type3 keywords' | 'name' which 5523 allows for attribute values to be extended by a site administrator with 5524 administrator defined names. Such names are not registered with IANA. 5526 By definition, each of the three types above assert some sort of 5527 registry or review process in order for extensions to be considered 5529 Isaacson, Powell Expires May 16, 1999 5530 valid. Each higher numbered level (1, 2, 3) tends to be decreasingly 5531 less stringent than the previous level. Therefore, any typeN value MAY 5532 be registered using a process for some typeM where M is less than N, 5533 however such registration is NOT REQUIRED. For example, a type3 value 5534 MAY be registered in a type 1 manner (by being included in a future 5535 version of an IPP specification), however, it is NOT REQUIRED. 5537 This specification defines keyword and enum values for all of the above 5538 types, including type3 keywords. 5540 For private (unregistered) keyword extensions, implementers SHOULD use 5541 keywords with a suitable distinguishing prefix, such as "xxx-" where xxx 5542 is the (lowercase) fully qualified company name registered with IANA for 5543 use in domain names [RFC1035]. For example, if the company XYZ Corp. 5544 had obtained the domain name "XYZ.com", then a private keyword 'abc' 5545 would be: 'xyz.com-abc'. 5547 Note: RFC 1035 [RFC1035] indicates that while upper and lower case 5548 letters are allowed in domain names, no significance is attached to the 5549 case. That is, two names with the same spelling but different case are 5550 to be treated as if identical. Also, the labels in a domain name must 5551 follow the rules for ARPANET host names: They must start with a letter, 5552 end with a letter or digit, and have as interior characters only 5553 letters, digits, and hyphen. Labels must be 63 characters or less. 5554 Labels are separated by the "." character. 5556 For private (unregistered) enum extension, implementers MUST use values 5557 in the reserved integer range which is 2**30 to 2**31-1. 5559 6.2 Attribute Extensibility 5561 Attribute names are type2 keywords. Therefore, new attributes may be 5562 registered and have the same status as attributes in this document by 5563 following the type2 extension rules. For private (unregistered) 5564 attribute extensions, implementers SHOULD use keywords with a suitable 5565 distinguishing prefix as described in Section 6.1. 5567 IANA will publish approved attribute registration specifications as 5568 separate files: 5570 ftp.isi.edu/iana/assignments/ipp/attributes/xxx-yyy.txt 5572 where "xxx-yyy" is the new attribute name. 5574 If a new Printer object attribute is defined and its values can be 5575 affected by a specific document format, its specification needs to 5576 contain the following sentence: 5578 "The value of this attribute returned in a Get-Printer- 5579 Attributes response MAY depend on the "document-format" 5580 attribute supplied (see Section 3.2.5.1)." 5582 Isaacson, Powell Expires May 16, 1999 5584 If the specification does not, then its value in the Get-Printer- 5585 Attributes response MUST NOT depend on the "document-format" supplied in 5586 the request. When a new Job Template attribute is registered, the value 5587 of the Printer attributes MAY vary with "document-format" supplied in 5588 the request without the specification having to indicate so. 5590 6.3 Attribute Syntax Extensibility 5592 Attribute syntaxes are like type2 enums. Therefore, new attribute 5593 syntaxes may be registered and have the same status as attribute 5594 syntaxes in this document by following the type2 extension rules 5595 described in Section 6.1. The value codes that identify each of the 5596 attribute syntaxes are assigned in the Encoding and Transport 5597 specification [IPP-PRO], including a designated range for private, 5598 experimental use. 5600 For attribute syntaxes, the IPP Designated Expert in consultation with 5601 IANA assigns the next attribute syntax code in the appropriate range as 5602 specified in [IPP-PRO]. IANA will publish approved attribute syntax 5603 registration specifications as separate files: 5605 ftp.isi.edu/iana/assignments/ipp/attribute-syntaxes/xxx-yyy.txt 5607 where 'xxx-yyy' is the new attribute syntax name. 5609 6.4 Operation Extensibility 5611 Operations may also be registered following the type2 procedures 5612 described in Section 6.1, though major new operations will usually be 5613 done by a new standards track RFC that augments this document. For 5614 private (unregistered) operation extensions, implementers MUST use the 5615 range for the "operation-id" in requests specified in Section 4.4.13 5616 "operations-supported" Printer attribute. 5618 For operations, the IPP Designated Expert in consultation with IANA 5619 assigns the next operation-id code as specified in Section 4.4.13. IANA 5620 will publish approved operation registration specifications as separate 5621 files: 5623 ftp.isi.edu/iana/assignments/ipp/operations/Xxx-Yyy.txt 5625 where "Xxx-Yyy" is the new operation name. 5627 6.5 Attribute Groups 5629 Attribute groups passed in requests and responses may be registered 5630 following the type2 procedures described in Section 6.1. The tags that 5631 identify each of the attribute groups are assigned in [IPP-PRO]. 5633 For attribute groups, the IPP Designated Expert in consultation with 5634 IANA assigns the next attribute group tag code in the appropriate range 5636 Isaacson, Powell Expires May 16, 1999 5637 as specified in [IPP-PRO]. IANA will publish approved attribute group 5638 registration specifications as separate files: 5640 ftp.isi.edu/iana/assignments/ipp/attribute-group-tags/xxx-yyy- 5641 tag.txt 5643 where 'xxx-yyy-tag' is the new attribute group tag name. 5645 6.6 Status Code Extensibility 5647 Operation status codes may also be registered following the type2 5648 procedures described in Section 6.1. The values for status codes are 5649 allocated in ranges as specified in Section 14 for each status code 5650 class: 5652 "informational" - Request received, continuing process 5653 "successful" - The action was successfully received, understood, and 5654 accepted 5655 "redirection" - Further action must be taken in order to complete the 5656 request 5657 "client-error" - The request contains bad syntax or cannot be 5658 fulfilled 5659 "server-error" - The IPP object failed to fulfill an apparently 5660 valid request 5662 For private (unregistered) operation status code extensions, 5663 implementers MUST use the top of each range as specified in Section 14. 5665 For operation status codes, the IPP Designated Expert in consultation 5666 with IANA assigns the next status code in the appropriate class range as 5667 specified in Section 14. IANA will publish approved status code 5668 registration specifications as separate files: 5670 ftp.isi.edu/iana/assignments/ipp/status-codes/xxx-yyy.txt 5672 where "xxx-yyy" is the new operation status code keyword. 5674 6.7 Registration of MIME types/sub-types for document-formats 5676 The "document-format" attribute's syntax is 'mimeMediaType'. This means 5677 that valid values are Internet Media Types (see Section 4.1.9). RFC 5678 2045 [RFC2045] defines the syntax for valid Internet media types. IANA 5679 is the registry for all Internet media types. 5681 6.8 Registration of charsets for use in 'charset' attribute values 5683 The "attributes-charset" attribute's syntax is 'charset'. This means 5684 that valid values are charsets names. When a charset in the IANA 5685 registry has more than one name (alias), the name labeled as "(preferred 5686 MIME name)", if present, MUST be used (see Section 4.1.7). IANA is the 5687 registry for charsets following the procedures of [RFC2278]. 5689 Isaacson, Powell Expires May 16, 1999 5690 7. Internationalization Considerations 5692 Some of the attributes have values that are text strings and names which 5693 are intended for human understanding rather than machine understanding 5694 (see the 'text' and 'name' attribute syntaxes in Sections 4.1.1 and 5695 4.1.2). 5697 In each operation request, the client 5699 - identifies the charset and natural language of the request which 5700 affects each supplied 'text' and 'name' attribute value, and 5701 - requests the charset and natural language for attributes returned 5702 by the IPP object in operation responses (as described in Section 5703 3.1.4.1). 5705 In addition, the client MAY separately and individually identify the 5706 Natural Language Override of a supplied 'text' or 'name' attribute using 5707 the 'textWithLanguage' and 'nameWithLanguage' technique described 5708 section 4.1.1.2 and 4.1.2.2 respectively. 5710 All IPP objects MUST support the UTF-8 [RFC2044] charset in all 'text' 5711 and 'name' attributes supported. If an IPP object supports more than 5712 the UTF-8 charset, the object MUST convert between them in order to 5713 return the requested charset to the client according to Section 3.1.4.2. 5714 If an IPP object supports more than one natural language, the object 5715 SHOULD return 'text' and 'name' values in the natural language requested 5716 where those values are generated by the Printer (see Section 3.1.4.1). 5718 For Printers that support multiple charsets and/or multiple natural 5719 languages in 'text' and 'name' attributes, different jobs may have been 5720 submitted in differing charsets and/or natural languages. All responses 5721 MUST be returned in the charset requested by the client. However, the 5722 Get-Jobs operation uses the 'textWithLanguage' and 'nameWithLanguage' 5723 mechanism to identify the differing natural languages with each job 5724 attribute returned. 5726 The Printer object also has configured charset and natural language 5727 attributes. The client can query the Printer object to determine the 5728 list of charsets and natural languages supported by the Printer object 5729 and what the Printer object's configured values are. See the "charset- 5730 configured", "charset-supported", "natural-language-configured", and 5731 "generated-natural-language-supported" Printer description attributes 5732 for more details. 5734 The "charset-supported" attributed identifies the supported charsets. 5735 If a charset is supported, the IPP object MUST be capable of converting 5736 to and from that charset into any other supported charset. In many 5737 cases, an IPP object will support only one charset and it MUST be the 5738 UTF-8 charset. 5740 The "charset-configured" attribute identifies the one supported charset 5741 which is the native charset given the current configuration of the IPP 5742 object (administrator defined). 5744 Isaacson, Powell Expires May 16, 1999 5745 The "generated-natural-language-supported" attribute identifies the set 5746 of supported natural languages for generated messages; it is not related 5747 to the set of natural languages that must be accepted for client 5748 supplied 'text' and 'name' attributes. For client supplied 'text' and 5749 'name' attributes, an IPP object MUST accept ALL supplied natural 5750 languages. Just because a Printer object is currently configured to 5751 support 'en-us' natural language does not mean that the Printer object 5752 should reject a job if the client supplies a job name that is in 'fr- 5753 ca'. 5755 The "natural-language-configured" attribute identifies the one supported 5756 natural language for generated messages which is the native natural 5757 language given the current configuration of the IPP object 5758 (administrator defined). 5760 Attributes of type 'text' and 'name' are populated from different 5761 sources. These attributes can be categorized into following groups 5762 (depending on the source of the attribute): 5764 1. Some attributes are supplied by the client (e.g., the client 5765 supplied "job-name", "document-name", and "requesting-user-name" 5766 operation attributes along with the corresponding Job object's 5767 "job-name" and "job-originating-user-name" attributes). The IPP 5768 object MUST accept these attributes in any natural language no 5769 matter what the set of supported languages for generated messages 5770 2. Some attributes are supplied by the system administrator (e.g., 5771 the Printer object's "printer-name" and "printer-location" 5772 attributes). These too can be in any natural language. If the 5773 natural language for these attributes is different than what a 5774 client requests, then they must be reported using the Natural 5775 Language Override mechanism. 5776 3. Some attributes are supplied by the device manufacturer (e.g., the 5777 Printer object's "printer-make-and-model" attribute). These too 5778 can be in any natural language. If the natural language for these 5779 attributes is different than what a client requests, then they must 5780 be reported using the Natural Language Override mechanism. 5781 4. Some attributes are supplied by the operator (e.g., the Job 5782 object's "job-message-from-operator" attribute). These too can be 5783 in any natural language. If the natural language for these 5784 attributes is different than what a client requests, then they must 5785 be reported using the Natural Language Override mechanism. 5786 5. Some attributes are generated by the IPP object (e.g., the Job 5787 object's "job-state-message" attribute, the Printer object's 5788 "printer-state-message" attribute, and the "status-message" 5789 operation attribute). These attributes can only be in one of the 5790 "generated-natural-language-supported" natural languages. If a 5791 client requests some natural language for these attributes other 5792 than one of the supported values, the IPP object SHOULD respond 5793 using the value of the "natural-language-configured" attribute 5794 (using the Natural Language Override mechanism if needed). 5796 The 'text' and 'name' attributes specified in this version of this 5797 document (additional ones will be registered according to the procedures 5798 in Section 6) are: 5800 Isaacson, Powell Expires May 16, 1999 5801 Attributes Source 5802 -------------------------- ---------- 5803 Operation Attributes 5804 job-name (name) client 5805 document-name (name) client 5806 requesting-user-name (name) client 5807 status-message Job or Printer object 5809 Job Template Attributes: 5810 job-hold-until (keyword | name) client matches administrator- 5811 configured 5812 job-hold-until-default (keyword | name) client matches 5813 administrator-configured 5814 job-hold-until-supported (keyword | name) client matches 5815 administrator-configured 5816 job-sheets (keyword | name) client matches administrator- 5817 configured 5818 job-sheets-default (keyword | name) client matches 5819 administrator-configured 5820 job-sheets-supported (keyword | name) client matches 5821 administrator-configured 5822 media (keyword | name) client matches administrator- 5823 configured 5824 media-default (keyword | name) client matches administrator- 5825 configured 5826 media-supported (keyword | name) client matches administrator- 5827 configured 5828 media-ready (keyword | name) client matches administrator- 5829 configured 5831 Job Description Attributes: 5832 job-name (name) client or Printer object 5833 job-originating-user-name (name) Printer object 5834 job-state-message (text) Job or Printer object 5835 output-device-assigned (name(127)) administrator 5836 job-message-from-operator (text(127)) operator 5838 Printer Description Attributes: 5839 printer-name (name(127)) administrator 5840 printer-location (text(127)) administrator 5841 printer-info (text(127)) administrator 5842 printer-make-and-model (text(127)) administrator or manufacturer 5843 printer-state-message (text) Printer object 5844 printer-message-from-operator (text(127)) operator 5846 8. Security Considerations 5848 Some IPP objects MAY be deployed over protocol stacks that support 5849 Secure Socket Layer Version 3 (SSL3) [SSL]. Note: SSL3 is not an IETF 5850 standards track specification. Other IPP objects MAY be deployed over 5851 protocol stacks that do not support SSL3. Some IPP objects MAY be 5852 deployed over both types of protocol stacks. Those IPP objects that 5853 support SSL3, are capable of supporting mutual authentication as well as 5855 Isaacson, Powell Expires May 16, 1999 5856 privacy of messages via multiple encryption schemes. An important point 5857 about security related information for SSL3 access to an IPP object, is 5858 that the security-related parameters (authentication, encryption keys, 5859 etc.) are "out-of-band" to the actual IPP protocol. 5861 An IPP object that does not support SSL3 MAY elect to support a 5862 transport layer that provides other security mechanisms. For example, 5863 in a mapping of IPP over HTTP/1.1 [IPP-PRO], if the IPP object does not 5864 support SSL3, HTTP still allows for client authentication using Digest 5865 Access Authentication (DAA) [RFC2069]. 5867 It is difficult to anticipate the security risks that might exist in any 5868 given IPP environment. For example, if IPP is used within a given 5869 corporation over a private network, the risks of exposing document data 5870 may be low enough that the corporation will choose not to use encryption 5871 on that data. However, if the connection between the client and the IPP 5872 object is over a public network, the client may wish to protect the 5873 content of the information during transmission through the network with 5874 encryption. 5876 Furthermore, the value of the information being printed may vary from 5877 one IPP environment to the next. Printing payroll checks, for example, 5878 would have a different value than printing public information from a 5879 file. There is also the possibly of denial-of-service attacks, but 5880 denial-of-service attacks against printing resources are not well 5881 understood and there is no published precedents regarding this scenario. 5883 Once the authenticated identity of the requester has been supplied to 5884 the IPP object, the object uses that identity to enforce any 5885 authorization policy that might be in place. For example, one site's 5886 policy might be that only the job owner is allowed to cancel a job. The 5887 details and mechanisms to set up a particular access control policy are 5888 not part of IPP/1.0, and must be established via some other type of 5889 administrative or access control framework. However, there are 5890 operation status codes that allow an IPP server to return information 5891 back to a client about any potential access control violations for an 5892 IPP object. 5894 During a create operation, the client's identity is recorded in the Job 5895 object in an implementation-defined attribute. This information can be 5896 used to verify a client's identity for subsequent operations on that Job 5897 object in order to enforce any access control policy that might be in 5898 effect. See section 8.3 below for more details. 5900 Since the security levels or the specific threats that any given IPP 5901 system administrator may be concerned with cannot be anticipated, IPP 5902 MUST be capable of operating with different security mechanisms and 5903 security policies as required by the individual installation. Security 5904 policies might vary from very strong, to very weak, to none at all, and 5905 corresponding security mechanisms will be required. SSL3 supports the 5906 type of negotiated levels of security required by most, if not all, 5907 potential IPP environments. IPP environments that require no security 5908 can elect to deploy IPP objects that do not utilize the optional SSL3 5909 security mechanisms. 5911 Isaacson, Powell Expires May 16, 1999 5912 8.1 Security Scenarios 5914 The following sections describe specific security attacks for IPP 5915 environments. Where examples are provided they should be considered 5916 illustrative of the environment and not an exhaustive set. Not all of 5917 these environments will necessarily be addressed in initial 5918 implementations of IPP. 5920 8.1.1 Client and Server in the Same Security Domain 5922 This environment is typical of internal networks where traditional 5923 office workers print the output of personal productivity applications on 5924 shared work-group printers, or where batch applications print their 5925 output on large production printers. Although the identity of the user 5926 may be trusted in this environment, a user might want to protect the 5927 content of a document against such attacks as eavesdropping, replaying 5928 or tampering. 5930 8.1.2 Client and Server in Different Security Domains 5932 Examples of this environment include printing a document created by the 5933 client on a publicly available printer, such as at a commercial print 5934 shop; or printing a document remotely on a business associate's printer. 5935 This latter operation is functionally equivalent to sending the document 5936 to the business associate as a facsimile. Printing sensitive information 5937 on a Printer in a different security domain requires strong security 5938 measures. In this environment authentication of the printer is required 5939 as well as protection against unauthorized use of print resources. Since 5940 the document crosses security domains, protection against eavesdropping 5941 and document tampering are also required. It will also be important in 5942 this environment to protect Printers against "spamming" and malicious 5943 document content. 5945 8.1.3 Print by Reference 5947 When the document is not stored on the client, printing can be done by 5948 reference. That is, the print request can contain a reference, or 5949 pointer, to the document instead of the actual document itself. Standard 5950 methods currently do not exist for remote entities to "assume" the 5951 credentials of a client for forwarding requests to a 3rd party. It is 5952 anticipated that Print-By-Reference will be used to access "public" 5953 documents and that sophisticated methods for authenticating "proxies" 5954 will not be specified for version 1 of IPP. 5956 8.2 URIs for SSL3 and non-SSL3 Access 5958 As described earlier, an IPP object can support SSL3 access, non-SSL3 5959 access, or both. The "printer-uri-supported" attribute contains the 5960 Printer object's URI(s). Its companion attribute, "uri-security- 5961 supported", identifies the security mechanism used for each URI listed 5962 in the "printer-uri-supported" attribute. For each Printer operation 5964 Isaacson, Powell Expires May 16, 1999 5965 request, a client MUST supply only one URI in the "printer-uri" 5966 operation attribute. In other words, even though the Printer supports 5967 more than one URI, the client only interacts with the Printer object 5968 using one if its URIs. This duality is not needed for Job objects, 5969 since the Printer objects is the factory for Job objects, and the 5970 Printer object will generate the correct URI for new Job objects 5971 depending on the Printer object's security configuration. 5973 8.3 The "requesting-user-name" (name(MAX)) Operation Attribute 5975 Each operation MUST specify the user who is performing the operation in 5976 both of the following two ways: 5978 1) via the REQUIRED "requesting-user-name" operation attribute that a 5979 client SHOULD supply in all operations. The client MUST obtain the 5980 value for this attribute from an environmental or network login 5981 name for the user, rather than allowing the user to supply any 5982 value. If the client does not supply a value for "requesting-user- 5983 name", the printer MUST assume that the client is supplying some 5984 anonymous name, such as "anonymous". 5985 2) via an authentication mechanism of the underlying transport which 5986 may be configured to give no authentication information. 5988 There are six cases to consider: 5990 a) the authentication mechanism gives no information, and the client 5991 doesn't specify "requesting-user-name". 5992 b) the authentication mechanism gives no information, but the client 5993 specifies "requesting-user-name". 5994 c) the authentication mechanism specifies a user which has no human 5995 readable representation, and the client doesn't specify 5996 "requesting-user-name". 5997 d) the authentication mechanism specifies a user which has no human 5998 readable representation, but the client specifies "requesting-user- 5999 name". 6000 e) the authentication mechanism specifies a user which has a human 6001 readable representation. The Printer object ignores the 6002 "requesting-user-name". 6003 f) the authentication mechanism specifies a user who is trusted and 6004 whose name means that the value of the "requesting-user-name", 6005 which MUST be present, is treated as the authenticated name. 6007 Note: Case "f" is intended for a tightly coupled gateway and server to 6008 work together so that the "user" name is able to be that of the gateway 6009 client and not that of the gateway. Because most, if not all, system 6010 vendors will initially implement IPP via a gateway into their existing 6011 print system, this mechanism is necessary unless the authentication 6012 mechanism allows a gateway (client) to act on behalf of some other 6013 client. 6015 Isaacson, Powell Expires May 16, 1999 6016 The user-name has two forms: 6018 - one that is human readable: it is held in the REQUIRED "job- 6019 originating-user-name" Job Description attribute which is set 6020 during the job creation operations. It is used for presentation 6021 only, such as returning in queries or printing on start sheets 6022 - one for authorization: it is held in an undefined (by IPP) Job 6023 object attribute which is set by the job creation operation. It is 6024 used to authorize other operations, such as Send-Document, Send- 6025 URI, Cancel-Job, to determine the user when the "my-jobs" attribute 6026 is specified with Get-Jobs, and to limit what attributes and values 6027 to return with Get-Job-Attributes and Get-Jobs. 6029 The human readable user name: 6031 - is the value of the "requesting-user-name" for cases b, d and f. 6032 - comes from the authentication mechanism for case e 6033 - is some anonymous name, such as "anonymous" for cases a and c. 6035 The user name used for authorization: 6037 - is the value of the "requesting-user-name" for cases b and f. 6038 - comes from the authentication mechanism for cases c, d and e 6039 - is some anonymous name, such as "anonymous" for case a. 6041 The essence of these rules for resolving conflicting sources of user- 6042 names is that a printer implementation is free to pick either source as 6043 long as it achieves consistent results. That is, if a user uses the 6044 same path for a series of requests, the requests MUST appear to come 6045 from the same user from the standpoint of both the human-readable user 6046 name and the user name for authorization. This rule MUST continue to 6047 apply even if a request could be authenticated by two or more 6048 mechanisms. It doesn't matter which of several authentication 6049 mechanisms a Printer uses as long as it achieves consistent results. If 6050 a client uses more than one authentication mechanism, it is recommended 6051 that an administrator make all credentials resolve to the same user and 6052 user-name as much as possible. 6054 8.4 Restricted Queries 6056 In many IPP operations, a client supplies a list of attributes to be 6057 returned in the response. For security reasons, an IPP object may be 6058 configured not to return all attributes (or all values) that a client 6059 requests. The job attributes returned MAY depend on whether the 6060 requesting user is the same as the user that submitted the job. The IPP 6061 object MAY even return none of the requested attributes. In such cases, 6062 the status returned is the same as if the object had returned all 6063 requested attributes. The client cannot tell by such a response whether 6064 the requested attribute was present or absent on the object. 6066 Isaacson, Powell Expires May 16, 1999 6067 8.5 Queries on jobs submitted using non-IPP protocols 6069 If the device that an IPP Printer is representing is able to accept jobs 6070 using other job submission protocols in addition to IPP, it is 6071 RECOMMENDED that such an implementation at least allow such "foreign" 6072 jobs to be queried using Get-Jobs returning "job-id" and "job-uri" as 6073 'unknown'. Such an implementation NEED NOT support all of the same IPP 6074 job attributes as for IPP jobs. The IPP object returns the 'unknown' 6075 out-of-band value for any requested attribute of a foreign job that is 6076 supported for IPP jobs, but not for foreign jobs. 6078 It is further RECOMMENDED, that the IPP Printer generate "job-id" and 6079 "job-uri" values for such "foreign jobs", if possible, so that they may 6080 be targets of other IPP operations, such as Get-Job-Attributes and 6081 Cancel-Job. Such an implementation also needs to deal with the problem 6082 of authentication of such foreign jobs. One approach would be to treat 6083 all such foreign jobs as belonging to users other than the user of the 6084 IPP client. Another approach would be for the foreign job to belong to 6085 'anonymous'. Only if the IPP client has been authenticated as an 6086 operator or administrator of the IPP Printer object, could the foreign 6087 jobs be queried by an IPP request. Alternatively, if the security 6088 policy is to allow users to query other users' jobs, then the foreign 6089 jobs would also be visible to an end-user IPP client using Get-Jobs and 6090 Get-Job-Attributes. 6092 8.6 IPP Security Application Profile for SSL3 6094 The IPP application profile for SSL3 follows the "Secure Socket Layer" 6095 requirement as documented in the SSL3 specification [SSL]. For 6096 interoperability, the SSL3 cipher suites are: 6098 SSL_RSA_WITH_RC4_128_MD5 6099 SSL_RSA_WITH_3DES_EDE_CBC_SHA 6100 SSL_RSA_WITH_DES_CBC_SHA 6101 SSL_RSA_EXPORT_WITH_RC4_40_MD5 6102 SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 6103 SSL_RSA_WITH_NULL_MD5 6105 Client implementations MUST NOT assume any other cipher suites are 6106 supported by an IPP Printer object. 6108 If a conforming IPP object supports SSL3, it MUST implement and support 6109 the cipher suites listed above and MAY support additional cipher suites. 6111 A conforming IPP client SHOULD support SSL3 including the cipher suites 6112 listed above. A conforming IPP client MAY support additional cipher 6113 suites. 6115 It is possible that due to certain government export restrictions some 6116 non-compliant versions of this extension could be deployed. 6117 Implementations wishing to inter-operate with such non-compliant 6118 versions MAY offer the SSL_RSA_EXPORT_WITH_RC4_40_MD5 and 6119 SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 mechanisms. However, since 40 bit 6121 Isaacson, Powell Expires May 16, 1999 6122 ciphers are known to be vulnerable to attack by current technology, any 6123 client which actives a 40 bit cipher MUST NOT indicate to the user that 6124 the connection is completely secure from eavesdropping. 6126 9. References 6128 [ASCII] 6129 Coded Character Set - 7-bit American Standard Code for Information 6130 Interchange (ASCII), ANSI X3.4-1986. This standard is the 6131 specification of the US-ASCII charset. 6133 [HTPP] 6134 J. Barnett, K. Carter, R. DeBry, "Initial Draft - Hypertext 6135 Printing Protocol - HTPP/1.0", October 1996, 6136 ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/overview.ps.gz 6138 [IANA-CON] 6139 Narte, T. and Alvestrand, H.T.: Guidelines for Writing an IANA 6140 Considerations Section in RFCs, Work in Progress, draft-iesg-iana- 6141 considerations-04.txt, May 21, 1998. 6143 [IANA-CS] 6144 IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- 6145 notes/iana/assignments/character-sets 6147 [IANA-MT] 6148 IANA Registry of Media Types: ftp://ftp.isi.edu/in- 6149 notes/iana/assignments/media-types/ 6151 [IPP-IIG] 6152 Hastings, T., Manros, C., "Internet Printing Protocol/1.0: 6153 Implementer's Guide", draft-ietf-ipp-implementors-guide-00.txt, 6154 November 1998, work in progress. 6156 [IPP LPD] 6157 Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping between 6158 LPD and IPP Protocols", draft-ietf-ipp-lpd-ipp-map-05.txt, November 6159 1998. 6161 [IPP-PRO] 6162 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 6163 Protocol/1.0: Encoding and Transport", draft-ietf-ipp-pro-07.txt, 6164 November, 1998. 6166 [IPP-RAT] 6167 Zilles, S., "Rationale for the Structure and Model and Protocol for 6168 the Internet Printing Protocol", draft-ietf-ipp-rat-04.txt, 6169 November, 1998. 6171 [IPP-REQ] 6172 Wright, D., "Design Goals for an Internet Printing Protocol", 6173 draft-ietf-ipp-req-03.txt, November, 1998. 6175 Isaacson, Powell Expires May 16, 1999 6177 [ISO10646-1] 6178 ISO/IEC 10646-1:1993, "Information technology -- Universal 6179 Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture and 6180 Basic Multilingual Plane, JTC1/SC2." 6182 [ISO8859-1] 6183 ISO/IEC 8859-1:1987, "Information technology -- 8-bit One-Byte 6184 Coded Character Set - Part 1: Latin Alphabet Nr 1", 1987, JTC1/SC2. 6186 [ISO10175] 6187 ISO/IEC 10175 Document Printing Application (DPA), June 1996. 6189 [LDPA] 6190 T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. Taylor, P. 6191 Zehler, "LDPA - Lightweight Document Printing Application", 6192 October 1996, 6193 ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz 6195 [P1387.4] 6196 Kirk, M. (editor), POSIX System Administration - Part 4: Printing 6197 Interfaces, POSIX 1387.4 D8, 1994. 6199 [PSIS] Herriot, R. (editor), X/Open A Printing System 6200 Interoperability Specification (PSIS), August 1995. 6202 [PWG] 6203 Printer Working Group, http://www.pwg.org. 6205 [RFC1035] 6206 P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION", 6207 RFC 1035, November 1987. 6209 [RFC1179] 6210 McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 6211 1179, August 1990. 6213 [RFC1759] 6214 Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 6215 J., "Printer MIB", RFC 1759, March 1995. 6217 [RFC1766] 6218 H. Alvestrand, "Tags for the Identification of Languages", RFC 6219 1766, March 1995. 6221 [RFC1903] 6222 J. Case, et.al., "Textual Conventions for Version 2 of the Simple 6223 Network Management Protocol (SNMP v2)" RFC 1903, January 1996. 6225 [RFC1952] 6226 P. Deutsch, "GZIP file format specification version 4.3", RFC 1952, 6227 May 1996. 6229 Isaacson, Powell Expires May 16, 1999 6231 [RFC2044] 6232 F. Yergeau, "UTF-8, a transformation format of Unicode and ISO 6233 10646", RFC 2044, October 1996. 6235 [RFC2068] 6236 R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee, 6237 "Hypertext Transfer Protocol - HTTP/1.1", RFC 2068, January 1997 6239 [RFC2069] 6240 J. Franks, P. Hallam-Baker, J. Hostetler, P. Leach, A. Luotonen, E. 6241 Sink, L. Stewart, "An Extension to HTTP: Digest Access 6242 Authentication", RFC-2069, Jan 1997. 6244 [RFC2045] 6245 N. Fried, N. Borenstein, ", Multipurpose Internet Mail Extensions 6246 (MIME) Part One: Format of Internet Message Bodies " RFC 2045, 6247 November 1996. 6249 [RFC2046] 6250 Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. 6251 N. Freed & N. Borenstein. November 1996. (Obsoletes RFC1521, 6252 RFC1522, RFC1590), RFC 2046. 6254 [RFC2048] 6255 N. Freed, J. Klensin & J. Postel, "Multipurpose Internet Mail 6256 Extension (MIME) Part Four: Registration Procedures". RFC 2048, 6257 November 1996. 6259 [RFC2119] 6260 S. Bradner, "Key words for use in RFCs to Indicate Requirement 6261 Levels", RFC 2119 , March 1997 6263 [RFC2228] 6264 M. Horowitz, S. Lunt, "FTP Security Extensions", RFC 2228, October 6265 1997. 6267 [RFC2277] 6268 H. Alvestrand, "IETF Policy on Character Sets and Languages" RFC 6269 2277, January 1998. 6271 [RFC2278] 6272 N. Freed, J. Postel: "IANA CharSet Registration Procedures", RFC 6273 2278, January 1998. 6275 [RFC2279] 6276 F. Yergeau , "UTF-8, a transformation format of ISO 10646", RFC 6277 2279. January 1998. 6279 [RFC2316] 6280 S. Bellovin , "Report of the IAB Security Architecture Workshop", 6281 RFC 2316, April 1998. 6283 Isaacson, Powell Expires May 16, 1999 6285 [RFC2396] 6286 Berners-Lee, T., Fielding, R., Masinter, L., "Uniform Resource 6287 Identifiers (URI): Generic Syntax", RFC 2396, August 1998. 6289 [SSL] 6290 Netscape, The SSL Protocol, Version 3, (Text version 3.02), 6291 November 1996. 6293 [SWP] 6294 P. Moore, B. Jahromi, S. Butler, "Simple Web Printing SWP/1.0", May 6295 7, 1997, ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf 6297 10. Copyright Notice 6299 This document and translations of it may be copied and furnished to 6300 others, and derivative works that comment on or otherwise explain it or 6301 assist in its implementation may be prepared, copied, published and 6302 distributed, in whole or in part, without restriction of any kind, 6303 provided that the above copyright notice and this paragraph are included 6304 on all such copies and derivative works. However, this document itself 6305 may not be modified in any way, such as by removing the copyright notice 6306 or references to the Internet Society or other Internet organizations, 6307 except as needed for the purpose of developing Internet standards in 6308 which case the procedures for copyrights defined in the Internet 6309 Standards process must be followed, or as required to translate it into 6310 languages other than English. 6312 The limited permissions granted above are perpetual and will not be 6313 revoked by the Internet Society or its successors or assigns. 6315 This document and the information contained herein is provided on an "AS 6316 IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK 6317 FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT 6318 LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT 6319 INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR 6320 FITNESS FOR A PARTICULAR PURPOSE. 6322 11. Author's Address 6324 Scott A. Isaacson (Editor) 6325 Novell, Inc. 6326 122 E 1700 S 6327 Provo, UT 84606 6329 Phone: 801-861-7366 6330 Fax: 801-861-2517 6331 e-mail: sisaacson@novell.com 6333 Tom Hastings 6334 Xerox Corporation 6336 Isaacson, Powell Expires May 16, 1999 6337 701 S. Aviation Blvd. 6338 El Segundo, CA 90245 6340 Phone: 310-333-6413 6341 Fax: 310-333-5514 6342 e-mail: hastings@cp10.es.xerox.com 6344 Robert Herriot 6345 Sun Microsystems Inc. 6346 901 San Antonio.Road, MPK-17 6347 Palo Alto, CA 94303 6349 Phone: 650-786-8995 6350 Fax: 650-786-7077 6351 e-mail: robert.herriot@eng.sun.com 6353 Roger deBry 6354 HUC/003G 6355 IBM Corporation 6356 P.O. Box 1900 6357 Boulder, CO 80301-9191 6359 Phone: (303) 924-4080 6360 Fax: (303) 924-9889 6361 e-mail: debry@vnet.ibm.com 6363 Patrick Powell 6364 Astart Technologies 6365 9475 Chesapeake Dr., Suite D 6366 San Diego, CA 95123 6368 Phone: (619) 874-6543 6369 Fax: (619) 279-8424 6370 e-mail: papowell@astart.com 6372 IPP Mailing List: ipp@pwg.org 6373 IPP Mailing List Subscription: ipp-request@pwg.org 6374 IPP Web Page: http://www.pwg.org/ipp/ 6376 Implementers of this specification are encouraged to join IPP Mailing 6377 List in order to participate in any discussions of clarification issues 6378 and review of registration proposals for additional attributes and 6379 values. 6381 Other Participants: 6383 Chuck Adams - Tektronix 6384 Jeff Barnett - IBM 6385 Ron Bergman - Dataproducts Corp. 6386 Sylvan Butler - HP 6387 Keith Carter - IBM Corporation 6388 Jeff Copeland - QMS 6389 Andy Davidson - Tektronix 6390 Mabry Dozier - QMS 6392 Isaacson, Powell Expires May 16, 1999 6393 Lee Farrell - Canon Information Systems 6394 Steve Gebert - IBM 6395 Babek Jahromi - Microsoft 6396 David Kellerman - Northlake Software 6397 Rick Landau - Digital 6398 Greg LeClair - Epson 6399 Harry Lewis - IBM 6400 Pete Loya - HP 6401 Ray Lutz - Cognisys 6402 Mike MacKay - Novell, Inc. 6403 Daniel Manchala - Xerox 6404 Carl-Uno Manros - Xerox 6405 Jay Martin - Underscore 6406 Larry Masinter - Xerox 6407 Stan McConnell - Xerox 6408 Ira McDonald - High North Inc. 6409 Paul Moore - Microsoft 6410 Tetsuya Morita - Ricoh 6411 Yuichi Niwa - Ricoh 6412 Pat Nogay - IBM 6413 Ron Norton - Printronics 6414 Bob Pentecost - HP 6415 Rob Rhoads - Intel 6416 Xavier Riley - Xerox 6417 David Roach - Unisys 6418 Stuart Rowley - Kyocera 6419 Hiroyuki Sato - Canon 6420 Bob Setterbo - Adobe 6421 Devon Taylor - Novell, Inc. 6422 Mike Timperman - Lexmark 6423 Randy Turner - Sharp 6424 Atsushi Yuki - Kyocera 6425 Rick Yardumian - Xerox 6426 Lloyd Young - Lexmark 6427 Bill Wagner - DPI 6428 Jim Walker - DAZEL 6429 Chris Wellens - Interworking Labs 6430 Rob Whittle - Novell, Inc. 6431 Don Wright - Lexmark 6432 Peter Zehler - Xerox 6433 Steve Zilles - Adobe 6435 Isaacson, Powell Expires May 16, 1999 6437 12. Formats for IPP Registration Proposals 6439 In order to propose an IPP extension for registration, the proposer must 6440 submit an application to IANA by email to "iana@iana.org" or by filling 6441 out the appropriate form on the IANA web pages (http://www.iana.org). 6442 This section specifies the required information and the formats for 6443 proposing registrations of extensions to IPP as provided in Section 6 6444 for: 6446 1. type2 'keyword' attribute values 6447 2. type3 'keyword' attribute values 6448 3. type2 'enum' attribute values 6449 4. type3 'enum' attribute values 6450 5. attributes 6451 6. attribute syntaxes 6452 7. operations 6453 8. status codes 6455 12.1 Type2 keyword attribute values registration 6457 Type of registration: type2 keyword attribute value 6458 Name of attribute to which this keyword specification is to be added: 6459 Proposed keyword name of this keyword value: 6460 Specification of this keyword value (follow the style of IPP Model 6461 Section 4.1.2.3): 6462 Name of proposer: 6463 Address of proposer: 6464 Email address of proposer: 6466 Note: For type2 keywords, the Designated Expert will be the point of 6467 contact for the approved registration specification, if any maintenance 6468 of the registration specification is needed. 6470 12.2 Type3 keyword attribute values registration 6472 Type of registration: type3 keyword attribute value 6473 Name of attribute to which this keyword specification is to be added: 6474 Proposed keyword name of this keyword value: 6475 Specification of this keyword value (follow the style of IPP Model 6476 Section 4.1.2.3): 6477 Name of proposer: 6478 Address of proposer: 6479 Email address of proposer: 6481 Note: For type3 keywords, the proposer will be the point of contact for 6482 the approved registration specification, if any maintenance of the 6483 registration specification is needed. 6485 12.3 Type2 enum attribute values registration 6487 Type of registration: type2 enum attribute value 6488 Name of attribute to which this enum specification is to be added: 6489 Keyword symbolic name of this enum value: 6491 Isaacson, Powell Expires May 16, 1999 6492 Numeric value (to be assigned by the IPP Designated Expert in 6493 consultation with IANA): 6494 Specification of this enum value (follow the style of IPP Model Section 6495 4.1.4): 6496 Name of proposer: 6497 Address of proposer: 6498 Email address of proposer: 6500 Note: For type2 enums, the Designated Expert will be the point of 6501 contact for the approved registration specification, if any maintenance 6502 of the registration specification is needed. 6504 12.4 Type3 enum attribute values registration 6506 Type of registration: type3 enum attribute value 6507 Name of attribute to which this enum specification is to be added: 6508 Keyword symbolic name of this enum value: 6509 Numeric value (to be assigned by the IPP Designated Expert in 6510 consultation with IANA): 6511 Specification of this enum value (follow the style of IPP Model Section 6512 4.1.4): 6513 Name of proposer: 6514 Address of proposer: 6515 Email address of proposer: 6517 Note: For type3 enums, the proposer will be the point of contact for 6518 the approved registration specification, if any maintenance of the 6519 registration specification is needed. 6521 12.5 Attribute registration 6523 Type of registration: attribute 6524 Proposed keyword name of this attribute: 6525 Types of attribute (Operation, Job Template, Job Description, Printer 6526 Description): 6527 Operations to be used with if the attribute is an operation attribute: 6528 Object (Job, Printer, etc. if bound to an object): 6529 Attribute syntax(es) (include 1setOf and range as in Section 4.2): 6530 If attribute syntax is 'keyword' or 'enum', is it type2 or type3: 6531 If this is a Printer attribute, MAY the value returned depend on 6532 "document-format" (See Section 6.2): 6533 If this is a Job Template attribute, how does its specification depend 6534 on the value of the "multiple-document-handling" attribute: 6535 Specification of this attribute (follow the style of IPP Model Section 6536 4.2): 6537 Name of proposer: 6538 Address of proposer: 6539 Email address of proposer: 6541 Note: For attributes, the IPP Designated Expert will be the point of 6542 contact for the approved registration specification, if any maintenance 6543 of the registration specification is needed. 6545 Isaacson, Powell Expires May 16, 1999 6546 12.6 Attribute Syntax registration 6548 Type of registration: attribute syntax 6549 Proposed name of this attribute syntax: 6550 Type of attribute syntax (integer, octetString, character-string, see 6551 [IPP-PRO]): 6552 Numeric value (to be assigned by the IPP Designated Expert in 6553 consultation with IANA): 6554 Specification of this attribute (follow the style of IPP Model Section 6555 4.1): 6556 Name of proposer: 6557 Address of proposer: 6558 Email address of proposer: 6560 Note: For attribute syntaxes, the IPP Designated Expert will be the 6561 point of contact for the approved registration specification, if any 6562 maintenance of the registration specification is needed. 6564 12.7 Operation registration 6566 Type of registration: operation 6567 Proposed name of this operation: 6568 Numeric operation-id value (to be assigned by the IPP Designated Expert 6569 in consultation with IANA): 6570 Object Target (Job, Printer, etc. that operation is upon): 6571 Specification of this attribute (follow the style of IPP Model Section 6572 3): 6573 Name of proposer: 6574 Address of proposer: 6575 Email address of proposer: 6577 Note: For operations, the IPP Designated Expert will be the point of 6578 contact for the approved registration specification, if any maintenance 6579 of the registration specification is needed. 6581 12.8 Attribute Group registration 6583 Type of registration: attribute group 6584 Proposed name of this attribute group: 6585 Numeric tag according to [IPP-PRO] (to be assigned by the IPP Designated 6586 Expert in consultation with IANA): 6587 Operation requests and group number for each operation in which the 6588 attribute group occurs: 6589 Operation responses and group number for each operation in which the 6590 attribute group occurs: 6591 Specification of this attribute group (follow the style of IPP Model 6592 Section 3): 6593 Name of proposer: 6594 Address of proposer: 6595 Email address of proposer: 6597 Note: For attribute groups, the IPP Designated Expert will be the point 6598 of contact for the approved registration specification, if any 6599 maintenance of the registration specification is needed. 6601 Isaacson, Powell Expires May 16, 1999 6602 12.9 Status code registration 6604 Type of registration: status code 6605 Keyword symbolic name of this status code value: 6606 Numeric value (to be assigned by the IPP Designated Expert in 6607 consultation with IANA): 6608 Operations that this status code may be used with: 6609 Specification of this status code (follow the style of IPP Model Section 6610 14 APPENDIX B: Status Codes and Suggested Status Code Messages): 6611 Name of proposer: 6612 Address of proposer: 6613 Email address of proposer: 6615 Note: For status codes, the Designated Expert will be the point of 6616 contact for the approved registration specification, if any maintenance 6617 of the registration specification is needed. 6619 13. APPENDIX A: Terminology 6621 This specification uses the terminology defined in this section. 6623 13.1 Conformance Terminology 6625 The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", 6626 "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be 6627 interpreted as described in RFC 2119 [RFC2119]. 6629 13.1.1 NEED NOT 6631 This term is not included in RFC 2119. The verb "NEED NOT" indicates an 6632 action that the subject of the sentence does not have to implement in 6633 order to claim conformance to the standard. The verb "NEED NOT" is used 6634 instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. 6636 13.2 Model Terminology 6638 13.2.1 Keyword 6640 Keywords are used within this document as identifiers of semantic 6641 entities within the abstract model (see section 4.1.2.3). Attribute 6642 names, some attribute values, attribute syntaxes, and attribute group 6643 names are represented as keywords. 6645 13.2.2 Attributes 6647 An attribute is an item of information that is associated with an 6648 instance of an IPP object. An attribute consists of an attribute name 6649 and one or more attribute values. Each attribute has a specific 6651 Isaacson, Powell Expires May 16, 1999 6652 attribute syntax. All object attributes are defined in section 4 and 6653 all operation attributes are defined in section 3. 6655 Job Template Attributes are described in section 4.2. The client 6656 optionally supplies Job Template attributes in a create request 6657 (operation requests that create Job objects). The Printer object has 6658 associated attributes which define supported and default values for the 6659 Printer. 6661 13.2.2.1 Attribute Name 6663 Each attribute is uniquely identified in this document by its attribute 6664 name. An attribute name is a keyword. The keyword attribute name is 6665 given in the section header describing that attribute. In running text 6666 in this document, attribute names are indicated inside double quotation 6667 marks (") where the quotation marks are not part of the keyword itself. 6669 13.2.2.2 Attribute Group Name 6671 Related attributes are grouped into named groups. The name of the group 6672 is a keyword. The group name may be used in place of naming all the 6673 attributes in the group explicitly. Attribute groups are defined in 6674 section 3. 6676 13.2.2.3 Attribute Value 6678 Each attribute has one or more values. Attribute values are represented 6679 in the syntax type specified for that attribute. In running text in this 6680 document, attribute values are indicated inside single quotation marks 6681 ('), whether their attribute syntax is keyword, integer, text, etc. 6682 where the quotation marks are not part of the value itself. 6684 13.2.2.4 Attribute Syntax 6686 Each attribute is defined using an explicit syntax type. In this 6687 document, each syntax type is defined as a keyword with specific 6688 meaning. The Encoding and Transport document [IPP-PRO] indicates the 6689 actual "on-the-wire" encoding rules for each syntax type. Attribute 6690 syntax types are defined in section 4.1. 6692 13.2.3 Supports 6694 By definition, a Printer object supports an attribute only if that 6695 Printer object responds with the corresponding attribute populated with 6696 some value(s) in a response to a query for that attribute. A Printer 6697 object supports an attribute value if the value is one of the Printer 6698 object's "supported values" attributes. The device behind a Printer 6699 object may exhibit a behavior that corresponds to some IPP attribute, 6700 but if the Printer object, when queried for that attribute, doesn't 6701 respond with the attribute, then as far as IPP is concerned, that 6702 implementation does not support that feature. If the Printer object's 6704 Isaacson, Powell Expires May 16, 1999 6705 "xxx-supported" attribute is not populated with a particular value (even 6706 if that value is a legal value for that attribute), then that Printer 6707 object does not support that particular value. 6709 A conforming implementation MUST support all REQUIRED attributes. 6710 However, even for REQUIRED attributes, conformance to IPP does not 6711 mandate that all implementations support all possible values 6712 representing all possible job processing behaviors and features. For 6713 example, if a given instance of a Printer supports only certain document 6714 formats, then that Printer responds with the "document-format-supported" 6715 attribute populated with a set of values, possibly only one, taken from 6716 the entire set of possible values defined for that attribute. This 6717 limited set of values represents the Printer's set of supported document 6718 formats. Supporting an attribute and some set of values for that 6719 attribute enables IPP end users to be aware of and make use of those 6720 features associated with that attribute and those values. If an 6721 implementation chooses to not support an attribute or some specific 6722 value, then IPP end users would have no ability to make use of that 6723 feature within the context of IPP itself. However, due to existing 6724 practice and legacy systems which are not IPP aware, there might be some 6725 other mechanism outside the scope of IPP to control or request the 6726 "unsupported" feature (such as embedded instructions within the document 6727 data itself). 6729 For example, consider the "finishings-supported" attribute. 6731 1) If a Printer object is not physically capable of stapling, the 6732 "finishings-supported" attribute MUST NOT be populated with the 6733 value of 'staple'. 6734 2) A Printer object is physically capable of stapling, however an 6735 implementation chooses not to support stapling in the IPP 6736 "finishings" attribute. In this case, 'staple' MUST NOT be a value 6737 in the "finishings-supported" Printer object attribute. Without 6738 support for the value 'staple', an IPP end user would have no means 6739 within the protocol itself to request that a Job be stapled. 6740 However, an existing document data formatter might be able to 6741 request that the document be stapled directly with an embedded 6742 instruction within the document data. In this case, the IPP 6743 implementation does not "support" stapling, however the end user is 6744 still able to have some control over the stapling of the completed 6745 job. 6746 3) A Printer object is physically capable of stapling, and an 6747 implementation chooses to support stapling in the IPP "finishings" 6748 attribute. In this case, 'staple' MUST be a value in the 6749 "finishings-supported" Printer object attribute. Doing so, would 6750 enable end users to be aware of and make use of the stapling 6751 feature using IPP attributes. 6753 Even though support for Job Template attributes by a Printer object is 6754 OPTIONAL, it is RECOMMENDED that if the device behind a Printer object 6755 is capable of realizing any feature or function that corresponds to an 6756 IPP attribute and some associated value, then that implementation SHOULD 6757 support that IPP attribute and value. 6759 Isaacson, Powell Expires May 16, 1999 6760 The set of values in any of the supported value attributes is set 6761 (populated) by some administrative process or automatic sensing 6762 mechanism that is outside the scope of IPP. For administrative policy 6763 and control reasons, an administrator may choose to make only a subset 6764 of possible values visible to the end user. In this case, the real 6765 output device behind the IPP Printer abstraction may be capable of a 6766 certain feature, however an administrator is specifying that access to 6767 that feature not be exposed to the end user through the IPP protocol. 6768 Also, since a Printer object may represent a logical print device (not 6769 just a physical device) the actual process for supporting a value is 6770 undefined and left up to the implementation. However, if a Printer 6771 object supports a value, some manual human action may be needed to 6772 realize the semantic action associated with the value, but no end user 6773 action is required. 6775 For example, if one of the values in the "finishings-supported" 6776 attribute is 'staple', the actual process might be an automatic staple 6777 action by a physical device controlled by some command sent to the 6778 device. Or, the actual process of stapling might be a manual action by 6779 an operator at an operator attended Printer object. 6781 For another example of how supported attributes function, consider a 6782 system administrator who desires to control all print jobs so that no 6783 job sheets are printed in order to conserve paper. To force no job 6784 sheets, the system administrator sets the only supported value for the 6785 "job-sheets-supported" attribute to 'none'. In this case, if a client 6786 requests anything except 'none', the create request is rejected or the 6787 "job-sheets" value is ignored (depending on the value of "ipp-attribute- 6788 fidelity"). To force the use of job start/end sheets on all jobs, the 6789 administrator does not include the value 'none' in the "job-sheets- 6790 supported" attribute. In this case, if a client requests 'none', the 6791 create request is rejected or the "job-sheets" value is ignored (again 6792 depending on the value of "ipp-attribute-fidelity"). 6794 13.2.4 print-stream page 6796 A "print-stream page" is a page according to the definition of pages in 6797 the language used to express the document data. 6799 13.2.5 impression 6801 An "impression" is the image (possibly many print-stream pages in 6802 different configurations) imposed onto a single media page. 6804 14. APPENDIX B: Status Codes and Suggested Status Code Messages 6806 This section defines status code enum keywords and values that are used 6807 to provide semantic information on the results of an operation request. 6808 Each operation response MUST include a status code. The response MAY 6809 also contain a status message that provides a short textual description 6810 of the status. The status code is intended for use by automata, and the 6812 Isaacson, Powell Expires May 16, 1999 6813 status message is intended for the human end user. Since the status 6814 message is an OPTIONAL component of the operation response, an IPP 6815 application (i.e., a browser, GUI, print driver or gateway) is NOT 6816 REQUIRED to examine or display the status message, since it MAY not be 6817 returned to the application. 6819 The prefix of the status keyword defines the class of response as 6820 follows: 6822 "informational" - Request received, continuing process 6823 "successful" - The action was successfully received, understood, and 6824 accepted 6825 "redirection" - Further action must be taken in order to complete the 6826 request 6827 "client-error" - The request contains bad syntax or cannot be 6828 fulfilled 6829 "server-error" - The IPP object failed to fulfill an apparently 6830 valid request 6832 As with type2 enums, IPP status codes are extensible. IPP clients are 6833 NOT REQUIRED to understand the meaning of all registered status codes, 6834 though such understanding is obviously desirable. However, IPP clients 6835 MUST understand the class of any status code, as indicated by the 6836 prefix, and treat any unrecognized response as being equivalent to the 6837 first status code of that class, with the exception that an unrecognized 6838 response MUST NOT be cached. For example, if an unrecognized status 6839 code of "client-error-xxx-yyy" is received by the client, it can safely 6840 assume that there was something wrong with its request and treat the 6841 response as if it had received a "client-error-bad-request" status code. 6842 In such cases, IPP applications SHOULD present the OPTIONAL message (if 6843 present) to the end user since the message is likely to contain human 6844 readable information which will help to explain the unusual status. The 6845 name of the enum is the suggested status message for US English. 6847 The status code values range from 0x0000 to 0x7FFF. The value ranges 6848 for each status code class are as follows: 6850 "successful" - 0x0000 to 0x00FF 6851 "informational" - 0x0100 to 0x01FF 6852 "redirection" - 0x0200 to 0x02FF 6853 "client-error" - 0x0400 to 0x04FF 6854 "server-error" - 0x0500 to 0x05FF 6856 The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 to 6857 5) is reserved for private use within each status code class. Values 6858 0x0600 to 0x7FFF are reserved for future assignment and MUST NOT be 6859 used. 6861 14.1 Status Codes 6863 Each status code is described below. Section 14.1.5.9 contains a table 6864 that indicates which status codes apply to which operations. The 6865 Implementer's Guide [IPP-IIG] describe the suggested steps for 6867 Isaacson, Powell Expires May 16, 1999 6868 processing IPP attributes for all operations, including returning status 6869 codes. 6871 14.1.1 Informational 6873 This class of status code indicates a provisional response and is to be 6874 used for informational purposes only. 6876 There are no status codes defined in IPP/1.0 for this class of status 6877 code. 6879 14.1.2 Successful Status Codes 6881 This class of status code indicates that the client's request was 6882 successfully received, understood, and accepted. 6884 14.1.2.1 successful-ok (0x0000) 6886 The request has succeeded and no request attributes were substituted or 6887 ignored. In the case of a response to a create request, the 6888 'successful-ok' status code indicates that the request was successfully 6889 received and validated, and that the Job object has been created; it 6890 does not indicate that the job has been processed. The transition of 6891 the Job object into the 'completed' state is the only indicator that the 6892 job has been printed. 6894 14.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) 6896 The request has succeeded, but some supplied (1) attributes were ignored 6897 or (2) unsupported values were substituted with supported values or were 6898 ignored in order to perform the operation without rejecting it. 6899 Unsupported attributes, attribute syntaxes, or values MUST be returned 6900 in the Unsupported Attributes group of the response for all operations. 6901 There is an exception to this rule for the query operations: Get- 6902 Printer-Attributes, Get-Jobs, and Get-Job-Attributes for the "requested- 6903 attributes" operation attribute only. When the supplied values of the 6904 "requested-attributes" operation attribute are requesting attributes 6905 that are not supported, the IPP object MAY, but is NOT REQUIRED to, 6906 return the "requested-attributes" attribute in the Unsupported Attribute 6907 response group (with the unsupported values only). See section 3.2.1.2. 6909 14.1.2.3 successful-ok-conflicting-attributes (0x0002) 6911 The request has succeeded, but some supplied attribute values conflicted 6912 with the values of other supplied attributes. These conflicting values 6913 were either (1) substituted with (supported) values or (2) the 6914 attributes were removed in order to process the job without rejecting 6915 it. Attributes or values which conflict with other attributes and have 6916 been substituted or ignored MUST be returned in the Unsupported 6917 Attributes group of the response for all operations as supplied by the 6918 client. See section 3.2.1.2. 6920 Isaacson, Powell Expires May 16, 1999 6921 14.1.3 Redirection Status Codes 6923 This class of status code indicates that further action needs to be 6924 taken to fulfill the request. 6926 There are no status codes defined in IPP/1.0 for this class of status 6927 code. 6929 14.1.4 Client Error Status Codes 6931 This class of status code is intended for cases in which the client 6932 seems to have erred. The IPP object SHOULD return a message containing 6933 an explanation of the error situation and whether it is a temporary or 6934 permanent condition. 6936 14.1.4.1 client-error-bad-request (0x0400) 6938 The request could not be understood by the IPP object due to malformed 6939 syntax (such as the value of a fixed length attribute whose length does 6940 not match the prescribed length for that attribute - see the 6941 Implementer's Guide [IPP-IIG] ). The IPP application SHOULD NOT repeat 6942 the request without modifications. 6944 14.1.4.2 client-error-forbidden (0x0401) 6946 The IPP object understood the request, but is refusing to fulfill it. 6947 Additional authentication information or authorization credentials will 6948 not help and the request SHOULD NOT be repeated. This status code is 6949 commonly used when the IPP object does not wish to reveal exactly why 6950 the request has been refused or when no other response is applicable. 6952 14.1.4.3 client-error-not-authenticated (0x0402) 6954 The request requires user authentication. The IPP client may repeat the 6955 request with suitable authentication information. If the request already 6956 included authentication information, then this status code indicates 6957 that authorization has been refused for those credentials. If this 6958 response contains the same challenge as the prior response, and the user 6959 agent has already attempted authentication at least once, then the 6960 response message may contain relevant diagnostic information. This 6961 status codes reveals more information than "client-error-forbidden". 6963 14.1.4.4 client-error-not-authorized (0x0403) 6965 The requester is not authorized to perform the request. Additional 6966 authentication information or authorization credentials will not help 6967 and the request SHOULD NOT be repeated. This status code is used when 6968 the IPP object wishes to reveal that the authentication information is 6969 understandable, however, the requester is explicitly not authorized to 6970 perform the request. This status codes reveals more information than 6971 "client-error-forbidden" and "client-error-not-authenticated". 6973 Isaacson, Powell Expires May 16, 1999 6974 14.1.4.5 client-error-not-possible (0x0404) 6976 This status code is used when the request is for something that can not 6977 happen. For example, there might be a request to cancel a job that has 6978 already been canceled or aborted by the system. The IPP client SHOULD 6979 NOT repeat the request. 6981 14.1.4.6 client-error-timeout (0x0405) 6983 The client did not produce a request within the time that the IPP object 6984 was prepared to wait. For example, a client issued a Create-Job 6985 operation and then, after a long period of time, issued a Send-Document 6986 operation and this error status code was returned in response to the 6987 Send-Document request (see section 3.3.1). The IPP object might have 6988 been forced to clean up resources that had been held for the waiting 6989 additional Documents. The IPP object was forced to close the Job since 6990 the client took too long. The client SHOULD NOT repeat the request 6991 without modifications. 6993 14.1.4.7 client-error-not-found (0x0406) 6995 The IPP object has not found anything matching the request URI. No 6996 indication is given of whether the condition is temporary or permanent. 6997 For example, a client with an old reference to a Job (a URI) tries to 6998 cancel the Job, however in the mean time the Job might have been 6999 completed and all record of it at the Printer has been deleted. This 7000 status code, 'client-error-not-found' is returned indicating that the 7001 referenced Job can not be found. This error status code is also used 7002 when a client supplies a URI as a reference to the document data in 7003 either a Print-URI or Send-URI operation, but the document can not be 7004 found. 7006 In practice, an IPP application should avoid a not found situation by 7007 first querying and presenting a list of valid Printer URIs and Job URIs 7008 to the end-user. 7010 14.1.4.8 client-error-gone (0x0407) 7012 The requested object is no longer available and no forwarding address is 7013 known. This condition should be considered permanent. Clients with 7014 link editing capabilities should delete references to the request URI 7015 after user approval. If the IPP object does not know or has no facility 7016 to determine, whether or not the condition is permanent, the status code 7017 "client-error-not-found" should be used instead. 7019 This response is primarily intended to assist the task of maintenance by 7020 notifying the recipient that the resource is intentionally unavailable 7021 and that the IPP object administrator desires that remote links to that 7022 resource be removed. It is not necessary to mark all permanently 7023 unavailable resources as "gone" or to keep the mark for any length of 7024 time -- that is left to the discretion of the IPP object administrator. 7026 Isaacson, Powell Expires May 16, 1999 7027 14.1.4.9 client-error-request-entity-too-large (0x0408) 7029 The IPP object is refusing to process a request because the request 7030 entity is larger than the IPP object is willing or able to process. An 7031 IPP Printer returns this status code when it limits the size of print 7032 jobs and it receives a print job that exceeds that limit or when the 7033 attributes are so many that their encoding causes the request entity to 7034 exceed IPP object capacity. 7036 14.1.4.10 client-error-request-value-too-long (0x0409) 7038 The IPP object is refusing to service the request because one or more of 7039 the client-supplied attributes has a variable length value that is 7040 longer than the maximum length specified for that attribute. The IPP 7041 object might not have sufficient resources (memory, buffers, etc.) to 7042 process (even temporarily), interpret, and/or ignore a value larger than 7043 the maximum length. Another use of this error code is when the IPP 7044 object supports the processing of a large value that is less than the 7045 maximum length, but during the processing of the request as a whole, the 7046 object may pass the value onto some other system component which is not 7047 able to accept the large value. For more details, see the Implementer's 7048 Guide [IPP-IIG] . 7050 Note: For attribute values that are URIs, this rare condition is only 7051 likely to occur when a client has improperly submitted a request with 7052 long query information (e.g. an IPP application allows an end-user to 7053 enter an invalid URI), when the client has descended into a URI "black 7054 hole" of redirection (e.g., a redirected URI prefix that points to a 7055 suffix of itself), or when the IPP object is under attack by a client 7056 attempting to exploit security holes present in some IPP objects using 7057 fixed-length buffers for reading or manipulating the Request-URI. 7059 14.1.4.11 client-error-document-format-not-supported (0x040A) 7061 The IPP object is refusing to service the request because the document 7062 data is in a format, as specified in the "document-format" operation 7063 attribute, that is not supported by the Printer object. This error is 7064 returned independent of the client-supplied "ipp-attribute-fidelity". 7065 The Printer object MUST return this status code, even if there are other 7066 attributes that are not supported as well, since this error is a bigger 7067 problem than with Job Template attributes. 7069 14.1.4.12 client-error-attributes-or-values-not-supported (0x040B) 7071 In a create request, if the Printer object does not support one or more 7072 attributes, attribute syntaxes, or attribute values supplied in the 7073 request and the client supplied the "ipp-attributes-fidelity" operation 7074 attribute with the 'true' value, the Printer object MUST return this 7075 status code. For example, if the request indicates 'iso-a4' media, but 7076 that media type is not supported by the Printer object. Or, if the 7077 client supplies an optional attribute and the attribute itself is not 7078 even supported by the Printer. If the "ipp-attribute-fidelity" 7079 attribute is 'false', the Printer MUST ignore or substitute values for 7081 Isaacson, Powell Expires May 16, 1999 7082 unsupported attributes and values rather than reject the request and 7083 return this status code. 7085 For any operation where a client requests attributes (such as a Get- 7086 Jobs, Get-Printer-Attributes, or Get-Job-Attributes operation), if the 7087 IPP object does not support one or more of the requested attributes, the 7088 IPP object simply ignores the unsupported requested attributes and 7089 processes the request as if they had not been supplied, rather than 7090 returning this status code. In this case, the IPP object MUST return 7091 the 'successful-ok-ignored-or-substituted-attributes' status code and 7092 MAY return the unsupported attributes as values of the "requested- 7093 attributes" in the Unsupported Attributes Group (see section 14.1.2.2). 7095 14.1.4.13 client-error-uri-scheme-not-supported (0x040C) 7097 The type of the client supplied URI in a Print-URI or a Send-URI 7098 operation is not supported. 7100 14.1.4.14 client-error-charset-not-supported (0x040D) 7102 For any operation, if the IPP Printer does not support the charset 7103 supplied by the client in the "attributes-charset" operation attribute, 7104 the Printer MUST reject the operation and return this status and any 7105 'text' or 'name' attributes using the 'utf-8' charset (see Section 7106 3.1.4.1). 7108 14.1.4.15 client-error-conflicting-attributes (0x040E) 7110 The request is rejected because some attribute values conflicted with 7111 the values of other attributes which this specification does not permit 7112 to be substituted or ignored. 7114 14.1.5 Server Error Status Codes 7116 This class of status codes indicates cases in which the IPP object is 7117 aware that it has erred or is incapable of performing the request. The 7118 IPP object SHOULD include a message containing an explanation of the 7119 error situation, and whether it is a temporary or permanent condition. 7121 14.1.5.1 server-error-internal-error (0x0500) 7123 The IPP object encountered an unexpected condition that prevented it 7124 from fulfilling the request. This error status code differs from 7125 "server-error-temporary-error" in that it implies a more permanent type 7126 of internal error. It also differs from "server-error-device-error" in 7127 that it implies an unexpected condition (unlike a paper-jam or out-of- 7128 toner problem which is undesirable but expected). This error status 7129 code indicates that probably some knowledgeable human intervention is 7130 required. 7132 Isaacson, Powell Expires May 16, 1999 7133 14.1.5.2 server-error-operation-not-supported (0x0501) 7135 The IPP object does not support the functionality required to fulfill 7136 the request. This is the appropriate response when the IPP object does 7137 not recognize an operation or is not capable of supporting it. 7139 14.1.5.3 server-error-service-unavailable (0x0502) 7141 The IPP object is currently unable to handle the request due to a 7142 temporary overloading or maintenance of the IPP object. The implication 7143 is that this is a temporary condition which will be alleviated after 7144 some delay. If known, the length of the delay may be indicated in the 7145 message. If no delay is given, the IPP application should handle the 7146 response as it would for a "server-error-temporary-error" response. If 7147 the condition is more permanent, the error status codes "client-error- 7148 gone" or "client-error-not-found" could be used. 7150 14.1.5.4 server-error-version-not-supported (0x0503) 7152 The IPP object does not support, or refuses to support, the IPP protocol 7153 version that was used in the request message. The IPP object is 7154 indicating that it is unable or unwilling to complete the request using 7155 the same version as supplied in the request other than with this error 7156 message. The response should contain a Message describing why that 7157 version is not supported and what other versions are supported by that 7158 IPP object. 7160 A conforming IPP/1.0 client MUST specify the valid version ('1.0') on 7161 each request. A conforming IPP/1.0 object MUST NOT return this status 7162 code to a conforming IPP/1.0 client. An IPP object MUST return this 7163 status code to a non-conforming IPP client. The response MUST identify 7164 in the "version-number" operation attribute the closest version number 7165 that the IPP object does support. 7167 14.1.5.5 server-error-device-error (0x0504) 7169 A printer error, such as a paper jam, occurs while the IPP object 7170 processes a Print or Send operation. The response contains the true Job 7171 Status (the values of the "job-state" and "job-state-reasons" 7172 attributes). Additional information can be returned in the optional 7173 "job-state-message" attribute value or in the OPTIONAL status message 7174 that describes the error in more detail. This error status code is only 7175 returned in situations where the Printer is unable to accept the create 7176 request because of such a device error. For example, if the Printer is 7177 unable to spool, and can only accept one job at a time, the reason it 7178 might reject a create request is that the printer currently has a paper 7179 jam. In many cases however, where the Printer object can accept the 7180 request even though the Printer has some error condition, the 7181 'successful-ok' status code will be returned. In such a case, the 7182 client would look at the returned Job Object Attributes or later query 7183 the Printer to determine its state and state reasons. 7185 Isaacson, Powell Expires May 16, 1999 7186 14.1.5.6 server-error-temporary-error (0x0505) 7188 A temporary error such as a buffer full write error, a memory overflow 7189 (i.e. the document data exceeds the memory of the Printer), or a disk 7190 full condition, occurs while the IPP Printer processes an operation. 7191 The client MAY try the unmodified request again at some later point in 7192 time with an expectation that the temporary internal error condition may 7193 have been cleared. Alternatively, as an implementation option, a 7194 Printer object MAY delay the response until the temporary condition is 7195 cleared so that no error is returned. 7197 14.1.5.7 server-error-not-accepting-jobs (0x0506) 7199 A temporary error indicating that the Printer is not currently accepting 7200 jobs, because the administrator has set the value of the Printer's 7201 "printer-is-not-accepting-jobs" attribute to 'false' (by means outside 7202 of IPP/1.0). 7204 14.1.5.8 server-error-busy (0x0507) 7206 A temporary error indicating that the Printer is too busy processing 7207 jobs and/or other requests. The client SHOULD try the unmodified request 7208 again at some later point in time with an expectation that the temporary 7209 busy condition will have been cleared. 7211 14.1.5.9 server-error-job-canceled (0x0508) 7213 An error indicating that the job has been canceled by an operator or the 7214 system while the client was transmitting the data to the IPP Printer. 7215 If a job-id and job-uri had been created, then they are returned in the 7216 Print-Job, Send-Document, or Send-URI response as usual; otherwise, no 7217 job-id and job-uri are returned in the response. 7219 Isaacson, Powell Expires May 16, 1999 7220 14.2 Status Codes for IPP Operations 7222 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 7223 SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and 7224 Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job 7226 IPP Operations 7227 IPP Status Keyword PJ PU CJ SD SU V GA GJ C 7228 ------------------ -- -- -- -- -- - -- -- - 7229 successful-ok x x x x x x x x x 7230 successful-ok-ignored-or-substituted- x x x x x x x x x 7231 attributes 7232 successful-ok-conflicting-attributes x x x x x x x x x 7233 client-error-bad-request x x x x x x x x x 7234 client-error-forbidden x x x x x x x x x 7235 client-error-not-authenticated x x x x x x x x x 7236 client-error-not-authorized x x x x x x x x x 7237 client-error-not-possible x x x x x x x x x 7238 client-error-timeout x x 7239 client-error-not-found x x x x x x x x x 7240 client-error-gone x x x x x x x x x 7241 client-error-request-entity-too-large x x x x x x x x x 7242 client-error-request-value-too-long x x x x x x x x x 7243 client-error-document-format-not- x x x x x x 7244 supported 7245 client-error-attributes-or-values-not- x x x x x x x x x 7246 supported 7247 client-error-uri-scheme-not-supported x x 7248 client-error-charset-not-supported x x x x x x x x x 7249 client-error-conflicting-attributes x x x x x x x x x 7250 server-error-internal-error x x x x x x x x x 7251 server-error-operation-not-supported x x x x 7252 server-error-service-unavailable x x x x x x x x x 7253 server-error-version-not-supported x x x x x x x x x 7254 server-error-device-error x x x x x 7255 server-error-temporary-error x x x x x 7256 server-error-not-accepting-jobs x x x x 7257 server-error-busy x x x x x x x x x 7258 server-error-job-canceled x x 7260 15. APPENDIX C: "media" keyword values 7262 Standard keyword values are taken from several sources. 7264 Standard values are defined (taken from DPA[ISO10175] and the Printer 7265 MIB[RFC1759]): 7267 'default': The default medium for the output device 7268 'iso-a4-white': Specifies the ISO A4 white medium 7269 'iso-a4-colored': Specifies the ISO A4 colored medium 7270 'iso-a4-transparent' Specifies the ISO A4 transparent medium 7271 'iso-a3-white': Specifies the ISO A3 white medium 7273 Isaacson, Powell Expires May 16, 1999 7274 'iso-a3-colored': Specifies the ISO A3 colored medium 7275 'iso-a5-white': Specifies the ISO A5 white medium 7276 'iso-a5-colored': Specifies the ISO A5 colored medium 7277 'iso-b4-white': Specifies the ISO B4 white medium 7278 'iso-b4-colored': Specifies the ISO B4 colored medium 7279 'iso-b5-white': Specifies the ISO B5 white medium 7280 'iso-b5-colored': Specifies the ISO B5 colored medium 7281 'jis-b4-white': Specifies the JIS B4 white medium 7282 'jis-b4-colored': Specifies the JIS B4 colored medium 7283 'jis-b5-white': Specifies the JIS B5 white medium 7284 'jis-b5-colored': Specifies the JIS B5 colored medium 7286 The following standard values are defined for North American media: 7288 'na-letter-white': Specifies the North American letter white medium 7289 'na-letter-colored': Specifies the North American letter colored 7290 medium 7291 'na-letter-transparent': Specifies the North American letter 7292 transparent medium 7293 'na-legal-white': Specifies the North American legal white medium 7294 'na-legal-colored': Specifies the North American legal colored medium 7296 The following standard values are defined for envelopes: 7298 'iso-b4-envelope': Specifies the ISO B4 envelope medium 7299 'iso-b5-envelope': Specifies the ISO B5 envelope medium 7300 'iso-c3-envelope': Specifies the ISO C3 envelope medium 7301 'iso-c4-envelope': Specifies the ISO C4 envelope medium 7302 'iso-c5-envelope': Specifies the ISO C5 envelope medium 7303 'iso-c6-envelope': Specifies the ISO C6 envelope medium 7304 'iso-designated-long-envelope': Specifies the ISO Designated Long 7305 envelope medium 7306 'na-10x13-envelope': Specifies the North American 10x13 envelope 7307 medium 7308 'na-9x12-envelope': Specifies the North American 9x12 envelope medium 7309 'monarch-envelope': Specifies the Monarch envelope 7310 'na-number-10-envelope': Specifies the North American number 10 7311 business envelope medium 7312 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 7313 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 7314 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 7315 'na-number-9-envelope': Specifies the North American number 9 7316 business envelope 7317 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 7318 'na-10x15-envelope': Specifies the North American 10x15 inch envelope 7320 The following standard values are defined for the less commonly used 7321 media (white-only): 7323 'executive-white': Specifies the white executive medium 7324 'folio-white': Specifies the folio white medium 7325 'invoice-white': Specifies the white invoice medium 7327 Isaacson, Powell Expires May 16, 1999 7328 'ledger-white': Specifies the white ledger medium 7329 'quarto-white': Specified the white quarto medium 7330 'iso-a0-white': Specifies the ISO A0 white medium 7331 'iso-a1-white': Specifies the ISO A1 white medium 7332 'iso-a2-white': Specifies the ISO A2 white medium 7333 'iso-a6-white': Specifies the ISO A6 white medium 7334 'iso-a7-white': Specifies the ISO A7 white medium 7335 'iso-a8-white': Specifies the ISO A8 white medium 7336 'iso-a9-white': Specifies the ISO A9 white medium 7337 'iso-10-white': Specifies the ISO A10 white medium 7338 'iso-b0-white': Specifies the ISO B0 white medium 7339 'iso-b1-white': Specifies the ISO B1 white medium 7340 'iso-b2-white': Specifies the ISO B2 white medium 7341 'iso-b3-white': Specifies the ISO B3 white medium 7342 'iso-b6-white': Specifies the ISO B6 white medium 7343 'iso-b7-white': Specifies the ISO B7 white medium 7344 'iso-b8-white': Specifies the ISO B8 white medium 7345 'iso-b9-white': Specifies the ISO B9 white medium 7346 'iso-b10-white': Specifies the ISO B10 white medium 7347 'jis-b0-white': Specifies the JIS B0 white medium 7348 'jis-b1-white': Specifies the JIS B1 white medium 7349 'jis-b2-white': Specifies the JIS B2 white medium 7350 'jis-b3-white': Specifies the JIS B3 white medium 7351 'jis-b6-white': Specifies the JIS B6 white medium 7352 'jis-b7-white': Specifies the JIS B7 white medium 7353 'jis-b8-white': Specifies the JIS B8 white medium 7354 'jis-b9-white': Specifies the JIS B9 white medium 7355 'jis-b10-white': Specifies the JIS B10 white medium 7357 The following standard values are defined for engineering media: 7359 'a': Specifies the engineering A size medium 7360 'b': Specifies the engineering B size medium 7361 'c': Specifies the engineering C size medium 7362 'd': Specifies the engineering D size medium 7363 'e': Specifies the engineering E size medium 7365 The following standard values are defined for input-trays (from ISO DPA 7366 and the Printer MIB): 7368 'top': The top input tray in the printer. 7369 'middle': The middle input tray in the printer. 7370 'bottom': The bottom input tray in the printer. 7371 'envelope': The envelope input tray in the printer. 7372 'manual': The manual feed input tray in the printer. 7373 'large-capacity': The large capacity input tray in the printer. 7374 'main': The main input tray 7375 'side': The side input tray 7377 The following standard values are defined for media sizes (from ISO 7378 DPA): 7380 Isaacson, Powell Expires May 16, 1999 7381 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined in 7382 ISO 216 7383 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 7384 ISO 216 7385 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 7386 ISO 216 7387 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 7388 ISO 216 7389 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 7390 ISO 216 7391 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 7392 ISO 216 7393 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 7394 ISO 216 7395 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 7396 ISO 216 7397 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in ISO 7398 216 7399 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in ISO 7400 216 7401 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 7402 ISO 216 7403 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined in 7404 ISO 216 7405 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined in 7406 ISO 216 7407 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 7408 ISO 216 7409 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 7410 ISO 216 7411 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 7412 ISO 216 7413 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 7414 ISO 216 7415 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 7416 ISO 216 7417 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 7418 ISO 216 7419 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in ISO 7420 216 7421 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in ISO 7422 216 7423 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 7424 ISO 216 7425 'na-letter': Specifies the North American letter size: 8.5 inches by 7426 11 inches 7427 'na-legal': Specifies the North American legal size: 8.5 inches by 14 7428 inches 7429 'executive': Specifies the executive size (7.25 X 10.5 in) 7430 'folio': Specifies the folio size (8.5 X 13 in) 7431 'invoice': Specifies the invoice size (5.5 X 8.5 in) 7432 'ledger': Specifies the ledger size (11 X 17 in) 7433 'quarto': Specifies the quarto size (8.5 X 10.83 in) 7435 Isaacson, Powell Expires May 16, 1999 7436 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 7437 ISO 269 7438 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 7439 ISO 269 7440 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 7441 ISO 269 7442 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 7443 ISO 269 7444 'iso-designated-long': Specifies the ISO Designated Long size: 110 mm 7445 by 220 mm as defined in ISO 269 7446 'na-10x13-envelope': Specifies the North American 10x13 size: 10 7447 inches by 13 inches 7448 'na-9x12-envelope': Specifies the North American 9x12 size: 9 inches 7449 by 12 inches 7450 'na-number-10-envelope': Specifies the North American number 10 7451 business envelope size: 4.125 inches by 9.5 inches 7452 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 7453 size 7454 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 7455 size 7456 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 7457 size 7458 'na-number-9-envelope': Specifies the North American number 9 7459 business envelope size 7460 'na-6x9-envelope': Specifies the North American 6x9 envelope size 7461 'na-10x15-envelope': Specifies the North American 10x15 envelope size 7462 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 7463 in) 7464 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 7465 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 7466 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 7467 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 7468 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 7469 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 7470 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 7471 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 7472 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 7473 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 7474 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 7476 16. APPENDIX D: Processing IPP Attributes 7478 When submitting a print job to a Printer object, the IPP model allows a 7479 client to supply operation and Job Template attributes along with the 7480 document data. These Job Template attributes in the create request 7481 affect the rendering, production and finishing of the documents in the 7482 job. Similar types of instructions may also be contained in the 7483 document to be printed, that is, embedded within the print data itself. 7484 In addition, the Printer has a set of attributes that describe what 7485 rendering and finishing options which are supported by that Printer. 7486 This model, which allows for flexibility and power, also introduces the 7487 potential that at job submission time, these client-supplied attributes 7488 may conflict with either: 7490 Isaacson, Powell Expires May 16, 1999 7491 - what the implementation is capable of realizing (i.e., what the 7492 Printer supports), as well as 7493 - the instructions embedded within the print data itself. 7495 The following sections describe how these two types of conflicts are 7496 handled in the IPP model. 7498 16.1 Fidelity 7500 If there is a conflict between what the client requests and what a 7501 Printer object supports, the client may request one of two possible 7502 conflict handling mechanisms: 7504 1) either reject the job since the job can not be processed exactly 7505 as specified, or 7506 2) allow the Printer to make any changes necessary to proceed with 7507 processing the Job the best it can. 7509 In the first case the client is indicating to the Printer object: "Print 7510 the job exactly as specified with no exceptions, and if that can't be 7511 done, don't even bother printing the job at all." In the second case, 7512 the client is indicating to the Printer object: "It is more important to 7513 make sure the job is printed rather than be processed exactly as 7514 specified; just make sure the job is printed even if client supplied 7515 attributes need to be changed or ignored." 7517 The IPP model accounts for this situation by introducing an "ipp- 7518 attribute-fidelity" attribute. 7520 In a create request, "ipp-attribute-fidelity" is a boolean operation 7521 attribute that is OPTIONALLY supplied by the client. The value 'true' 7522 indicates that total fidelity to client supplied Job Template attributes 7523 and values is required. The client is requesting that the Job be 7524 printed exactly as specified, and if that is not possible then the job 7525 MUST be rejected rather than processed incorrectly. The value 'false' 7526 indicates that a reasonable attempt to print the Job is acceptable. If 7527 a Printer does not support some of the client supplied Job Template 7528 attributes or values, the Printer MUST ignore them or substitute any 7529 supported value for unsupported values, respectively. The Printer may 7530 choose to substitute the default value associated with that attribute, 7531 or use some other supported value that is similar to the unsupported 7532 requested value. For example, if a client supplies a "media" value of 7533 'na-letter', the Printer may choose to substitute 'iso-a4' rather than a 7534 default value of 'envelope'. If the client does not supply the "ipp- 7535 attribute-fidelity" attribute, the Printer assumes a value of 'false'. 7537 Each Printer implementation MUST support both types of "fidelity" 7538 printing (that is whether the client supplies a value of 'true' or 7539 'false'): 7541 - If the client supplies 'false' or does not supply the attribute, 7542 the Printer object MUST always accept the request by ignoring 7544 Isaacson, Powell Expires May 16, 1999 7545 unsupported Job Template attributes and by substituting unsupported 7546 values of supported Job Template attributes with supported values. 7547 - If the client supplies 'true', the Printer object MUST reject the 7548 request if the client supplies unsupported Job Template attributes. 7550 Since a client can always query a Printer to find out exactly what is 7551 and is not supported, "ipp-attribute-fidelity" set to 'false' is useful 7552 when: 7554 1) The End-User uses a command line interface to request attributes 7555 that might not be supported. 7556 2) In a GUI context, if the End User expects the job might be moved 7557 to another printer and prefers a sub-optimal result to nothing at 7558 all. 7559 3) The End User just wants something reasonable in lieu of nothing at 7560 all. 7562 16.2 Page Description Language (PDL) Override 7564 If there is a conflict between the value of an IPP Job Template 7565 attribute and a corresponding instruction in the document data, the 7566 value of the IPP attribute SHOULD take precedence over the document 7567 instruction. Consider the case where a previously formatted file of 7568 document data is sent to an IPP Printer. In this case, if the client 7569 supplies any attributes at job submission time, the client desires that 7570 those attributes override the embedded instructions. Consider the case 7571 were a previously formatted document has embedded in it commands to load 7572 'iso-a4' media. However, the document is passed to an end user that 7573 only has access to a printer with 'na-letter' media loaded. That end 7574 user most likely wants to submit that document to an IPP Printer with 7575 the "media" Job Template attribute set to 'na-letter'. The job 7576 submission attribute should take precedence over the embedded PDL 7577 instruction. However, until companies that supply document data 7578 interpreters allow a way for external IPP attributes to take precedence 7579 over embedded job production instructions, a Printer might not be able 7580 to support the semantics that IPP attributes override the embedded 7581 instructions. 7583 The IPP model accounts for this situation by introducing a "pdl- 7584 override-supported" attribute that describes the Printer objects 7585 capabilities to override instructions embedded in the PDL data stream. 7586 The value of the "pdl-override-supported" attribute is configured by 7587 means outside IPP/1.0. 7589 This REQUIRED Printer attribute takes on the following values: 7591 - 'attempted': This value indicates that the Printer object attempts 7592 to make the IPP attribute values take precedence over embedded 7593 instructions in the document data, however there is no guarantee. 7594 - 'not-attempted': This value indicates that the Printer object makes 7595 no attempt to make the IPP attribute values take precedence over 7596 embedded instructions in the document data. 7598 Isaacson, Powell Expires May 16, 1999 7600 At job processing time, an implementation that supports the value of 7601 'attempted' might do one of several different actions: 7603 1) Generate an output device specific command sequence to realize the 7604 feature represented by the IPP attribute value. 7605 2) Parse the document data itself and replace the conflicting 7606 embedded instruction with a new embedded instruction that matches 7607 the intent of the IPP attribute value. 7608 3) Indicate to the Printer that external supplied attributes take 7609 precedence over embedded instructions and then pass the external 7610 IPP attribute values to the document data interpreter. 7611 4) Anything else that allows for the semantics that IPP attributes 7612 override embedded document data instructions. 7614 Since 'attempted' does not offer any type of guarantee, even though a 7615 given Printer object might not do a very "good" job of attempting to 7616 ensure that IPP attributes take a higher precedence over instructions 7617 embedded in the document data, it would still be a conforming 7618 implementation. 7620 At job processing time, an implementation that supports the value of 7621 'not-attempted' might do one of the following actions: 7623 1) Simply pre-pend the document data with the PDL instruction that 7624 corresponds to the client-supplied PDL attribute, such that if the 7625 document data also has the same PDL instruction, it will override 7626 what the Printer object pre-pended. In other words, this 7627 implementation is using the same implementation semantics for the 7628 client-supplied IPP attributes as for the Printer object defaults. 7629 2) Parse the document data and replace the conflicting embedded 7630 instruction with a new embedded instruction that approximates, but 7631 does not match, the semantic intent of the IPP attribute value. 7633 Note: The "ipp-attribute-fidelity" attribute applies to the Printer's 7634 ability to either accept or reject other unsupported Job Template 7635 attributes. In other words, if "ipp-attribute-fidelity" is set to 7636 'true', a Job is accepted if and only if the client supplied Job 7637 Template attributes and values are supported by the Printer. Whether 7638 these attributes actually affect the processing of the Job when the 7639 document data contains embedded instructions depends on the ability of 7640 the Printer to override the instructions embedded in the document data 7641 with the semantics of the IPP attributes. If the document data 7642 attributes can be overridden ("pdl-override-supported" set to 7643 'attempted'), the Printer makes an attempt to use the IPP attributes 7644 when processing the Job. If the document data attributes can not be 7645 overridden ("pdl-override-supported" set to 'not-attempted'), the 7646 Printer makes no attempt to override the embedded document data 7647 instructions with the IPP attributes when processing the Job, and hence, 7648 the IPP attributes may fail to affect the Job processing and output when 7649 the corresponding instruction is embedded in the document data. 7651 Isaacson, Powell Expires May 16, 1999 7652 16.3 Using Job Template Attributes During Document Processing. 7654 The Printer object uses some of the Job object's Job Template attributes 7655 during the processing of the document data associated with that job. 7656 These include, but are not limited to, "orientation", "number-up", 7657 "sides", "media", and "copies". The processing of each document in a 7658 Job Object MUST follow the steps below. These steps are intended only to 7659 identify when and how attributes are to be used in processing document 7660 data and any alternative steps that accomplishes the same effect can be 7661 used to implement this specification. 7663 1. Using the client supplied "document-format" attribute or some form 7664 of document format detection algorithm (if the value of "document- 7665 format" is not specific enough), determine whether or not the 7666 document data has already been formatted for printing. If the 7667 document data has been formatted, then go to step 2. Otherwise, the 7668 document data MUST be formatted. The formatting detection algorithm 7669 is implementation defined and is not specified by this 7670 specification. The formatting of the document data uses the 7671 "orientation-requested" attribute to determine how the formatted 7672 print data should be placed on a print-stream page, see section 7673 4.2.10 for the details. 7675 2. The document data is in the form of a print-stream in a known 7676 media type. The "page-ranges" attribute is used to select, as 7677 specified in section 4.2.7, a sub-sequence of the pages in the 7678 print-stream that are to be processed and images. 7680 3. The input to this step is a sequence of print-stream pages. This 7681 step is controlled by the "number-up" attribute. If the value of 7682 "number-up" is N, then during the processing of the print-stream 7683 pages, each N print-stream pages are positioned, as specified in 7684 section 4.2.9, to create a single impression. If a given document 7685 does not have N more print-stream pages, then the completion of the 7686 impression is controlled by the "multiple-document-handling" 7687 attribute as described in section 4.2.4; when the value of this 7688 attribute is 'single-document' or 'single-document-new-sheet', the 7689 print-stream pages of document data from subsequent documents is 7690 used to complete the impression. 7692 The size(scaling), position(translation) and rotation of the print- 7693 stream pages on the impression is implementation defined. Note 7694 that during this process the print-stream pages may be rendered to 7695 a form suitable for placing on the impression; this rendering is 7696 controlled by the values of the "printer-resolution" and "print- 7697 quality" attributes as described in sections 4.2.12 and 4.2.13. In 7698 the case N=1, the impression is nearly the same as the print-stream 7699 page; the differences would only be in the size, position and 7700 rotation of the print-stream page and/or any decoration, such as a 7701 frame to the page, that is added by the implementation. 7703 4. The collection of impressions is placed, in sequence, onto sides 7704 of the media sheets. This placement is controlled by the "sides" 7705 attribute and the orientation of the print-stream page, as 7707 Isaacson, Powell Expires May 16, 1999 7708 described in section 4.2.8. The orientation of the print-stream 7709 pages affects the orientation of the impression; for example, if 7710 "number-up" equals 2, then, typically, two portrait print-stream 7711 pages become one landscape impression. Note that the placement of 7712 impressions onto media sheets is also controlled by the "multiple- 7713 document-handling" attribute as described in section 4.2.4. 7715 5. The "copies" and "multiple-document-handling" attributes are used 7716 to determine how many copies of each media instance are created and 7717 in what order. See sections 4.2.5 and 4.2.4 for the details. 7719 6. When the correct number of copies are created, the media instances 7720 are finished according to the values of the "finishings" attribute 7721 as described in 4.2.6. Note that sometimes finishing operations may 7722 require manual intervention to perform the finishing operations on 7723 the copies, especially uncollated copies. This specification allows 7724 any or all of the processing steps to be performed automatically or 7725 manually at the discretion of the Printer object. 7727 17. APPENDIX E: Generic Directory Schema 7729 This section defines a generic schema for an entry in a directory 7730 service. A directory service is a means by which service users can 7731 locate service providers. In IPP environments, this means that IPP 7732 Printers can be registered (either automatically or with the help of an 7733 administrator) as entries of type printer in the directory using an 7734 implementation specific mechanism such as entry attributes, entry type 7735 fields, specific branches, etc. IPP clients can search or browse for 7736 entries of type printer. Clients use the directory service to find 7737 entries based on naming, organizational contexts, or filtered searches 7738 on attribute values of entries. For example, a client can find all 7739 printers in the "Local Department" context. Authentication and 7740 authorization are also often part of a directory service so that an 7741 administrator can place limits on end users so that they are only 7742 allowed to find entries to which they have certain access rights. IPP 7743 itself does not require any specific directory service protocol or 7744 provider. 7746 Note: Some directory implementations allow for the notion of "aliasing". 7747 That is, one directory entry object can appear as multiple directory 7748 entry object with different names for each object. In each case, each 7749 alias refers to the same directory entry object which refers to a single 7750 IPP Printer object. 7752 The generic schema is a subset of IPP Printer Job Template and Printer 7753 Description attributes (sections 4.2 and 4.4). These attributes are 7754 identified as either RECOMMENDED or OPTIONAL for the directory entry 7755 itself. This conformance labeling is NOT the same conformance labeling 7756 applied to the attributes of IPP Printers objects. The conformance 7757 labeling in this Appendix is intended to apply to directory templates 7758 and to IPP Printer implementations that subscribe by adding one or more 7759 entries to a directory. RECOMMENDED attributes SHOULD be associated 7760 with each directory entry. OPTIONAL attributes MAY be associated with 7762 Isaacson, Powell Expires May 16, 1999 7763 the directory entry (if known or supported). In addition, all directory 7764 entry attributes SHOULD reflect the current attribute values for the 7765 corresponding Printer object. 7767 The names of attributes in directory schema and entries SHOULD be the 7768 same as the IPP Printer attribute names as shown. 7770 In order to bridge between the directory service and the IPP Printer 7771 object, one of the RECOMMENDED directory entry attributes is the Printer 7772 object's "printer-uri-supported" attribute. The IPP client queries the 7773 "printer-uri-supported" attribute in the directory entry and then 7774 addresses the IPP Printer object using one of its URIs. The "uri- 7775 security-supported" attribute identifies the protocol (if any) used to 7776 secure a channel. 7778 The following attributes define the generic schema for directory entries 7779 of type PRINTER: 7781 printer-uri-supported RECOMMENDED Section 4.4.1 7782 uri-security-supported RECOMMENDED Section 4.4.2 7783 printer-name RECOMMENDED Section 4.4.3 7784 printer-location RECOMMENDED Section 4.4.4 7785 printer-info OPTIONAL Section 4.4.5 7786 printer-more-info OPTIONAL Section 4.4.6 7787 printer-make-and-model RECOMMENDED Section 4.4.8 7788 charset-supported OPTIONAL Section 4.4.15 7789 generated-natural-language- 7790 supported OPTIONAL Section 4.4.17 7791 document-format-supported RECOMMENDED Section 4.4.19 7792 color-supported RECOMMENDED Section 4.4.23 7793 finishings-supported OPTIONAL Section 4.2.6 7794 number-up-supported OPTIONAL Section 4.2.7 7795 sides-supported RECOMMENDED Section 4.2.8 7796 media-supported RECOMMENDED Section 4.2.11 7797 printer-resolution-supported OPTIONAL Section 4.2.12 7798 print-quality-supported OPTIONAL Section 4.2.13 7800 18. APPENDIX F: Change History for the IPP Model and Semantics document 7802 The following substantive changes and major clarifications have been 7803 made to this document from the June 30, 1998 version based on the 7804 interoperability testing that took place September 23-25 1998 and 7805 subsequent mailing list and meeting discussions. They are listed in the 7806 order of occurrence in the document. These changes are the ones that 7807 might affect implementations. Clarifications that are unlikely to 7808 affect implementations are not listed. The issue numbers refer to the 7809 IPP Issues List which is available in the following directory: 7811 ftp://ftp.pwg.org/pub/pwg/ipp/approved-clarifications/ 7813 Isaacson, Powell Expires May 16, 1999 7815 Section Description 7817 global Replaced TLS references with SSL3 references as agreed 7818 with our Area Director on 11/12/1998. 7820 global Removed the indications that some of these IPP documents 7821 are informational, since the intent is now to publish 7822 all IPP/1.0 documents as informational as agreed with 7823 our Area Director on 11/12/1998. 7825 3.1.2, Clarify that the IPP object SHOULD NOT validate the 7826 16.3.3 range of the request-id being 1 to 2**31-1, but accepts 7827 [now IPP- and returns any value. Clients MUST still keep in the 7828 IIG] range 1 to 2**31 though. If the request is terminated 7829 before the complete "request-id" is received, the IPP 7830 object rejects the request and returns a response with a 7831 "request-id" of 0 (Issue 1.36). 7833 3.1.4.1, Clarified that when a client submits a request in a 7834 14.1.4.14 charset that is not supported, the IPP object SHOULD 7835 return any 'text' or 'name' attributes in the 'utf-8' 7836 charset, if it returns any, since clients and IPP 7837 objects MUST support 'utf-8'. (Issue 1.19) 7839 3.1.4.1 Clarified Section 3.1.4.1 Request Operation Attributes 7840 that a client MAY use the attribute level natural 7841 language override (text/nameWithLanguage) redundantly in 7842 a request. (Issue 1.46) 7844 3.1.4.2 Clarified Section 3.1.4.2 Response Operation Attributes 7845 that an IPP object MAY use the attribute level natural 7846 language override (text/nameWithLanguage) redundantly in 7847 a response. (Issue 1.46) 7849 3.1.6 Clarified section 3.1.6: If the Printer object supports 7850 the "status-message" operation attribute, it NEED NOT 7851 return a status message for the following error status 7852 codes: 'client-error-bad-request', 'client-error- 7853 charset-not-supported', 'server-error-internal-error', 7854 'server-error-operation-not-supported', and 'server- 7855 error-version-not-supported'. 7857 3.2.1.1 Clarified that if a client is not supplying any Job 7858 Template attributes in a request, the client SHOULD omit 7859 Group 2 rather than sending an empty group. However, a 7860 Printer object MUST be able to accept an empty group. 7861 This makes [IPP-MOD] agree with [IPP-PRO]. (Issue 1.16) 7863 3.2.1.2, Clarified that if an IPP object is not returning any 7864 3.2.5.2, Unsupported Attributes in a response, the IPP object 7865 3.2.6.2, SHOULD omit Group 2 rather than sending an empty group. 7866 3.3.1.2, However, a client MUST be able to accept an empty group. 7867 3.3.3.2, This makes [IPP-MOD] agree with [IPP-PRO]. (Issue 1.17) 7868 3.3.4.2, 7870 3.2.1.2, Clarified that an IPP object MUST treat an unsupported 7871 14.1.2.2, attribute syntax supplied in a request in the same way 7872 14.1.4.12 as an unsupported value. The IPP object MUST return the 7873 attribute, the attribute syntax, and the value in the 7874 Unsupported Attributes group. (Issue 1.26) 7876 3.2.5.2, Clarified for Get-Printer-Attributes, Get-Jobs, and Get- 7877 3.2.6.2, Job-Attributes that an IPP object MUST return 7878 3.3.4.2, 'successful-ok-ignored-or-substituted-attributes' (0x1), 7880 Isaacson, Powell Expires May 16, 1999 7881 14.1.2.1, rather than 'successful-ok' (0x0), when a client 7882 14.1.2.2, supplies unsupported attributes as values of the 7883 14.1.4.12 'requested-attributes' operation attribute. (Issue 7884 1.24) 7885 Also clarified that the response NEED NOT contain the 7886 "requested-attributes" operation attribute with any 7887 supplied values (attribute keywords) that were requested 7888 by the client but are not supported by the IPP object. 7889 (Issue 1.18) 7891 3.2.6.2 Deleted the job-level natural language override (NLO) 7892 4.1.1.2 from Section 3.2.6.2 Get-Jobs Response so that all 7893 4.3.24 operation responses are the same with respect to NLO. 7894 (Issue 1.47) 7896 3.3.1 Clarified that an IPP Printer that supports the Create- 7897 Job operation MUST handle the situation when a client 7898 does not supply Send-Document or Send-URI operations 7899 within a one- to four-minute time period. Also 7900 clarified that a client MUST send documents in a multi- 7901 document job without undue or unbounded delay. (Issue 7902 1.28) 7904 3.3.3 Clarified that the IPP object MUST reject a Cancel-Job 7905 request if the job is in 'completed', 'canceled', or 7906 'aborted' job states. (Issue 1.12) 7908 4.1.2.3 Added this new sub-section: it specifies that 7909 nameWithoutLanguage plus the implicit natural language 7910 matches nameWithLanguage, if the values and natural 7911 languages are the same. Also added that keyword never 7912 matches nameWithLanguage or nameWithoutLanguage. 7913 Clarified that if both have countries, that the 7914 countries SHOULD match as well. If either do not, then 7915 the country field SHOULD be ignored. (Issues 1.33 and 7916 1.34) 7918 4.1.5 Clarified regarding the case-insensitivity of URLs to 7919 refer only to the RFCs that define them. (Issue 1.10) 7921 4.1.11 Clarified that 'boolean' is not a full-sized integer. 7922 (Issue 1.38) 7924 4.1.15 Clarified that 'resolution' is not three full-sized 7925 integers. (Issue 1.20) 7927 4.2.* Clarified that standard values are keywords or enums, 7928 not names. (Issue 1.49). 7930 4.2.4 Added the 'single-document-new-sheet' value to Section 7931 4.2.4 multiple-document-handling. (Issue 1.54) 7933 4.4.18, Clarified that the "document-format-default" and 7934 4.4.19 "document-format-supported" Printer Description 7935 attributes are REQUIRED to agree with the table. (Issue 7936 1.4) 7938 4.4.21 Changed "queued-job-count" from OPTIONAL to RECOMMENDED. 7939 (Issue 1.14) 7941 4.4.28 Clarified that the implementation supplied value for the 7942 "multiple-operation-time-out" attribute SHOULD be 7943 between 30 and 240 seconds, though the implementation 7944 MAY allow the administrator to set values, and MAY allow 7945 values outside this range. (Issue 1.28) 7947 Isaacson, Powell Expires May 16, 1999 7949 5.1, Clarified Client Conformance that if a client supports 7950 5.2.5 an attribute of 'text' attribute syntax, that it MUST 7951 support both the textWithoutLanguage and the 7952 textWithLanguage forms. Same for 'name' attribute 7953 syntax. Same for an IPP object (Issue 1.48) 7955 6.5, Added new section to allow Attribute Groups to be 7956 12.8 registered as extensions for being passed in operation 7957 requests and responses. (Issue 1.25) 7959 7. Updated the table of text and name attributes to agree 7960 with Section 4.2. 7962 8.5 Added a new section RECOMMENDING that the Get-Jobs 7963 SHOULD return non-IPP jobs whether or not assigning them 7964 a job-id and job-uri. Also RECOMMENDED generating, if 7965 possible, job-id and job-uri and supporting other IPP 7966 operations on foreign jobs as an implementer option. 7967 (Issue 1.32) 7969 9. Updated document references. 7971 14.1.4.14 Clarified 'client-error-charset-not-supported' that 7972 'utf-8' must be used for any 'text' or 'name' attributes 7973 returned in the error response (Issue 1.19). 7975 14.1.5.9 Added a new error code 'server-error-job-canceled' 7976 (0x0508) to be returned if a job is canceled by another 7977 client or aborted by the IPP object while the first 7978 client is still sending the document data. (Issue 1.29) 7980 16.3, Moved these sections recommending operation processing 7981 16.4 steps to the new Implementer's Guide (informational). 7982 There indicated that all of the error checks are not 7983 required, so an IPP object MAY be forgiving and accept 7984 non-conforming requests. However, a conforming client 7985 MUST supply requests that would pass all of the error 7986 checks indicated. (Issue 1.21) 7988 17 Changed directory schema attributes from REQUIRED to 7989 RECOMMENDED. Changed some of the OPTIONAL to 7990 RECOMMENDED to agree with the SLP template. Changed the 7991 "charset-supported" and "natural-language-supported" 7992 from REQUIRED to OPTIONAL. Recommended that the names 7993 be the same in a directory entry as the IPP attribute 7994 names. (Issue 1.53) 7996 Isaacson, Powell Expires May 16, 1999