idnits 2.17.1 draft-ietf-ipp-model-v11-07.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories -- however, there's a paragraph with a matching beginning. Boilerplate error? ** The document is more than 15 pages and seems to lack a Table of Contents. == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 204 longer pages, the longest (page 53) being 65 lines Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** The abstract seems to contain references ([RFC2568], [RFC2616], [RFC2569], [IPP-PRO], [IPP-IIG], [RFC2567]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 8 instances of lines with non-RFC2606-compliant FQDNs in the document. == There are 85 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 218 has weird spacing: '...(1setOf type2...' == Line 702 has weird spacing: '...any indicate...' == Line 939 has weird spacing: '... object which...' == Line 1528 has weird spacing: '...charset clien...' == Line 1689 has weird spacing: '...client to ide...' == (14 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. == 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: Expires November 22, 2000 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 (May 22, 2000) is 8732 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) -- Looks like a reference, but probably isn't: '52' on line 4061 -- Looks like a reference, but probably isn't: '56' on line 4061 == Unused Reference: 'BCP-11' is defined on line 7573, but no explicit reference was found in the text == Unused Reference: 'ISO10646-1' is defined on line 7605, but no explicit reference was found in the text == Unused Reference: 'PWG' is defined on line 7632, but no explicit reference was found in the text == Unused Reference: 'RFC2277' is defined on line 7695, but no explicit reference was found in the text -- Possible downref: Non-RFC (?) normative reference: ref. 'ASCII' ** Obsolete normative reference: RFC 2028 (ref. 'BCP-11') (Obsoleted by RFC 9281) -- 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' == Outdated reference: A later version (-02) exists of draft-ietf-ipp-implementers-guide-v11-00 ** Downref: Normative reference to an Informational draft: draft-ietf-ipp-implementers-guide-v11 (ref. 'IPP-IIG') == Outdated reference: A later version (-06) exists of draft-ietf-ipp-protocol-v11-05 -- 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) ** Downref: Normative reference to an Informational RFC: RFC 1951 ** Downref: Normative reference to an Informational RFC: RFC 1952 ** Downref: Normative reference to an Informational RFC: RFC 1977 ** Obsolete normative reference: RFC 2048 (Obsoleted by RFC 4288, RFC 4289) ** Obsolete normative reference: RFC 2246 (Obsoleted by RFC 4346) ** 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) ** Obsolete normative reference: RFC 2565 (Obsoleted by RFC 2910) ** Obsolete normative reference: RFC 2566 (Obsoleted by RFC 2911) ** Downref: Normative reference to an Experimental RFC: RFC 2567 ** Downref: Normative reference to an Experimental RFC: RFC 2568 ** Downref: Normative reference to an Experimental RFC: RFC 2569 ** Obsolete normative reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) ** Obsolete normative reference: RFC 2617 (Obsoleted by RFC 7235, RFC 7615, RFC 7616, RFC 7617) -- Possible downref: Non-RFC (?) normative reference: ref. 'SSL' -- Possible downref: Non-RFC (?) normative reference: ref. 'SWP' Summary: 27 errors (**), 0 flaws (~~), 20 warnings (==), 18 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 INTERNET-DRAFT 2 draft-ietf-ipp-model-v11-07.txt 3 R. deBry 4 Utah Valley State College 5 T. Hastings (editor) 6 Xerox Corporation 7 R. Herriot 8 Xerox Corporation 9 S. Isaacson 10 Novell, Inc. 11 P. Powell 12 Astart Technologies 13 May 22, 2000 15 Internet Printing Protocol/1.1: Model and Semantics 17 Copyright (C) The Internet Society (2000). All Rights Reserved. 19 Status of this Memo 21 This document is an Internet-Draft and is in full conformance with all 22 provisions of Section 10 of [RFC2026]. Internet-Drafts are working 23 documents of the Internet Engineering Task Force (IETF), its areas, and 24 its working groups. Note that other groups may also distribute working 25 documents as Internet-Drafts. 27 Internet-Drafts are draft documents valid for a maximum of six months 28 and may be updated, replaced, or obsoleted by other documents at any 29 time. It is inappropriate to use Internet-Drafts as reference material 30 or to cite them other than as "work in progress". 32 The list of current Internet-Drafts can be accessed at 33 http://www.ietf.org/ietf/1id-abstracts.txt 35 The list of Internet-Draft Shadow Directories can be accessed as 36 http://www.ietf.org/shadow.html. 38 Abstract 40 This document is one of a set of documents, which together describe all 41 aspects of a new Internet Printing Protocol (IPP). IPP is an 42 application level protocol that can be used for distributed printing 43 using Internet tools and technologies. This document describes a 44 simplified model consisting of abstract objects, their attributes, and 45 their operations that is independent of encoding and transport. The 46 model consists of a Printer and a Job object. A Job optionally supports 47 multiple documents. IPP 1.1 semantics allow end-users and operators to 48 query printer capabilities, submit print jobs, inquire about the status 49 of print jobs and printers, cancel, hold, release, and restart print 50 jobs. IPP 1.1 semantics allow operators to pause, resume, and purge 51 (jobs from) Printer objects. This document also addresses security, 52 internationalization, and directory issues. 54 Expires November 22, 2000 55 The full set of IPP documents includes: 56 Design Goals for an Internet Printing Protocol [RFC2567] 57 Rationale for the Structure and Model and Protocol for the Internet 58 Printing Protocol [RFC2568] 59 Internet Printing Protocol/1.1: Model and Semantics (this document) 60 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 61 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 62 Mapping between LPD and IPP Protocols [RFC2569] 64 The "Design Goals for an Internet Printing Protocol" document takes a 65 broad look at distributed printing functionality, and it enumerates 66 real-life scenarios that help to clarify the features that need to be 67 included in a printing protocol for the Internet. It identifies 68 requirements for three types of users: end users, operators, and 69 administrators. It calls out a subset of end user requirements that are 70 satisfied in IPP/1.0. A few OPTIONAL operator operations have been 71 added to IPP/1.1. 73 The "Rationale for the Structure and Model and Protocol for the Internet 74 Printing Protocol" document describes IPP from a high level view, 75 defines a roadmap for the various documents that form the suite of IPP 76 specification documents, and gives background and rationale for the IETF 77 working group's major decisions. 79 The "Internet Printing Protocol/1.1: Encoding and Transport" document is 80 a formal mapping of the abstract operations and attributes defined in 81 the model document onto HTTP/1.1 [RFC2616]. It defines the encoding 82 rules for a new Internet MIME media type called "application/ipp". This 83 document also defines the rules for transporting over HTTP a message 84 body whose Content-Type is "application/ipp". This document defines a 85 new scheme named 'ipp' for identifying IPP printers and jobs. 87 The "Internet Printing Protocol/1.1: Implementer's Guide" document gives 88 insight and advice to implementers of IPP clients and IPP objects. It 89 is intended to help them understand IPP/1.1 and some of the 90 considerations that may assist them in the design of their client and/or 91 IPP object implementations. For example, a typical order of processing 92 requests is given, including error checking. Motivation for some of the 93 specification decisions is also included. 95 The "Mapping between LPD and IPP Protocols" document gives some advice 96 to implementers of gateways between IPP and LPD (Line Printer Daemon) 97 implementations. 99 Expires November 22, 2000 100 Table of Contents 102 1. Introduction 9 103 1.1 Simplified Printing Model 10 105 2. IPP Objects 12 106 2.1 Printer Object 13 107 2.2 Job Object 15 108 2.3 Object Relationships 16 109 2.4 Object Identity 17 111 3. IPP Operations 19 112 3.1 Common Semantics 20 113 3.1.1 Required Parameters 20 114 3.1.2 Operation IDs and Request IDs 21 115 3.1.3 Attributes 21 116 3.1.4 Character Set and Natural Language Operation Attributes 23 117 3.1.4.1 Request Operation Attributes 24 118 3.1.4.2 Response Operation Attributes 27 119 3.1.5 Operation Targets 28 120 3.1.6 Operation Response Status Codes and Status Messages 29 121 3.1.6.1 "status-code" (type2 enum) 29 122 3.1.6.2 "status-message" (text(255)) 30 123 3.1.6.3 "detailed-status-message" (text(MAX)) 31 124 3.1.6.4 "document-access-error" (text(MAX)) 31 125 3.1.7 Unsupported Attributes 31 126 3.1.8 Versions 33 127 3.1.9 Job Creation Operations 35 128 3.2 Printer Operations 37 129 3.2.1 Print-Job Operation 37 130 3.2.1.1 Print-Job Request 37 131 3.2.1.2 Print-Job Response 41 132 3.2.2 Print-URI Operation 43 133 3.2.3 Validate-Job Operation 44 134 3.2.4 Create-Job Operation 45 135 3.2.5 Get-Printer-Attributes Operation 45 136 3.2.5.1 Get-Printer-Attributes Request 46 137 3.2.5.2 Get-Printer-Attributes Response 48 138 3.2.6 Get-Jobs Operation 49 139 3.2.6.1 Get-Jobs Request 49 140 3.2.6.2 Get-Jobs Response 50 141 3.2.7 Pause-Printer Operation 52 142 3.2.7.1 Pause-Printer Request 53 143 3.2.7.2 Pause-Printer Response 53 144 3.2.8 Resume-Printer Operation 54 145 3.2.9 Purge-Jobs Operation 55 146 3.3 Job Operations 55 147 3.3.1 Send-Document Operation 55 148 3.3.1.1 Send-Document Request 57 149 3.3.1.2 Send-Document Response 58 150 3.3.2 Send-URI Operation 58 151 3.3.3 Cancel-Job Operation 59 152 3.3.3.1 Cancel-Job Request 60 154 Expires November 22, 2000 155 3.3.3.2 Cancel-Job Response 60 156 3.3.4 Get-Job-Attributes Operation 61 157 3.3.4.1 Get-Job-Attributes Request 62 158 3.3.4.2 Get-Job-Attributes Response 62 159 3.3.5 Hold-Job Operation 63 160 3.3.5.1 Hold-Job Request 64 161 3.3.5.2 Hold-Job Response 65 162 3.3.6 Release-Job Operation 65 163 3.3.7 Restart-Job Operation 66 164 3.3.7.1 Restart-Job Request 67 165 3.3.7.2 Restart-Job Response 68 167 4. Object Attributes 68 168 4.1 Attribute Syntaxes 69 169 4.1.1 'text' 70 170 4.1.1.1 'textWithoutLanguage' 70 171 4.1.1.2 'textWithLanguage' 71 172 4.1.2 'name' 71 173 4.1.2.1 'nameWithoutLanguage' 72 174 4.1.2.2 'nameWithLanguage' 72 175 4.1.2.3 Matching 'name' attribute values 73 176 4.1.3 'keyword' 74 177 4.1.4 'enum' 74 178 4.1.5 'uri' 75 179 4.1.6 'uriScheme' 75 180 4.1.7 'charset' 76 181 4.1.8 'naturalLanguage' 76 182 4.1.9 'mimeMediaType' 77 183 4.1.9.1 Application/octet-stream -- Auto-Sensing the document 184 format 77 185 4.1.10 'octetString' 78 186 4.1.11 'boolean' 78 187 4.1.12 'integer' 78 188 4.1.13 'rangeOfInteger' 79 189 4.1.14 'dateTime' 79 190 4.1.15 'resolution' 79 191 4.1.16 '1setOf X' 79 192 4.2 Job Template Attributes 80 193 4.2.1 job-priority (integer(1:100)) 83 194 4.2.2 job-hold-until (type3 keyword | name (MAX)) 84 195 4.2.3 job-sheets (type3 keyword | name(MAX)) 84 196 4.2.4 multiple-document-handling (type2 keyword) 85 197 4.2.5 copies (integer(1:MAX)) 86 198 4.2.6 finishings (1setOf type2 enum) 86 199 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 88 200 4.2.8 sides (type2 keyword) 89 201 4.2.9 number-up (integer(1:MAX)) 90 202 4.2.10 orientation-requested (type2 enum) 90 203 4.2.11 media (type3 keyword | name(MAX)) 92 204 4.2.12 printer-resolution (resolution) 92 205 4.2.13 print-quality (type2 enum) 92 206 4.3 Job Description Attributes 93 207 4.3.1 job-uri (uri) 95 208 4.3.2 job-id (integer(1:MAX)) 95 210 Expires November 22, 2000 211 4.3.3 job-printer-uri (uri) 95 212 4.3.4 job-more-info (uri) 96 213 4.3.5 job-name (name(MAX)) 96 214 4.3.6 job-originating-user-name (name(MAX)) 96 215 4.3.7 job-state (type1 enum) 96 216 4.3.7.1 Forwarding Servers 99 217 4.3.7.2 Partitioning of Job States 99 218 4.3.8 job-state-reasons (1setOf type2 keyword) 100 219 4.3.9 job-state-message (text(MAX)) 104 220 4.3.10 job-detailed-status-messages (1setOf text(MAX)) 104 221 4.3.11 job-document-access-errors (1setOf text(MAX)) 104 222 4.3.12 number-of-documents (integer(0:MAX)) 104 223 4.3.13 output-device-assigned (name(127)) 105 224 4.3.14 Event Time Job Description Attributes 105 225 4.3.14.1 time-at-creation (integer(MIN:MAX)) 106 226 4.3.14.2 time-at-processing (integer(MIN:MAX)) 106 227 4.3.14.3 time-at-completed (integer(MIN:MAX)) 106 228 4.3.14.4 job-printer-up-time (integer(1:MAX)) 106 229 4.3.14.5 date-time-at-creation (dateTime) 106 230 4.3.14.6 date-time-at-processing (dateTime) 107 231 4.3.14.7 date-time-at-completed (dateTime) 107 232 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 107 233 4.3.16 job-message-from-operator (text(127)) 107 234 4.3.17 Job Size Attributes 107 235 4.3.17.1 job-k-octets (integer(0:MAX)) 107 236 4.3.17.2 job-impressions (integer(0:MAX)) 108 237 4.3.17.3 job-media-sheets (integer(0:MAX)) 108 238 4.3.18 Job Progress Attributes 108 239 4.3.18.1 job-k-octets-processed (integer(0:MAX)) 109 240 4.3.18.2 job-impressions-completed (integer(0:MAX)) 109 241 4.3.18.3 job-media-sheets-completed (integer(0:MAX)) 109 242 4.3.19 attributes-charset (charset) 109 243 4.3.20 attributes-natural-language (naturalLanguage) 110 244 4.4 Printer Description Attributes 110 245 4.4.1 printer-uri-supported (1setOf uri) 112 246 4.4.2 uri-authentication-supported (1setOf type2 keyword) 112 247 4.4.3 uri-security-supported (1setOf type2 keyword) 113 248 4.4.4 printer-name (name(127)) 115 249 4.4.5 printer-location (text(127)) 115 250 4.4.6 printer-info (text(127)) 115 251 4.4.7 printer-more-info (uri) 115 252 4.4.8 printer-driver-installer (uri) 115 253 4.4.9 printer-make-and-model (text(127)) 115 254 4.4.10 printer-more-info-manufacturer (uri) 116 255 4.4.11 printer-state (type1 enum) 116 256 4.4.12 printer-state-reasons (1setOf type2 keyword) 116 257 4.4.13 printer-state-message (text(MAX)) 119 258 4.4.14 ipp-versions-supported (1setOf type2 keyword) 119 259 4.4.15 operations-supported (1setOf type2 enum) 119 260 4.4.16 multiple-document-jobs-supported (boolean) 120 261 4.4.17 charset-configured (charset) 120 262 4.4.18 charset-supported (1setOf charset) 121 263 4.4.19 natural-language-configured (naturalLanguage) 121 265 Expires November 22, 2000 266 4.4.20 generated-natural-language-supported (1setOf naturalLanguage) 267 121 268 4.4.21 document-format-default (mimeMediaType) 122 269 4.4.22 document-format-supported (1setOf mimeMediaType) 122 270 4.4.23 printer-is-accepting-jobs (boolean) 122 271 4.4.24 queued-job-count (integer(0:MAX)) 122 272 4.4.25 printer-message-from-operator (text(127)) 122 273 4.4.26 color-supported (boolean) 122 274 4.4.27 reference-uri-schemes-supported (1setOf uriScheme) 123 275 4.4.28 pdl-override-supported (type2 keyword) 123 276 4.4.29 printer-up-time (integer(1:MAX)) 123 277 4.4.30 printer-current-time (dateTime) 124 278 4.4.31 multiple-operation-time-out (integer(1:MAX)) 124 279 4.4.32 compression-supported (1setOf type3 keyword) 125 280 4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX)) 125 281 4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)) 125 282 4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX)) 125 283 4.4.36 pages-per-minute (integer(0:MAX)) 126 284 4.4.37 pages-per-minute-color (integer(0:MAX)) 126 286 5. Conformance 126 287 5.1 Client Conformance Requirements 127 288 5.2 IPP Object Conformance Requirements 128 289 5.2.1 Objects 128 290 5.2.2 Operations 128 291 5.2.3 IPP Object Attributes 129 292 5.2.4 Versions 129 293 5.2.5 Extensions 130 294 5.2.6 Attribute Syntaxes 130 295 5.2.7 Security 130 296 5.3 Charset and Natural Language Requirements 131 298 6. IANA Considerations 131 299 6.1 Typed 'keyword' and 'enum' Extensions 132 300 6.2 Attribute Extensibility 134 301 6.3 Attribute Syntax Extensibility 134 302 6.4 Operation Extensibility 135 303 6.5 Attribute Group Extensibility 135 304 6.6 Status Code Extensibility 135 305 6.7 Out-of-band Attribute Value Extensibility 136 306 6.8 Registration of MIME types/sub-types for document-formats 136 307 6.9 Registration of charsets for use in 'charset' attribute values 308 136 310 7. Internationalization Considerations 137 312 8. Security Considerations 140 313 8.1 Security Scenarios 141 314 8.1.1 Client and Server in the Same Security Domain 141 315 8.1.2 Client and Server in Different Security Domains 141 316 8.1.3 Print by Reference 141 317 8.2 URIs in Operation, Job, and Printer attributes 141 318 8.3 URIs for each authentication mechanisms 142 319 8.4 Restricted Queries 143 321 Expires November 22, 2000 322 8.5 Operations performed by operators and system administrators 143 323 8.6 Queries on jobs submitted using non-IPP protocols 143 325 9. References 144 327 10. Author's Address 147 329 11. Formats for IPP Registration Proposals 151 330 11.1 Type2 keyword attribute values registration 151 331 11.2 Type3 keyword attribute values registration 151 332 11.3 Type2 enum attribute values registration 151 333 11.4 Type3 enum attribute values registration 152 334 11.5 Attribute registration 152 335 11.6 Attribute Syntax registration 153 336 11.7 Operation registration 153 337 11.8 Attribute Group registration 153 338 11.9 Status code registration 154 339 11.10 Out-of-band Attribute Value registration 154 341 12. APPENDIX A: Terminology 154 342 12.1 Conformance Terminology 154 343 12.1.1 NEED NOT 154 344 12.2 Model Terminology 155 345 12.2.1 Keyword 155 346 12.2.2 Attributes 155 347 12.2.2.1 Attribute Name 155 348 12.2.2.2 Attribute Group Name 155 349 12.2.2.3 Attribute Value 155 350 12.2.2.4 Attribute Syntax 156 351 12.2.3 Supports 156 352 12.2.4 print-stream page 158 353 12.2.5 impression 158 355 13. APPENDIX B: Status Codes and Suggested Status Code Messages 158 356 13.1 Status Codes 159 357 13.1.1 Informational 159 358 13.1.2 Successful Status Codes 159 359 13.1.2.1 successful-ok (0x0000) 159 360 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) 361 159 362 13.1.2.3 successful-ok-conflicting-attributes (0x0002) 160 363 13.1.3 Redirection Status Codes 160 364 13.1.4 Client Error Status Codes 160 365 13.1.4.1 client-error-bad-request (0x0400) 160 366 13.1.4.2 client-error-forbidden (0x0401) 160 367 13.1.4.3 client-error-not-authenticated (0x0402) 161 368 13.1.4.4 client-error-not-authorized (0x0403) 161 369 13.1.4.5 client-error-not-possible (0x0404) 161 370 13.1.4.6 client-error-timeout (0x0405) 161 371 13.1.4.7 client-error-not-found (0x0406) 161 372 13.1.4.8 client-error-gone (0x0407) 162 373 13.1.4.9 client-error-request-entity-too-large (0x0408) 162 374 13.1.4.10 client-error-request-value-too-long (0x0409) 162 375 13.1.4.11 client-error-document-format-not-supported (0x040A) 163 377 Expires November 22, 2000 378 13.1.4.12 client-error-attributes-or-values-not-supported (0x040B) 379 163 380 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) 163 381 13.1.4.14 client-error-charset-not-supported (0x040D) 163 382 13.1.4.15 client-error-conflicting-attributes (0x040E) 164 383 13.1.4.16 client-error-compression-not-supported (0x040F) 164 384 13.1.4.17 client-error-compression-error (0x0410) 164 385 13.1.4.18 client-error-document-format-error (0x0411) 164 386 13.1.4.19 client-error-document-access-error (0x0412) 164 387 13.1.5 Server Error Status Codes 165 388 13.1.5.1 server-error-internal-error (0x0500) 165 389 13.1.5.2 server-error-operation-not-supported (0x0501) 165 390 13.1.5.3 server-error-service-unavailable (0x0502) 165 391 13.1.5.4 server-error-version-not-supported (0x0503) 165 392 13.1.5.5 server-error-device-error (0x0504) 166 393 13.1.5.6 server-error-temporary-error (0x0505) 166 394 13.1.5.7 server-error-not-accepting-jobs (0x0506) 166 395 13.1.5.8 server-error-busy (0x0507) 166 396 13.1.5.9 server-error-job-canceled (0x0508) 167 397 13.1.5.10 server-error-multiple-document-jobs-not-supported (0x0509) 398 167 399 13.2 Status Codes for IPP Operations 168 401 14. APPENDIX C: "media" keyword values 170 403 15. APPENDIX D: Processing IPP Attributes 191 404 15.1 Fidelity 191 405 15.2 Page Description Language (PDL) Override 192 406 15.3 Using Job Template Attributes During Document Processing. 194 408 16. APPENDIX E: Generic Directory Schema 195 410 17. APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and 411 Semantics" Documents 198 413 18. Full Copyright Statement 204 415 Expires November 22, 2000 416 1. Introduction 418 The Internet Printing Protocol (IPP) is an application level protocol 419 that can be used for distributed printing using Internet tools and 420 technologies. IPP version 1.1 (IPP/1.1) focuses primarily on end user 421 functionality with a few administrative operations included. This 422 document is just one of a suite of documents that fully define IPP. The 423 full set of IPP documents includes: 425 Design Goals for an Internet Printing Protocol [RFC2567] 426 Rationale for the Structure and Model and Protocol for the Internet 427 Printing Protocol [RFC2568] 428 Internet Printing Protocol/1.1: Model and Semantics (this document) 429 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 430 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 431 Mapping between LPD and IPP Protocols [RFC2569] 433 Anyone reading these documents for the first time is strongly encouraged 434 to read the IPP documents in the above order. 436 This document is laid out as follows: 438 - The rest of Section 1 is an introduction to the IPP simplified 439 model for distributed printing. 440 - Section 2 introduces the object types covered in the model with 441 their basic behaviors, attributes, and interactions. 442 - Section 3 defines the operations included in IPP/1.1. IPP 443 operations are synchronous, therefore, for each operation, there is 444 a both request and a response. 445 - Section 4 defines the attributes (and their syntaxes) that are used 446 in the model. 447 - Sections 5 - 6 summarizes the implementation conformance 448 requirements for objects that support the protocol and IANA 449 considerations, respectively. 450 - Sections 7 - 11 cover the Internationalization and Security 451 considerations as well as References, Author contact information, 452 and Formats for Registration Proposals. 453 - Sections 12 - 14 are appendices that cover Terminology, Status 454 Codes and Messages, and "media" keyword values. 456 Note: This document uses terms such as "attributes", 457 "keywords", and "support". These terms have special meaning 458 and are defined in the model terminology section 12.2. 459 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, 460 SHOULD NOT, MAY, NEED NOT, and OPTIONAL, have special meaning 461 relating to conformance. These terms are defined in section 462 12.1 on conformance terminology, most of which is taken from 463 RFC 2119 [RFC2119]. 465 - Section 15 is an appendix that helps to clarify the effects of 466 interactions between related attributes and their values. 467 - Section 16 is an appendix that enumerates the subset of Printer 468 attributes that form a generic directory schema. These attributes 469 are useful when registering a Printer so that a client can find the 470 Printer not just by name, but by filtered searches as well. 472 Expires November 22, 2000 474 - Section 17 is an appendix summarizing the additions and changes 475 from the IPP/1.0 "Model and Semantics" document [RFC2566] to make 476 this IPP/1.1 document. 477 - Section 18 is the full copyright notice. 479 1.1 Simplified Printing Model 481 In order to achieve its goal of realizing a workable printing protocol 482 for the Internet, the Internet Printing Protocol (IPP) is based on a 483 simplified printing model that abstracts the many components of real 484 world printing solutions. The Internet is a distributed computing 485 environment where requesters of print services (clients, applications, 486 printer drivers, etc.) cooperate and interact with print service 487 providers. This model and semantics document describes a simple, 488 abstract model for IPP even though the underlying configurations may be 489 complex "n-tier" client/server systems. An important simplifying step 490 in the IPP model is to expose only the key objects and interfaces 491 required for printing. The model described in this model document does 492 not include features, interfaces, and relationships that are beyond the 493 scope of the first version of IPP (IPP/1.1). IPP/1.1 incorporates many 494 of the relevant ideas and lessons learned from other specification and 495 development efforts [HTPP] [ISO10175] [LDPA] [P1387.4] [PSIS] [RFC1179] 496 [SWP]. IPP is heavily influenced by the printing model introduced in 497 the Document Printing Application (DPA) [ISO10175] standard. Although 498 DPA specifies both end user and administrative features, IPP version 1.1 499 (IPP/1.1) focuses primarily on end user functionality with a few 500 additional OPTIONAL operator operations. 502 The IPP/1.1 model encapsulates the important components of distributed 503 printing into two object types: 505 - Printer (Section 2.1) 506 - Job (Section 2.2) 508 Each object type has an associated set of operations (see section 3) and 509 attributes (see section 4). 511 It is important, however, to understand that in real system 512 implementations (which lie underneath the abstracted IPP/1.1 model), 513 there are other components of a print service which are not explicitly 514 defined in the IPP/1.1 model. The following figure illustrates where 515 IPP/1.1 fits with respect to these other components. 517 Expires November 22, 2000 518 +--------------+ 519 | Application | 520 o +. . . . . . . | 521 \|/ | Spooler | 522 / \ +. . . . . . . | +---------+ 523 End-User | Print Driver |---| File | 524 +-----------+ +-----+ +------+-------+ +----+----+ 525 | Browser | | GUI | | | 526 +-----+-----+ +--+--+ | | 527 | | | | 528 | +---+------------+---+ | 529 N D S | | IPP Client |------------+ 530 O I E | +---------+----------+ 531 T R C | | 532 I E U | 533 F C R -------------- Transport ------------------ 534 I T I 535 C O T | --+ 536 A R Y +--------+--------+ | 537 T Y | IPP Server | | 538 I +--------+--------+ | 539 O | | 540 N +-----------------+ | IPP Printer 541 | Print Service | | 542 +-----------------+ | 543 | --+ 544 +-----------------+ 545 | Output Device(s)| 546 +-----------------+ 548 An IPP Printer object encapsulates the functions normally associated 549 with physical output devices along with the spooling, scheduling and 550 multiple device management functions often associated with a print 551 server. Printer objects are optionally registered as entries in a 552 directory where end users find and select them based on some sort of 553 filtered and context based searching mechanism (see section 16). The 554 directory is used to store relatively static information about the 555 Printer, allowing end users to search for and find Printers that match 556 their search criteria, for example: name, context, printer capabilities, 557 etc. The more dynamic information, such as state, currently loaded and 558 ready media, number of jobs at the Printer, errors, warnings, and so 559 forth, is directly associated with the Printer object itself rather than 560 with the entry in the directory which only represents the Printer 561 object. 563 IPP clients implement the IPP protocol on the client side and give end 564 users (or programs running on behalf of end users) the ability to query 565 Printer objects and submit and manage print jobs. An IPP server is just 566 that part of the Printer object that implements the server-side 567 protocol. The rest of the Printer object implements (or gateways into) 568 the application semantics of the print service itself. The Printer 570 Expires November 22, 2000 571 objects may be embedded in an output device or may be implemented on a 572 host on the network that communicates with an output device. 574 When a job is submitted to the Printer object and the Printer object 575 validates the attributes in the submission request, the Printer object 576 creates a new Job object. The end user then interacts with this new Job 577 object to query its status and monitor the progress of the job. An end 578 user can also cancel their print jobs by using the Job object's Cancel- 579 Job operation. An end-user can also hold, release, and restart their 580 print jobs using the Job object's OPTIONAL Hold-Job, Release-Job, and 581 Restart-Job operations, if implemented. 583 A privileged operator or administrator of a Printer object can cancel, 584 hold, release, and restart any user's job using the REQUIRED Cancel-Job 585 and the OPTIONAL Hold-Job, Release-Job, and Restart-Job operations. In 586 additional privileged operator or administrator of a Printer object can 587 pause, resume, or purge (jobs from) a Printer object using the OPTIONAL 588 Pause-Printer, Resume-Printer, and Purge-Jobs operations, if 589 implemented. 591 The notification service is out of scope for this IPP/1.1 document, but 592 using such a notification service, the end user is able to register for 593 and receive Printer specific and Job specific events. An end user can 594 query the status of Printer objects and can follow the progress of Job 595 objects by polling using the Get-Printer-Attributes, Get-Jobs, and Get- 596 Job-Attributes operations. 598 2. IPP Objects 600 The IPP/1.1 model introduces objects of type Printer and Job. Each type 601 of object models relevant aspects of a real-world entity such as a real 602 printer or real print job. Each object type is defined as a set of 603 possible attributes that may be supported by instances of that object 604 type. For each object (instance), the actual set of supported 605 attributes and values describe a specific implementation. The object's 606 attributes and values describe its state, capabilities, realizable 607 features, job processing functions, and default behaviors and 608 characteristics. For example, the Printer object type is defined as a 609 set of attributes that each Printer object potentially supports. In the 610 same manner, the Job object type is defined as a set of attributes that 611 are potentially supported by each Job object. 613 Each attribute included in the set of attributes defining an object type 614 is labeled as: 616 - "REQUIRED": each object MUST support the attribute. 617 - "RECOMMENDED": each object SHOULD support the attribute. 618 - "OPTIONAL": each object MAY support the attribute. 620 Some definitions of attribute values indicate that an object MUST or 621 SHOULD support the value; otherwise, support of the value is OPTIONAL. 623 Expires November 22, 2000 624 However, if an implementation supports an attribute, it MUST support at 625 least one of the possible values for that attribute. 627 2.1 Printer Object 629 The major component of the IPP/1.1 model is the Printer object. A 630 Printer object implements the server-side of the IPP/1.1 protocol. 631 Using the protocol, end users may query the attributes of the Printer 632 object and submit print jobs to the Printer object. The actual 633 implementation components behind the Printer abstraction may take on 634 different forms and different configurations. However, the model 635 abstraction allows the details of the configuration of real components 636 to remain opaque to the end user. Section 3 describes each of the 637 Printer operations in detail. 639 The capabilities and state of a Printer object are described by its 640 attributes. Printer attributes are divided into two groups: 642 - "job-template" attributes: These attributes describe supported job 643 processing capabilities and defaults for the Printer object. (See 644 section 4.2) 645 - "printer-description" attributes: These attributes describe the 646 Printer object's identification, state, location, references to 647 other sources of information about the Printer object, etc. (see 648 section 4.4) 650 Since a Printer object is an abstraction of a generic document output 651 device and print service provider, a Printer object could be used to 652 represent any real or virtual device with semantics consistent with the 653 Printer object, such as a fax device, an imager, or even a CD writer. 655 Some examples of configurations supporting a Printer object include: 657 1) An output device with no spooling capabilities 658 2) An output device with a built-in spooler 659 3) A print server supporting IPP with one or more associated output 660 devices 661 3a) The associated output devices may or may not be capable of 662 spooling jobs 663 3b) The associated output devices may or may not support IPP 665 The following figures show some examples of how Printer objects can be 666 realized on top of various distributed printing configurations. The 667 embedded case below represents configurations 1 and 2. The hosted and 668 fan-out figures below represent configurations 3a and 3b. 670 In this document the term "client" refers to a software entity that 671 sends IPP operation requests to an IPP Printer object and accepts IPP 672 operation responses. A client MAY be: 674 1. contained within software controlled by an end user, e.g. activated 675 by the "Print" menu item in an application or 677 Expires November 22, 2000 679 2. the print server component that sends IPP requests to either an 680 output device or another "downstream" print server. 682 The term "IPP Printer" is a network entity that accepts IPP operation 683 requests and returns IPP operation responses. As such, an IPP object 684 MAY be: 686 1. an (embedded) device component that accepts IPP requests and 687 controls the device or 689 2. a component of a print server that accepts IPP requests (where the 690 print server controls one or more networked devices using IPP or 691 other protocols). 693 Expires November 22, 2000 695 Legend: 697 ##### indicates a Printer object which is 698 either embedded in an output device or is 699 hosted in a server. The Printer object 700 might or might not be capable of queuing/spooling. 702 any indicates any network protocol or direct 703 connect, including IPP 705 embedded printer: 706 output device 707 +---------------+ 708 O +--------+ | ########### | 709 /|\ | client |------------IPP------------># Printer # | 710 / \ +--------+ | # Object # | 711 | ########### | 712 +---------------+ 714 hosted printer: 715 +---------------+ 716 O +--------+ ########### | | 717 /|\ | client |--IPP--># Printer #-any->| output device | 718 / \ +--------+ # Object # | | 719 ########### +---------------+ 721 +---------------+ 722 fan out: | | 723 +-->| output device | 724 any/ | | 725 O +--------+ ########### / +---------------+ 726 /|\ | client |-IPP-># Printer #--* 727 / \ +--------+ # Object # \ +---------------+ 728 ########### any\ | | 729 +-->| output device | 730 | | 731 +---------------+ 733 2.2 Job Object 735 A Job object is used to model a print job. A Job object contains 736 documents. The information required to create a Job object is sent in a 737 create request from the end user via an IPP Client to the Printer 738 object. The Printer object validates the create request, and if the 739 Printer object accepts the request, the Printer object creates the new 740 Job object. Section 3 describes each of the Job operations in detail. 742 Expires November 22, 2000 743 The characteristics and state of a Job object are described by its 744 attributes. Job attributes are grouped into two groups as follows: 746 - "job-template" attributes: These attributes can be supplied by the 747 client or end user and include job processing instructions which 748 are intended to override any Printer object defaults and/or 749 instructions embedded within the document data. (See section 4.2) 750 - "job-description" attributes: These attributes describe the Job 751 object's identification, state, size, etc. The client supplies some 752 of these attributes, and the Printer object generates others. (See 753 section 4.3) 755 An implementation MUST support at least one document per Job object. An 756 implementation MAY support multiple documents per Job object. A 757 document is either: 759 - a stream of document data in a format supported by the Printer 760 object (typically a Page Description Language - PDL), or 761 - a reference to such a stream of document data 763 In IPP/1.1, a document is not modeled as an IPP object, therefore it has 764 no object identifier or associated attributes. All job processing 765 instructions are modeled as Job object attributes. These attributes are 766 called Job Template attributes and they apply equally to all documents 767 within a Job object. 769 2.3 Object Relationships 771 IPP objects have relationships that are maintained persistently along 772 with the persistent storage of the object attributes. 774 A Printer object can represent either one or more physical output 775 devices or a logical device which "processes" jobs but never actually 776 uses a physical output device to put marks on paper. Examples of 777 logical devices include a Web page publisher or a gateway into an online 778 document archive or repository. A Printer object contains zero or more 779 Job objects. 781 A Job object is contained by exactly one Printer object, however the 782 identical document data associated with a Job object could be sent to 783 either the same or a different Printer object. In this case, a second 784 Job object would be created which would be almost identical to the first 785 Job object, however it would have new (different) Job object identifiers 786 (see section 2.4). 788 A Job object is either empty (before any documents have been added) or 789 contains one or more documents. If the contained document is a stream 790 of document data, that stream can be contained in only one document. 791 However, there can be identical copies of the stream in other documents 792 in the same or different Job objects. If the contained document is just 793 a reference to a stream of document data, other documents (in the same 794 or different Job object(s)) may contain the same reference. 796 Expires November 22, 2000 797 2.4 Object Identity 799 All Printer and Job objects are identified by a Uniform Resource 800 Identifier (URI) [RFC2396] so that they can be persistently and 801 unambiguously referenced. Since every URL is a specialized form of a 802 URI, even though the more generic term URI is used throughout the rest 803 of this document, its usage is intended to cover the more specific 804 notion of URL as well. 806 An administrator configures Printer objects to either support or not 807 support authentication and/or message privacy using Transport Layer 808 Security (TLS) [RFC2246] (the mechanism for security configuration is 809 outside the scope of this IPP/1.1 document). In some situations, both 810 types of connections (both authenticated and unauthenticated) can be 811 established using a single communication channel that has some sort of 812 negotiation mechanism. In other situations, multiple communication 813 channels are used, one for each type of security configuration. Section 814 8 provides a full description of all security considerations and 815 configurations. 817 If a Printer object supports more than one communication channel, some 818 or all of those channels might support and/or require different security 819 mechanisms. In such cases, an administrator could expose the 820 simultaneous support for these multiple communication channels as 821 multiple URIs for a single Printer object where each URI represents one 822 of the communication channels to the Printer object. To support this 823 flexibility, the IPP Printer object type defines a multi-valued 824 identification attribute called the "printer-uri-supported" attribute. 825 It MUST contain at least one URI. It MAY contain more than one URI. 826 That is, every Printer object will have at least one URI that identifies 827 at least one communication channel to the Printer object, but it may 828 have more than one URI where each URI identifies a different 829 communication channel to the Printer object. The "printer-uri- 830 supported" attribute has two companion attributes, the "uri-security- 831 supported" attribute and the "uri-authentication-supported". Both have 832 the same cardinality as "printer-uri-supported". The purpose of the 833 "uri-security-supported" attribute is to indicate the security 834 mechanisms (if any) used for each URI listed in "printer-uri-supported". 835 The purpose of the "uri-authentication-supported" attribute is to 836 indicate the authentication mechanisms (if any) used for each URI listed 837 in "printer-uri-supported". These three attributes are fully described 838 in sections 4.4.1, 4.4.2, and 4.4.3. 840 When a job is submitted to the Printer object via a create request, the 841 client supplies only a single Printer object URI. The client supplied 842 Printer object URI MUST be one of the values in the "printer-uri- 843 supported" Printer attribute. 845 IPP/1.1 does not specify how the client obtains the client supplied URI, 846 but it is RECOMMENDED that a Printer object be registered as an entry in 847 a directory service. End-users and programs can then interrogate the 848 directory searching for Printers. Section 16 defines a generic schema 849 for Printer object entries in the directory service and describes how 851 Expires November 22, 2000 852 the entry acts as a bridge to the actual IPP Printer object. The entry 853 in the directory that represents the IPP Printer object includes the 854 possibly many URIs for that Printer object as values in one its 855 attributes. 857 When a client submits a create request to the Printer object, the 858 Printer object validates the request and creates a new Job object. The 859 Printer object assigns the new Job object a URI which is stored in the 860 "job-uri" Job attribute. This URI is then used by clients as the target 861 for subsequent Job operations. The Printer object generates a Job URI 862 based on its configured security policy and the URI used by the client 863 in the create request. 865 For example, consider a Printer object that supports both a 866 communication channel secured by the use of SSL3 (using HTTP over SSL3 867 with an "https" schemed URI) and another open communication channel that 868 is not secured with SSL3 (using a simple "http" schemed URI). If a 869 client were to submit a job using the secure URI, the Printer object 870 would assign the new Job object a secure URI as well. If a client were 871 to submit a job using the open-channel URI, the Printer would assign the 872 new Job object an open-channel URI. 874 In addition, the Printer object also populates the Job object's "job- 875 printer-uri" attribute. This is a reference back to the Printer object 876 that created the Job object. If a client only has access to a Job 877 object's "job-uri" identifier, the client can query the Job's "job- 878 printer-uri" attribute in order to determine which Printer object 879 created the Job object. If the Printer object supports more than one 880 URI, the Printer object picks the one URI supplied by the client when 881 creating the job to build the value for and to populate the Job's "job- 882 printer-uri" attribute. 884 Allowing Job objects to have URIs allows for flexibility and 885 scalability. For example, in some implementations, the Printer object 886 might create Jobs that are processed in the same local environment as 887 the Printer object itself. In this case, the Job URI might just be a 888 composition of the Printer's URI and some unique component for the Job 889 object, such as the unique 32-bit positive integer mentioned later in 890 this paragraph. In other implementations, the Printer object might be a 891 central clearing-house for validating all Job object creation requests, 892 but the Job object itself might be created in some environment that is 893 remote from the Printer object. In this case, the Job object's URI may 894 have no physical-location relationship at all to the Printer object's 895 URI. Again, the fact that Job objects have URIs allows for flexibility 896 and scalability, however, many existing printing systems have local 897 models or interface constraints that force print jobs to be identified 898 using only a 32-bit positive integer rather than an independent URI. 899 This numeric Job ID is only unique within the context of the Printer 900 object to which the create request was originally submitted. Therefore, 901 in order to allow both types of client access to IPP Job objects (either 902 by Job URI or by numeric Job ID), when the Printer object successfully 903 processes a create request and creates a new Job object, the Printer 904 object MUST generate both a Job URI and a Job ID. The Job ID (stored in 905 the "job-id" attribute) only has meaning in the context of the Printer 907 Expires November 22, 2000 908 object to which the create request was originally submitted. This 909 requirement to support both Job URIs and Job IDs allows all types of 910 clients to access Printer objects and Job objects no matter the local 911 constraints imposed on the client implementation. 913 In addition to identifiers, Printer objects and Job objects have names 914 ("printer-name" and "job-name"). An object name NEED NOT be unique 915 across all instances of all objects. A Printer object's name is chosen 916 and set by an administrator through some mechanism outside the scope of 917 this IPP/1.1 document. A Job object's name is optionally chosen and 918 supplied by the IPP client submitting the job. If the client does not 919 supply a Job object name, the Printer object generates a name for the 920 new Job object. In all cases, the name only has local meaning. 922 To summarize: 924 - Each Printer object is identified with one or more URIs. The 925 Printer's "printer-uri-supported" attribute contains the URI(s). 926 - The Printer object's "uri-security-supported" attribute identifies 927 the communication channel security protocols that may or may not 928 have been configured for the various Printer object URIs (e.g., 929 'tls' or 'none'). 930 - The Printer object's "uri-authentication-supported" attribute 931 identifies the authentication mechanisms that may or may not have 932 been configured for the various Printer object URIs (e.g., 'digest' 933 or 'none'). 934 - Each Job object is identified with a Job URI. The Job's "job-uri" 935 attribute contains the URI. 936 - Each Job object is also identified with Job ID which is a 32-bit, 937 positive integer. The Job's "job-id" attribute contains the Job 938 ID. The Job ID is only unique within the context of the Printer 939 object which created the Job object. 940 - Each Job object has a "job-printer-uri" attribute which contains 941 the URI of the Printer object that was used to create the Job 942 object. This attribute is used to determine the Printer object 943 that created a Job object when given only the URI for the Job 944 object. This linkage is necessary to determine the languages, 945 charsets, and operations which are supported on that Job (the basis 946 for such support comes from the creating Printer object). 947 - Each Printer object has a name (which is not necessarily unique). 948 The administrator chooses and sets this name through some mechanism 949 outside the scope of this IPP/1.1 document. The Printer object's 950 "printer-name" attribute contains the name. 951 - Each Job object has a name (which is not necessarily unique). The 952 client optionally supplies this name in the create request. If the 953 client does not supply this name, the Printer object generates a 954 name for the Job object. The Job object's "job-name" attribute 955 contains the name. 957 3. IPP Operations 959 IPP objects support operations. An operation consists of a request and 960 a response. When a client communicates with an IPP object, the client 962 Expires November 22, 2000 963 issues an operation request to the URI for that object. Operation 964 requests and responses have parameters that identify the operation. 965 Operations also have attributes that affect the run-time characteristics 966 of the operation (the intended target, localization information, etc.). 967 These operation-specific attributes are called operation attributes (as 968 compared to object attributes such as Printer object attributes or Job 969 object attributes). Each request carries along with it any operation 970 attributes, object attributes, and/or document data required to perform 971 the operation. Each request requires a response from the object. Each 972 response indicates success or failure of the operation with a status 973 code as a response parameter. The response contains any operation 974 attributes, object attributes, and/or status messages generated during 975 the execution of the operation request. 977 This section describes the semantics of the IPP operations, both 978 requests and responses, in terms of the parameters, attributes, and 979 other data associated with each operation. 981 The IPP/1.1 Printer operations are: 983 Print-Job (section 3.2.1) 984 Print-URI (section 3.2.2) 985 Validate-Job (section 3.2.3) 986 Create-Job (section 3.2.4) 987 Get-Printer-Attributes (section 3.2.5) 988 Get-Jobs (section 3.2.6) 989 Pause-Printer (section 3.3.5) 990 Resume-Printer (section 3.3.6) 991 Purge-Jobs (section 3.3.7) 993 The Job operations are: 995 Send-Document (section 3.3.1) 996 Send-URI (section 3.3.2) 997 Cancel-Job (section 3.3.3) 998 Get-Job-Attributes (section 3.3.4) 999 Hold-Job (section 3.3.5) 1000 Release-Job (section 3.3.6) 1001 Restart-Job (section 3.3.7) 1003 The Send-Document and Send-URI Job operations are used to add a new 1004 document to an existing multi-document Job object created using the 1005 Create-Job operation. 1007 3.1 Common Semantics 1009 All IPP operations require some common parameters and operation 1010 attributes. These common elements and their semantic characteristics 1011 are defined and described in more detail in the following sections. 1013 3.1.1 Required Parameters 1015 Every operation request contains the following REQUIRED parameters: 1017 Expires November 22, 2000 1018 - a "version-number", 1019 - an "operation-id", 1020 - a "request-id", and 1021 - the attributes that are REQUIRED for that type of request. 1023 Every operation response contains the following REQUIRED parameters: 1025 - a "version-number", 1026 - a "status-code", 1027 - the "request-id" that was supplied in the corresponding request, 1028 and 1029 - the attributes that are REQUIRED for that type of response. 1031 The "Encoding and Transport" document [IPP-PRO] defines special rules 1032 for the encoding of these parameters. All other operation elements are 1033 represented using the more generic encoding rules for attributes and 1034 groups of attributes. 1036 3.1.2 Operation IDs and Request IDs 1038 Each IPP operation request includes an identifying "operation-id" value. 1039 Valid values are defined in the "operations-supported" Printer attribute 1040 section (see section 4.4.15). The client specifies which operation is 1041 being requested by supplying the correct "operation-id" value. 1043 In addition, every invocation of an operation is identified by a 1044 "request-id" value. For each request, the client chooses the "request- 1045 id" which MUST be an integer (possibly unique depending on client 1046 requirements) in the range from 1 to 2**31 - 1 (inclusive). This 1047 "request-id" allows clients to manage multiple outstanding requests. The 1048 receiving IPP object copies all 32-bits of the client-supplied "request- 1049 id" attribute into the response so that the client can match the 1050 response with the correct outstanding request, even if the "request-id" 1051 is out of range. If the request is terminated before the complete 1052 "request-id" is received, the IPP object rejects the request and returns 1053 a response with a "request-id" of 0. 1055 Note: In some cases, the transport protocol underneath IPP might be a 1056 connection oriented protocol that would make it impossible for a client 1057 to receive responses in any order other than the order in which the 1058 corresponding requests were sent. In such cases, the "request-id" 1059 attribute would not be essential for correct protocol operation. 1060 However, in other mappings, the operation responses can come back in any 1061 order. In these cases, the "request-id" would be essential. 1063 3.1.3 Attributes 1065 Operation requests and responses are both composed of groups of 1066 attributes and/or document data. The attributes groups are: 1068 - Operation Attributes: These attributes are passed in the operation 1069 and affect the IPP object's behavior while processing the operation 1070 request and may affect other attributes or groups of attributes. 1071 Some operation attributes describe the document data associated 1073 Expires November 22, 2000 1074 with the print job and are associated with new Job objects, however 1075 most operation attributes do not persist beyond the life of the 1076 operation. The description of each operation attribute includes 1077 conformance statements indicating which operation attributes are 1078 REQUIRED and which are OPTIONAL for an IPP object to support and 1079 which attributes a client MUST supply in a request and an IPP 1080 object MUST supply in a response. 1081 - Job Template Attributes: These attributes affect the processing of 1082 a job. A client OPTIONALLY supplies Job Template Attributes in a 1083 create request, and the receiving object MUST be prepared to 1084 receive all supported attributes. The Job object can later be 1085 queried to find out what Job Template attributes were originally 1086 requested in the create request, and such attributes are returned 1087 in the response as Job Object Attributes. The Printer object can 1088 be queried about its Job Template attributes to find out what type 1089 of job processing capabilities are supported and/or what the 1090 default job processing behaviors are, though such attributes are 1091 returned in the response as Printer Object Attributes. The "ipp- 1092 attribute-fidelity" operation attribute affects processing of all 1093 client-supplied Job Template attributes (see sections 3.2.1.2 and 1094 15 for a full description of "ipp-attribute-fidelity" and its 1095 relationship to other attributes). 1096 - Job Object Attributes: These attributes are returned in response to 1097 a query operation directed at a Job object. 1098 - Printer Object Attributes: These attributes are returned in 1099 response to a query operation directed at a Printer object. 1100 - Unsupported Attributes: In a create request, the client supplies a 1101 set of Operation and Job Template attributes. If any of these 1102 attributes or their values is unsupported by the Printer object, 1103 the Printer object returns the set of unsupported attributes in the 1104 response. Sections 3.1.7, 3.2.1.2, and 15 give a full description 1105 of how Job Template attributes supplied by the client in a create 1106 request are processed by the Printer object and how unsupported 1107 attributes are returned to the client. Because of extensibility, 1108 any IPP object might receive a request that contains new or unknown 1109 attributes or values for which it has no support. In such cases, 1110 the IPP object processes what it can and returns the unsupported 1111 attributes in the response. The Unsupported Attribute group is 1112 defined for all operation responses for returning unsupported 1113 attributes that the client supplied in the request. 1115 Later in this section, each operation is formally defined by identifying 1116 the allowed and expected groups of attributes for each request and 1117 response. The model identifies a specific order for each group in each 1118 request or response, but the attributes within each group may be in any 1119 order, unless specified otherwise. 1121 The attributes within a group MUST be unique; if an attribute with the 1122 same name occurs more than once, the group is mal-formed. Clients MUST 1123 NOT submit such malformed requests and Printers MUST NOT return such 1124 malformed responses. If such a malformed request is submitted to a 1125 Printer, the Printer MUST either (1) reject the request with the 1126 'client-error-bad-request' status code (see section 13.1.4.1) or (2) 1128 Expires November 22, 2000 1129 process the request normally after selecting only one of the attribute 1130 instances, depending on implementation. Which attribute is selected 1131 when there are duplicate attributes depends on implementation. The IPP 1132 Printer MUST NOT use the values from more than one such duplicate 1133 attribute instance. 1135 Each attribute definition includes the attribute's name followed by the 1136 name of its attribute syntax(es) in parenthesizes. In addition, each 1137 'integer' attribute is followed by the allowed range in parentheses, 1138 (m:n), for values of that attribute. Each 'text' or 'name' attribute is 1139 followed by the maximum size in octets in parentheses, (size), for 1140 values of that attribute. For more details on attribute syntax notation, 1141 see the descriptions of these attributes syntaxes in section 4.1. 1143 Note: Document data included in the operation is not strictly an 1144 attribute, but it is treated as a special attribute group for ordering 1145 purposes. The only operations that support supplying the document data 1146 within an operation request are Print-Job and Send-Document. There are 1147 no operation responses that include document data. 1149 Some operations are REQUIRED for IPP objects to support; the others are 1150 OPTIONAL (see section 5.2.2). Therefore, before using an OPTIONAL 1151 operation, a client SHOULD first use the REQUIRED Get-Printer-Attributes 1152 operation to query the Printer's "operations-supported" attribute in 1153 order to determine which OPTIONAL Printer and Job operations are 1154 actually supported. The client SHOULD NOT use an OPTIONAL operation 1155 that is not supported. When an IPP object receives a request to perform 1156 an operation it does not support, it returns the 'server-error- 1157 operation-not-supported' status code (see section 13.1.5.2). An IPP 1158 object is non-conformant if it does not support a REQUIRED operation. 1160 3.1.4 Character Set and Natural Language Operation Attributes 1162 Some Job and Printer attributes have values that are text strings and 1163 names intended for human understanding rather than machine understanding 1164 (see the 'text' and 'name' attribute syntax descriptions in section 1165 4.1). The following sections describe two special Operation Attributes 1166 called "attributes-charset" and "attributes-natural-language". These 1167 attributes are always part of the Operation Attributes group. For most 1168 attribute groups, the order of the attributes within the group is not 1169 important. However, for these two attributes within the Operation 1170 Attributes group, the order is critical. The "attributes-charset" 1171 attribute MUST be the first attribute in the group and the "attributes- 1172 natural-language" attribute MUST be the second attribute in the group. 1173 In other words, these attributes MUST be supplied in every IPP request 1174 and response, they MUST come first in the group, and MUST come in the 1175 specified order. For job creation operations, the IPP Printer 1176 implementation saves these two attributes with the new Job object as Job 1177 Description attributes. For the sake of brevity in this document, these 1178 operation attribute descriptions are not repeated with every operation 1179 request and response, but have a reference back to this section instead. 1181 Expires November 22, 2000 1182 3.1.4.1 Request Operation Attributes 1184 The client MUST supply and the Printer object MUST support the following 1185 REQUIRED operation attributes in every IPP/1.1 operation request: 1187 "attributes-charset" (charset): 1188 This operation attribute identifies the charset (coded character 1189 set and encoding method) used by any 'text' and 'name' attributes 1190 that the client is supplying in this request. It also identifies 1191 the charset that the Printer object MUST use (if supported) for all 1192 'text' and 'name' attributes and status messages that the Printer 1193 object returns in the response to this request. See Sections 4.1.1 1194 and 4.1.2 for the definition of the 'text' and 'name' attribute 1195 syntaxes. 1197 All clients and IPP objects MUST support the 'utf-8' charset 1198 [RFC2279] and MAY support additional charsets provided that they 1199 are registered with IANA [IANA-CS]. If the Printer object does not 1200 support the client supplied charset value, the Printer object MUST 1201 reject the request, set the "attributes-charset" to 'utf-8' in the 1202 response, and return the 'client-error-charset-not-supported' 1203 status code and any 'text' or 'name' attributes using the 'utf-8' 1204 charset. The Printer NEED NOT return any attributes in the 1205 Unsupported Attributes Group (See sections 3.1.7 and 3.2.1.2). The 1206 Printer object MUST indicate the charset(s) supported as the values 1207 of the "charset-supported" Printer attribute (see Section 4.4.18), 1208 so that the client can query to determine which charset(s) are 1209 supported. 1211 Note to client implementers: Since IPP objects are only required to 1212 support the 'utf-8' charset, in order to maximize interoperability 1213 with multiple IPP object implementations, a client may want to 1214 supply 'utf-8' in the "attributes-charset" operation attribute, 1215 even though the client is only passing and able to present a 1216 simpler charset, such as US-ASCII or ISO-8859-1. Then the client 1217 will have to filter out (or charset convert) those characters that 1218 are returned in the response that it cannot present to its user. 1219 On the other hand, if both the client and the IPP objects also 1220 support a charset in common besides utf-8, the client may want to 1221 use that charset in order to avoid charset conversion or data loss. 1223 See the 'charset' attribute syntax description in Section 4.1.7 for 1224 the syntax and semantic interpretation of the values of this 1225 attribute and for example values. 1227 "attributes-natural-language" (naturalLanguage): 1228 This operation attribute identifies the natural language used by 1229 any 'text' and 'name' attributes that the client is supplying in 1230 this request. This attribute also identifies the natural language 1231 that the Printer object SHOULD use for all 'text' and 'name' 1232 attributes and status messages that the Printer object returns in 1233 the response to this request. See the 'naturalLanguage' attribute 1234 syntax description in section 4.1.8 for the syntax and semantic 1236 Expires November 22, 2000 1237 interpretation of the values of this attribute and for example 1238 values. 1240 There are no REQUIRED natural languages required for the Printer 1241 object to support. However, the Printer object's "generated- 1242 natural-language-supported" attribute identifies the natural 1243 languages supported by the Printer object and any contained Job 1244 objects for all text strings generated by the IPP object. A client 1245 MAY query this attribute to determine which natural language(s) are 1246 supported for generated messages. 1248 For any of the attributes for which the Printer object generates 1249 text, i.e., for the "job-state-message", "printer-state-message", 1250 and status messages (see Section 3.1.6), the Printer object MUST be 1251 able to generate these text strings in any of its supported natural 1252 languages. If the client requests a natural language that is not 1253 supported, the Printer object MUST return these generated messages 1254 in the Printer's configured natural language as specified by the 1255 Printer's "natural-language-configured" attribute" (see Section 1256 4.4.19). 1258 For other 'text' and 'name' attributes supplied by the client, 1259 authentication system, operator, system administrator, or 1260 manufacturer (i.e., for "job-originating-user-name", "printer-name" 1261 (name), "printer-location" (text), "printer-info" (text), and 1262 "printer-make-and-model" (text)), the Printer object is only 1263 required to support the configured natural language of the Printer 1264 identified by the Printer object's "natural-language-configured" 1265 attribute, though support of additional natural languages for these 1266 attributes is permitted. 1268 For any 'text' or 'name' attribute in the request that is in a 1269 different natural language than the value supplied in the 1270 "attributes-natural-language" operation attribute, the client MUST 1271 use the Natural Language Override mechanism (see sections 4.1.1.2 1272 and 4.1.2.2) for each such attribute value supplied. The client 1273 MAY use the Natural Language Override mechanism redundantly, i.e., 1274 use it even when the value is in the same natural language as the 1275 value supplied in the "attributes-natural-language" operation 1276 attribute of the request. 1278 The IPP object MUST accept any natural language and any Natural 1279 Language Override, whether the IPP object supports that natural 1280 language or not (and independent of the value of the "ipp- 1281 attribute-fidelity" Operation attribute). That is the IPP object 1282 accepts all client supplied values no matter what the values are in 1283 the Printer object's "generated-natural-language-supported" 1284 attribute. That attribute, "generated-natural-language-supported", 1285 only applies to generated messages, not client supplied messages. 1286 The IPP object MUST remember that natural language for all client- 1287 supplied attributes, and when returning those attributes in 1288 response to a query, the IPP object MUST indicate that natural 1289 language. 1291 Expires November 22, 2000 1292 Each value whose attribute syntax type is 'text' or 'name' (see 1293 sections 4.1.1 and 4.1.2) has an Associated Natural-Language. This 1294 document does not specify how this association is stored in a 1295 Printer or Job object. When such a value is encoded in a request 1296 or response, the natural language is either implicit or explicit: 1298 @ In the implicit case, the value contains only the text/name 1299 value, and the language is specified by the "attributes- 1300 natural-language" operation attribute in the request or 1301 response (see sections 4.1.1.1 textWithoutLanguage and 4.1.2.1 1302 nameWithoutLanguage). 1304 @ In the explicit case (also known as the Natural-Language 1305 Override case), the value contains both the language and the 1306 text/name value (see sections 4.1.1.2 textWithLanguage and 1307 4.1.2.2 nameWithLanguage). 1309 For example, the "job-name" attribute MAY be supplied by the client 1310 in a create request. The text value for this attribute will be in 1311 the natural language identified by the "attribute-natural-language" 1312 attribute, or if different, as identified by the Natural Language 1313 Override mechanism. If supplied, the IPP object will use the value 1314 of the "job-name" attribute to populate the Job object's "job-name" 1315 attribute. Whenever any client queries the Job object's "job-name" 1316 attribute, the IPP object returns the attribute as stored and uses 1317 the Natural Language Override mechanism to specify the natural 1318 language, if it is different from that reported in the "attributes- 1319 natural-language" operation attribute of the response. The IPP 1320 object MAY use the Natural Language Override mechanism redundantly, 1321 i.e., use it even when the value is in the same natural language 1322 as the value supplied in the "attributes-natural-language" 1323 operation attribute of the response. 1325 An IPP object MUST NOT reject a request based on a supplied natural 1326 language in an "attributes-natural-language" Operation attribute or 1327 in any attribute that uses the Natural Language Override. 1329 Clients SHOULD NOT supply 'text' or 'name' attributes that use an 1330 illegal combination of natural language and charset. For example, 1331 suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and 1332 'iso-8859-7'. Suppose also, that it supports natural languages 'en' 1333 (English), 'fr' (French), and 'el' (Greek). Although the Printer object 1334 supports the charset 'iso-8859-1' and natural language 'el', it probably 1335 does not support the combination of Greek text strings using the 'iso- 1336 8859-1' charset. The Printer object handles this apparent 1337 incompatibility differently depending on the context in which it occurs: 1339 - In a create request: If the client supplies a text or name 1340 attribute (for example, the "job-name" operation attribute) that 1341 uses an apparently incompatible combination, it is a client choice 1342 that does not affect the Printer object or its correct operation. 1343 Therefore, the Printer object simply accepts the client supplied 1344 value, stores it with the Job object, and responds back with the 1346 Expires November 22, 2000 1347 same combination whenever the client (or any client) queries for 1348 that attribute. 1349 - In a query-type operation, like Get-Printer-Attributes: If the 1350 client requests an apparently incompatible combination, the Printer 1351 object responds (as described in section 3.1.4.2) using the 1352 Printer's configured natural language rather than the natural 1353 language requested by the client. 1355 In either case, the Printer object does not reject the request because 1356 of the apparent incompatibility. The potential incompatible combination 1357 of charset and natural language can occur either at the global operation 1358 level or at the Natural Language Override attribute-by-attribute level. 1359 In addition, since the response always includes explicit charset and 1360 natural language information, there is never any question or ambiguity 1361 in how the client interprets the response. 1363 3.1.4.2 Response Operation Attributes 1365 The Printer object MUST supply and the client MUST support the following 1366 REQUIRED operation attributes in every IPP/1.1 operation response: 1368 "attributes-charset" (charset): 1369 This operation attribute identifies the charset used by any 'text' 1370 and 'name' attributes that the Printer object is returning in this 1371 response. The value in this response MUST be the same value as the 1372 "attributes-charset" operation attribute supplied by the client in 1373 the request. If this is not possible (i.e., the charset requested 1374 is not supported), the request would have been rejected. See 1375 "attributes-charset" described in Section 3.1.4.1 above. 1377 If the Printer object supports more than just the 'utf-8' charset, 1378 the Printer object MUST be able to code convert between each of the 1379 charsets supported on a highest fidelity possible basis in order to 1380 return the 'text' and 'name' attributes in the charset requested by 1381 the client. However, some information loss MAY occur during the 1382 charset conversion depending on the charsets involved. For 1383 example, the Printer object may convert from a UTF-8 'a' to a US- 1384 ASCII 'a' (with no loss of information), from an ISO Latin 1 1385 CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' (losing the 1386 accent), or from a UTF-8 Japanese Kanji character to some ISO Latin 1387 1 error character indication such as '?', decimal code equivalent, 1388 or to the absence of a character, depending on implementation. 1390 Whether an implementation that supports more than one charset 1391 stores the data in the charset supplied by the client or code 1392 converts to one of the other supported charsets, depends on 1393 implementation. The strategy should try to minimize loss of 1394 information during code conversion. On each response, such an 1395 implementation converts from its internal charset to that 1396 requested. 1398 Expires November 22, 2000 1400 "attributes-natural-language" (naturalLanguage): 1401 This operation attribute identifies the natural language used by 1402 any 'text' and 'name' attributes that the IPP object is returning 1403 in this response. Unlike the "attributes-charset" operation 1404 attribute, the IPP object NEED NOT return the same value as that 1405 supplied by the client in the request. The IPP object MAY return 1406 the natural language of the Job object or the Printer's configured 1407 natural language as identified by the Printer object's "natural- 1408 language-configured" attribute, rather than the natural language 1409 supplied by the client. For any 'text' or 'name' attribute or 1410 status message in the response that is in a different natural 1411 language than the value returned in the "attributes-natural- 1412 language" operation attribute, the IPP object MUST use the Natural 1413 Language Override mechanism (see sections 4.1.1.2 and 4.1.2.2) on 1414 each attribute value returned. The IPP object MAY use the Natural 1415 Language Override mechanism redundantly, i.e., use it even when the 1416 value is in the same natural language as the value supplied in the 1417 "attributes-natural-language" operation attribute of the response. 1419 3.1.5 Operation Targets 1421 All IPP operations are directed at IPP objects. For Printer operations, 1422 the operation is always directed at a Printer object using one of its 1423 URIs (i.e., one of the values in the Printer object's "printer-uri- 1424 supported" attribute). Even if the Printer object supports more than 1425 one URI, the client supplies only one URI as the target of the 1426 operation. The client identifies the target object by supplying the 1427 correct URI in the "printer-uri (uri)" operation attribute. 1429 For Job operations, the operation is directed at either: 1431 - The Job object itself using the Job object's URI. In this case, 1432 the client identifies the target object by supplying the correct 1433 URI in the "job-uri (uri)" operation attribute. 1434 - The Printer object that created the Job object using both the 1435 Printer objects URI and the Job object's Job ID. Since the Printer 1436 object that created the Job object generated the Job ID, it MUST be 1437 able to correctly associate the client supplied Job ID with the 1438 correct Job object. The client supplies the Printer object's URI 1439 in the "printer-uri (uri)" operation attribute and the Job object's 1440 Job ID in the "job-id (integer(1:MAX))" operation attribute. 1442 If the operation is directed at the Job object directly using the Job 1443 object's URI, the client MUST NOT include the redundant "job-id" 1444 operation attribute. 1446 The operation target attributes are REQUIRED operation attributes that 1447 MUST be included in every operation request. Like the charset and 1448 natural language attributes (see section 3.1.4), the operation target 1449 attributes are specially ordered operation attributes. In all cases, 1450 the operation target attributes immediately follow the "attributes- 1451 charset" and "attributes-natural-language" attributes within the 1452 operation attribute group, however the specific ordering rules are: 1454 Expires November 22, 2000 1455 - In the case where there is only one operation target attribute 1456 (i.e., either only the "printer-uri" attribute or only the "job- 1457 uri" attribute), that attribute MUST be the third attribute in the 1458 operation attributes group. 1459 - In the case where Job operations use two operation target 1460 attributes (i.e., the "printer-uri" and "job-id" attributes), the 1461 "printer-uri" attribute MUST be the third attribute and the "job- 1462 id" attribute MUST be the fourth attribute. 1464 In all cases, the target URIs contained within the body of IPP operation 1465 requests and responses must be in absolute format rather than relative 1466 format (a relative URL identifies a resource with the scope of the HTTP 1467 server, but does not include scheme, host or port). 1469 The following rules apply to the use of port numbers in URIs that 1470 identify IPP objects: 1472 1. If the URI scheme allows the port number to be explicitly included 1473 in the URI string, and a port number is specified within the URI, 1474 then that port number MUST be used by the client to contact the IPP 1475 object. 1477 2. If the URI scheme allows the port number to be explicitly included 1478 in the URI string, and a port number is not specified within the 1479 URI, then default port number implied by that URI scheme MUST be 1480 used by the client to contact the IPP object. 1482 3. If the URI scheme does not allow an explicit port number to be 1483 specified within the URI, then the default port number implied by 1484 that URI MUST be used by the client to contact the IPP object. 1486 Note: The IPP "Encoding and Transport document [IPP-PRO] shows a mapping 1487 of IPP onto HTTP/1.1 [RFC2616] and defines a new default port number for 1488 using IPP over HTTP/1.1. 1490 3.1.6 Operation Response Status Codes and Status Messages 1492 Every operation response includes a REQUIRED "status-code" parameter and 1493 an OPTIONAL "status-message" operation attribute, and an OPTIONAL 1494 "detailed-status-message" operation attribute. The Print-URI and Send- 1495 URI response MAY include an OPTIONAL "document-access-error" operation 1496 attribute. 1498 3.1.6.1 "status-code" (type2 enum) 1500 The REQUIRED "status-code" parameter provides information on the 1501 processing of a request. 1503 The status code is intended for use by automata. A client 1504 implementation of IPP SHOULD convert status code values into any 1505 localized message that has semantic meaning to the end user. 1507 Expires November 22, 2000 1508 The "status-code" value is a numeric value that has semantic meaning. 1509 The "status-code" syntax is similar to a "type2 enum" (see section 4.1 1510 on "Attribute Syntaxes") except that values can range only from 0x0000 1511 to 0x7FFF. Section 13 describes the status codes, assigns the numeric 1512 values, and suggests a corresponding status message for each status code 1513 for use by the client when the user's natural language is English. 1515 If the Printer performs an operation with no errors and it encounters no 1516 problems, it MUST return the status code 'successful-ok' in the 1517 response. See section 13. 1519 If the client supplies unsupported values for the following parameters 1520 or Operation attributes, the Printer object MUST reject the operation, 1521 NEED NOT return the unsupported attribute value in the Unsupported 1522 Attributes group, and MUST return the indicated status code: 1524 Parameter/Attribute Status code 1526 version-number server-error-version-not-supported 1527 operation-id server-error-operation-not-supported 1528 attributes-charset client-error-charset-not-supported 1529 compression client-error-compression-not-supported 1530 document-format client-error-document-format-not-supported 1531 document-uri client-error-uri-scheme-not-supported, 1532 client-error-document-access-error 1534 If the client supplies unsupported values for other attributes, or 1535 unsupported attributes, the Printer returns the status code defined in 1536 section 3.1.7 on Unsupported Attributes. 1538 3.1.6.2 "status-message" (text(255)) 1540 The OPTIONAL "status-message" operation attribute provides a short 1541 textual description of the status of the operation. The "status- 1542 message" attribute's syntax is "text(255)", so the maximum length is 255 1543 octets (see section 4.1.1). The status message is intended for the 1544 human end user. If a response does include a "status-message" 1545 attribute, an IPP client NEED NOT examine or display the messages, 1546 however it SHOULD do so in some implementation specific manner. The 1547 "status-message" is especially useful for a later version of a Printer 1548 object to return as supplemental information for the human user to 1549 accompany a status code that an earlier version of a client might not 1550 understand. 1552 If the Printer object supports the "status-message" operation attribute, 1553 the Printer object MUST be able to generate this message in any of the 1554 natural languages identified by the Printer object's "generated-natural- 1555 language-supported" attribute (see the "attributes-natural-language" 1556 operation attribute specified in section 3.1.4.1. Section 13 suggests 1557 the text for the status message returned by the Printer for use with the 1558 English natural language. 1560 Expires November 22, 2000 1561 As described in section 3.1.4.1 for any returned 'text' attribute, if 1562 there is a choice for generating this message, the Printer object uses 1563 the natural language indicated by the value of the "attributes-natural- 1564 language" in the client request if supported, otherwise the Printer 1565 object uses the value in the Printer object's own "natural-language- 1566 configured" attribute. 1568 If the Printer object supports the "status-message" operation attribute, 1569 it SHOULD use the REQUIRED 'utf-8' charset to return a status message 1570 for the following error status codes (see section 13): 'client-error- 1571 bad-request', 'client-error-charset-not-supported', 'server-error- 1572 internal-error', 'server-error-operation-not-supported', and 'server- 1573 error-version-not-supported'. In this case, it MUST set the value of 1574 the "attributes-charset" operation attribute to 'utf-8' in the error 1575 response. 1577 3.1.6.3 "detailed-status-message" (text(MAX)) 1579 The OPTIONAL "detailed-status-message" operation attribute provides 1580 additional more detailed technical and implementation-specific 1581 information about the operation. The "detailed-status-message" 1582 attribute's syntax is "text(MAX)", so the maximum length is 1023 octets 1583 (see section 4.1.1). If the Printer objects supports the "detailed- 1584 status-message" operation attribute, the Printer NEED NOT localize the 1585 message, since it is intended for use by the system administrator or 1586 other experienced technical persons. Localization might obscure the 1587 technical meaning of such messages. Clients MUST NOT attempt to parse 1588 the value of this attribute. See the "document-access-error" operation 1589 attribute (section 3.1.6.4) for additional errors that a program can 1590 process. 1592 3.1.6.4 "document-access-error" (text(MAX)) 1594 This OPTIONAL operation attribute provides additional information about 1595 any document access errors encountered by the Printer before it returned 1596 a response to the Print-URI (section 3.2.2) or Send-URI (section 3.3.1) 1597 operation. For errors in the protocol identified by the URI scheme in 1598 the "document-uri" operation attribute, such as 'http:' or 'ftp:', the 1599 error code is returned in parentheses, followed by the URI. For 1600 example: 1602 (404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11- 1603 990510.pdf 1605 Most Internet protocols use decimal error codes (unlike IPP), so the 1606 ASCII error code representation is in decimal. 1608 3.1.7 Unsupported Attributes 1610 The Unsupported Attributes group contains attributes that are not 1611 supported by the operation. This group is primarily for the job creation 1612 operations, but all operations can return this group. 1614 Expires November 22, 2000 1615 A Printer object MUST include an Unsupported Attributes group in a 1616 response if the status code is one of the following: 'successful-ok- 1617 ignored-or-substituted-attributes', 'successful-ok-conflicting- 1618 attributes', 'client-error-attributes-or-values-not-supported' or 1619 'client-error-conflicting-attributes'. 1621 If the status code is one of the four specified in the preceding 1622 paragraph, the Unsupported Attributes group MUST contain all of those 1623 attributes and only those attributes that are: 1625 a. an Operation or Job Template attribute supplied in the request, and 1627 b. unsupported by the printer. See below for details on the three 1628 categories "unsupported" attributes. 1630 If the status code is one of those in the table in section 3.1.6.1, the 1631 Unsupported Attributes group NEED NOT contain the unsupported parameter 1632 or attribute indicated in that table. 1634 If the Printer object is not returning any Unsupported Attributes in the 1635 response, the Printer object SHOULD omit Group 2 rather than sending an 1636 empty group. However, a client MUST be able to accept an empty group. 1638 Unsupported attributes fall into three categories: 1640 1. The Printer object does not support the supplied attribute (no 1641 matter what the attribute syntax or value). 1643 2. The Printer object does support the attribute, but does not support 1644 some or all of the particular attribute syntaxes or values supplied 1645 by the client (i.e., the Printer object does not have those 1646 attribute syntaxes or values in its corresponding "xxx-supported" 1647 attribute). 1649 3. The Printer object does support the attributes and values supplied, 1650 but the particular values are in conflict with one another, because 1651 they violate a constraint, such as not being able to staple 1652 transparencies. 1654 In the case of an unsupported attribute name, the Printer object returns 1655 the client-supplied attribute with a substituted value of 'unsupported'. 1656 This value's syntax type is "out-of-band" and its encoding is defined by 1657 special rules for "out-of-band" values in the "Encoding and Transport" 1658 document [IPP-PRO]. Its value indicates no support for the attribute 1659 itself (see the beginning of section 4.1). 1661 In the case of a supported attribute with one or more unsupported 1662 attribute syntaxes or values, the Printer object simply returns the 1663 client-supplied attribute with the unsupported attribute syntaxes or 1664 values as supplied by the client. This indicates support for the 1665 attribute, but no support for that particular attribute syntax or value. 1666 If the client supplies a multi-valued attribute with more than one value 1667 and the Printer object supports the attribute but only supports a subset 1668 of the client-supplied attribute syntaxes or values, the Printer object 1670 Expires November 22, 2000 1671 MUST return only those attribute syntaxes or values that are 1672 unsupported. 1674 In the case of two (or more) supported attribute values that are in 1675 conflict with one another (although each is supported independently, the 1676 values conflict when requested together within the same job), the 1677 Printer object MUST return all the values that it ignores or substitutes 1678 to resolve the conflict, but not any of the values that it is still 1679 using. The choice for exactly how to resolve the conflict is 1680 implementation dependent. See sections 3.2.1.2 and 15. See The 1681 Implementer's Guide [IPP-IIG] for an example. 1683 3.1.8 Versions 1685 Each operation request and response carries with it a "version-number" 1686 parameter. Each value of the "version-number" is in the form "X.Y" 1687 where X is the major version number and Y is the minor version number. 1688 By including a version number in the client request, it allows the 1689 client to identify which version of IPP it is interested in using, 1690 i.e., the version whose conformance requirements the client may be 1691 depending upon the Printer to meet. 1693 If the IPP object does not support that major version number supplied by 1694 the client, i.e., the major version field of the "version-number" 1695 parameter does not match any of the values of the Printer's "ipp- 1696 versions-supported" (see section 4.4.14), the object MUST respond with a 1697 status code of 'server-error-version-not-supported' along with the 1698 closest version number that is supported (see section 13.1.5.4). If the 1699 major version number is supported, but the minor version number is not, 1700 the IPP object SHOULD accept and attempt to perform the request (or 1701 reject the request if the operation is not supported), else it rejects 1702 the request and returns the 'server-error-version-not-supported' status 1703 code. In all cases, the IPP object MUST return the "version-number" 1704 that it supports that is closest to the version number supplied by the 1705 client in the request. 1707 There is no version negotiation per se. However, if after receiving a 1708 'server-error-version-not-supported' status code from an IPP object, a 1709 client SHOULD try again with a different version number. A client MAY 1710 also determine the versions supported either from a directory that 1711 conforms to Appendix E (see section 16) or by querying the Printer 1712 object's "ipp-versions-supported" attribute (see section 4.4.14) to 1713 determine which versions are supported. 1715 An IPP object implementation MUST support version '1.1', i.e., meet the 1716 conformance requirements for IPP/1.1 as specified in this document and 1717 [IPP-PRO]. It is recommended that IPP object implementations accept any 1718 request with the major version '1' (or reject the request if the 1719 operation is not supported). 1721 There is only one notion of "version number" that covers both IPP Model 1722 and IPP Protocol changes. Thus the version number MUST change when 1723 introducing a new version of the Model and Semantics document (this 1725 Expires November 22, 2000 1726 document) or a new version of the "Encoding and Transport" document 1727 [IPP-PRO]. 1729 Changes to the major version number of the Model and Semantics document 1730 indicate structural or syntactic changes that make it impossible for 1731 older version of IPP clients and Printer objects to correctly parse and 1732 correctly process the new or changed attributes, operations and 1733 responses. If the major version number changes, the minor version 1734 numbers is set to zero. As an example, adding the REQUIRED "ipp- 1735 attribute-fidelity" attribute to version '1.1' (if it had not been part 1736 of version '1.0'), would have required a change to the major version 1737 number, since an IPP/1.0 Printer would not have processed a request with 1738 the correct semantics that contained the "ipp-attribute-fidelity" 1739 attribute that it did not know about. Items that might affect the 1740 changing of the major version number include any changes to the Model 1741 and Semantics document (this document) or the "Encoding and Transport" 1742 document [IPP-PRO] itself, such as: 1744 - reordering of ordered attributes or attribute sets 1745 - changes to the syntax of existing attributes 1746 - adding REQUIRED (for an IPP object to support) operation attribute 1747 groups 1748 - adding values to existing REQUIRED operation attributes 1749 - adding REQUIRED operations 1751 Changes to the minor version number indicate the addition of new 1752 features, attributes and attribute values that may not be understood by 1753 all IPP objects, but which can be ignored if not understood. Items that 1754 might affect the changing of the minor version number include any 1755 changes to the model objects and attributes but not the encoding and 1756 transport rules [IPP-PRO] (except adding attribute syntaxes). Examples 1757 of such changes are: 1759 - grouping all extensions not included in a previous version into a 1760 new version 1761 - adding new attribute values 1762 - adding new object attributes 1763 - adding OPTIONAL (for an IPP object to support) operation attributes 1764 (i.e., those attributes that an IPP object can ignore without 1765 confusing clients) 1766 - adding OPTIONAL (for an IPP object to support) operation attribute 1767 groups (i.e., those attributes that an IPP object can ignore 1768 without confusing clients) 1769 - adding new attribute syntaxes 1770 - adding OPTIONAL operations 1771 - changing Job Description attributes or Printer Description 1772 attributes from OPTIONAL to REQUIRED or vice versa. 1773 - adding OPTIONAL attribute syntaxes to an existing attribute. 1775 The encoding of the "version-number" MUST NOT change over any version 1776 number (either major or minor). This rule guarantees that all future 1777 versions will be backwards compatible with all previous versions (at 1778 least for checking the "version-number"). In addition, any protocol 1779 elements (attributes, error codes, tags, etc.) that are not carried 1781 Expires November 22, 2000 1782 forward from one version to the next are deprecated so that they can 1783 never be reused with new semantics. 1785 Implementations that support a certain version NEED NOT support ALL 1786 previous versions. As each new version is defined (through the release 1787 of a new IPP specification document), that version will specify which 1788 previous versions MUST and which versions SHOULD be supported in 1789 compliant implementations. 1791 3.1.9 Job Creation Operations 1793 In order to "submit a print job" and create a new Job object, a client 1794 issues a create request. A create request is any one of following three 1795 operation requests: 1797 - The Print-Job Request: A client that wants to submit a print job 1798 with only a single document uses the Print-Job operation. The 1799 operation allows for the client to "push" the document data to the 1800 Printer object by including the document data in the request 1801 itself. 1803 - The Print-URI Request: A client that wants to submit a print job 1804 with only a single document (where the Printer object "pulls" the 1805 document data instead of the client "pushing" the data to the 1806 Printer object) uses the Print-URI operation. In this case, the 1807 client includes in the request only a URI reference to the document 1808 data (not the document data itself). 1810 - The Create-Job Request: A client that wants to submit a print job 1811 with multiple documents uses the Create-Job operation. This 1812 operation is followed by an arbitrary number (one or more) of Send- 1813 Document and/or Send-URI operations (each creating another document 1814 for the newly create Job object). The Send-Document operation 1815 includes the document data in the request (the client "pushes" the 1816 document data to the printer), and the Send-URI operation includes 1817 only a URI reference to the document data in the request (the 1818 Printer "pulls" the document data from the referenced location). 1819 The last Send-Document or Send-URI request for a given Job object 1820 includes a "last-document" operation attribute set to 'true' 1821 indicating that this is the last request. 1823 Throughout this model document, the term "create request" is used to 1824 refer to any of these three operation requests. 1826 A Create-Job operation followed by only one Send-Document operation is 1827 semantically equivalent to a Print-Job operation, however, for 1828 performance reasons, the client SHOULD use the Print-Job operation for 1829 all single document jobs. Also, Print-Job is a REQUIRED operation (all 1830 implementations MUST support it) whereas Create-Job is an OPTIONAL 1831 operation, hence some implementations might not support it. 1833 Job submission time is the point in time when a client issues a create 1834 request. The initial state of every Job object is the 'pending', 1836 Expires November 22, 2000 1837 'pending-held', or 'processing' state (see section 4.3.7). When the 1838 Printer object begins processing the print job, the Job object's state 1839 moves to 'processing'. This is known as job processing time. There are 1840 validation checks that must be done at job submission time and others 1841 that must be performed at job processing time. 1843 At job submission time and at the time a Validate-Job operation is 1844 received, the Printer MUST do the following: 1846 1. Process the client supplied attributes and either accept or reject 1847 the request 1848 2. Validate the syntax of and support for the scheme of any client 1849 supplied URI 1851 At job submission time the Printer object MUST validate whether or not 1852 the supplied attributes, attribute syntaxes, and values are supported by 1853 matching them with the Printer object's corresponding "xxx-supported" 1854 attributes. See section 3.1.7 for details. [IPP-IIG] presents 1855 suggested steps for an IPP object to either accept or reject any request 1856 and additional steps for processing create requests. 1858 At job submission time the Printer object NEED NOT perform the 1859 validation checks reserved for job processing time such as: 1861 1. Validating the document data 1862 2. Validating the actual contents of any client supplied URI (resolve 1863 the reference and follow the link to the document data) 1865 At job submission time, these additional job processing time validation 1866 checks are essentially useless, since they require actually parsing and 1867 interpreting the document data, are not guaranteed to be 100% accurate, 1868 and MUST be done, yet again, at job processing time. Also, in the case 1869 of a URI, checking for availability at job submission time does not 1870 guarantee availability at job processing time. In addition, at job 1871 processing time, the Printer object might discover any of the following 1872 conditions that were not detectable at job submission time: 1874 - runtime errors in the document data, 1875 - nested document data that is in an unsupported format, 1876 - the URI reference is no longer valid (i.e., the server hosting the 1877 document might be down), or 1878 - any other job processing error 1880 At job submission time, a Printer object, especially a non-spooling 1881 Printer, MAY accept jobs that it does not have enough space for. In 1882 such a situation, a Printer object MAY stop reading data from a client 1883 for an indefinite period of time. A client MUST be prepared for a write 1884 operation to block for an indefinite period of time (see section 5.1 on 1885 client conformance). 1887 When a Printer object has too little space for starting a new job, it 1888 MAY reject a new create request. In this case, a Printer object MUST 1889 return a response (in reply to the rejected request) with a status-code 1890 of 'server-error-busy' (see section 14.1.5.8) and it MAY close the 1892 Expires November 22, 2000 1893 connection before receiving all bytes of the operation. A Printer 1894 SHOULD indicate that it is temporarily unable to accept jobs by setting 1895 the 'spool-space-full' value in its "printer-state-reasons" attribute 1896 and removing the value when it can accept another job (see section 1897 4.4.12). 1899 When receiving a 'server-error-busy' status-code in an operation 1900 response, a client MUST be prepared for the Printer object to close the 1901 connection before the client has sent all of the data (especially for 1902 the Print-Job operation). A client MUST be prepared to keep submitting a 1903 create request until the IPP Printer object accepts the create request. 1905 At job processing time, since the Printer object has already responded 1906 with a successful status code in the response to the create request, if 1907 the Printer object detects an error, the Printer object is unable to 1908 inform the end user of the error with an operation status code. In 1909 this case, the Printer, depending on the error, can set the job object's 1910 "job-state", "job-state-reasons", or "job-state-message" attributes to 1911 the appropriate value(s) so that later queries can report the correct 1912 job status. 1914 Note: Asynchronous notification of events is outside the scope of this 1915 IPP/1.1 document. 1917 3.2 Printer Operations 1919 All Printer operations are directed at Printer objects. A client MUST 1920 always supply the "printer-uri" operation attribute in order to identify 1921 the correct target of the operation. 1923 3.2.1 Print-Job Operation 1925 This REQUIRED operation allows a client to submit a print job with only 1926 one document and supply the document data (rather than just a reference 1927 to the data). See Section 15 for the suggested steps for processing 1928 create operations and their Operation and Job Template attributes. 1930 3.2.1.1 Print-Job Request 1932 The following groups of attributes are supplied as part of the Print-Job 1933 Request: 1935 Group 1: Operation Attributes 1937 Natural Language and Character Set: 1938 The "attributes-charset" and "attributes-natural-language" 1939 attributes as described in section 3.1.4.1. The Printer object 1940 MUST copy these values to the corresponding Job Description 1941 attributes described in sections 4.3.19 and 4.3.20. 1943 Expires November 22, 2000 1945 Target: 1946 The "printer-uri" (uri) operation attribute which is the target for 1947 this operation as described in section 3.1.5. 1949 Requesting User Name: 1950 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 1951 by the client as described in section 8.3. 1953 "job-name" (name(MAX)): 1954 The client OPTIONALLY supplies this attribute. The Printer object 1955 MUST support this attribute. It contains the client supplied Job 1956 name. If this attribute is supplied by the client, its value is 1957 used for the "job-name" attribute of the newly created Job object. 1958 The client MAY automatically include any information that will help 1959 the end-user distinguish amongst his/her jobs, such as the name of 1960 the application program along with information from the document, 1961 such as the document name, document subject, or source file name. 1962 If this attribute is not supplied by the client, the Printer 1963 generates a name to use in the "job-name" attribute of the newly 1964 created Job object (see Section 4.3.5). 1966 "ipp-attribute-fidelity" (boolean): 1967 The client OPTIONALLY supplies this attribute. The Printer object 1968 MUST support this attribute. The value 'true' indicates that total 1969 fidelity to client supplied Job Template attributes and values is 1970 required, else the Printer object MUST reject the Print-Job 1971 request. The value 'false' indicates that a reasonable attempt to 1972 print the Job object is acceptable and the Printer object MUST 1973 accept the Print-Job request. If not supplied, the Printer object 1974 assumes the value is 'false'. All Printer objects MUST support 1975 both types of job processing. See section 15 for a full 1976 description of "ipp-attribute-fidelity" and its relationship to 1977 other attributes, especially the Printer object's "pdl-override- 1978 supported" attribute. 1980 "document-name" (name(MAX)): 1981 The client OPTIONALLY supplies this attribute. The Printer object 1982 MUST support this attribute. It contains the client supplied 1983 document name. The document name MAY be different than the Job 1984 name. Typically, the client software automatically supplies the 1985 document name on behalf of the end user by using a file name or an 1986 application generated name. If this attribute is supplied, its 1987 value can be used in a manner defined by each implementation. 1988 Examples include: printed along with the Job (job start sheet, page 1989 adornments, etc.), used by accounting or resource tracking 1990 management tools, or even stored along with the document as a 1991 document level attribute. IPP/1.1 does not support the concept of 1992 document level attributes. 1994 "compression" (type3 keyword) 1995 The client OPTIONALLY supplies this attribute. The Printer object 1996 MUST support this attribute and the "compression-supported" 1997 attribute (see section 4.4.32). The client supplied "compression" 1999 Expires November 22, 2000 2000 operation attribute identifies the compression algorithm used on 2001 the document data. The following cases exist: 2002 a)If the client omits this attribute, the Printer object MUST 2003 assume that the data is not compressed (i.e. the Printer 2004 follows the rules below as if the client supplied the 2005 "compression" attribute with a value of 'none'). 2006 b)If the client supplies this attribute, but the value is not 2007 supported by the Printer object, i.e., the value is not one 2008 of the values of the Printer object's "compression- 2009 supported" attribute, the Printer object MUST reject the 2010 request, and return the 'client-error-compression-not- 2011 supported' status code. See section 3.1.7 for returning 2012 unsupported attributes and values. 2013 c)If the client supplies the attribute and the Printer object 2014 supports the attribute value, the Printer object uses the 2015 corresponding decompression algorithm on the document data. 2016 d)If the decompression algorithm fails before the Printer 2017 returns an operation response, the Printer object MUST 2018 reject the request and return the 'client-error- 2019 compression-error' status code. 2020 e)If the decompression algorithm fails after the Printer 2021 returns an operation response, the Printer object MUST 2022 abort the job and add the 'compression-error' value to the 2023 job's "job-state-reasons" attribute. 2024 f)If the decompression algorithm succeeds, the document data 2025 MUST then have the format specified by the job's "document- 2026 format" attribute, if supplied (see "document-format" 2027 operation attribute definition below). 2029 "document-format" (mimeMediaType) : 2030 The client OPTIONALLY supplies this attribute. The Printer object 2031 MUST support this attribute. The value of this attribute 2032 identifies the format of the supplied document data. The following 2033 cases exist: 2034 a)If the client does not supply this attribute, the Printer 2035 object assumes that the document data is in the format 2036 defined by the Printer object's "document-format-default" 2037 attribute. (i.e. the Printer follows the rules below as if 2038 the client supplied the "document-format" attribute with a 2039 value equal to the printer's default value). 2040 b)If the client supplies this attribute, but the value is not 2041 supported by the Printer object, i.e., the value is not one 2042 of the values of the Printer object's "document-format- 2043 supported" attribute, the Printer object MUST reject the 2044 request and return the 'client-error-document-format-not- 2045 supported' status code. 2046 c)If the client supplies this attribute and its value is 2047 'application/octet-stream' (i.e. to be auto-sensed, see 2048 Section 4.1.9.1), and the format is not one of the 2049 document-formats that the Printer can auto-sense, and this 2050 check occurs before the Printer returns an operation 2051 response, then the Printer MUST reject the request and 2052 return the 'client-error-document-format-not-supported' 2053 status code. 2055 Expires November 22, 2000 2057 d)If the client supplies this attribute, and the value is 2058 supported by the Printer object, the Printer is capable of 2059 interpreting the document data. 2060 e)If interpreting of the document data fails before the 2061 Printer returns an operation response, the Printer object 2062 MUST reject the request and return the 'client-error- 2063 document-format-error' status code. 2064 f)If interpreting of the document data fails after the 2065 Printer returns an operation response, the Printer object 2066 MUST abort the job and add the 'document-format-error' 2067 value to the job's "job-state-reasons" attribute. 2069 "document-natural-language" (naturalLanguage): 2070 The client OPTIONALLY supplies this attribute. The Printer object 2071 OPTIONALLY supports this attribute. This attribute specifies the 2072 natural language of the document for those document-formats that 2073 require a specification of the natural language in order to image 2074 the document unambiguously. There are no particular values required 2075 for the Printer object to support. 2077 "job-k-octets" (integer(0:MAX)) 2078 The client OPTIONALLY supplies this attribute. The Printer object 2079 OPTIONALLY supports this attribute and the "job-k-octets-supported" 2080 attribute (see section 4.4.33). The client supplied "job-k-octets" 2081 operation attribute identifies the total size of the document(s) in 2082 K octets being submitted (see section 4.3.17.1 for the complete 2083 semantics). If the client supplies the attribute and the Printer 2084 object supports the attribute, the value of the attribute is used 2085 to populate the Job object's "job-k-octets" Job Description 2086 attribute. 2088 For this attribute and the following two attributes ("job- 2089 impressions", and "job-media-sheets"), if the client supplies the 2090 attribute, but the Printer object does not support the attribute, 2091 the Printer object ignores the client-supplied value. If the 2092 client supplies the attribute and the Printer supports the 2093 attribute, and the value is within the range of the corresponding 2094 Printer object's "xxx-supported" attribute, the Printer object MUST 2095 use the value to populate the Job object's "xxx" attribute. If the 2096 client supplies the attribute and the Printer supports the 2097 attribute, but the value is outside the range of the corresponding 2098 Printer object's "xxx-supported" attribute, the Printer object MUST 2099 copy the attribute and its value to the Unsupported Attributes 2100 response group, reject the request, and return the 'client-error- 2101 attributes-or-values-not-supported' status code. If the client 2102 does not supply the attribute, the Printer object MAY choose to 2103 populate the corresponding Job object attribute depending on 2104 whether the Printer object supports the attribute and is able to 2105 calculate or discern the correct value. 2107 "job-impressions" (integer(0:MAX)) 2108 The client OPTIONALLY supplies this attribute. The Printer object 2109 OPTIONALLY supports this attribute and the "job-impressions- 2110 supported" attribute (see section 4.4.34). The client supplied 2112 Expires November 22, 2000 2113 "job-impressions" operation attribute identifies the total size in 2114 number of impressions of the document(s) being submitted (see 2115 section 4.3.17.2 for the complete semantics). 2117 See last paragraph under "job-k-octets". 2119 "job-media-sheets" (integer(0:MAX)) 2120 The client OPTIONALLY supplies this attribute. The Printer object 2121 OPTIONALLY supports this attribute and the "job-media-sheets- 2122 supported" attribute (see section 4.4.35). The client supplied 2123 "job-media-sheets" operation attribute identifies the total number 2124 of media sheets to be produced for this job (see section 4.3.17.3 2125 for the complete semantics). 2127 See last paragraph under "job-k-octets". 2129 Group 2: Job Template Attributes 2131 The client OPTIONALLY supplies a set of Job Template attributes as 2132 defined in section 4.2. If the client is not supplying any Job 2133 Template attributes in the request, the client SHOULD omit Group 2 2134 rather than sending an empty group. However, a Printer object MUST 2135 be able to accept an empty group. 2137 Group 3: Document Content 2139 The client MUST supply the document data to be processed. 2141 In addition to the MANDATORY parameters required for every operation 2142 request, the simplest Print-Job Request consists of just the 2143 "attributes-charset" and "attributes-natural-language" operation 2144 attributes; the "printer-uri" target operation attribute; the Document 2145 Content and nothing else. In this simple case, the Printer object: 2147 - creates a new Job object (the Job object contains a single 2148 document), 2149 - stores a generated Job name in the "job-name" attribute in the 2150 natural language and charset requested (see Section 3.1.4.1) (if 2151 those are supported, otherwise using the Printer object's default 2152 natural language and charset), and 2153 - at job processing time, uses its corresponding default value 2154 attributes for the supported Job Template attributes that were not 2155 supplied by the client as IPP attribute or embedded instructions in 2156 the document data. 2158 3.2.1.2 Print-Job Response 2160 The Printer object MUST return to the client the following sets of 2161 attributes as part of the Print-Job Response: 2163 Group 1: Operation Attributes 2165 Expires November 22, 2000 2166 Status Message: 2167 In addition to the REQUIRED status code returned in every response, 2168 the response OPTIONALLY includes a "status-message" (text(255)) 2169 and/or a "detailed-status-message" (text(MAX)) operation attribute 2170 as described in sections 13 and 3.1.6. If the client supplies 2171 unsupported or conflicting Job Template attributes or values, the 2172 Printer object MUST reject or accept the Print-Job request 2173 depending on the whether the client supplied a 'true' or 'false' 2174 value for the "ipp-attribute-fidelity" operation attribute. See 2175 the Implementer's Guide [IPP-IIG] for a complete description of the 2176 suggested steps for processing a create request. 2178 Natural Language and Character Set: 2179 The "attributes-charset" and "attributes-natural-language" 2180 attributes as described in section 3.1.4.2. 2182 Group 2: Unsupported Attributes 2184 See section 3.1.7 for details on returning Unsupported Attributes. 2186 The value of the "ipp-attribute-fidelity" supplied by the client 2187 does not affect what attributes the Printer object returns in this 2188 group. The value of "ipp-attribute-fidelity" only affects whether 2189 the Print-Job operation is accepted or rejected. If the job is 2190 accepted, the client may query the job using the Get-Job-Attributes 2191 operation requesting the unsupported attributes that were returned 2192 in the create response to see which attributes were ignored (not 2193 stored on the Job object) and which attributes were stored with 2194 other (substituted) values. 2196 Group 3: Job Object Attributes 2198 "job-uri" (uri): 2199 The Printer object MUST return the Job object's URI by returning 2200 the contents of the REQUIRED "job-uri" Job object attribute. The 2201 client uses the Job object's URI when directing operations at the 2202 Job object. The Printer object always uses its configured security 2203 policy when creating the new URI. However, if the Printer object 2204 supports more than one URI, the Printer object also uses 2205 information about which URI was used in the Print-Job Request to 2206 generated the new URI so that the new URI references the correct 2207 access channel. In other words, if the Print-Job Request comes in 2208 over a secure channel, the Printer object MUST generate a Job URI 2209 that uses the secure channel as well. 2211 "job-id" (integer(1:MAX)): 2212 The Printer object MUST return the Job object's Job ID by returning 2213 the REQUIRED "job-id" Job object attribute. The client uses this 2214 "job-id" attribute in conjunction with the "printer-uri" attribute 2215 used in the Print-Job Request when directing Job operations at the 2216 Printer object. 2218 Expires November 22, 2000 2220 "job-state": 2221 The Printer object MUST return the Job object's REQUIRED "job- 2222 state" attribute. The value of this attribute (along with the value 2223 of the next attribute: "job-state-reasons") is taken from a 2224 "snapshot" of the new Job object at some meaningful point in time 2225 (implementation defined) between when the Printer object receives 2226 the Print-Job Request and when the Printer object returns the 2227 response. 2229 "job-state-reasons": 2230 The Printer object MUST return the Job object's REQUIRED "job- 2231 state-reasons" attribute. 2233 "job-state-message": 2234 The Printer object OPTIONALLY returns the Job object's OPTIONAL 2235 "job-state-message" attribute. If the Printer object supports this 2236 attribute then it MUST be returned in the response. If this 2237 attribute is not returned in the response, the client can assume 2238 that the "job-state-message" attribute is not supported and will 2239 not be returned in a subsequent Job object query. 2241 "number-of-intervening-jobs": 2242 The Printer object OPTIONALLY returns the Job object's OPTIONAL 2243 "number-of-intervening-jobs" attribute. If the Printer object 2244 supports this attribute then it MUST be returned in the response. 2245 If this attribute is not returned in the response, the client can 2246 assume that the "number-of-intervening-jobs" attribute is not 2247 supported and will not be returned in a subsequent Job object 2248 query. 2250 Note: Since any printer state information which affects a job's 2251 state is reflected in the "job-state" and "job-state-reasons" 2252 attributes, it is sufficient to return only these attributes and no 2253 specific printer status attributes. 2255 Note: In addition to the MANDATORY parameters required for every 2256 operation response, the simplest response consists of the just the 2257 "attributes-charset" and "attributes-natural-language" operation 2258 attributes and the "job-uri", "job-id", and "job-state" Job Object 2259 Attributes. In this simplest case, the status code is 'successful-ok' 2260 and there is no "status-message" or "detailed-status-message" operation 2261 attribute. 2263 3.2.2 Print-URI Operation 2265 This OPTIONAL operation is identical to the Print-Job operation (section 2266 3.2.1) except that a client supplies a URI reference to the document 2267 data using the "document-uri" (uri) operation attribute (in Group 1) 2268 rather than including the document data itself. Before returning the 2269 response, the Printer MUST validate that the Printer supports the 2270 retrieval method (e.g., http, ftp, etc.) implied by the URI, and MUST 2271 check for valid URI syntax. If the client-supplied URI scheme is not 2272 supported, i.e. the value is not in the Printer object's "referenced- 2274 Expires November 22, 2000 2275 uri-scheme-supported" attribute, the Printer object MUST reject the 2276 request and return the 'client-error-uri-scheme-not-supported' status 2277 code. 2279 The IPP Printer MAY validate the accessibility of the document as part 2280 of the operation or subsequently. If the Printer determines an 2281 accessibility problem before returning an operation response, it rejects 2282 the request and returns the 'client-error-document-access-error' status 2283 code. The Printer MAY also return a specific document access error code 2284 using the "document-access-error" operation attribute (see section 2285 3.1.6.4). 2287 If the Printer determines this document accessibility problem after 2288 accepting the request and returning an operation response with one of 2289 the successful status codes, the Printer adds the 'document-access- 2290 error' value to the job's "job-state-reasons" attribute and MAY populate 2291 the job's "job-document-access-errors" Job Description attribute (see 2292 section 4.3.11). See The Implementer's Guide [IPP-IIG] for suggested 2293 additional checks. 2295 If the Printer object supports this operation, it MUST support the 2296 "reference-uri-schemes-supported" Printer attribute (see section 2297 4.4.27). 2299 It is up to the IPP object to interpret the URI and subsequently "pull" 2300 the document from the source referenced by the URI string. 2302 3.2.3 Validate-Job Operation 2304 This REQUIRED operation is similar to the Print-Job operation (section 2305 3.2.1) except that a client supplies no document data and the Printer 2306 allocates no resources (i.e., it does not create a new Job object). 2307 This operation is used only to verify capabilities of a printer object 2308 against whatever attributes are supplied by the client in the Validate- 2309 Job request. By using the Validate-Job operation a client can validate 2310 that an identical Print-Job operation (with the document data) would be 2311 accepted. The Validate-Job operation also performs the same security 2312 negotiation as the Print-Job operation (see section 8), so that a client 2313 can check that the client and Printer object security requirements can 2314 be met before performing a Print-Job operation. 2316 The Validate-Job operation does not accept a "document-uri" attribute in 2317 order to allow a client to check that the same Print-URI operation will 2318 be accepted, since the client doesn't send the data with the Print-URI 2319 operation. The client SHOULD just issue the Print-URI request. 2321 The Printer object returns the same status codes, Operation Attributes 2322 (Group 1) and Unsupported Attributes (Group 2) as the Print-Job 2323 operation. However, no Job Object Attributes (Group 3) are returned, 2324 since no Job object is created. 2326 Expires November 22, 2000 2327 3.2.4 Create-Job Operation 2329 This OPTIONAL operation is similar to the Print-Job operation (section 2330 3.2.1) except that in the Create-Job request, a client does not supply 2331 document data or any reference to document data. Also, the client does 2332 not supply any of the "document-name", "document-format", "compression", 2333 or "document-natural-language" operation attributes. This operation is 2334 followed by one or more Send-Document or Send-URI operations. In each 2335 of those operation requests, the client OPTIONALLY supplies the 2336 "document-name", "document-format", and "document-natural-language" 2337 attributes for each document in the multi-document Job object. 2339 If a Printer object supports the Create-Job operation, it MUST also 2340 support the Send-Document operation and also MAY support the Send-URI 2341 operation. 2343 If the Printer object supports this operation, it MUST support the 2344 "multiple-operation-time-out" Printer attribute (see section 4.4.31). 2346 If the Printer object supports this operation, then it MUST support the 2347 "multiple-document-jobs-supported" Printer Description attribute (see 2348 section 4.4.16) and indicate whether or not it supports multiple- 2349 document jobs. 2351 If the Printer object supports this operation and supports multiple 2352 documents in a job, then it MUST support the "multiple-document- 2353 handling" Job Template job attribute with at least one value (see 2354 section 4.2.4) and the associated "multiple-document-handling-default" 2355 and "multiple-document-handling-supported" Job Template Printer 2356 attributes (see section 4.2). 2358 After the Create-Job operation has completed, the value of the "job- 2359 state" attribute is similar to the "job-state" after a Print-Job, even 2360 though no document-data has arrived. A Printer MAY set the 'job-data- 2361 insufficient' value of the job's "job-state-reason" attribute to 2362 indicate that processing cannot begin until sufficient data has arrived 2363 and set the "job-state" to either 'pending' or 'pending-held'. A non- 2364 spooling printer that doesn't implement the 'pending' job state may even 2365 set the "job-state" to 'processing', even though there is not yet any 2366 data to process. See sections 4.3.7 and 4.3.8. 2368 3.2.5 Get-Printer-Attributes Operation 2370 This REQUIRED operation allows a client to request the values of the 2371 attributes of a Printer object. In the request, the client supplies 2372 the set of Printer attribute names and/or attribute group names in which 2373 the requester is interested. In the response, the Printer object 2374 returns a corresponding attribute set with the appropriate attribute 2375 values filled in. 2377 For Printer objects, the possible names of attribute groups are: 2379 Expires November 22, 2000 2380 - 'job-template': the subset of the Job Template attributes that 2381 apply to a Printer object (the last two columns of the table in 2382 Section 4.2) that the implementation supports for Printer objects. 2383 - 'printer-description': the subset of the attributes specified in 2384 Section 4.4 that the implementation supports for Printer objects. 2385 - 'all': the special group 'all' that includes all attributes that 2386 the implementation supports for Printer objects. 2388 Since a client MAY request specific attributes or named groups, there is 2389 a potential that there is some overlap. For example, if a client 2390 requests, 'printer-name' and 'all', the client is actually requesting 2391 the "printer-name" attribute twice: once by naming it explicitly, and 2392 once by inclusion in the 'all' group. In such cases, the Printer object 2393 NEED NOT return each attribute only once in the response even if it is 2394 requested multiple times. The client SHOULD NOT request the same 2395 attribute in multiple ways. 2397 It is NOT REQUIRED that a Printer object support all attributes 2398 belonging to a group (since some attributes are OPTIONAL). However, it 2399 is REQUIRED that each Printer object support all group names. 2401 3.2.5.1 Get-Printer-Attributes Request 2403 The following sets of attributes are part of the Get-Printer-Attributes 2404 Request: 2406 Group 1: Operation Attributes 2408 Natural Language and Character Set: 2409 The "attributes-charset" and "attributes-natural-language" 2410 attributes as described in section 3.1.4.1. 2412 Target: 2413 The "printer-uri" (uri) operation attribute which is the target for 2414 this operation as described in section 3.1.5. 2416 Requesting User Name: 2417 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2418 by the client as described in section 8.3. 2420 "requested-attributes" (1setOf keyword) : 2421 The client OPTIONALLY supplies a set of attribute names and/or 2422 attribute group names in whose values the requester is interested. 2423 The Printer object MUST support this attribute. If the client 2424 omits this attribute, the Printer MUST respond as if this attribute 2425 had been supplied with a value of 'all'. 2427 "document-format" (mimeMediaType) : 2428 The client OPTIONALLY supplies this attribute. The Printer object 2429 MUST support this attribute. This attribute is useful for a 2430 Printer object to determine the set of supported attribute values 2431 that relate to the requested document format. The Printer object 2432 MUST return the attributes and values that it uses to validate a 2434 Expires November 22, 2000 2435 job on a create or Validate-Job operation in which this document 2436 format is supplied. The Printer object SHOULD return only (1) those 2437 attributes that are supported for the specified format and (2) the 2438 attribute values that are supported for the specified document 2439 format. By specifying the document format, the client can get the 2440 Printer object to eliminate the attributes and values that are not 2441 supported for a specific document format. For example, a Printer 2442 object might have multiple interpreters to support both 2443 'application/postscript' (for PostScript) and 'text/plain' (for 2444 text) documents. However, for only one of those interpreters might 2445 the Printer object be able to support "number-up" with values of 2446 '1', '2', and '4'. For the other interpreter it might be able to 2447 only support "number-up" with a value of '1'. Thus a client can use 2448 the Get-Printer-Attributes operation to obtain the attributes and 2449 values that will be used to accept/reject a create job operation. 2451 If the Printer object does not distinguish between different sets 2452 of supported values for each different document format when 2453 validating jobs in the create and Validate-Job operations, it MUST 2454 NOT distinguish between different document formats in the Get- 2455 Printer-Attributes operation. If the Printer object does 2456 distinguish between different sets of supported values for each 2457 different document format specified by the client, this 2458 specialization applies only to the following Printer object 2459 attributes: 2461 - Printer attributes that are Job Template attributes ("xxx- 2462 default" "xxx-supported", and "xxx-ready" in the Table in 2463 Section 4.2), 2464 - "pdl-override-supported", 2465 - "compression-supported", 2466 - "job-k-octets-supported", 2467 - "job-impressions-supported", 2468 - "job-media-sheets-supported", 2469 - "printer-driver-installer", 2470 - "color-supported", and 2471 - "reference-uri-schemes-supported" 2473 The values of all other Printer object attributes (including 2474 "document-format-supported") remain invariant with respect to the 2475 client supplied document format (except for new Printer description 2476 attribute as registered according to section 6.2). 2478 If the client omits this "document-format" operation attribute, the 2479 Printer object MUST respond as if the attribute had been supplied 2480 with the value of the Printer object's "document-format-default" 2481 attribute. It is RECOMMENDED that the client always supply a value 2482 for "document-format", since the Printer object's "document-format- 2483 default" may be 'application/octet-stream', in which case the 2484 returned attributes and values are for the union of the document 2485 formats that the Printer can automatically sense. For more 2486 details, see the description of the 'mimeMediaType' attribute 2487 syntax in section 4.1.9. 2489 Expires November 22, 2000 2490 If the client supplies a value for the "document-format" Operation 2491 attribute that is not supported by the Printer, i.e., is not among 2492 the values of the Printer object's "document-format-supported" 2493 attribute, the Printer object MUST reject the operation and return 2494 the 'client-error-document-format-not-supported' status code. 2496 3.2.5.2 Get-Printer-Attributes Response 2498 The Printer object returns the following sets of attributes as part of 2499 the Get-Printer-Attributes Response: 2501 Group 1: Operation Attributes 2503 Status Message: 2504 In addition to the REQUIRED status code returned in every response, 2505 the response OPTIONALLY includes a "status-message" (text(255)) 2506 and/or a "detailed-status-message" (text(MAX)) operation attribute 2507 as described in sections 13 and 3.1.6. 2509 Natural Language and Character Set: 2510 The "attributes-charset" and "attributes-natural-language" 2511 attributes as described in section 3.1.4.2. 2513 Group 2: Unsupported Attributes 2515 See section 3.1.7 for details on returning Unsupported Attributes. 2517 The response NEED NOT contain the "requested-attributes" operation 2518 attribute with any supplied values (attribute keywords) that were 2519 requested by the client but are not supported by the IPP object. If 2520 the Printer object does include unsupported attributes referenced 2521 in "requested-attributes" and such attributes include group names, 2522 such as 'all', the unsupported attributes MUST NOT include 2523 attributes described in the standard but not supported by the 2524 implementation. 2526 Group 3: Printer Object Attributes 2528 This is the set of requested attributes and their current values. 2529 The Printer object ignores (does not respond with) any requested 2530 attribute which is not supported. The Printer object MAY respond 2531 with a subset of the supported attributes and values, depending on 2532 the security policy in force. However, the Printer object MUST 2533 respond with the 'unknown' value for any supported attribute 2534 (including all REQUIRED attributes) for which the Printer object 2535 does not know the value. Also the Printer object MUST respond with 2536 the 'no-value' for any supported attribute (including all REQUIRED 2537 attributes) for which the system administrator has not configured a 2538 value. See the description of the "out-of-band" values in the 2539 beginning of Section 4.1. 2541 Expires November 22, 2000 2543 3.2.6 Get-Jobs Operation 2545 This REQUIRED operation allows a client to retrieve the list of Job 2546 objects belonging to the target Printer object. The client may also 2547 supply a list of Job attribute names and/or attribute group names. A 2548 group of Job object attributes will be returned for each Job object that 2549 is returned. 2551 This operation is similar to the Get-Job-Attributes operation, except 2552 that this Get-Jobs operation returns attributes from possibly more than 2553 one object (see the description of Job attribute group names in section 2554 3.3.4). 2556 3.2.6.1 Get-Jobs Request 2558 The client submits the Get-Jobs request to a Printer object. 2560 The following groups of attributes are part of the Get-Jobs Request: 2562 Group 1: Operation Attributes 2564 Natural Language and Character Set: 2565 The "attributes-charset" and "attributes-natural-language" 2566 attributes as described in section 3.1.4.1. 2568 Target: 2569 The "printer-uri" (uri) operation attribute which is the target for 2570 this operation as described in section 3.1.5. 2572 Requesting User Name: 2573 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2574 by the client as described in section 8.3. 2576 "limit" (integer(1:MAX)): 2577 The client OPTIONALLY supplies this attribute. The Printer object 2578 MUST support this attribute. It is an integer value that determines 2579 the maximum number of jobs that a client will receive from the 2580 Printer even if "which-jobs" or "my-jobs" constrain which jobs are 2581 returned. The limit is a "stateless limit" in that if the value 2582 supplied by the client is 'N', then only the first 'N' jobs are 2583 returned in the Get-Jobs Response. There is no mechanism to allow 2584 for the next 'M' jobs after the first 'N' jobs. If the client does 2585 not supply this attribute, the Printer object responds with all 2586 applicable jobs. 2588 "requested-attributes" (1setOf keyword): 2589 The client OPTIONALLY supplies this attribute. The Printer object 2590 MUST support this attribute. It is a set of Job attribute names 2591 and/or attribute groups names in whose values the requester is 2592 interested. This set of attributes is returned for each Job object 2593 that is returned. The allowed attribute group names are the same 2594 as those defined in the Get-Job-Attributes operation in section 2595 3.3.4. If the client does not supply this attribute, the Printer 2597 Expires November 22, 2000 2598 MUST respond as if the client had supplied this attribute with two 2599 values: 'job-uri' and 'job-id'. 2601 "which-jobs" (type2 keyword): 2602 The client OPTIONALLY supplies this attribute. The Printer object 2603 MUST support this attribute. It indicates which Job objects MUST 2604 be returned by the Printer object. The values for this attribute 2605 are: 2607 'completed': This includes any Job object whose state is 2608 'completed', 'canceled', or 'aborted'. 2609 'not-completed': This includes any Job object whose state is 2610 'pending', 'processing', 'processing-stopped', or 'pending- 2611 held'. 2613 A Printer object MUST support both values. However, if the 2614 implementation does not keep jobs in the 'completed', 'canceled', 2615 and 'aborted' states, then it returns no jobs when the 'completed' 2616 value is supplied. 2618 If a client supplies some other value, the Printer object MUST copy 2619 the attribute and the unsupported value to the Unsupported 2620 Attributes response group, reject the request, and return the 2621 'client-error-attributes-or-values-not-supported' status code. 2623 If the client does not supply this attribute, the Printer object 2624 MUST respond as if the client had supplied the attribute with a 2625 value of 'not-completed'. 2627 "my-jobs" (boolean): 2628 The client OPTIONALLY supplies this attribute. The Printer object 2629 MUST support this attribute. It indicates whether jobs from all 2630 users or just the jobs submitted by the requesting user of this 2631 request MUST be returned by the Printer object. If the client does 2632 not supply this attribute, the Printer object MUST respond as if 2633 the client had supplied the attribute with a value of 'false', 2634 i.e., jobs from all users. The means for authenticating the 2635 requesting user and matching the jobs is described in section 8. 2637 3.2.6.2 Get-Jobs Response 2639 The Printer object returns all of the Job objects up to the number 2640 specified by the "limit" attribute that match the criteria as defined by 2641 the attribute values supplied by the client in the request. It is 2642 possible that no Job objects are returned since there may literally be 2643 no Job objects at the Printer, or there may be no Job objects that match 2644 the criteria supplied by the client. If the client requests any Job 2645 attributes at all, there is a set of Job Object Attributes returned for 2646 each Job object. 2648 It is not an error for the Printer to return 0 jobs. If the response 2649 returns 0 jobs because there are no jobs matching the criteria, and the 2650 request would have returned 1 or more jobs with a status code of 2652 Expires November 22, 2000 2653 'successful-ok' if there had been jobs matching the criteria, then the 2654 status code for 0 jobs MUST be 'successful-ok'. 2656 Group 1: Operation Attributes 2658 Status Message: 2659 In addition to the REQUIRED status code returned in every response, 2660 the response OPTIONALLY includes a "status-message" (text(255)) 2661 and/or a "detailed-status-message" (text(MAX)) operation attribute 2662 as described in sections 13 and 3.1.6. 2664 Natural Language and Character Set: 2665 The "attributes-charset" and "attributes-natural-language" 2666 attributes as described in section 3.1.4.2. 2668 Group 2: Unsupported Attributes 2670 See section 3.1.7 for details on returning Unsupported Attributes. 2672 The response NEED NOT contain the "requested-attributes" operation 2673 attribute with any supplied values (attribute keywords) that were 2674 requested by the client but are not supported by the IPP object. If 2675 the Printer object does include unsupported attributes referenced 2676 in "requested-attributes" and such attributes include group names, 2677 such as 'all', the unsupported attributes MUST NOT include 2678 attributes described in the standard but not supported by the 2679 implementation. 2681 Groups 3 to N: Job Object Attributes 2683 The Printer object responds with one set of Job Object Attributes 2684 for each returned Job object. The Printer object ignores (does not 2685 respond with) any requested attribute or value which is not 2686 supported or which is restricted by the security policy in force, 2687 including whether the requesting user is the user that submitted 2688 the job (job originating user) or not (see section 8). However, 2689 the Printer object MUST respond with the 'unknown' value for any 2690 supported attribute (including all REQUIRED attributes) for which 2691 the Printer object does not know the value, unless it would violate 2692 the security policy. See the description of the "out-of-band" 2693 values in the beginning of Section 4.1. 2695 Jobs are returned in the following order: 2697 - If the client requests all 'completed' Jobs (Jobs in the 2698 'completed', 'aborted', or 'canceled' states), then the Jobs 2699 are returned newest to oldest (with respect to actual 2700 completion time) 2701 - If the client requests all 'not-completed' Jobs (Jobs in the 2702 'pending', 'processing', 'pending-held', and 'processing- 2703 stopped' states), then Jobs are returned in relative 2704 chronological order of expected time to complete (based on 2705 whatever scheduling algorithm is configured for the Printer 2706 object). 2708 Expires November 22, 2000 2710 3.2.7 Pause-Printer Operation 2712 This OPTIONAL operation allows a client to stop the Printer object from 2713 scheduling jobs on all its devices. Depending on implementation, the 2714 Pause-Printer operation MAY also stop the Printer from processing the 2715 current job or jobs. Any job that is currently being printed is either 2716 stopped as soon as the implementation permits or is completed, depending 2717 on implementation. The Printer object MUST still accept create 2718 operations to create new jobs, but MUST prevent any jobs from entering 2719 the 'processing' state. 2721 If the Pause-Printer operation is supported, then the Resume-Printer 2722 operation MUST be supported, and vice-versa. 2724 The IPP Printer stops the current job(s) on its device(s) that were in 2725 the 'processing' or 'processing-stopped' states as soon as the 2726 implementation permits. If the implementation will take appreciable 2727 time to stop, the IPP Printer adds the 'moving-to-paused' value to the 2728 Printer object's "printer-state-reasons" attribute (see section 4.4.12). 2729 When the device(s) have all stopped, the IPP Printer transitions the 2730 Printer object to the 'stopped' state, removes the 'moving-to-paused' 2731 value, if present, and adds the 'paused' value to the Printer object's 2732 "printer-state-reasons" attribute. 2734 When the current job(s) complete that were in the 'processing' state, 2735 the IPP Printer transitions them to the 'completed' state. When the 2736 current job(s) stop in mid processing that were in the 'processing' 2737 state, the IPP Printer transitions them to the 'processing-stopped' 2738 state and adds the 'printer-stopped' value to the job's "job-state- 2739 reasons" attribute. 2741 For any jobs that are 'pending' or 'pending-held', the 'printer-stopped' 2742 value of the jobs' "job-state-reasons" attribute also applies. However, 2743 the IPP Printer NEED NOT update those jobs' "job-state-reasons" 2744 attributes and only need return the 'printer-stopped' value when those 2745 jobs are queried (so-called "lazy evaluation"). 2747 Whether the Pause-Printer operation affects jobs that were submitted to 2748 the device from other sources than the IPP Printer object in the same 2749 way that the Pause-Printer operation affects jobs that were submitted to 2750 the IPP Printer object using IPP, depends on implementation, i.e., on 2751 whether the IPP protocol is being used as a universal management 2752 protocol or just to manage IPP jobs, respectively. 2754 The IPP Printer MUST accept the request in any state and transition the 2755 Printer to the indicated new "printer-state" before returning as 2756 follows: 2758 Expires November 22, 2000 2759 Current New "printer IPP Printer's response status 2760 "printer- "printer- -state- code and action: 2761 state" state" reasons" 2763 'idle' 'stopped' 'paused' 'successful-ok' 2764 'processing' 'processing' 'moving- OPTION 1: 'successful-ok'; 2765 to- Later, when all output has 2766 paused' stopped, the "printer-state" 2767 becomes 'stopped', and the 2768 'paused' value replaces the 2769 'moving-to-paused' value in the 2770 "printer-state-reasons" 2771 attribute 2772 'processing' 'stopped' 'paused' OPTION 2: 'successful-ok'; 2773 all device output stopped 2774 immediately 2775 'stopped' 'stopped' 'paused' 'successful-ok' 2777 Access Rights: The authenticated user (see section 8.3) performing this 2778 operation must be an operator or administrator of the Printer object 2779 (see Sections 1 and 8.5). Otherwise, the IPP Printer MUST reject the 2780 operation and return: 'client-error-forbidden', 'client-error-not- 2781 authenticated', or 'client-error-not-authorized' as appropriate. 2783 3.2.7.1 Pause-Printer Request 2785 The following groups of attributes are part of the Pause-Printer 2786 Request: 2788 Group 1: Operation Attributes 2790 Natural Language and Character Set: 2791 The "attributes-charset" and "attributes-natural-language" 2792 attributes as described in section 3.1.4.1. 2794 Target: 2795 The "printer-uri" (uri) operation attribute which is the target for 2796 this operation as described in section 3.1.5. 2798 Requesting User Name: 2799 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2800 by the client as described in section 8.3. 2802 3.2.7.2 Pause-Printer Response 2804 The following groups of attributes are part of the Pause-Printer 2805 Response: 2807 Group 1: Operation Attributes 2809 Status Message: 2810 In addition to the REQUIRED status code returned in every response, 2811 the response OPTIONALLY includes a "status-message" (text(255)) 2812 and/or a "detailed-status-message" (text(MAX)) operation attribute 2813 as described in sections 13 and 3.1.6. 2815 Expires November 22, 2000 2817 Natural Language and Character Set: 2818 The "attributes-charset" and "attributes-natural-language" 2819 attributes as described in section 3.1.4.2. 2821 Group 2: Unsupported Attributes 2823 See section 3.1.7 for details on returning Unsupported Attributes. 2825 3.2.8 Resume-Printer Operation 2827 This operation allows a client to resume the Printer object scheduling 2828 jobs on all its devices. The Printer object MUST remove the 'paused' 2829 and 'moving-to-paused' values from the Printer object's "printer-state- 2830 reasons" attribute, if present. If there are no other reasons to keep a 2831 device paused (such as media-jam), the IPP Printer is free to transition 2832 itself to the 'processing' or 'idle' states, depending on whether there 2833 are jobs to be processed or not, respectively, and the device(s) resume 2834 processing jobs. 2836 If the Pause-Printer operation is supported, then the Resume-Printer 2837 operation MUST be supported, and vice-versa. 2839 The IPP Printer removes the 'printer-stopped' value from any job's "job- 2840 state-reasons" attributes contained in that Printer. 2842 The IPP Printer MUST accept the request in any state, transition the 2843 Printer object to the indicated new state as follows: 2845 Current New "printer- IPP Printer's response status code and 2846 "printer- state" action: 2847 state" 2849 'idle' 'idle' 'successful-ok' 2850 'processing 'processing' 'successful-ok' 2851 ' 2852 'stopped' 'processing' 'successful-ok'; 2853 when there are jobs to be processed 2854 'stopped' 'idle' 'successful-ok'; 2855 when there are no jobs to be processed. 2857 Access Rights: The authenticated user (see section 8.3) performing this 2858 operation must be an operator or administrator of the Printer object 2859 (see Sections 1 and 8.5). Otherwise, the IPP Printer MUST reject the 2860 operation and return: 'client-error-forbidden', 'client-error-not- 2861 authenticated', or 'client-error-not-authorized' as appropriate. 2863 The Resume-Printer Request and Resume-Printer Response have the same 2864 attribute groups and attributes as the Pause-Printer operation (see 2865 sections 3.2.7.1 and 3.2.7.2). 2867 Expires November 22, 2000 2868 3.2.9 Purge-Jobs Operation 2870 This OPTIONAL operation allows a client to remove all jobs from an IPP 2871 Printer object, regardless of their job states, including jobs in the 2872 Printer object's Job History (see Section 4.3.7.2). After a Purge-Jobs 2873 operation has been performed, a Printer object MUST return no jobs in 2874 subsequent Get-Job-Attributes and Get-Jobs responses (until new jobs are 2875 submitted). 2877 Whether the Purge-Jobs (and Get-Jobs) operation affects jobs that were 2878 submitted to the device from other sources than the IPP Printer object 2879 in the same way that the Purge-Jobs operation affects jobs that were 2880 submitted to the IPP Printer object using IPP, depends on 2881 implementation, i.e., on whether the IPP protocol is being used as a 2882 universal management protocol or just to manage IPP jobs, respectively. 2884 Note: if an operator wants to cancel all jobs without clearing out the 2885 Job History, the operator uses the Cancel-Job operation on each job 2886 instead of using the Purge-Jobs operation. 2888 The Printer object MUST accept this operation in any state and 2889 transition the Printer object to the 'idle' state. 2891 Access Rights: The authenticated user (see section 8.3) performing this 2892 operation must be an operator or administrator of the Printer object 2893 (see Sections 1 and 8.5). Otherwise, the IPP object MUST reject the 2894 operation and return: client-error-forbidden, client-error-not- 2895 authenticated, and client-error-not-authorized as appropriate. 2897 The Purge-Jobs Request and Purge-Jobs Response have the same attribute 2898 groups and attributes as the Pause-Printer operation (see sections 2899 3.2.7.1 and 3.2.7.2). 2901 3.3 Job Operations 2903 All Job operations are directed at Job objects. A client MUST always 2904 supply some means of identifying the Job object in order to identify the 2905 correct target of the operation. That job identification MAY either be 2906 a single Job URI or a combination of a Printer URI with a Job ID. The 2907 IPP object implementation MUST support both forms of identification for 2908 every job. 2910 3.3.1 Send-Document Operation 2912 This OPTIONAL operation allows a client to create a multi-document Job 2913 object that is initially "empty" (contains no documents). In the 2914 Create-Job response, the Printer object returns the Job object's URI 2915 (the "job-uri" attribute) and the Job object's 32-bit identifier (the 2916 "job-id" attribute). For each new document that the client desires to 2917 add, the client uses a Send-Document operation. Each Send-Document 2918 Request contains the entire stream of document data for one document. 2920 Expires November 22, 2000 2921 If the Printer supports this operation but does not support multiple 2922 documents per job, the Printer MUST reject subsequent Send-Document 2923 operations supplied with data and return the 'server-error-multiple- 2924 document-jobs-not-supported'. However, the Printer MUST accept the 2925 first document with a 'true' or 'false' value for the "last-document" 2926 operation attribute (see below), so that clients MAY always submit one 2927 document jobs with a 'false' value for "last-document" in the first 2928 Send-Document and a 'true' for "last-document" in the second Send- 2929 Document (with no data). 2931 Since the Create-Job and the send operations (Send-Document or Send-URI 2932 operations) that follow could occur over an arbitrarily long period of 2933 time for a particular job, a client MUST send another send operation 2934 within an IPP Printer defined minimum time interval after the receipt of 2935 the previous request for the job. If a Printer object supports the 2936 Create-Job and Send-Document operations, the Printer object MUST support 2937 the "multiple-operation-time-out" attribute (see section 4.4.31). This 2938 attribute indicates the minimum number of seconds the Printer object 2939 will wait for the next send operation before taking some recovery 2940 action. 2942 An IPP object MUST recover from an errant client that does not supply a 2943 send operation, sometime after the minimum time interval specified by 2944 the Printer object's "multiple-operation-time-out" attribute. Such 2945 recovery MAY include any of the following or other recovery actions: 2947 1. Assume that the Job is an invalid job, start the process of 2948 changing the job state to 'aborted', add the 'aborted-by-system' 2949 value to the job's "job-state-reasons" attribute (see section 2950 4.3.8), and clean up all resources associated with the Job. In 2951 this case, if another send operation is finally received, the 2952 Printer responds with an "client-error-not-possible" or "client- 2953 error-not-found" depending on whether or not the Job object is 2954 still around when the send operation finally arrives. 2955 2. Assume that the last send operation received was in fact the last 2956 document (as if the "last-document" flag had been set to 'true'), 2957 close the Job object, and proceed to process it (i.e., move the 2958 Job's state to 'pending'). 2959 3. Assume that the last send operation received was in fact the last 2960 document, close the Job, but move it to the 'pending-held' and add 2961 the 'submission-interrupted' value to the job's "job-state-reasons" 2962 attribute (see section 4.3.8). This action allows the user or an 2963 operator to determine whether to continue processing the Job by 2964 moving it back to the 'pending' state using the Release-Job 2965 operation (see section 3.3.6) or to cancel the job using the 2966 Cancel-Job operation (see section 3.3.3). 2968 Each implementation is free to decide the "best" action to take 2969 depending on local policy, whether any documents have been added, 2970 whether the implementation spools jobs or not, and/or any other piece 2971 of information available to it. If the choice is to abort the Job 2972 object, it is possible that the Job object may already have been 2973 processed to the point that some media sheet pages have been printed. 2975 Expires November 22, 2000 2976 Access Rights: The authenticated user (see section 8.3) performing this 2977 operation must either be the job owner (as determined in the Create-Job 2978 operation) or an operator or administrator of the Printer object (see 2979 Sections 1 and 8.5). Otherwise, the IPP object MUST reject the 2980 operation and return: 'client-error-forbidden', 'client-error-not- 2981 authenticated', or 'client-error-not-authorized' as appropriate. 2983 3.3.1.1 Send-Document Request 2985 The following attribute sets are part of the Send-Document Request: 2987 Group 1: Operation Attributes 2989 Natural Language and Character Set: 2990 The "attributes-charset" and "attributes-natural-language" 2991 attributes as described in section 3.1.4.1. 2993 Target: 2994 Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX))or 2995 (2) the "job-uri" (uri) operation attribute(s) which define the 2996 target for this operation as described in section 3.1.5. 2998 Requesting User Name: 2999 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 3000 by the client as described in section 8.3. 3002 "document-name" (name(MAX)): 3003 The client OPTIONALLY supplies this attribute. The Printer object 3004 MUST support this attribute. It contains the client supplied 3005 document name. The document name MAY be different than the Job 3006 name. It might be helpful, but NEED NOT be unique across multiple 3007 documents in the same Job. Typically, the client software 3008 automatically supplies the document name on behalf of the end user 3009 by using a file name or an application generated name. See the 3010 description of the "document-name" operation attribute in the 3011 Print-Job Request (section 3.2.1.1) for more information about this 3012 attribute. 3014 "compression" (type3 keyword) 3015 See the description of "compression" for the Print-Job operation in 3016 Section 3.2.1.1. 3018 "document-format" (mimeMediaType) : 3019 See the description of "document-format" for the Print-Job 3020 operation in Section 3.2.1.1. 3022 "document-natural-language" (naturalLanguage): 3023 The client OPTIONALLY supplies this attribute. The Printer object 3024 OPTIONALLY supports this attribute. This attribute specifies the 3025 natural language of the document for those document-formats that 3026 require a specification of the natural language in order to image 3027 the document unambiguously. There are no particular values 3028 required for the Printer object to support. 3030 Expires November 22, 2000 3032 "last-document" (boolean): 3033 The client MUST supply this attribute. The Printer object MUST 3034 support this attribute. It is a boolean flag that is set to 'true' 3035 if this is the last document for the Job, 'false' otherwise. 3037 Group 2: Document Content 3039 The client MUST supply the document data if the "last-document" 3040 flag is set to 'false'. However, since a client might not know 3041 that the previous document sent with a Send-Document (or Send-URI) 3042 operation was the last document (i.e., the "last-document" 3043 attribute was set to 'false'), it is legal to send a Send-Document 3044 request with no document data where the "last-document" flag is set 3045 to 'true'. Such a request MUST NOT increment the value of the Job 3046 object's "number-of-documents" attribute, since no real document 3047 was added to the job. It is not an error for a client to submit a 3048 job with no actual document data, i.e., only a single Create-Job 3049 and Send-Document request with a "last-document" operation 3050 attribute set to 'true' with no document data. 3052 3.3.1.2 Send-Document Response 3054 The following sets of attributes are part of the Send-Document Response: 3056 Group 1: Operation Attributes 3058 Status Message: 3059 In addition to the REQUIRED status code returned in every response, 3060 the response OPTIONALLY includes a "status-message" (text(255)) 3061 and/or a "detailed-status-message" (text(MAX)) operation attribute 3062 as described in sections 13 and 3.1.6. 3064 Natural Language and Character Set: 3065 The "attributes-charset" and "attributes-natural-language" 3066 attributes as described in section 3.1.4.2. 3068 Group 2: Unsupported Attributes 3070 See section 3.1.7 for details on returning Unsupported Attributes. 3072 Group 3: Job Object Attributes 3074 This is the same set of attributes as described in the Print-Job 3075 response (see section 3.2.1.2). 3077 3.3.2 Send-URI Operation 3079 This OPTIONAL operation is identical to the Send-Document operation (see 3080 section 3.3.1) except that a client MUST supply a URI reference 3081 ("document-uri" operation attribute) rather than the document data 3082 itself. If a Printer object supports this operation, clients can use 3083 both Send-URI or Send-Document operations to add new documents to an 3084 existing multi-document Job object. However, if a client needs to 3085 indicate that the previous Send-URI or Send-Document was the last 3087 Expires November 22, 2000 3088 document, the client MUST use the Send-Document operation with no 3089 document data and the "last-document" flag set to 'true' (rather than 3090 using a Send-URI operation with no "document-uri" operation attribute). 3092 If a Printer object supports this operation, it MUST also support the 3093 Print-URI operation (see section 3.2.2). 3095 The Printer object MUST validate the syntax and URI scheme of the 3096 supplied URI before returning a response, just as in the Print-URI 3097 operation. The IPP Printer MAY validate the accessibility of the 3098 document as part of the operation or subsequently (see section 3.2.2). 3100 3.3.3 Cancel-Job Operation 3102 This REQUIRED operation allows a client to cancel a Print Job from the 3103 time the job is created up to the time it is completed, canceled, or 3104 aborted. Since a Job might already be printing by the time a Cancel-Job 3105 is received, some media sheet pages might be printed before the job is 3106 actually terminated. 3108 The IPP object MUST accept or reject the request based on the job's 3109 current state and transition the job to the indicated new state as 3110 follows: 3112 Current "job- New "job- IPP object's response status 3113 state" state" code and action: 3115 'pending' 'canceled' 'successful-ok' 3116 'pending-held' 'canceled' 'successful-ok' 3117 'processing' 'canceled' 'successful-ok' 3118 'processing' 'processing' 'successful-ok' See Rule 1 3119 'processing' 'processing' 'client-error-not-possible' 3120 See Rule 2 3121 'processing- 'canceled' 'successful-ok' 3122 stopped' 3123 'processing- 'processing- 'successful-ok' See Rule 1 3124 stopped' stopped' 3125 'processing- 'processing- 'client-error-not-possible' 3126 stopped' stopped' See Rule 2 3127 'completed' 'completed' 'client-error-not-possible' 3128 'canceled' 'canceled' 'client-error-not-possible' 3129 'aborted' 'aborted' 'client-error-not-possible' 3131 Rule 1: If the implementation requires some measurable time to cancel 3132 the job in the 'processing' or 'processing-stopped' job states, the IPP 3133 object MUST add the 'processing-to-stop-point' value to the job's "job- 3134 state-reasons" attribute and then transition the job to the 'canceled' 3135 state when the processing ceases (see section 4.3.8). 3137 Rule 2: If the Job object already has the 'processing-to-stop-point' 3138 value in its "job-state-reasons" attribute, then the Printer object MUST 3139 reject a Cancel-Job operation. 3141 Expires November 22, 2000 3142 Access Rights: The authenticated user (see section 8.3) performing this 3143 operation must either be the job owner or an operator or administrator 3144 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3145 object MUST reject the operation and return: 'client-error-forbidden', 3146 'client-error-not-authenticated', or 'client-error-not-authorized' as 3147 appropriate. 3149 3.3.3.1 Cancel-Job Request 3151 The following groups of attributes are part of the Cancel-Job Request: 3153 Group 1: Operation Attributes 3155 Natural Language and Character Set: 3156 The "attributes-charset" and "attributes-natural-language" 3157 attributes as described in section 3.1.4.1. 3159 Target: 3160 Either (1) the "printer-uri" (uri) plus "job-id" 3161 (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) 3162 which define the target for this operation as described in section 3163 3.1.5. 3165 Requesting User Name: 3166 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 3167 by the client as described in section 8.3. 3169 "message" (text(127)): 3170 The client OPTIONALLY supplies this attribute. The Printer object 3171 OPTIONALLY supports this attribute. It is a message to the 3172 operator. This "message" attribute is not the same as the "job- 3173 message-from-operator" attribute. That attribute is used to report 3174 a message from the operator to the end user that queries that 3175 attribute. This "message" operation attribute is used to send a 3176 message from the client to the operator along with the operation 3177 request. It is an implementation decision of how or where to 3178 display this message to the operator (if at all). 3180 3.3.3.2 Cancel-Job Response 3182 The following sets of attributes are part of the Cancel-Job Response: 3184 Group 1: Operation Attributes 3186 Status Message: 3187 In addition to the REQUIRED status code returned in every response, 3188 the response OPTIONALLY includes a "status-message" (text(255)) 3189 and/or a "detailed-status-message" (text(MAX)) operation attribute 3190 as described in sections 13 and 3.1.6. 3192 Natural Language and Character Set: 3193 The "attributes-charset" and "attributes-natural-language" 3194 attributes as described in section 3.1.4.2. 3196 Expires November 22, 2000 3198 Group 2: Unsupported Attributes 3200 See section 3.1.7 for details on returning Unsupported Attributes. 3202 Once a successful response has been sent, the implementation guarantees 3203 that the Job will eventually end up in the 'canceled' state. Between the 3204 time of the Cancel-Job operation is accepted and when the job enters the 3205 'canceled' job-state (see section 4.3.7), the "job-state-reasons" 3206 attribute SHOULD contain the 'processing-to-stop-point' value which 3207 indicates to later queries that although the Job might still be 3208 'processing', it will eventually end up in the 'canceled' state, not the 3209 'completed' state. 3211 3.3.4 Get-Job-Attributes Operation 3213 This REQUIRED operation allows a client to request the values of 3214 attributes of a Job object and it is almost identical to the Get- 3215 Printer-Attributes operation (see section 3.2.5). The only differences 3216 are that the operation is directed at a Job object rather than a Printer 3217 object, there is no "document-format" operation attribute used when 3218 querying a Job object, and the returned attribute group is a set of Job 3219 object attributes rather than a set of Printer object attributes. 3221 For Jobs, the possible names of attribute groups are: 3223 - 'job-template': the subset of the Job Template attributes that 3224 apply to a Job object (the first column of the table in Section 3225 4.2) that the implementation supports for Job objects. 3226 - 'job-description': the subset of the Job Description attributes 3227 specified in Section 4.3 that the implementation supports for Job 3228 objects. 3229 - 'all': the special group 'all' that includes all attributes that 3230 the implementation supports for Job objects. 3232 Since a client MAY request specific attributes or named groups, there is 3233 a potential that there is some overlap. For example, if a client 3234 requests, 'job-name' and 'job-description', the client is actually 3235 requesting the "job-name" attribute once by naming it explicitly, and 3236 once by inclusion in the 'job-description' group. In such cases, the 3237 Printer object NEED NOT return the attribute only once in the response 3238 even if it is requested multiple times. The client SHOULD NOT request 3239 the same attribute in multiple ways. 3241 It is NOT REQUIRED that a Job object support all attributes belonging to 3242 a group (since some attributes are OPTIONAL). However it is REQUIRED 3243 that each Job object support all group names. 3245 Expires November 22, 2000 3246 3.3.4.1 Get-Job-Attributes Request 3248 The following groups of attributes are part of the Get-Job-Attributes 3249 Request when the request is directed at a Job object: 3251 Group 1: Operation Attributes 3253 Natural Language and Character Set: 3254 The "attributes-charset" and "attributes-natural-language" 3255 attributes as described in section 3.1.4.1. 3257 Target: 3258 Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) 3259 or (2) the "job-uri" (uri) operation attribute(s) which define the 3260 target for this operation as described in section 3.1.5. 3262 Requesting User Name: 3263 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 3264 by the client as described in section 8.3. 3266 "requested-attributes" (1setOf keyword) : 3267 The client OPTIONALLY supplies this attribute. The IPP object MUST 3268 support this attribute. It is a set of attribute names and/or 3269 attribute group names in whose values the requester is interested. 3270 If the client omits this attribute, the IPP object MUST respond as 3271 if this attribute had been supplied with a value of 'all'. 3273 3.3.4.2 Get-Job-Attributes Response 3275 The Printer object returns the following sets of attributes as part of 3276 the Get-Job-Attributes Response: 3278 Group 1: Operation Attributes 3280 Status Message: 3281 In addition to the REQUIRED status code returned in every response, 3282 the response OPTIONALLY includes a "status-message" (text(255)) 3283 and/or a "detailed-status-message" (text(MAX)) operation attribute 3284 as described in sections 13 and 3.1.6. 3286 Natural Language and Character Set: 3287 The "attributes-charset" and "attributes-natural-language" 3288 attributes as described in section 3.1.4.2. The "attributes- 3289 natural-language" MAY be the natural language of the Job object, 3290 rather than the one requested. 3292 Group 2: Unsupported Attributes 3294 See section 3.1.7 for details on returning Unsupported Attributes. 3296 The response NEED NOT contain the "requested-attributes" operation 3297 attribute with any supplied values (attribute keywords) that were 3298 requested by the client but are not supported by the IPP object. If 3300 Expires November 22, 2000 3301 the Printer object does include unsupported attributes referenced 3302 in "requested-attributes" and such attributes include group names, 3303 such as 'all', the unsupported attributes MUST NOT include 3304 attributes described in the standard but not supported by the 3305 implementation. 3307 Group 3: Job Object Attributes 3309 This is the set of requested attributes and their current values. 3310 The IPP object ignores (does not respond with) any requested 3311 attribute or value which is not supported or which is restricted by 3312 the security policy in force, including whether the requesting user 3313 is the user that submitted the job (job originating user) or not 3314 (see section 8). However, the IPP object MUST respond with the 3315 'unknown' value for any supported attribute (including all REQUIRED 3316 attributes) for which the IPP object does not know the value, 3317 unless it would violate the security policy. See the description 3318 of the "out-of-band" values in the beginning of Section 4.1. 3320 3.3.5 Hold-Job Operation 3322 This OPTIONAL operation allows a client to hold a pending job in the 3323 queue so that it is not eligible for scheduling. If the Hold-Job 3324 operation is supported, then the Release-Job operation MUST be 3325 supported, and vice-versa. The OPTIONAL "job-hold-until" operation 3326 attribute allows a client to specify whether to hold the job 3327 indefinitely or until a specified time period, if supported. 3329 The IPP object MUST accept or reject the request based on the job's 3330 current state and transition the job to the indicated new state as 3331 follows: 3333 Current "job- New "job-state" IPP object's response status 3334 state" code and action: 3336 'pending' 'pending-held' 'successful-ok' See Rule 1 3337 'pending' 'pending' 'successful-ok' See Rule 2 3338 'pending-held' 'pending-held' 'successful-ok' See Rule 1 3339 'pending-held' 'pending' 'successful-ok' See Rule 2 3340 'processing' 'processing' 'client-error-not-possible' 3341 'processing- 'processing- 'client-error-not-possible' 3342 stopped' stopped' 3343 'completed' 'completed' 'client-error-not-possible' 3344 'canceled' 'canceled' 'client-error-not-possible' 3345 'aborted' 'aborted' 'client-error-not-possible' 3347 Rule 1: If the implementation supports multiple reasons for a job to be 3348 in the 'pending-held' state, the IPP object MUST add the 'job-hold- 3349 until-specified' value to the job's "job-state-reasons" attribute. 3351 Rule 2: If the IPP object supports the "job-hold-until" operation 3352 attribute, but the specified time period has already started (or is the 3353 'no-hold' value) and there are no other reasons to hold the job, the IPP 3354 object MUST make the job be a candidate for processing immediately (see 3355 Section 4.2.2) by putting the job in the 'pending' state. 3357 Expires November 22, 2000 3358 Note: In order to keep the Hold-Job operation simple, such a request is 3359 rejected when the job is in the 'processing' or 'processing-stopped' 3360 states. If an operation is needed to hold jobs while in these states, 3361 it will be added as an additional operation, rather than overloading the 3362 Hold-Job operation. Then it is clear to clients by querying the Printer 3363 object's "operations-supported" (see Section 4.4.15) and the Job 3364 object's "job-state" (see Section 4.3.7) attributes which operations are 3365 possible. 3367 Access Rights: The authenticated user (see section 8.3) performing this 3368 operation must either be the job owner or an operator or administrator 3369 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3370 object MUST reject the operation and return: 'client-error-forbidden', 3371 'client-error-not-authenticated', or 'client-error-not-authorized' as 3372 appropriate. 3374 3.3.5.1 Hold-Job Request 3376 The groups and operation attributes are the same as for a Cancel-Job 3377 request (see section 3.3.3.1), with the addition of the following Group 3378 1 Operation attribute: 3380 "job-hold-until" (type3 keyword | name(MAX)): 3381 The client OPTIONALLY supplies this Operation attribute. The IPP 3382 object MUST support this operation attribute in a Hold-Job request, 3383 if it supports the "job-hold-until" Job template attribute in 3384 create operations. See section 4.2.2. The IPP object SHOULD 3385 support the "job-hold-until" Job Template attribute for use in job 3386 create operations with at least the 'indefinite' value, if it 3387 supports the Hold-Job operation. Otherwise, a client cannot create 3388 a job and hold it immediately (without picking some supported time 3389 period in the future). 3391 If supplied and supported as specified in the Printer's "job-hold- 3392 until-supported" attribute, the IPP object copies the supplied 3393 operation attribute to the Job object, replacing the job's previous 3394 "job-hold-until" attribute, if present, and makes the job a 3395 candidate for scheduling during the supplied named time period. 3397 If supplied, but either the "job-hold-until" Operation attribute 3398 itself or the value supplied is not supported, the IPP object 3399 accepts the request, returns the unsupported attribute or value in 3400 the Unsupported Attributes Group according to section 3.1.7, 3401 returns the 'successful-ok-ignored-or-substituted-attributes, and 3402 holds the job indefinitely until a client performs a subsequent 3403 Release-Job operation. 3405 If the client (1) supplies a value that specifies a time period 3406 that has already started or the 'no-hold' value (meaning don't hold 3407 the job) and (2) the IPP object supports the "job-hold-until" 3408 operation attribute and there are no other reasons to hold the job, 3409 the IPP object MUST accept the operation and make the job be a 3410 candidate for processing immediately (see Section 4.2.2). 3412 Expires November 22, 2000 3413 If the client does not supply a "job-hold-until" Operation 3414 attribute in the request, the IPP object MUST populate the job 3415 object with a "job-hold-until" attribute with the 'indefinite' 3416 value (if IPP object supports the "job-hold-until" attribute) and 3417 hold the job indefinitely, until a client performs a Release-Job 3418 operation. 3420 3.3.5.2 Hold-Job Response 3422 The groups and attributes are the same as for a Cancel-Job response (see 3423 section 3.3.3.2). 3425 3.3.6 Release-Job Operation 3427 This OPTIONAL operation allows a client to release a previously held job 3428 so that it is again eligible for scheduling. If the Hold-Job operation 3429 is supported, then the Release-Job operation MUST be supported, and 3430 vice-versa. 3432 This operation removes the "job-hold-until" job attribute, if present, 3433 from the job object that had been supplied in the create or most recent 3434 Hold-Job or Restart-Job operation and removes its effect on the job. 3435 The IPP object MUST remove the 'job-hold-until-specified' value from the 3436 job's "job-state-reasons" attribute, if present. See section 4.3.8. 3438 The IPP object MUST accept or reject the request based on the job's 3439 current state and transition the job to the indicated new state as 3440 follows: 3442 Current "job- New "job-state" IPP object's response status 3443 state" code and action: 3445 'pending' 'pending' 'successful-ok' 3446 No effect on the job. 3447 'pending-held' 'pending-held' 'successful-ok' See Rule 1 3448 'pending-held' 'pending' 'successful-ok' 3449 'processing' 'processing' 'successful-ok' 3450 No effect on the job. 3451 'processing- 'processing- 'successful-ok' 3452 stopped' stopped' No effect on the job. 3453 'completed' 'completed' 'client-error-not-possible' 3454 'canceled' 'canceled' 'client-error-not-possible' 3455 'aborted' 'aborted' 'client-error-not-possible' 3457 Rule 1: If there are other reasons to keep the job in the 'pending- 3458 held' state, such as 'resources-are-not-ready', the job remains in the 3459 'pending-held' state. Thus the 'pending-held' state is not just for 3460 jobs that have the 'job-hold-until' applied to them, but are for any 3461 reason to keep the job from being a candidate for scheduling and 3462 processing, such as 'resources-are-not-ready'. See the "job-hold-until" 3463 attribute (section 4.2.2). 3465 Access Rights: The authenticated user (see section 8.3) performing this 3466 operation must either be the job owner or an operator or administrator 3468 Expires November 22, 2000 3469 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3470 object MUST reject the operation and return: 'client-error-forbidden', 3471 'client-error-not-authenticated', or 'client-error-not-authorized' as 3472 appropriate. 3474 The Release-Job Request and Release-Job Response have the same attribute 3475 groups and attributes as the Cancel-Job operation (see section 3.3.3.1 3476 and 3.3.3.2). 3478 3.3.7 Restart-Job Operation 3480 This OPTIONAL operation allows a client to restart a job that is 3481 retained in the queue after processing has completed (see section 3482 4.3.7.2). 3484 The job is moved to the 'pending' or 'pending-held' job state and 3485 restarts at the beginning on the same IPP Printer object with the same 3486 attribute values. If any of the documents in the job were passed by 3487 reference (Print-URI or Send-URI), the Printer MUST re-fetch the data, 3488 since the semantics of Restart-Job are to repeat all Job processing. 3489 The Job Description attributes that accumulate job progress, such as 3490 "job-impressions-completed", "job-media-sheets-completed", and "job-k- 3491 octets-processed", MUST be reset to 0 so that they give an accurate 3492 record of the job from its restart point. The job object MUST continue 3493 to use the same "job-uri" and "job-id" attribute values. 3495 Note: If in the future an operation is needed that does not reset the 3496 job progress attributes, then a new operation will be defined which 3497 makes a copy of the job, assigns a new "job-uri" and "job-id" to the 3498 copy and resets the job progress attributes in the new copy only. 3500 The IPP object MUST accept or reject the request based on the job's 3501 current state, transition the job to the indicated new state as follows: 3503 Expires November 22, 2000 3504 Current "job- New "job-state" IPP object's response status 3505 state" code and action: 3507 'pending' 'pending' 'client-error-not-possible' 3508 'pending-held' 'pending-held' 'client-error-not-possible' 3509 'processing' 'processing' 'client-error-not-possible' 3510 'processing- 'processing- 'client-error-not-possible' 3511 stopped' stopped' 3512 'completed' 'pending' or 'successful-ok' - job is started 3513 'pending-held' over. 3514 'completed' 'completed' 'client-error-not-possible' - 3515 see Rule 1 3516 'canceled' 'pending' or 'successful-ok' - job is started 3517 'pending-held' over. 3518 'canceled' 'canceled' 'client-error-not-possible' - 3519 see Rule 1 3520 'aborted' 'pending' or 'successful-ok' - job is started 3521 'pending-held' over. 3522 'aborted' 'aborted' 'client-error-not-possible' - 3523 see Rule 1 3525 Rule 1: If the Job Retention Period has expired for the job in this 3526 state, then the IPP object rejects the operation. See section 4.3.7.2. 3528 Note: In order to prevent a user from inadvertently restarting a job in 3529 the middle, the Restart-Job request is rejected when the job is in the 3530 'processing' or 'processing-stopped' states. If in the future an 3531 operation is needed to hold or restart jobs while in these states, it 3532 will be added as an additional operation, rather than overloading the 3533 Restart-Job operation, so that it is clear that the user intended that 3534 the current job not be completed. 3536 Access Rights: The authenticated user (see section 8.3) performing this 3537 operation must either be the job owner or an operator or administrator 3538 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3539 object MUST reject the operation and return: 'client-error-forbidden', 3540 'client-error-not-authenticated', or 'client-error-not-authorized' as 3541 appropriate. 3543 3.3.7.1 Restart-Job Request 3545 The groups and attributes are the same as for a Cancel-Job request (see 3546 section 3.3.3.1), with the addition of the following Group 1 Operation 3547 attribute: 3549 "job-hold-until" (type3 keyword | name(MAX)): 3550 The client OPTIONALLY supplies this attribute. The IPP object MUST 3551 support this Operation attribute in a Restart-Job request, if it 3552 supports the "job-hold-until" Job Template attribute in create 3553 operations. See section 4.2.2. Otherwise, the IPP object NEED NOT 3554 support the "job-hold-until" Operation attribute in a Restart-Job 3555 request. 3557 Expires November 22, 2000 3558 If supplied and supported as specified in the Printer's "job-hold- 3559 until-supported" attribute, the IPP object copies the supplied 3560 Operation attribute to the Job object, replacing the job's previous 3561 "job-hold-until" attribute, if present, and makes the job a 3562 candidate for scheduling during the supplied named time period. 3563 See section 4.2.2. 3565 If supplied, but the value is not supported, the IPP object accepts 3566 the request, returns the unsupported attribute or value in the 3567 Unsupported Attributes Group according to section 3.1.7, returns 3568 the 'successful-ok-ignored-or-substituted-attributes' status code, 3569 and holds the job indefinitely until a client performs a subsequent 3570 Release-Job operation. 3572 If supplied, but the "job-hold-until" Operation attribute itself is 3573 not supported, the IPP object accepts the request, returns the 3574 unsupported attribute with the out-of-band 'unsupported' value in 3575 the Unsupported Attributes Group according to section 3.1.7, 3576 returns the 'successful-ok-ignored-or-substituted-attributes' 3577 status code, and restarts the job, i.e., ignores the "job-hold- 3578 until" attribute. 3580 If the client (1) supplies a value that specifies a time period 3581 that has already started or the 'no-hold' value (meaning don't hold 3582 the job) and (2) the IPP object supports the "job-hold-until" 3583 operation attribute and there are no other reasons to hold the job, 3584 the IPP object makes the job a candidate for processing immediately 3585 (see Section 4.2.2). 3587 If the client does not supply a "job-hold-until" operation 3588 attribute in the request, the IPP object removes the "job-hold- 3589 until" attribute, if present, from the job. If there are no other 3590 reasons to hold the job, the Restart-Job operation makes the job a 3591 candidate for processing immediately (see Section 4.2.2). 3593 3.3.7.2 Restart-Job Response 3595 The groups and attributes are the same as for a Cancel-Job response (see 3596 section 3.3.3.2). 3598 Note: In the future an OPTIONAL Modify-Job or Set-Job-Attributes 3599 operation may be specified that allows the client to modify other 3600 attributes before releasing the restarted job. 3602 4. Object Attributes 3604 This section describes the attributes with their corresponding attribute 3605 syntaxes and values that are part of the IPP model. The sections below 3606 show the objects and their associated attributes which are included 3607 within the scope of this protocol. Many of these attributes are derived 3608 from other relevant documents: 3610 Expires November 22, 2000 3611 - Document Printing Application (DPA) [ISO10175] 3612 - RFC 1759 Printer MIB [RFC1759] 3614 Each attribute is uniquely identified in this document using a "keyword" 3615 (see section 12.2.1) which is the name of the attribute. The keyword is 3616 included in the section header describing that attribute. 3618 Note: Not only are keywords used to identify attributes, but one of the 3619 attribute syntaxes described below is "keyword" so that some attributes 3620 have keyword values. Therefore, these attributes are defined as having 3621 an attribute syntax that is a set of keywords. 3623 4.1 Attribute Syntaxes 3625 This section defines the basic attribute syntax types that all clients 3626 and IPP objects MUST be able to accept in responses and accept in 3627 requests, respectively. Each attribute description in sections 3 and 4 3628 includes the name of attribute syntax(es) in the heading (in 3629 parentheses). A conforming implementation of an attribute MUST include 3630 the semantics of the attribute syntax(es) so identified. Section 6.3 3631 describes how the protocol can be extended with new attribute syntaxes. 3633 The attribute syntaxes are specified in the following sub-sections, 3634 where the sub-section heading is the keyword name of the attribute 3635 syntax inside the single quotes. In operation requests and responses 3636 each attribute value MUST be represented as one of the attribute 3637 syntaxes specified in the sub-section heading for the attribute. In 3638 addition, the value of an attribute in a response (but not in a request) 3639 MAY be one of the "out-of-band" values whose special encoding rules are 3640 defined in the "Encoding and Transport" document [IPP-PRO]. Standard 3641 "out-of-band" values are: 3643 'unknown': The attribute is supported by the IPP object, but the 3644 value is unknown to the IPP object for some reason. 3645 'unsupported': The attribute is unsupported by the IPP object. This 3646 value MUST be returned only as the value of an attribute in the 3647 Unsupported Attributes Group. 3648 'no-value': The attribute is supported by the Printer object, but the 3649 administrator has not yet configured a value. 3651 All attributes in a request MUST have one or more values as defined in 3652 Sections 4.2 to 4.4. Thus clients MUST NOT supply attributes with "out- 3653 of-band" values for operations defined in this document. All attributes 3654 in a response MUST have one or more values as defined in Sections 4.2 to 3655 4.4 or a single "out-of-band" value. 3657 Most attributes are defined to have a single attribute syntax. However, 3658 a few attributes (e.g., "job-sheet", "media", "job-hold-until") are 3659 defined to have several attribute syntaxes, depending on the value. 3660 These multiple attribute syntaxes are separated by the "|" character in 3661 the sub-section heading to indicate the choice. Since each value MUST 3662 be tagged as to its attribute syntax in the protocol, a single-valued 3664 Expires November 22, 2000 3665 attribute instance may have any one of its attribute syntaxes and a 3666 multi-valued attribute instance may have a mixture of its defined 3667 attribute syntaxes. 3669 4.1.1 'text' 3671 A text attribute is an attribute whose value is a sequence of zero or 3672 more characters encoded in a maximum of 1023 ('MAX') octets. MAX is the 3673 maximum length for each value of any text attribute. However, if an 3674 attribute will always contain values whose maximum length is much less 3675 than MAX, the definition of that attribute will include a qualifier that 3676 defines the maximum length for values of that attribute. For example: 3677 the "printer-location" attribute is specified as "printer-location 3678 (text(127))". In this case, text values for "printer-location" MUST NOT 3679 exceed 127 octets; if supplied with a longer text string via some 3680 external interface (other than the protocol), implementations are free 3681 to truncate to this shorter length limitation. 3683 In this document, all text attributes are defined using the 'text' 3684 syntax. However, 'text' is used only for brevity; the formal 3685 interpretation of 'text' is: 'textWithoutLanguage | textWithLanguage'. 3686 That is, for any attribute defined in this document using the 'text' 3687 attribute syntax, all IPP objects and clients MUST support both the 3688 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes. 3689 However, in actual usage and protocol execution, objects and clients 3690 accept and return only one of the two syntax per attribute. The syntax 3691 'text' never appears "on-the-wire". 3693 Both 'textWithoutLanguage' and 'textWithLanguage' are needed to support 3694 the real world needs of interoperability between sites and systems that 3695 use different natural languages as the basis for human communication. 3696 Generally, one natural language applies to all text attributes in a 3697 given request or response. The language is indicated by the "attributes- 3698 natural-language" operation attribute defined in section 3.1.4 or 3699 "attributes-natural-language" job attribute defined in section 4.3.20, 3700 and there is no need to identify the natural language for each text 3701 string on a value-by-value basis. In these cases, the attribute syntax 3702 'textWithoutLanguage' is used for text attributes. In other cases, the 3703 client needs to supply or the Printer object needs to return a text 3704 value in a natural language that is different from the rest of the text 3705 values in the request or response. In these cases, the client or 3706 Printer object uses the attribute syntax 'textWithLanguage' for text 3707 attributes (this is the Natural Language Override mechanism described in 3708 section 3.1.4). 3710 The 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes are 3711 described in more detail in the following sections. 3713 4.1.1.1 'textWithoutLanguage' 3715 The 'textWithoutLanguage' syntax indicates a value that is sequence of 3716 zero or more characters encoded in a maximum of 1023 (MAX) octets. 3717 Text strings are encoded using the rules of some charset. The Printer 3719 Expires November 22, 2000 3720 object MUST support the UTF-8 charset [RFC2279] and MAY support 3721 additional charsets to represent 'text' values, provided that the 3722 charsets are registered with IANA [IANA-CS]. See Section 4.1.7 for the 3723 definition of the 'charset' attribute syntax, including restricted 3724 semantics and examples of charsets. 3726 4.1.1.2 'textWithLanguage' 3728 The 'textWithLanguage' attribute syntax is a compound attribute syntax 3729 consisting of two parts: a 'textWithoutLanguage' part encoded in a 3730 maximum of 1023 (MAX) octets plus an additional 'naturalLanguage' (see 3731 section 4.1.8) part that overrides the natural language in force. The 3732 'naturalLanguage' part explicitly identifies the natural language that 3733 applies to the text part of that value and that value alone. For any 3734 give text attribute, the 'textWithoutLanguage' part is limited to the 3735 maximum length defined for that 'text' attribute, and the 3736 'naturalLanguage' part is always limited to 63 (additional) octets. 3737 Using the 'textWithLanguage' attribute syntax rather than the normal 3738 'textWithoutLanguage' syntax is the so-called Natural Language Override 3739 mechanism and MUST be supported by all IPP objects and clients. 3741 If the attribute is multi-valued (1setOf text), then the 3742 'textWithLanguage' attribute syntax MUST be used to explicitly specify 3743 each attribute value whose natural language needs to be overridden. 3744 Other values in a multi-valued 'text' attribute in a request or a 3745 response revert to the natural language of the operation attribute. 3747 In a create request, the Printer object MUST accept and store with the 3748 Job object any natural language in the "attributes-natural-language" 3749 operation attribute, whether the Printer object supports that natural 3750 language or not. Furthermore, the Printer object MUST accept and store 3751 any 'textWithLanguage' attribute value, whether the Printer object 3752 supports that natural language or not. These requirements are 3753 independent of the value of the "ipp-attribute-fidelity" operation 3754 attribute that the client MAY supply. 3756 Example: If the client supplies the "attributes-natural-language" 3757 operation attribute with the value: 'en' indicating English, but the 3758 value of the "job-name" attribute is in French, the client MUST use the 3759 'textWithLanguage' attribute syntax with the following two values: 3761 'fr': Natural Language Override indicating French 3762 'Rapport Mensuel': the job name in French 3764 See the "Encoding and Transport" document [IPP-PRO] section 3.11 for the 3765 encoding of the two parts and Appendix A for a detailed example of the 3766 'textWithLanguage' attribute syntax. 3768 4.1.2 'name' 3770 This syntax type is used for user-friendly strings, such as a Printer 3771 name, that, for humans, are more meaningful than identifiers. Names are 3772 never translated from one natural language to another. The 'name' 3774 Expires November 22, 2000 3775 attribute syntax is essentially the same as 'text', including the 3776 REQUIRED support of UTF-8 except that the sequence of characters is 3777 limited so that its encoded form MUST NOT exceed 255 (MAX) octets. 3779 Also like 'text', 'name' is really an abbreviated notation for either 3780 'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP objects 3781 and clients MUST support both the 'nameWithoutLanguage' and 3782 'nameWithLanguage' attribute syntaxes. However, in actual usage and 3783 protocol execution, objects and clients accept and return only one of 3784 the two syntax per attribute. The syntax 'name' never appears "on-the- 3785 wire". 3787 Only the 'text' and 'name' attribute syntaxes permit the Natural 3788 Language Override mechanism. 3790 Some attributes are defined as 'type3 keyword | name'. These attributes 3791 support values that are either type3 keywords or names. This dual- 3792 syntax mechanism enables a site administrator to extend these attributes 3793 to legally include values that are locally defined by the site 3794 administrator. Such names are not registered with IANA. 3796 4.1.2.1 'nameWithoutLanguage' 3798 The nameWithoutLanguage' syntax indicates a value that is sequence of 3799 zero or more characters encoded in a maximum of 255 (MAX) octets. 3801 4.1.2.2 'nameWithLanguage' 3803 The 'nameWithLanguage' attribute syntax is a compound attribute syntax 3804 consisting of two parts: a 'nameWithoutLanguage' part encoded in a 3805 maximum of 1023 (MAX) octets plus an additional 'naturalLanguage' (see 3806 section 4.1.8) part that overrides the natural language in force. The 3807 'naturalLanguage' part explicitly identifies the natural language that 3808 applies to that name value and that name value alone. For any give text 3809 attribute, the 'textWithoutLanguage' part is limited to the maximum 3810 length defined for that 'text' attribute, and the 'naturalLanguage' part 3811 is always limited to 63 (additional) octets. Using the 3812 'textWithLanguage' attribute syntax rather than the normal 3813 'textWithoutLanguage' syntax is the so-called Natural Language Override 3814 mechanism and MUST be supported by all IPP objects and clients. 3816 The 'nameWithLanguage' attribute syntax behaves the same as the 3817 'textWithLanguage' syntax. Using the 'textWithLanguage' attribute 3818 syntax rather than the normal 'textWithoutLanguage' syntax is the so- 3819 called Natural Language Override mechanism and MUST be supported by all 3820 IPP objects and clients. If a name is in a language that is different 3821 than the rest of the object or operation, then this 'nameWithLanguage' 3822 syntax is used rather than the generic 'nameWithoutLanguage' syntax. 3824 If the attribute is multi-valued (1setOf text), then the 3825 'nameWithLanguage' attribute syntax MUST be used to explicitly specify 3826 each attribute value whose natural language needs to be overridden. 3828 Expires November 22, 2000 3829 Other values in a multi-valued 'name' attribute in a request or a 3830 response revert to the natural language of the operation attribute. 3832 In a create request, the Printer object MUST accept and store with the 3833 Job object any natural language in the "attributes-natural-language" 3834 operation attribute, whether the Printer object supports that natural 3835 language or not. Furthermore, the Printer object MUST accept and store 3836 any 'nameWithLanguage' attribute value, whether the Printer object 3837 supports that natural language or not. These requirements are 3838 independent of the value of the "ipp-attribute-fidelity" operation 3839 attribute that the client MAY supply. 3841 Example: If the client supplies the "attributes-natural-language" 3842 operation attribute with the value: 'en' indicating English, but the 3843 "printer-name" attribute is in German, the client MUST use the 3844 'nameWithLanguage' attribute syntax as follows: 3846 'de': Natural Language Override indicating German 3847 'Farbdrucker': the Printer name in German 3849 See the "Encoding and Transport" document [IPP-PRO] section 3.11 for the 3850 encoding of the two parts and Appendix A for a detailed example of the 3851 'nameWithLanguage' attribute syntax. 3853 4.1.2.3 Matching 'name' attribute values 3855 For purposes of matching two 'name' attribute values for equality, such 3856 as in job validation (where a client-supplied value for attribute "xxx" 3857 is checked to see if the value is among the values of the Printer 3858 object's corresponding "xxx-supported" attribute), the following match 3859 rules apply: 3861 1. 'keyword' values never match 'name' values. 3863 2. 'name' (nameWithoutLanguage and nameWithLanguage) values match 3864 if (1) the name parts match and (2) the Associated Natural-Language 3865 parts (see section 3.1.4.1) match. The matching rules are: 3867 a. the name parts match if the two names are identical 3868 character by character, except it is RECOMMENDED that case be 3869 ignored. For example: 'Ajax-letter-head-white' MUST match 3870 'Ajax-letter-head-white' and SHOULD match 'ajax-letter-head- 3871 white' and 'AJAX-LETTER-HEAD-WHITE'. 3873 b. the Associated Natural-Language parts match if the shorter 3874 of the two meets the syntactic requirements of RFC 1766 3875 [RFC1766] and matches byte for byte with the longer. For 3876 example, 'en' matches 'en', 'en-us' and 'en-gb', but matches 3877 neither 'fr' nor 'e'. 3879 Expires November 22, 2000 3881 4.1.3 'keyword' 3883 The 'keyword' attribute syntax is a sequence of characters, length: 1 to 3884 255, containing only the US-ASCII [ASCII] encoded values for lowercase 3885 letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot ("."), and 3886 underscore ("_"). The first character MUST be a lowercase letter. 3887 Furthermore, keywords MUST be in U.S. English. 3889 This syntax type is used for enumerating semantic identifiers of 3890 entities in the abstract protocol, i.e., entities identified in this 3891 document. Keywords are used as attribute names or values of attributes. 3892 Unlike 'text' and 'name' attribute values, 'keyword' values MUST NOT use 3893 the Natural Language Override mechanism, since they MUST always be US- 3894 ASCII and U.S. English. 3896 Keywords are for use in the protocol. A user interface will likely 3897 provide a mapping between protocol keywords and displayable user- 3898 friendly words and phrases which are localized to the natural language 3899 of the user. While the keywords specified in this document MAY be 3900 displayed to users whose natural language is U.S. English, they MAY be 3901 mapped to other U.S. English words for U.S. English users, since the 3902 user interface is outside the scope of this document. 3904 In the definition for each attribute of this syntax type, the full set 3905 of defined keyword values for that attribute are listed. 3907 When a keyword is used to represent an attribute (its name), it MUST be 3908 unique within the full scope of all IPP objects and attributes. When a 3909 keyword is used to represent a value of an attribute, it MUST be unique 3910 just within the scope of that attribute. That is, the same keyword MUST 3911 NOT be used for two different values within the same attribute to mean 3912 two different semantic ideas. However, the same keyword MAY be used 3913 across two or more attributes, representing different semantic ideas for 3914 each attribute. Section 6.1 describes how the protocol can be extended 3915 with new keyword values. Examples of attribute name keywords: 3917 "job-name" 3918 "attributes-charset" 3920 Note: This document uses "type1", "type2", and "type3" prefixes to the 3921 "keyword" basic syntax to indicate different levels of review for 3922 extensions (see section 6.1). 3924 4.1.4 'enum' 3926 The 'enum' attribute syntax is an enumerated integer value that is in 3927 the range from 1 to 2**31 - 1 (MAX). Each value has an associated 3928 'keyword' name. In the definition for each attribute of this syntax 3929 type, the full set of possible values for that attribute are listed. 3930 This syntax type is used for attributes for which there are enum values 3931 assigned by other standards, such as SNMP MIBs. A number of attribute 3932 enum values in this document are also used for corresponding attributes 3933 in other standards [RFC1759]. This syntax type is not used for 3935 Expires November 22, 2000 3936 attributes to which the administrator may assign values. Section 6.1 3937 describes how the protocol can be extended with new enum values. 3939 Enum values are for use in the protocol. A user interface will provide 3940 a mapping between protocol enum values and displayable user-friendly 3941 words and phrases which are localized to the natural language of the 3942 user. While the enum symbols specified in this document MAY be 3943 displayed to users whose natural language is U.S. English, they MAY be 3944 mapped to other U.S. English words for U.S. English users, since the 3945 user interface is outside the scope of this document. 3947 Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP "out- 3948 of-band" value 'unknown'. See the description of the "out-of-band" 3949 values at the beginning of Section 4.1. Therefore, attributes of type 3950 'enum' start at '3'. 3952 Note: This document uses "type1", "type2", and "type3" prefixes to the 3953 "enum" basic syntax to indicate different levels of review for 3954 extensions (see section 6.1). 3956 4.1.5 'uri' 3958 The 'uri' attribute syntax is any valid Uniform Resource Identifier or 3959 URI [RFC2396]. Most often, URIs are simply Uniform Resource Locators or 3960 URLs. The maximum length of URIs used as values of IPP attributes is 3961 1023 octets. Although most other IPP attribute syntax types allow for 3962 only lower-cased values, this attribute syntax type conforms to the 3963 case-sensitive and case-insensitive rules specified in [RFC2396]. See 3964 also [IPP-IIG] for a discussion of case in URIs. 3966 4.1.6 'uriScheme' 3968 The 'uriScheme' attribute syntax is a sequence of characters 3969 representing a URI scheme according to RFC 2396 [RFC2396]. Though RFC 3970 2396 requires that the values be case-insensitive, IPP requires all 3971 lower case values in IPP attributes to simplify comparing by IPP clients 3972 and Printer objects. 3974 Standard values for this syntax type are the following keywords: 3976 'ipp': for IPP schemed URIs (e.g., "ipp:...") 3977 'http': for HTTP schemed URIs (e.g., "http:...") 3978 'https': for use with HTTPS schemed URIs (e.g., "https:...") (not on 3979 IETF standards track) 3980 'ftp': for FTP schemed URIs (e.g., "ftp:...") 3981 'mailto': for SMTP schemed URIs (e.g., "mailto:...") 3982 'file': for file schemed URIs (e.g., "file:...") 3984 A Printer object MAY support any URI 'scheme' that has been registered 3985 with IANA [IANA-MT]. The maximum length of URI 'scheme' values used to 3986 represent IPP attribute values is 63 octets. 3988 Expires November 22, 2000 3989 4.1.7 'charset' 3991 The 'charset' attribute syntax is a standard identifier for a charset. 3992 A charset is a coded character set and encoding scheme. Charsets are 3993 used for labeling certain document contents and 'text' and 'name' 3994 attribute values. The syntax and semantics of this attribute syntax are 3995 specified in RFC 2046 [RFC2046] and contained in the IANA character-set 3996 Registry [IANA-CS] according to the IANA procedures [RFC2278]. Though 3997 RFC 2046 requires that the values be case-insensitive US-ASCII, IPP 3998 requires all lower case values in IPP attributes to simplify comparing 3999 by IPP clients and Printer objects. When a character-set in the IANA 4000 registry has more than one name (alias), the name labeled as "(preferred 4001 MIME name)", if present, MUST be used. 4003 The maximum length of 'charset' values used to represent IPP attribute 4004 values is 63 octets. 4006 Some examples are: 4008 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set 4009 (UCS) represented as the UTF-8 [RFC2279] transfer encoding scheme 4010 in which US-ASCII is a subset charset. 4011 'us-ascii': 7-bit American Standard Code for Information Interchange 4012 (ASCII), ANSI X3.4-1986 [ASCII]. That standard defines US-ASCII, 4013 but RFC 2045 [RFC2045] eliminates most of the control characters 4014 from conformant usage in MIME and IPP. 4015 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet Nr 4016 1 [ISO8859-1]. That standard defines a coded character set that is 4017 used by Latin languages in the Western Hemisphere and Western 4018 Europe. US-ASCII is a subset charset. 4020 Some attribute descriptions MAY place additional requirements on charset 4021 values that may be used, such as REQUIRED values that MUST be supported 4022 or additional restrictions, such as requiring that the charset have US- 4023 ASCII as a subset charset. 4025 4.1.8 'naturalLanguage' 4027 The 'naturalLanguage' attribute syntax is a standard identifier for a 4028 natural language and optionally a country. The values for this syntax 4029 type are defined by RFC 1766 [RFC1766]. Though RFC 1766 requires that 4030 the values be case-insensitive US-ASCII, IPP requires all lower case to 4031 simplify comparing by IPP clients and Printer objects. Examples 4032 include: 4034 'en': for English 4035 'en-us': for US English 4036 'fr': for French 4037 'de': for German 4039 The maximum length of 'naturalLanguage' values used to represent IPP 4040 attribute values is 63 octets. 4042 Expires November 22, 2000 4043 4.1.9 'mimeMediaType' 4045 The 'mimeMediaType' attribute syntax is the Internet Media Type 4046 (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and 4047 registered according to the procedures of RFC 2048 [RFC2048] for 4048 identifying a document format. The value MAY include a charset, or 4049 other, parameter, depending on the specification of the Media Type in 4050 the IANA Registry [IANA-MT]. Although most other IPP syntax types allow 4051 for only lower-cased values, this syntax type allows for mixed-case 4052 values which are case-insensitive. 4054 Examples are: 4056 'text/html': An HTML document 4057 'text/plain': A plain text document in US-ASCII (RFC 2046 indicates 4058 that in the absence of the charset parameter MUST mean US-ASCII 4059 rather than simply unspecified) [RFC2046]. 4060 'text/plain; charset=US-ASCII': A plain text document in US-ASCII 4061 [52, 56]. 4062 'text/plain; charset=ISO-8859-1': A plain text document in ISO 8859- 4063 1 (Latin 1) [ISO8859-1]. 4064 'text/plain; charset=utf-8': A plain text document in ISO 10646 4065 represented as UTF-8 [RFC2279] 4066 'application/postscript': A PostScript document [RFC2046] 4067 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape 4068 sequence embedded in the document data) 4069 'application/pdf': Portable Document Format - see IANA MIME Media 4070 Type registry 4071 'application/octet-stream': Auto-sense - see section 4.1.9.1 4073 The maximum length of a 'mimeMediaType' value to represent IPP attribute 4074 values is 255 octets. 4076 4.1.9.1 Application/octet-stream -- Auto-Sensing the document format 4078 One special type is 'application/octet-stream'. If the Printer object 4079 supports this value, the Printer object MUST be capable of auto-sensing 4080 the format of the document data using an implementation-dependent method 4081 that examines some number of octets of the document data, either as part 4082 of the create operation and/or at document processing time. During 4083 auto-sensing, a Printer may determine that the document-data has a 4084 format that the Printer doesn't recognize. If the Printer determines 4085 this problem before returning an operation response, it rejects the 4086 request and returns the 'client-error-document-format-not-supported' 4087 status code. If the Printer determines this problem after accepting the 4088 request and returning an operation response with one of the successful 4089 status codes, the Printer adds the 'unsupported-document-format' value 4090 to the job's "job-state-reasons" attribute. 4092 If the Printer object's default value attribute "document-format- 4093 default" is set to 'application/octet-stream', the Printer object not 4094 only supports auto-sensing of the document format, but will depend on 4095 the result of applying its auto-sensing when the client does not supply 4096 the "document-format" attribute. If the client supplies a document 4098 Expires November 22, 2000 4099 format value, the Printer MUST rely on the supplied attribute, rather 4100 than trust its auto-sensing algorithm. To summarize: 4102 1. If the client does not supply a document format value, the Printer 4103 MUST rely on its default value setting (which may be 4104 'application/octet-stream' indicating an auto-sensing mechanism). 4105 2. If the client supplies a value other than 'application/octet- 4106 stream', the client is supplying valid information about the format 4107 of the document data and the Printer object MUST trust the client 4108 supplied value more than the outcome of applying an automatic 4109 format detection mechanism. For example, the client may be 4110 requesting the printing of a PostScript file as a 'text/plain' 4111 document. The Printer object MUST print a text representation of 4112 the PostScript commands rather than interpret the stream of 4113 PostScript commands and print the result. 4114 3. If the client supplies a value of 'application/octet-stream', the 4115 client is indicating that the Printer object MUST use its auto- 4116 sensing mechanism on the client supplied document data whether 4117 auto-sensing is the Printer object's default or not. 4119 Note: Since the auto-sensing algorithm is probabilistic, if the client 4120 requests both auto-sensing ("document-format" set to 'application/octet- 4121 stream') and true fidelity ("ipp-attribute-fidelity" set to 'true'), the 4122 Printer object might not be able to guarantee exactly what the end user 4123 intended (the auto-sensing algorithm might mistake one document format 4124 for another), but it is able to guarantee that its auto-sensing 4125 mechanism be used. 4127 When a Printer performs auto-sensing of a document in a submitted job, 4128 it is RECOMMENDED that the Printer indicate to the user that such auto- 4129 sensing has occurred and which document-format was auto-sensed by 4130 printing that information on the job's job-start-sheet. 4132 4.1.10 'octetString' 4134 The 'octetString' attribute syntax is a sequence of octets encoded in a 4135 maximum of 1023 octets which is indicated in sub-section headers using 4136 the notation: octetString(MAX). This syntax type is used for opaque 4137 data. 4139 4.1.11 'boolean' 4141 The 'boolean' attribute syntax has only two values: 'true' and 'false'. 4143 4.1.12 'integer' 4145 The 'integer' attribute syntax is an integer value that is in the range 4146 from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual attribute may 4147 specify the range constraint explicitly in sub-section headers if the 4148 range is different from the full range of possible integer values. For 4149 example: job-priority (integer(1:100)) for the "job-priority" 4151 Expires November 22, 2000 4152 attribute. However, the enforcement of that additional constraint is up 4153 to the IPP objects, not the protocol. 4155 4.1.13 'rangeOfInteger' 4157 The 'rangeOfInteger' attribute syntax is an ordered pair of integers 4158 that defines an inclusive range of integer values. The first integer 4159 specifies the lower bound and the second specifies the upper bound. If 4160 a range constraint is specified in the header description for an 4161 attribute in this document whose attribute syntax is 'rangeOfInteger' 4162 (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum value), 4163 then the constraint applies to both integers. 4165 4.1.14 'dateTime' 4167 The 'dateTime' attribute syntax is a standard, fixed length, 11 octet 4168 representation of the "DateAndTime" syntax as defined in RFC 2579 4169 [RFC2579]. RFC 2579 also identifies an 8 octet representation of a 4170 "DateAndTime" value, but IPP objects MUST use the 11 octet 4171 representation. A user interface will provide a mapping between 4172 protocol dateTime values and displayable user-friendly words or 4173 presentation values and phrases which are localized to the natural 4174 language and date format of the user, including time zone. 4176 4.1.15 'resolution' 4178 The 'resolution' attribute syntax specifies a two-dimensional resolution 4179 in the indicated units. It consists of 3 values: a cross feed direction 4180 resolution (positive integer value), a feed direction resolution 4181 (positive integer value), and a units value. The semantics of these 4182 three components are taken from the Printer MIB [RFC1759] suggested 4183 values. That is, the cross feed direction component resolution 4184 component is the same as the prtMarkerAddressabilityXFeedDir object in 4185 the Printer MIB, the feed direction component resolution component is 4186 the same as the prtMarkerAddressabilityFeedDir in the Printer MIB, and 4187 the units component is the same as the prtMarkerAddressabilityUnit 4188 object in the Printer MIB (namely, '3' indicates dots per inch and '4' 4189 indicates dots per centimeter). All three values MUST be present even 4190 if the first two values are the same. Example: '300', '600', '3' 4191 indicates a 300 dpi cross-feed direction resolution, a 600 dpi feed 4192 direction resolution, since a '3' indicates dots per inch (dpi). 4194 4.1.16 '1setOf X' 4196 The '1setOf X' attribute syntax is 1 or more values of attribute syntax 4197 type X. This syntax type is used for multi-valued attributes. The 4198 syntax type is called '1setOf' rather than just 'setOf' as a reminder 4199 that the set of values MUST NOT be empty (i.e., a set of size 0). Sets 4200 are normally unordered. However each attribute description of this type 4201 may specify that the values MUST be in a certain order for that 4202 attribute. 4204 Expires November 22, 2000 4205 4.2 Job Template Attributes 4207 Job Template attributes describe job processing behavior. Support for 4208 Job Template attributes by a Printer object is OPTIONAL (see section 4209 12.2.3 for a description of support for OPTIONAL attributes). Also, 4210 clients OPTIONALLY supply Job Template attributes in create requests. 4212 Job Template attributes conform to the following rules. For each Job 4213 Template attribute called "xxx": 4215 1. If the Printer object supports "xxx" then it MUST support both a 4216 "xxx-default" attribute (unless there is a "No" in the table below) 4217 and a "xxx-supported" attribute. If the Printer object doesn't 4218 support "xxx", then it MUST support neither an "xxx-default" 4219 attribute nor an "xxx-supported" attribute, and it MUST treat an 4220 attribute "xxx" supplied by a client as unsupported. An attribute 4221 "xxx" may be supported for some document formats and not supported 4222 for other document formats. For example, it is expected that a 4223 Printer object would only support "orientation-requested" for some 4224 document formats (such as 'text/plain' or 'text/html') but not 4225 others (such as 'application/postscript'). 4227 2. "xxx" is OPTIONALLY supplied by the client in a create request. 4228 If "xxx" is supplied, the client is indicating a desired job 4229 processing behavior for this Job. When "xxx" is not supplied, the 4230 client is indicating that the Printer object apply its default job 4231 processing behavior at job processing time if the document content 4232 does not contain an embedded instruction indicating an xxx-related 4233 behavior. 4235 Since an administrator MAY change the default value attribute after 4236 a Job object has been submitted but before it has been processed, 4237 the default value used by the Printer object at job processing time 4238 may be different that the default value in effect at job submission 4239 time. 4241 3. The "xxx-supported" attribute is a Printer object attribute that 4242 describes which job processing behaviors are supported by that 4243 Printer object. A client can query the Printer object to find out 4244 what xxx-related behaviors are supported by inspecting the returned 4245 values of the "xxx-supported" attribute. 4247 Note: The "xxx" in each "xxx-supported" attribute name is singular, 4248 even though an "xxx-supported" attribute usually has more than one 4249 value, such as "job-sheet-supported", unless the "xxx" Job Template 4250 attribute is plural, such as "finishings" or "sides". In such 4251 cases the "xxx-supported" attribute names are: "finishings- 4252 supported" and "sides-supported". 4254 4. The "xxx-default" default value attribute describes what will be 4255 done at job processing time when no other job processing 4256 information is supplied by the client (either explicitly as an IPP 4257 attribute in the create request or implicitly as an embedded 4258 instruction within the document data). 4260 Expires November 22, 2000 4262 If an application wishes to present an end user with a list of supported 4263 values from which to choose, the application SHOULD query the Printer 4264 object for its supported value attributes. The application SHOULD also 4265 query the default value attributes. If the application then limits 4266 selectable values to only those value that are supported, the 4267 application can guarantee that the values supplied by the client in the 4268 create request all fall within the set of supported values at the 4269 Printer. When querying the Printer, the client MAY enumerate each 4270 attribute by name in the Get-Printer-Attributes Request, or the client 4271 MAY just name the "job-template" group in order to get the complete set 4272 of supported attributes (both supported and default attributes). 4274 The "finishings" attribute is an example of a Job Template attribute. 4275 It can take on a set of values such as 'staple', 'punch', and/or 4276 'cover'. A client can query the Printer object for the "finishings- 4277 supported" attribute and the "finishings-default" attribute. The 4278 supported attribute contains a set of supported values. The default 4279 value attribute contains the finishing value(s) that will be used for a 4280 new Job if the client does not supply a "finishings" attribute in the 4281 create request and the document data does not contain any corresponding 4282 finishing instructions. If the client does supply the "finishings" 4283 attribute in the create request, the IPP object validates the value or 4284 values to make sure that they are a subset of the supported values 4285 identified in the Printer object's "finishings-supported" attribute. 4286 See section 3.1.7. 4288 The table below summarizes the names and relationships for all Job 4289 Template attributes. The first column of the table (labeled "Job 4290 Attribute") shows the name and syntax for each Job Template attribute in 4291 the Job object. These are the attributes that can optionally be supplied 4292 by the client in a create request. The last two columns (labeled 4293 "Printer: Default Value Attribute" and "Printer: Supported Values 4294 Attribute") show the name and syntax for each Job Template attribute in 4295 the Printer object (the default value attribute and the supported values 4296 attribute). A "No" in the table means the Printer MUST NOT support the 4297 attribute (that is, the attribute is simply not applicable). For 4298 brevity in the table, the 'text' and 'name' entries do not show the 4299 maximum length for each attribute. 4301 Expires November 22, 2000 4302 +===================+======================+======================+ 4303 | Job Attribute |Printer: Default Value| Printer: Supported | 4304 | | Attribute | Values Attribute | 4305 +===================+======================+======================+ 4306 | job-priority | job-priority-default |job-priority-supported| 4307 | (integer 1:100) | (integer 1:100) |(integer 1:100) | 4308 +-------------------+----------------------+----------------------+ 4309 | job-hold-until | job-hold-until- |job-hold-until- | 4310 | (type3 keyword | | default | supported | 4311 | name) | (type3 keyword | |(1setOf ( | 4312 | | name) |type3 keyword | name))| 4313 +-------------------+----------------------+----------------------+ 4314 | job-sheets | job-sheets-default |job-sheets-supported | 4315 | (type3 keyword | | (type3 keyword | |(1setOf ( | 4316 | name) | name) |type3 keyword | name))| 4317 +-------------------+----------------------+----------------------+ 4318 |multiple-document- |multiple-document- |multiple-document- | 4319 | handling | handling-default |handling-supported | 4320 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 4321 +-------------------+----------------------+----------------------+ 4322 | copies | copies-default | copies-supported | 4323 | (integer (1:MAX)) | (integer (1:MAX)) | (rangeOfInteger | 4324 | | | (1:MAX)) | 4325 +-------------------+----------------------+----------------------+ 4326 | finishings | finishings-default | finishings-supported | 4327 |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | 4328 +-------------------+----------------------+----------------------+ 4329 | page-ranges | No | page-ranges- | 4330 | (1setOf | | supported (boolean) | 4331 | rangeOfInteger | | | 4332 | (1:MAX)) | | | 4333 +-------------------+----------------------+----------------------+ 4334 | sides | sides-default | sides-supported | 4335 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 4336 +-------------------+----------------------+----------------------+ 4337 | number-up | number-up-default | number-up-supported | 4338 | (integer (1:MAX)) | (integer (1:MAX)) |(1setOf (integer | 4339 | | | (1:MAX) | | 4340 | | | rangeOfInteger | 4341 | | | (1:MAX))) | 4342 +-------------------+----------------------+----------------------+ 4343 | orientation- |orientation-requested-|orientation-requested-| 4344 | requested | default | supported | 4345 | (type2 enum) | (type2 enum) | (1setOf type2 enum) | 4346 +-------------------+----------------------+----------------------+ 4347 | media | media-default | media-supported | 4348 | (type3 keyword | | (type3 keyword | |(1setOf ( | 4349 | name) | name) |type3 keyword | name))| 4350 | | | | 4351 | | | media-ready | 4352 | | |(1setOf ( | 4353 | | |type3 keyword | name))| 4354 +-------------------+----------------------+----------------------+ 4355 | printer-resolution| printer-resolution- | printer-resolution- | 4357 Expires November 22, 2000 4358 | (resolution) | default | supported | 4359 | | (resolution) |(1setOf resolution) | 4360 +-------------------+----------------------+----------------------+ 4361 | print-quality | print-quality-default| print-quality- | 4362 | (type2 enum) | (type2 enum) | supported | 4363 | | |(1setOf type2 enum) | 4364 +-------------------+----------------------+----------------------+ 4366 4.2.1 job-priority (integer(1:100)) 4368 This attribute specifies a priority for scheduling the Job. A higher 4369 value specifies a higher priority. The value 1 indicates the lowest 4370 possible priority. The value 100 indicates the highest possible 4371 priority. Among those jobs that are ready to print, a Printer MUST 4372 print all jobs with a priority value of n before printing those with a 4373 priority value of n-1 for all n. 4375 If the Printer object supports this attribute, it MUST always support 4376 the full range from 1 to 100. No administrative restrictions are 4377 permitted. This way an end-user can always make full use of the entire 4378 range with any Printer object. If privileged jobs are implemented 4379 outside IPP/1.1, they MUST have priorities higher than 100, rather than 4380 restricting the range available to end-users. 4382 If the client does not supply this attribute and this attribute is 4383 supported by the Printer object, the Printer object MUST use the value 4384 of the Printer object's "job-priority-default" at job submission time 4385 (unlike most Job Template attributes that are used if necessary at job 4386 processing time). 4388 The syntax for the "job-priority-supported" is also integer(1:100). 4389 This single integer value indicates the number of priority levels 4390 supported. The Printer object MUST take the value supplied by the 4391 client and map it to the closest integer in a sequence of n integers 4392 values that are evenly distributed over the range from 1 to 100 using 4393 the formula: 4395 roundToNearestInt((100x+50)/n) 4397 where n is the value of "job-priority-supported" and x ranges from 0 4398 through n-1. 4400 For example, if n=1 the sequence of values is 50; if n=2, the sequence 4401 of values is: 25 and 75; if n = 3, the sequence of values is: 17, 50 4402 and 83; if n = 10, the sequence of values is: 5, 15, 25, 35, 45, 55, 4403 65, 75, 85, and 95; if n = 100, the sequence of values is: 1, 2, 3, 4404 ... 100. 4406 If the value of the Printer object's "job-priority-supported" is 10 and 4407 the client supplies values in the range 1 to 10, the Printer object maps 4408 them to 5, in the range 11 to 20, the Printer object maps them to 15, 4409 etc. 4411 Expires November 22, 2000 4412 4.2.2 job-hold-until (type3 keyword | name (MAX)) 4414 This attribute specifies the named time period during which the Job MUST 4415 become a candidate for printing. 4417 Standard keyword values for named time periods are: 4419 'no-hold': immediately, if there are not other reasons to hold the 4420 job 4421 'indefinite': - the job is held indefinitely, until a client 4422 performs a Release-Job (section 3.3.6) 4423 'day-time': during the day 4424 'evening': evening 4425 'night': night 4426 'weekend': weekend 4427 'second-shift': second-shift (after close of business) 4428 'third-shift': third-shift (after midnight) 4430 An administrator MUST associate allowable print times with a named time 4431 period (by means outside the scope of this IPP/1.1 document). An 4432 administrator is encouraged to pick names that suggest the type of time 4433 period. An administrator MAY define additional values using the 'name' 4434 or 'keyword' attribute syntax, depending on implementation. 4436 If the value of this attribute specifies a time period that is in the 4437 future, the Printer SHOULD add the 'job-hold-until-specified' value to 4438 the job's "job-state-reasons" attribute, MUST move the job to the 4439 'pending-held' state, and MUST NOT schedule the job for printing until 4440 the specified time-period arrives. 4442 When the specified time period arrives, the Printer MUST remove the 4443 'job-hold-until-specified' value from the job's "job-state-reason" 4444 attribute, if present. If there are no other job state reasons that 4445 keep the job in the 'pending-held' state, the Printer MUST consider the 4446 job as a candidate for processing by moving the job to the 'pending' 4447 state. 4449 If this job attribute value is the named value 'no-hold', or the 4450 specified time period has already started, the job MUST be a candidate 4451 for processing immediately. 4453 If the client does not supply this attribute and this attribute is 4454 supported by the Printer object, the Printer object MUST use the value 4455 of the Printer object's "job-hold-until-default" at job submission time 4456 (unlike most Job Template attributes that are used if necessary at job 4457 processing time). 4459 4.2.3 job-sheets (type3 keyword | name(MAX)) 4461 This attribute determines which job start/end sheet(s), if any, MUST be 4462 printed with a job. 4464 Standard keyword values are: 4466 Expires November 22, 2000 4467 'none': no job sheet is printed 4468 'standard': one or more site specific standard job sheets are 4469 printed, e.g. a single start sheet or both start and end sheet is 4470 printed 4472 An administrator MAY define additional values using the 'name' or 4473 'keyword' attribute syntax, depending on implementation. 4475 The effect of this attribute on jobs with multiple documents MAY be 4476 affected by the "multiple-document-handling" job attribute (section 4477 4.2.4), depending on the job sheet semantics. 4479 4.2.4 multiple-document-handling (type2 keyword) 4481 This attribute is relevant only if a job consists of two or more 4482 documents. This attribute MUST be supported if the Printer supports 4483 multiple documents per job (see sections 3.2.4 and 3.3.1). The 4484 attribute controls finishing operations and the placement of one or more 4485 print-stream pages into impressions and onto media sheets. When the 4486 value of the "copies" attribute exceeds 1, it also controls the order in 4487 which the copies that result from processing the documents are produced. 4488 For the purposes of this explanations, if "a" represents an instance of 4489 document data, then the result of processing the data in document "a" is 4490 a sequence of media sheets represented by "a(*)". 4492 Standard keyword values are: 4494 'single-document': If a Job object has multiple documents, say, the 4495 document data is called a and b, then the result of processing all 4496 the document data (a and then b) MUST be treated as a single 4497 sequence of media sheets for finishing operations; that is, 4498 finishing would be performed on the concatenation of the sequences 4499 a(*),b(*). The Printer object MUST NOT force the data in each 4500 document instance to be formatted onto a new print-stream page, nor 4501 to start a new impression on a new media sheet. If more than one 4502 copy is made, the ordering of the sets of media sheets resulting 4503 from processing the document data MUST be a(*), b(*), a(*), b(*), 4504 ..., and the Printer object MUST force each copy (a(*),b(*)) to 4505 start on a new media sheet. 4506 'separate-documents-uncollated-copies': If a Job object has multiple 4507 documents, say, the document data is called a and b, then the 4508 result of processing the data in each document instance MUST be 4509 treated as a single sequence of media sheets for finishing 4510 operations; that is, the sets a(*) and b(*) would each be finished 4511 separately. The Printer object MUST force each copy of the result 4512 of processing the data in a single document to start on a new media 4513 sheet. If more than one copy is made, the ordering of the sets of 4514 media sheets resulting from processing the document data MUST be 4515 a(*), a(*), ..., b(*), b(*) ... . 4516 'separate-documents-collated-copies': If a Job object has multiple 4517 documents, say, the document data is called a and b, then the 4518 result of processing the data in each document instance MUST be 4519 treated as a single sequence of media sheets for finishing 4521 Expires November 22, 2000 4522 operations; that is, the sets a(*) and b(*) would each be finished 4523 separately. The Printer object MUST force each copy of the result 4524 of processing the data in a single document to start on a new media 4525 sheet. If more than one copy is made, the ordering of the sets of 4526 media sheets resulting from processing the document data MUST be 4527 a(*), b(*), a(*), b(*), ... . 4528 'single-document-new-sheet': Same as 'single-document', except that 4529 the Printer object MUST ensure that the first impression of each 4530 document instance in the job is placed on a new media sheet. This 4531 value allows multiple documents to be stapled together with a 4532 single staple where each document starts on a new sheet. 4534 The 'single-document' value is the same as 'separate-documents-collated- 4535 copies' with respect to ordering of print-stream pages, but not media 4536 sheet generation, since 'single-document' will put the first page of the 4537 next document on the back side of a sheet if an odd number of pages have 4538 been produced so far for the job, while 'separate-documents-collated- 4539 copies' always forces the next document or document copy on to a new 4540 sheet. In addition, if the "finishings" attribute specifies 'staple', 4541 then with 'single-document', documents a and b are stapled together as a 4542 single document with no regard to new sheets, with 'single-document-new- 4543 sheet', documents a and b are stapled together as a single document, but 4544 document b starts on a new sheet, but with 'separate-documents- 4545 uncollated-copies' and 'separate-documents-collated-copies', documents a 4546 and b are stapled separately. 4548 Note: None of these values provide means to produce uncollated sheets 4549 within a document, i.e., where multiple copies of sheet n are produced 4550 before sheet n+1 of the same document. 4552 The relationship of this attribute and the other attributes that control 4553 document processing is described in section 15.3. 4555 4.2.5 copies (integer(1:MAX)) 4557 This attribute specifies the number of copies to be printed. 4559 On many devices the supported number of collated copies will be limited 4560 by the number of physical output bins on the device, and may be 4561 different from the number of uncollated copies which can be supported. 4563 Note: The effect of this attribute on jobs with multiple documents is 4564 controlled by the "multiple-document-handling" job attribute (section 4565 4.2.4) and the relationship of this attribute and the other attributes 4566 that control document processing is described in section 15.3. 4568 4.2.6 finishings (1setOf type2 enum) 4570 This attribute identifies the finishing operations that the Printer uses 4571 for each copy of each printed document in the Job. For Jobs with 4572 multiple documents, the "multiple-document-handling" attribute 4573 determines what constitutes a "copy" for purposes of finishing. 4575 Expires November 22, 2000 4576 Standard enum values are: 4578 Value Symbolic Name and Description 4580 '3' 'none': Perform no finishing 4581 '4' 'staple': Bind the document(s) with one or more staples. The 4582 exact number and placement of the staples is site- 4583 defined. 4584 '5' 'punch': This value indicates that holes are required in the 4585 finished document. The exact number and placement of the 4586 holes is site-defined The punch specification MAY be 4587 satisfied (in a site- and implementation-specific manner) 4588 either by drilling/punching, or by substituting pre- 4589 drilled media. 4590 '6' 'cover': This value is specified when it is desired to select 4591 a non-printed (or pre-printed) cover for the document. 4592 This does not supplant the specification of a printed 4593 cover (on cover stock medium) by the document itself. 4594 '7' 'bind': This value indicates that a binding is to be applied 4595 to the document; the type and placement of the binding is 4596 site-defined. 4598 '8' 'saddle-stitch': Bind the document(s) with one or more 4599 staples (wire stitches) along the middle fold. The exact 4600 number and placement of the staples and the middle fold 4601 is implementation and/or site-defined. 4602 '9' 'edge-stitch': Bind the document(s) with one or more staples 4603 (wire stitches) along one edge. The exact number and 4604 placement of the staples is implementation and/or site- 4605 defined. 4606 '10'-'19' reserved for future generic finishing enum values. 4608 The following values are more specific; they indicate a corner or an 4609 edge as if the document were a portrait document (see below): 4611 '20' 'staple-top-left': Bind the document(s) with one or more 4612 staples in the top left corner. 4613 '21' 'staple-bottom-left': Bind the document(s) with one or more 4614 staples in the bottom left corner. 4615 '22' 'staple-top-right': Bind the document(s) with one or more 4616 staples in the top right corner. 4617 '23' 'staple-bottom-right': Bind the document(s) with one or more 4618 staples in the bottom right corner. 4619 '24' 'edge-stitch-left': Bind the document(s) with one or more 4620 staples (wire stitches) along the left edge. The exact 4621 number and placement of the staples is implementation 4622 and/or site-defined. 4623 '25' 'edge-stitch-top': Bind the document(s) with one or more 4624 staples (wire stitches) along the top edge. The exact 4625 number and placement of the staples is implementation 4626 and/or site-defined. 4627 '26' 'edge-stitch-right': Bind the document(s) with one or more 4628 staples (wire stitches) along the right edge. The exact 4629 number and placement of the staples is implementation 4630 and/or site-defined. 4632 Expires November 22, 2000 4634 '27' 'edge-stitch-bottom': Bind the document(s) with one or more 4635 staples (wire stitches) along the bottom edge. The exact 4636 number and placement of the staples is implementation 4637 and/or site-defined. 4638 '28' 'staple-dual-left': Bind the document(s) with two staples 4639 (wire stitches) along the left edge assuming a portrait 4640 document (see above). 4641 '29' 'staple-dual-top': Bind the document(s) with two staples 4642 (wire stitches) along the top edge assuming a portrait 4643 document (see above). 4644 '30' 'staple-dual-right': Bind the document(s) with two staples 4645 (wire stitches) along the right edge assuming a portrait 4646 document (see above). 4647 '31' 'staple-dual-bottom': Bind the document(s) with two staples 4648 (wire stitches) along the bottom edge assuming a portrait 4649 document (see above). 4651 The 'staple-xxx' values are specified with respect to the document as if 4652 the document were a portrait document. If the document is actually a 4653 landscape or a reverse-landscape document, the client supplies the 4654 appropriate transformed value. For example, to position a staple in the 4655 upper left hand corner of a landscape document when held for reading, 4656 the client supplies the 'staple-bottom-left' value (since landscape is 4657 defined as a +90 degree rotation of the image with respect to the media 4658 from portrait, i.e., anti-clockwise). On the other hand, to position a 4659 staple in the upper left hand corner of a reverse-landscape document 4660 when held for reading, the client supplies the 'staple-top-right' value 4661 (since reverse-landscape is defined as a -90 degree rotation of the 4662 image with respect to the media from portrait, i.e., clockwise). 4664 The angle (vertical, horizontal, angled) of each staple with respect to 4665 the document depends on the implementation which may in turn depend on 4666 the value of the attribute. 4668 Note: The effect of this attribute on jobs with multiple documents is 4669 controlled by the "multiple-document-handling" job attribute (section 4670 4.2.4) and the relationship of this attribute and the other attributes 4671 that control document processing is described in section 15.3. 4673 If the client supplies a value of 'none' along with any other 4674 combination of values, it is the same as if only that other combination 4675 of values had been supplied (that is the 'none' value has no effect). 4677 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 4679 This attribute identifies the range(s) of print-stream pages that the 4680 Printer object uses for each copy of each document which are to be 4681 printed. Nothing is printed for any pages identified that do not exist 4682 in the document(s). Ranges MUST be in ascending order, for example: 1- 4683 3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling Printer 4684 object can process the job in a single pass. If the ranges are not 4685 ascending or are overlapping, the IPP object MUST reject the request and 4686 return the 'client-error-bad-request' status code. The attribute is 4687 associated with print-stream pages not application-numbered pages (for 4689 Expires November 22, 2000 4690 example, the page numbers found in the headers and or footers for 4691 certain word processing applications). 4693 For Jobs with multiple documents, the "multiple-document-handling" 4694 attribute determines what constitutes a "copy" for purposes of the 4695 specified page range(s). When "multiple-document-handling" is 'single- 4696 document', the Printer object MUST apply each supplied page range once 4697 to the concatenation of the print-stream pages. For example, if there 4698 are 8 documents of 10 pages each, the page-range '41:60' prints the 4699 pages in the 5th and 6th documents as a single document and none of the 4700 pages of the other documents are printed. When "multiple-document- 4701 handling" is 'separate-documents-uncollated-copies' or 'separate- 4702 documents-collated-copies', the Printer object MUST apply each supplied 4703 page range repeatedly to each document copy. For the same job, the 4704 page-range '1:3, 10:10' would print the first 3 pages and the 10th page 4705 of each of the 8 documents in the Job, as 8 separate documents. 4707 In most cases, the exact pages to be printed will be generated by a 4708 device driver and this attribute would not be required. However, when 4709 printing an archived document which has already been formatted, the end 4710 user may elect to print just a subset of the pages contained in the 4711 document. In this case, if page-range = n.m is specified, the first 4712 page to be printed will be page n. All subsequent pages of the document 4713 will be printed through and including page m. 4715 "page-ranges-supported" is a boolean value indicating whether or not the 4716 printer is capable of supporting the printing of page ranges. This 4717 capability may differ from one PDL to another. There is no "page-ranges- 4718 default" attribute. If the "page-ranges" attribute is not supplied by 4719 the client, all pages of the document will be printed. 4721 Note: The effect of this attribute on jobs with multiple documents is 4722 controlled by the "multiple-document-handling" job attribute (section 4723 4.2.4) and the relationship of this attribute and the other attributes 4724 that control document processing is described in section 15.3. 4726 4.2.8 sides (type2 keyword) 4728 This attribute specifies how print-stream pages are to be imposed upon 4729 the sides of an instance of a selected medium, i.e., an impression. 4731 The standard keyword values are: 4733 'one-sided': imposes each consecutive print-stream page upon the same 4734 side of consecutive media sheets. 4735 'two-sided-long-edge': imposes each consecutive pair of print-stream 4736 pages upon front and back sides of consecutive media sheets, such 4737 that the orientation of each pair of print-stream pages on the 4738 medium would be correct for the reader as if for binding on the 4739 long edge. This imposition is sometimes called 'duplex' or 'head- 4740 to-head'. 4741 'two-sided-short-edge': imposes each consecutive pair of print-stream 4742 pages upon front and back sides of consecutive media sheets, such 4743 that the orientation of each pair of print-stream pages on the 4745 Expires November 22, 2000 4746 medium would be correct for the reader as if for binding on the 4747 short edge. This imposition is sometimes called 'tumble' or 'head- 4748 to-toe'. 4750 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 4751 all work the same for portrait or landscape. However 'head-to-toe' is 4752 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 4753 switches between 'duplex' and 'tumble' when using portrait and landscape 4754 modes. 4756 Note: The effect of this attribute on jobs with multiple documents is 4757 controlled by the "multiple-document-handling" job attribute (section 4758 4.2.4) and the relationship of this attribute and the other attributes 4759 that control document processing is described in section 15.3. 4761 4.2.9 number-up (integer(1:MAX)) 4763 This attribute specifies the number of print-stream pages to impose upon 4764 a single side of an instance of a selected medium. For example, if the 4765 value is: 4767 Value Description 4769 '1' the Printer MUST place one print-stream page on a single side 4770 of an instance of the selected medium (MAY add some sort 4771 of translation, scaling, or rotation). 4772 '2' the Printer MUST place two print-stream pages on a single side 4773 of an instance of the selected medium (MAY add some sort 4774 of translation, scaling, or rotation). 4775 '4' the Printer MUST place four print-stream pages on a single 4776 side of an instance of the selected medium (MAY add some 4777 sort of translation, scaling, or rotation). 4779 This attribute primarily controls the translation, scaling and rotation 4780 of print-stream pages. 4782 Note: The effect of this attribute on jobs with multiple documents is 4783 controlled by the "multiple-document-handling" job attribute (section 4784 4.2.4) and the relationship of this attribute and the other attributes 4785 that control document processing is described in section 15.3. 4787 4.2.10 orientation-requested (type2 enum) 4789 This attribute indicates the desired orientation for printed print- 4790 stream pages; it does not describe the orientation of the client- 4791 supplied print-stream pages. 4793 For some document formats (such as 'application/postscript'), the 4794 desired orientation of the print-stream pages is specified within the 4795 document data. This information is generated by a device driver prior 4796 to the submission of the print job. Other document formats (such as 4797 'text/plain') do not include the notion of desired orientation within 4799 Expires November 22, 2000 4800 the document data. In the latter case it is possible for the Printer 4801 object to bind the desired orientation to the document data after it has 4802 been submitted. It is expected that a Printer object would only support 4803 "orientations-requested" for some document formats (e.g., 'text/plain' 4804 or 'text/html') but not others (e.g., 'application/postscript'). This 4805 is no different than any other Job Template attribute since section 4.2, 4806 item 1, points out that a Printer object may support or not support any 4807 Job Template attribute based on the document format supplied by the 4808 client. However, a special mention is made here since it is very likely 4809 that a Printer object will support "orientation-requested" for only a 4810 subset of the supported document formats. 4812 Standard enum values are: 4814 Value Symbolic Name and Description 4816 '3' 'portrait': The content will be imaged across the short edge 4817 of the medium. 4818 '4' 'landscape': The content will be imaged across the long edge 4819 of the medium. Landscape is defined to be a rotation of 4820 the print-stream page to be imaged by +90 degrees with 4821 respect to the medium (i.e. anti-clockwise) from the 4822 portrait orientation. Note: The +90 direction was 4823 chosen because simple finishing on the long edge is the 4824 same edge whether portrait or landscape 4825 '5' 'reverse-landscape': The content will be imaged across the 4826 long edge of the medium. Reverse-landscape is defined to 4827 be a rotation of the print-stream page to be imaged by - 4828 90 degrees with respect to the medium (i.e. clockwise) 4829 from the portrait orientation. Note: The 'reverse- 4830 landscape' value was added because some applications 4831 rotate landscape -90 degrees from portrait, rather than 4832 +90 degrees. 4833 '6' 'reverse-portrait': The content will be imaged across the 4834 short edge of the medium. Reverse-portrait is defined to 4835 be a rotation of the print-stream page to be imaged by 4836 180 degrees with respect to the medium from the portrait 4837 orientation. Note: The 'reverse-portrait' value was 4838 added for use with the "finishings" attribute in cases 4839 where the opposite edge is desired for finishing a 4840 portrait document on simple finishing devices that have 4841 only one finishing position. Thus a 'text'/plain' 4842 portrait document can be stapled "on the right" by a 4843 simple finishing device as is common use with some middle 4844 eastern languages such as Hebrew. 4846 Note: The effect of this attribute on jobs with multiple documents is 4847 controlled by the "multiple-document-handling" job attribute (section 4848 4.2.4) and the relationship of this attribute and the other attributes 4849 that control document processing is described in section 15.3. 4851 Expires November 22, 2000 4852 4.2.11 media (type3 keyword | name(MAX)) 4854 This attribute identifies the medium that the Printer uses for all 4855 impressions of the Job. 4857 The values for "media" include medium-names, medium-sizes, input-trays 4858 and electronic forms so that one attribute specifies the media. If a 4859 Printer object supports a medium name as a value of this attribute, such 4860 a medium name implicitly selects an input-tray that contains the 4861 specified medium. If a Printer object supports a medium size as a value 4862 of this attribute, such a medium size implicitly selects a medium name 4863 that in turn implicitly selects an input-tray that contains the medium 4864 with the specified size. If a Printer object supports an input-tray as 4865 the value of this attribute, such an input-tray implicitly selects the 4866 medium that is in that input-tray at the time the job prints. This case 4867 includes manual-feed input-trays. If a Printer object supports an 4868 electronic form as the value of this attribute, such an electronic form 4869 implicitly selects a medium-name that in turn implicitly selects an 4870 input-tray that contains the medium specified by the electronic form. 4871 The electronic form also implicitly selects an image that the Printer 4872 MUST merge with the document data as its prints each page. 4874 Standard keyword values are taken from ISO DPA [ISO10175], the Printer 4875 MIB [RFC1759], and ASME-Y14.1M [ASME-Y14.1M] and are listed in section 4876 14. An administrator MAY define additional values using the 'name' or 4877 'keyword' attribute syntax, depending on implementation. 4879 There is also an additional Printer attribute named "media-ready" which 4880 differs from "media-supported" in that legal values only include the 4881 subset of "media-supported" values that are physically loaded and ready 4882 for printing with no operator intervention required. If an IPP object 4883 supports "media-supported", it NEED NOT support "media-ready". 4885 The relationship of this attribute and the other attributes that control 4886 document processing is described in section 15.3. 4888 4.2.12 printer-resolution (resolution) 4890 This attribute identifies the resolution that Printer uses for the Job. 4892 4.2.13 print-quality (type2 enum) 4894 This attribute specifies the print quality that the Printer uses for the 4895 Job. 4897 The standard enum values are: 4899 Value Symbolic Name and Description 4901 '3' 'draft': lowest quality available on the printer 4902 '4' 'normal': normal or intermediate quality on the printer 4903 '5' 'high': highest quality available on the printer 4905 Expires November 22, 2000 4907 4.3 Job Description Attributes 4909 The attributes in this section form the attribute group called "job- 4910 description". The following table summarizes these attributes. The 4911 third column indicates whether the attribute is a REQUIRED attribute 4912 that MUST be supported by Printer objects. If it is not indicated as 4913 REQUIRED, then it is OPTIONAL. The maximum size in octets for 'text' 4914 and 'name' attributes is indicated in parenthesizes. 4916 Expires November 22, 2000 4917 +----------------------------+----------------------+----------------+ 4918 | Attribute | Syntax | REQUIRED? | 4919 +----------------------------+----------------------+----------------+ 4920 | job-uri | uri | REQUIRED | 4921 +----------------------------+----------------------+----------------+ 4922 | job-id | integer(1:MAX) | REQUIRED | 4923 +----------------------------+----------------------+----------------+ 4924 | job-printer-uri | uri | REQUIRED | 4925 +----------------------------+----------------------+----------------+ 4926 | job-more-info | uri | | 4927 +----------------------------+----------------------+----------------+ 4928 | job-name | name (MAX) | REQUIRED | 4929 +----------------------------+----------------------+----------------+ 4930 | job-originating-user-name | name (MAX) | REQUIRED | 4931 +----------------------------+----------------------+----------------+ 4932 | job-state | type1 enum | REQUIRED | 4933 +----------------------------+----------------------+----------------+ 4934 | job-state-reasons | 1setOf type2 keyword | REQUIRED | 4935 +----------------------------+----------------------+----------------+ 4936 | job-state-message | text (MAX) | | 4937 +----------------------------+----------------------+----------------+ 4938 | job-detailed-status- | 1setOf text (MAX) | | 4939 | messages | | | 4940 +----------------------------+----------------------+----------------+ 4941 | job-document-access-errors | 1setOf text (MAX) | | 4942 +----------------------------+----------------------+----------------+ 4943 | number-of-documents | integer (0:MAX) | | 4944 +----------------------------+----------------------+----------------+ 4945 | output-device-assigned | name (127) | | 4946 +----------------------------+----------------------+----------------+ 4947 | time-at-creation | integer (MIN:MAX) | REQUIRED | 4948 +----------------------------+----------------------+----------------+ 4949 | time-at-processing | integer (MIN:MAX) | REQUIRED | 4950 +----------------------------+----------------------+----------------+ 4951 | time-at-completed | integer (MIN:MAX) | REQUIRED | 4952 +----------------------------+----------------------+----------------+ 4953 | job-printer-up-time | integer (1:MAX) | REQUIRED | 4954 +----------------------------+----------------------+----------------+ 4955 | date-time-at-creation | dateTime | | 4956 +----------------------------+----------------------+----------------+ 4957 | date-time-at-processing | dateTime | | 4958 +----------------------------+----------------------+----------------+ 4959 | date-time-at-completed | dateTime | | 4960 +----------------------------+----------------------+----------------+ 4961 | number-of-intervening-jobs | integer (0:MAX) | | 4962 +----------------------------+----------------------+----------------+ 4963 | job-message-from-operator | text (127) | | 4964 +----------------------------+----------------------+----------------+ 4965 | job-k-octets | integer (0:MAX) | | 4966 +----------------------------+----------------------+----------------+ 4967 | job-impressions | integer (0:MAX) | | 4968 +----------------------------+----------------------+----------------+ 4969 | job-media-sheets | integer (0:MAX) | | 4970 +----------------------------+----------------------+----------------+ 4972 Expires November 22, 2000 4973 | job-k-octets-processed | integer (0:MAX) | | 4974 +----------------------------+----------------------+----------------+ 4975 | job-impressions-completed | integer (0:MAX) | | 4976 +----------------------------+----------------------+----------------+ 4977 | job-media-sheets-completed | integer (0:MAX) | | 4978 +----------------------------+----------------------+----------------+ 4979 | attributes-charset | charset | REQUIRED | 4980 +----------------------------+----------------------+----------------+ 4981 | attributes-natural-language| naturalLanguage | REQUIRED | 4982 +----------------------------+----------------------+----------------+ 4984 4.3.1 job-uri (uri) 4986 This REQUIRED attribute contains the URI for the job. The Printer 4987 object, on receipt of a new job, generates a URI which identifies the 4988 new Job. The Printer object returns the value of the "job-uri" 4989 attribute as part of the response to a create request. The precise 4990 format of a Job URI is implementation dependent. If the Printer object 4991 supports more than one URI and there is some relationship between the 4992 newly formed Job URI and the Printer object's URI, the Printer object 4993 uses the Printer URI supplied by the client in the create request. For 4994 example, if the create request comes in over a secure channel, the new 4995 Job URI MUST use the same secure channel. This can be guaranteed 4996 because the Printer object is responsible for generating the Job URI and 4997 the Printer object is aware of its security configuration and policy as 4998 well as the Printer URI used in the create request. 5000 For a description of this attribute and its relationship to "job-id" and 5001 "job-printer-uri" attribute, see the discussion in section 2.4 on 5002 "Object Identity". 5004 4.3.2 job-id (integer(1:MAX)) 5006 This REQUIRED attribute contains the ID of the job. The Printer, on 5007 receipt of a new job, generates an ID which identifies the new Job on 5008 that Printer. The Printer returns the value of the "job-id" attribute 5009 as part of the response to a create request. The 0 value is not 5010 included to allow for compatibility with SNMP index values which also 5011 cannot be 0. 5013 For a description of this attribute and its relationship to "job-uri" 5014 and "job-printer-uri" attribute, see the discussion in section 2.4 on 5015 "Object Identity". 5017 4.3.3 job-printer-uri (uri) 5019 This REQUIRED attribute identifies the Printer object that created this 5020 Job object. When a Printer object creates a Job object, it populates 5021 this attribute with the Printer object URI that was used in the create 5022 request. This attribute permits a client to identify the Printer object 5023 that created this Job object when only the Job object's URI is available 5025 Expires November 22, 2000 5026 to the client. The client queries the creating Printer object to 5027 determine which languages, charsets, operations, are supported for this 5028 Job. 5030 For a description of this attribute and its relationship to "job-uri" 5031 and "job-id" attribute, see the discussion in section 2.4 on "Object 5032 Identity". 5034 4.3.4 job-more-info (uri) 5036 Similar to "printer-more-info", this attribute contains the URI 5037 referencing some resource with more information about this Job object, 5038 perhaps an HTML page containing information about the Job. 5040 4.3.5 job-name (name(MAX)) 5042 This REQUIRED attribute is the name of the job. It is a name that is 5043 more user friendly than the "job-uri" attribute value. It does not need 5044 to be unique between Jobs. The Job's "job-name" attribute is set to the 5045 value supplied by the client in the "job-name" operation attribute in 5046 the create request (see Section 3.2.1.1). If, however, the "job-name" 5047 operation attribute is not supplied by the client in the create request, 5048 the Printer object, on creation of the Job, MUST generate a name. The 5049 printer SHOULD generate the value of the Job's "job-name" attribute from 5050 the first of the following sources that produces a value: 1) the 5051 "document-name" operation attribute of the first (or only) document, 2) 5052 the "document-URI" attribute of the first (or only) document, or 3) any 5053 other piece of Job specific and/or Document Content information. 5055 4.3.6 job-originating-user-name (name(MAX)) 5057 This REQUIRED attribute contains the name of the end user that submitted 5058 the print job. The Printer object sets this attribute to the most 5059 authenticated printable name that it can obtain from the authentication 5060 service over which the IPP operation was received. Only if such is not 5061 available, does the Printer object use the value supplied by the client 5062 in the "requesting-user-name" operation attribute of the create 5063 operation (see Sections 4.4.2, 4.4.3, and 8). 5065 Note: The Printer object needs to keep an internal originating user id 5066 of some form, typically as a credential of a principal, with the Job 5067 object. Since such an internal attribute is implementation-dependent 5068 and not of interest to clients, it is not specified as a Job Description 5069 attribute. This originating user id is used for authorization checks 5070 (if any) on all subsequent operations. 5072 4.3.7 job-state (type1 enum) 5074 This REQUIRED attribute identifies the current state of the job. Even 5075 though the IPP protocol defines seven values for job states (plus the 5076 out-of-band 'unknown' value - see Section 4.1), implementations only 5077 need to support those states which are appropriate for the particular 5079 Expires November 22, 2000 5080 implementation. In other words, a Printer supports only those job 5081 states implemented by the output device and available to the Printer 5082 object implementation. 5084 Standard enum values are: 5086 Values Symbolic Name and Description 5088 '3' 'pending': The job is a candidate to start processing, but is 5089 not yet processing. 5091 '4' 'pending-held': The job is not a candidate for processing for 5092 any number of reasons but will return to the 'pending' 5093 state as soon as the reasons are no longer present. The 5094 job's "job-state-reason" attribute MUST indicate why the 5095 job is no longer a candidate for processing. 5097 '5' 'processing': One or more of: 5099 1. the job is using, or is attempting to use, one or 5100 more purely software processes that are analyzing, 5101 creating, or interpreting a PDL, etc., 5102 2. the job is using, or is attempting to use, one or 5103 more hardware devices that are interpreting a PDL, making 5104 marks on a medium, and/or performing finishing, such as 5105 stapling, etc., 5106 3. the Printer object has made the job ready for 5107 printing, but the output device is not yet printing it, 5108 either because the job hasn't reached the output device 5109 or because the job is queued in the output device or some 5110 other spooler, awaiting the output device to print it. 5112 When the job is in the 'processing' state, the entire job 5113 state includes the detailed status represented in the 5114 Printer object's "printer-state", "printer-state- 5115 reasons", and "printer-state-message" attributes. 5117 Implementations MAY, though they NEED NOT, include 5118 additional values in the job's "job-state-reasons" 5119 attribute to indicate the progress of the job, such as 5120 adding the 'job-printing' value to indicate when the 5121 output device is actually making marks on paper and/or 5122 the 'processing-to-stop-point' value to indicate that the 5123 IPP object is in the process of canceling or aborting the 5124 job. Most implementations won't bother with this nuance. 5126 '6' 'processing-stopped': The job has stopped while processing 5127 for any number of reasons and will return to the 5128 'processing' state as soon as the reasons are no longer 5129 present. 5131 The job's "job-state-reason" attribute MAY indicate why 5132 the job has stopped processing. For example, if the 5134 Expires November 22, 2000 5135 output device is stopped, the 'printer-stopped' value MAY 5136 be included in the job's "job-state-reasons" attribute. 5138 Note: When an output device is stopped, the device 5139 usually indicates its condition in human readable form 5140 locally at the device. A client can obtain more complete 5141 device status remotely by querying the Printer object's 5142 "printer-state", "printer-state-reasons" and "printer- 5143 state-message" attributes. 5145 '7' 'canceled': The job has been canceled by a Cancel-Job 5146 operation and the Printer object has completed canceling 5147 the job and all job status attributes have reached their 5148 final values for the job. While the Printer object is 5149 canceling the job, the job remains in its current state, 5150 but the job's "job-state-reasons" attribute SHOULD 5151 contain the 'processing-to-stop-point' value and one of 5152 the 'canceled-by-user', 'canceled-by-operator', or 5153 'canceled-at-device' value. When the job moves to the 5154 'canceled' state, the 'processing-to-stop-point' value, 5155 if present, MUST be removed, but the 'canceled-by-xxx', 5156 if present, MUST remain. 5158 '8' 'aborted': The job has been aborted by the system, usually 5159 while the job was in the 'processing' or 'processing- 5160 stopped' state and the Printer has completed aborting the 5161 job and all job status attributes have reached their 5162 final values for the job. While the Printer object is 5163 aborting the job, the job remains in its current state, 5164 but the job's "job-state-reasons" attribute SHOULD 5165 contain the 'processing-to-stop-point' and 'aborted-by- 5166 system' values. When the job moves to the 'aborted' 5167 state, the 'processing-to-stop-point' value, if present, 5168 MUST be removed, but the 'aborted-by-system' value, if 5169 present, MUST remain. 5171 '9' 'completed': The job has completed successfully or with 5172 warnings or errors after processing and all of the job 5173 media sheets have been successfully stacked in the 5174 appropriate output bin(s) and all job status attributes 5175 have reached their final values for the job. The job's 5176 "job-state-reasons" attribute SHOULD contain one of: 5177 'completed-successfully', 'completed-with-warnings', or 5178 'completed-with-errors' values. 5180 The final value for this attribute MUST be one of: 'completed', 5181 'canceled', or 'aborted' before the Printer removes the job altogether. 5182 The length of time that jobs remain in the 'canceled', 'aborted', and 5183 'completed' states depends on implementation. See section 4.3.7.2. 5185 The following figure shows the normal job state transitions. 5187 Expires November 22, 2000 5188 +----> canceled 5189 / 5190 +----> pending --------> processing ---------+------> completed 5191 | ^ ^ \ 5192 --->+ | | +----> aborted 5193 | v v / 5194 +----> pending-held processing-stopped ---+ 5196 Normally a job progresses from left to right. Other state transitions 5197 are unlikely, but are not forbidden. Not shown are the transitions to 5198 the 'canceled' state from the 'pending', 'pending-held', and 5199 'processing-stopped' states. 5201 Jobs reach one of the three terminal states: 'completed', 'canceled', or 5202 'aborted', after the jobs have completed all activity, including 5203 stacking output media, after the jobs have completed all activity, and 5204 all job status attributes have reached their final values for the job. 5206 4.3.7.1 Forwarding Servers 5208 As with all other IPP attributes, if the implementation cannot determine 5209 the correct value for this attribute, it SHOULD respond with the out-of- 5210 band value 'unknown' (see section 4.1) rather than try to guess at some 5211 possibly incorrect value and give the end user the wrong impression 5212 about the state of the Job object. For example, if the implementation 5213 is just a gateway into some printing system from which it can normally 5214 get status, but temporarily is unable, then the implementation should 5215 return the 'unknown' value. However, if the implementation is a gateway 5216 to a printing system that never provides detailed status about the print 5217 job, the implementation MAY set the IPP Job object's state to 5218 'completed', provided that it also sets the 'queued-in-device' value in 5219 the job's "job-state-reasons" attribute (see section 4.3.8). 5221 4.3.7.2 Partitioning of Job States 5223 This section partitions the 7 job states into phases: Job Not 5224 Completed, Job Retention, Job History, and Job Removal. This section 5225 also explains the 'job-restartable' value of the "job-state-reasons" Job 5226 Description attribute for use with the Restart-Job operation. 5228 Job Not Completed: When a job is in the 'pending', 'pending-held', 5229 'processing', or 'processing-stopped' states, the job is not completed. 5231 Job Retention: When a job enters one of the three terminal job states: 5232 'completed', 'canceled', or 'aborted', the IPP Printer object MAY 5233 "retain" the job in a restartable condition for an implementation- 5234 defined time period. This time period MAY be zero seconds and MAY 5235 depend on the terminal job state. This phase is called Job Retention. 5236 While in the Job Retention phase, the job's document data is retained 5237 and a client may restart the job using the Restart-Job operation. If 5238 the IPP object supports the Restart-Job operation, then it SHOULD 5239 indicate that the job is restartable by adding the 'job-restartable' 5241 Expires November 22, 2000 5242 value to the job's "job-state-reasons" attribute (see Section 4.3.8) 5243 during the Job Retention phase. 5245 Job History: After the Job Retention phase expires for a job, the 5246 Printer object deletes the document data for the job and the job becomes 5247 part of the Job History. The Printer object MAY also delete any number 5248 of the job attributes. Since the job is no longer restartable, the 5249 Printer object MUST remove the 'job-restartable' value from the job's 5250 "job-state-reasons" attribute, if present. 5252 Job Removal: After the job has remained in the Job History for an 5253 implementation-defined time, such as when the number of jobs exceeds a 5254 fixed number or after a fixed time period (which MAY be zero seconds), 5255 the IPP Printer removes the job from the system. 5257 Using the Get-Jobs operation and supplying the 'not-completed' value for 5258 the "which-jobs" operation attribute, a client is requesting jobs in the 5259 Job Not Completed phase. Using the Get-Jobs operation and supplying the 5260 'completed' value for the "which-jobs" operation attribute, a client is 5261 requesting jobs in the Job Retention and Job History phases. Using the 5262 Get-Job-Attributes operation, a client is requesting a job in any phase 5263 except Job Removal. After Job Removal, the Get-Job-Attributes and Get- 5264 Jobs operations no longer are capable of returning any information about 5265 a job. 5267 4.3.8 job-state-reasons (1setOf type2 keyword) 5269 This REQUIRED attribute provides additional information about the job's 5270 current state, i.e., information that augments the value of the job's 5271 "job-state" attribute. 5273 These values MAY be used with any job state or states for which the 5274 reason makes sense. Some of these value definitions indicate 5275 conformance requirements; the rest are OPTIONAL. Furthermore, when 5276 implemented, the Printer MUST return these values when the reason 5277 applies and MUST NOT return them when the reason no longer applies 5278 whether the value of the Job's "job-state" attribute changed or not. 5279 When the Job does not have any reasons for being in its current state, 5280 the value of the Job's "job-state-reasons" attribute MUST be 'none'. 5282 Note: While values cannot be added to the 'job-state' attribute without 5283 impacting deployed clients that take actions upon receiving "job-state" 5284 values, it is the intent that additional "job-state-reasons" values can 5285 be defined and registered without impacting such deployed clients. In 5286 other words, the "job-state-reasons" attribute is intended to be 5287 extensible. 5289 The following standard keyword values are defined. For ease of 5290 understanding, the values are presented in the order in which the 5291 reasons are likely to occur (if implemented), starting with the 'job- 5292 incoming' value: 5294 'none': There are no reasons for the job's current state. This 5295 state reason is semantically equivalent to "job-state-reasons" 5297 Expires November 22, 2000 5298 without any value and MUST be used when there is no other value, 5299 since the 1setOf attribute syntax requires at least one value. 5300 'job-incoming': Either (1) the Printer has accepted the Create-Job 5301 operation and is expecting additional Send-Document and/or Send-URI 5302 operations, or (2) the Printer is retrieving/accepting document 5303 data as a result of a Print-Job, Print-URI, Send-Document or Send- 5304 URI operation. 5305 'job-data-insufficient': The Create-Job operation has been accepted 5306 by the Printer, but the Printer is expecting additional document 5307 data before it can move the job into the 'processing' state. If a 5308 Printer starts processing before it has received all data, the 5309 Printer removes the 'job-data-insufficient' reason, but the 'job- 5310 incoming' remains. If a Printer starts processing after it has 5311 received all data, the Printer removes the 'job-data-insufficient' 5312 reason and the 'job-incoming' at the same time. 5313 'document-access-error': After accepting a Print-URI or Send-URI 5314 request, the Printer could not access one or more documents passed 5315 by reference. This reason is intended to cover any file access 5316 problem, including file does not exist and access denied because of 5317 an access control problem. The Printer MAY also indicate the 5318 document access error using the "job-document-access-errors" Job 5319 Description attribute (see section 4.3.11). Whether the Printer 5320 aborts the job and moves the job to the 'aborted' job state or 5321 prints all documents that are accessible and moves the job to the 5322 'completed' job state and adds the 'completed-with-errors' value in 5323 the job's "job-state-reasons" attribute depends on implementation 5324 and/or site policy. This value SHOULD be supported if the Print- 5325 URI or Send-URI operations are supported. 5326 'submission-interrupted': The job was not completely submitted for 5327 some unforeseen reason, such as: (1) the Printer has crashed before 5328 the job was closed by the client, (2) the Printer or the document 5329 transfer method has crashed in some non-recoverable way before the 5330 document data was entirely transferred to the Printer, (3) the 5331 client crashed or failed to close the job before the time-out 5332 period. See section 4.4.31. 5333 'job-outgoing': The Printer is transmitting the job to the output 5334 device. 5335 'job-hold-until-specified': The value of the job's "job-hold-until" 5336 attribute was specified with a time period that is still in the 5337 future. The job MUST NOT be a candidate for processing until this 5338 reason is removed and there are no other reasons to hold the job. 5339 This value SHOULD be supported if the "job-hold-until" Job Template 5340 attribute is supported. 5341 'resources-are-not-ready': At least one of the resources needed by 5342 the job, such as media, fonts, resource objects, etc., is not ready 5343 on any of the physical printer's for which the job is a candidate. 5344 This condition MAY be detected when the job is accepted, or 5345 subsequently while the job is pending or processing, depending on 5346 implementation. The job may remain in its current state or be 5347 moved to the 'pending-held' state, depending on implementation 5348 and/or job scheduling policy. 5349 'printer-stopped-partly': The value of the Printer's "printer-state- 5350 reasons" attribute contains the value 'stopped-partly'. 5352 Expires November 22, 2000 5354 'printer-stopped': The value of the Printer's "printer-state" 5355 attribute is 'stopped'. 5356 'job-interpreting': Job is in the 'processing' state, but more 5357 specifically, the Printer is interpreting the document data. 5358 'job-queued': Job is in the 'processing' state, but more 5359 specifically, the Printer has queued the document data. 5360 'job-transforming': Job is in the 'processing' state, but more 5361 specifically, the Printer is interpreting document data and 5362 producing another electronic representation. 5363 'job-queued-for-marker': Job is in any of the 'pending-held', 5364 'pending', or 'processing' states, but more specifically, the 5365 Printer has completed enough processing of the document to be able 5366 to start marking and the job is waiting for the marker. Systems 5367 that require human intervention to release jobs using the Release- 5368 Job operation, put the job into the 'pending-held' job state. 5369 Systems that automatically select a job to use the marker put the 5370 job into the 'pending' job state or keep the job in the 5371 'processing' job state while waiting for the marker, depending on 5372 implementation. All implementations put the job into (or back 5373 into) the 'processing' state when marking does begin. 5374 'job-printing': The output device is marking media. This value is 5375 useful for Printers which spend a great deal of time processing (1) 5376 when no marking is happening and then want to show that marking is 5377 now happening or (2) when the job is in the process of being 5378 canceled or aborted while the job remains in the 'processing' 5379 state, but the marking has not yet stopped so that impression or 5380 sheet counts are still increasing for the job. 5381 'job-canceled-by-user': The job was canceled by the owner of the job 5382 using the Cancel-Job request, i.e., by a user whose authenticated 5383 identity is the same as the value of the originating user that 5384 created the Job object, or by some other authorized end-user, such 5385 as a member of the job owner's security group. This value SHOULD 5386 be supported. 5387 'job-canceled-by-operator': The job was canceled by the operator 5388 using the Cancel-Job request, i.e., by a user who has been 5389 authenticated as having operator privileges (whether local or 5390 remote). If the security policy is to allow anyone to cancel 5391 anyone's job, then this value may be used when the job is canceled 5392 by other than the owner of the job. For such a security policy, in 5393 effect, everyone is an operator as far as canceling jobs with IPP 5394 is concerned. This value SHOULD be supported if the implementation 5395 permits canceling by other than the owner of the job. 5396 'job-canceled-at-device': The job was canceled by an unidentified 5397 local user, i.e., a user at a console at the device. This value 5398 SHOULD be supported if the implementation supports canceling jobs 5399 at the console. 5400 'aborted-by-system': The job (1) is in the process of being aborted, 5401 (2) has been aborted by the system and placed in the 'aborted' 5402 state, or (3) has been aborted by the system and placed in the 5403 'pending-held' state, so that a user or operator can manually try 5404 the job again. This value SHOULD be supported. 5405 'unsupported-compression': The job was aborted by the system because 5406 the Printer determined while attempting to decompress the document- 5407 data's that the compression is actually not among those supported 5409 Expires November 22, 2000 5410 by the Printer. This value MUST be supported, since "compressions 5411 is a REQUIRED operation attribute. 5412 'compression-error': The job was aborted by the system because the 5413 Printer encountered an error in the document-data while 5414 decompressing it. If the Printer posts this reason, the document- 5415 data has already passed any tests that would have led to the 5416 'unsupported-compression' job-state-reason. 5417 'unsupported-document-format': The job was aborted by the system 5418 because the document-data's document-format is not among those 5419 supported by the Printer. If the client specifies the document- 5420 format as 'application/octet-stream', the printer MAY abort the job 5421 and post this reason even though the format is a member of the 5422 "document-format-supported" printer attribute, but not among the 5423 auto-sensed document-formats. This value MUST be supported, since 5424 "document-format" is a REQUIRED operation attribute. 5425 'document-format-error': The job was aborted by the system because 5426 the Printer encountered an error in the document-data while 5427 processing it. If the Printer posts this reason, the document-data 5428 has already passed any tests that would have led to the 5429 'unsupported-document-format' job-state-reason. 5430 'processing-to-stop-point': The requester has issued a Cancel-Job 5431 operation or the Printer object has aborted the job, but is still 5432 performing some actions on the job until a specified stop point 5433 occurs or job termination/cleanup is completed. 5435 If the implementation requires some measurable time to cancel the 5436 job in the 'processing' or 'processing-stopped' job states, the IPP 5437 object MUST use this value to indicate that the Printer object is 5438 still performing some actions on the job while the job remains in 5439 the 'processing' or 'processing-stopped' state. After all the 5440 job's job description attributes have stopped incrementing, the 5441 Printer object moves the job from the 'processing' state to the 5442 'canceled' or 'aborted' job states. 5444 'service-off-line': The Printer is off-line and accepting no jobs. 5445 All 'pending' jobs are put into the 'pending-held' state. This 5446 situation could be true if the service's or document transform's 5447 input is impaired or broken. 5448 'job-completed-successfully': The job completed successfully. This 5449 value SHOULD be supported. 5450 'job-completed-with-warnings': The job completed with warnings. 5451 This value SHOULD be supported if the implementation detects 5452 warnings. 5453 'job-completed-with-errors': The job completed with errors (and 5454 possibly warnings too). This value SHOULD be supported if the 5455 implementation detects errors. 5456 'job-restartable' - This job is retained (see section 4.3.7.2) and is 5457 currently able to be restarted using the Restart-Job operation (see 5458 section 3.3.7). If 'job-restartable' is a value of the job's 'job- 5459 state-reasons' attribute, then the IPP object MUST accept a 5460 Restart-Job operation for that job. This value SHOULD be supported 5461 if the Restart-Job operation is supported. 5462 'queued-in-device': The job has been forwarded to a device or print 5463 system that is unable to send back status. The Printer sets the 5464 job's "job-state " attribute to 'completed' and adds the 'queued- 5466 Expires November 22, 2000 5467 in-device' value to the job's "job-state-reasons" attribute to 5468 indicate that the Printer has no additional information about the 5469 job and never will have any better information. See section 5470 4.3.7.1. 5472 4.3.9 job-state-message (text(MAX)) 5474 This attribute specifies information about the "job-state" and "job- 5475 state-reasons" attributes in human readable text. If the Printer object 5476 supports this attribute, the Printer object MUST be able to generate 5477 this message in any of the natural languages identified by the Printer's 5478 "generated-natural-language-supported" attribute (see the "attributes- 5479 natural-language" operation attribute specified in Section 3.1.4.1). 5481 The value SHOULD NOT contain additional information not contained in the 5482 values of the "job-state" and "job-states-reasons" attributes, such as 5483 interpreter error information. Otherwise, application programs might 5484 attempt to parse the (localized text). For such additional information 5485 such as interpreter errors for application program consumption or 5486 specific document access errors, new attributes with keyword values, 5487 needs to be developed and registered. 5489 4.3.10 job-detailed-status-messages (1setOf text(MAX)) 5491 This attribute specifies additional detailed and technical information 5492 about the job. The Printer NEED NOT localize the message(s), since they 5493 are intended for use by the system administrator or other experienced 5494 technical persons. Localization might obscure the technical meaning of 5495 such messages. Clients MUST NOT attempt to parse the value of this 5496 attribute. See "job-document-access-errors" (section 4.3.11) for 5497 additional errors that a program can process. 5499 4.3.11 job-document-access-errors (1setOf text(MAX)) 5501 This attribute provides additional information about each document 5502 access error for this job encountered by the Printer after it returned a 5503 response to the Print-URI or Send-URI operation and subsequently 5504 attempted to access document(s) supplied in the Print-URI or Send-URI 5505 operation. For errors in the protocol that is identified by the URI 5506 scheme in the "document-uri" operation attribute, such as 'http:' or 5507 'ftp:', the error code is returned in parentheses, followed by the URI. 5508 For example: 5510 (404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11- 5511 990510.pdf 5513 Most Internet protocols use decimal error codes (unlike IPP), so the 5514 ASCII error code representation is in decimal. 5516 4.3.12 number-of-documents (integer(0:MAX)) 5518 This attribute indicates the number of documents in the job, i.e., the 5519 number of Send-Document, Send-URI, Print-Job, or Print-URI operations 5521 Expires November 22, 2000 5522 that the Printer has accepted for this job, regardless of whether the 5523 document data has reached the Printer object or not. 5525 Implementations supporting the OPTIONAL Create-Job/Send-Document/Send- 5526 URI operations SHOULD support this attribute so that clients can query 5527 the number of documents in each job. 5529 4.3.13 output-device-assigned (name(127)) 5531 This attribute identifies the output device to which the Printer object 5532 has assigned this job. If an output device implements an embedded 5533 Printer object, the Printer object NEED NOT set this attribute. If a 5534 print server implements a Printer object, the value MAY be empty (zero- 5535 length string) or not returned until the Printer object assigns an 5536 output device to the job. This attribute is particularly useful when a 5537 single Printer object supports multiple devices (so called "fan-out" - 5538 see section 2.1). 5540 4.3.14 Event Time Job Description Attributes 5542 This section defines the Job Description attributes that indicate the 5543 time at which certain events occur for a job. If the job event has not 5544 yet occurred, then the IPP object MUST return the 'no-value' out-of-band 5545 value (see the beginning of Section 4.1). The "time-at-xxx(integer)" 5546 attributes represent time as an 'integer' representing the number of 5547 seconds since the device was powered up (informally called "time 5548 ticks"). The "date-time-at-xxx(dateTime)" attributes represent time as 5549 'dateTime' representing date and time (including an offset from UTC). 5551 In order to populate these attributes, the Printer object copies the 5552 value(s) of the following Printer Description attributes at the time the 5553 event occurs: 5555 1. the value in the Printer's "printer-up-time" attribute for the 5556 "time-at-xxx(integer)" attributes 5558 2. the value in the Printer's "printer-current-time" attribute for the 5559 "date-time-at-xxx(dateTime)" attributes. 5561 If the Printer resets its "printer-up-time" attribute to 1 on power-up 5562 (see section 4.4.29) and has persistent jobs, then it MUST change all of 5563 jobs' "time-at-xxx(integer)" (time tick) job attributes whose events 5564 have occurred either to: 5566 1. 0 to indicate that the event happened before the most recent power 5567 up OR 5569 2. the negative of the number of seconds before the most recent power- 5570 up that the event took place, though the negative number NEED NOT 5571 reflect the exact number of seconds. 5573 Expires November 22, 2000 5575 If a client queries a "time-at-xxx(integer)" time tick Job attribute and 5576 finds the value to be 0 or negative, the client MUST assume that the 5577 event occurred in some life other than the Printer's current life. 5579 Note: A Printer does not change the values of any "date-time-at- 5580 xxx(dateTime)" job attributes on power-up. 5582 4.3.14.1 time-at-creation (integer(MIN:MAX)) 5584 This REQUIRED attribute indicates the time at which the Job object was 5585 created. 5587 4.3.14.2 time-at-processing (integer(MIN:MAX)) 5589 This REQUIRED attribute indicates the time at which the Job object first 5590 began processing after the create operation or the most recent Restart- 5591 Job operation. The out-of-band 'no-value' value is returned if the job 5592 has not yet been in the 'processing' state (see the beginning of Section 5593 4.1). 5595 4.3.14.3 time-at-completed (integer(MIN:MAX)) 5597 This REQUIRED attribute indicates the time at which the Job object 5598 completed (or was canceled or aborted). The out-of-band 'no-value' 5599 value is returned if the job has not yet completed, been canceled, or 5600 aborted (see the beginning of Section 4.1). 5602 4.3.14.4 job-printer-up-time (integer(1:MAX)) 5604 This REQUIRED Job Description attribute indicates the amount of time (in 5605 seconds) that the Printer implementation has been up and running. This 5606 attribute is an alias for the "printer-up-time" Printer Description 5607 attribute (see Section 4.4.29). 5609 A client MAY request this attribute in a Get-Job-Attributes or Get-Jobs 5610 request and use the value returned in combination with other requested 5611 Event Time Job Description Attributes in order to display time 5612 attributes to a user. The difference between this attribute and the 5613 'integer' value of a "time-at-xxx" attribute is the number of seconds 5614 ago that the "time-at-xxx" event occurred. A client can compute the 5615 wall-clock time at which the "time-at-xxx" event occurred by subtracting 5616 this difference from the client's wall-clock time. 5618 4.3.14.5 date-time-at-creation (dateTime) 5620 This attribute indicates the date and time at which the Job object was 5621 created. 5623 Expires November 22, 2000 5624 4.3.14.6 date-time-at-processing (dateTime) 5626 This attribute indicates the date and time at which the Job object first 5627 began processing after the create operation or the most recent Restart- 5628 Job operation. 5630 4.3.14.7 date-time-at-completed (dateTime) 5632 This attribute indicates the date and time at which the Job object 5633 completed (or was canceled or aborted). 5635 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 5637 This attribute indicates the number of jobs that are "ahead" of this job 5638 in the relative chronological order of expected time to complete (i.e., 5639 the current scheduled order). For efficiency, it is only necessary to 5640 calculate this value when an operation is performed that requests this 5641 attribute. 5643 4.3.16 job-message-from-operator (text(127)) 5645 This attribute provides a message from an operator, system administrator 5646 or "intelligent" process to indicate to the end user the reasons for 5647 modification or other management action taken on a job. 5649 4.3.17 Job Size Attributes 5651 This sub-section defines job attributes that describe the size of the 5652 job. These attributes are not intended to be counters; they are 5653 intended to be useful routing and scheduling information if known. For 5654 these attributes, the Printer object may try to compute the value if it 5655 is not supplied in the create request. Even if the client does supply a 5656 value for these three attributes in the create request, the Printer 5657 object MAY choose to change the value if the Printer object is able to 5658 compute a value which is more accurate than the client supplied value. 5659 The Printer object may be able to determine the correct value for these 5660 attributes either right at job submission time or at any later point in 5661 time. 5663 4.3.17.1 job-k-octets (integer(0:MAX)) 5665 This attribute specifies the total size of the document(s) in K octets, 5666 i.e., in units of 1024 octets requested to be processed in the job. The 5667 value MUST be rounded up, so that a job between 1 and 1024 octets MUST 5668 be indicated as being 1, 1025 to 2048 MUST be 2, etc. 5670 This value MUST NOT include the multiplicative factors contributed by 5671 the number of copies specified by the "copies" attribute, independent of 5672 whether the device can process multiple copies without making multiple 5674 Expires November 22, 2000 5675 passes over the job or document data and independent of whether the 5676 output is collated or not. Thus the value is independent of the 5677 implementation and indicates the size of the document(s) measured in K 5678 octets independent of the number of copies. 5680 This value MUST also not include the multiplicative factor due to a 5681 copies instruction embedded in the document data. If the document data 5682 actually includes replications of the document data, this value will 5683 include such replication. In other words, this value is always the size 5684 of the source document data, rather than a measure of the hardcopy 5685 output to be produced. 5687 4.3.17.2 job-impressions (integer(0:MAX)) 5689 This attribute specifies the total size in number of impressions of the 5690 document(s) being submitted (see the definition of impression in section 5691 12.2.5). 5693 As with "job-k-octets", this value MUST NOT include the multiplicative 5694 factors contributed by the number of copies specified by the "copies" 5695 attribute, independent of whether the device can process multiple copies 5696 without making multiple passes over the job or document data and 5697 independent of whether the output is collated or not. Thus the value is 5698 independent of the implementation and reflects the size of the 5699 document(s) measured in impressions independent of the number of copies. 5701 As with "job-k-octets", this value MUST also not include the 5702 multiplicative factor due to a copies instruction embedded in the 5703 document data. If the document data actually includes replications of 5704 the document data, this value will include such replication. In other 5705 words, this value is always the number of impressions in the source 5706 document data, rather than a measure of the number of impressions to be 5707 produced by the job. 5709 4.3.17.3 job-media-sheets (integer(0:MAX)) 5711 This attribute specifies the total number of media sheets to be produced 5712 for this job. 5714 Unlike the "job-k-octets" and the "job-impressions" attributes, this 5715 value MUST include the multiplicative factors contributed by the number 5716 of copies specified by the "copies" attribute and a 'number of copies' 5717 instruction embedded in the document data, if any. This difference 5718 allows the system administrator to control the lower and upper bounds of 5719 both (1) the size of the document(s) with "job-k-octets-supported" and 5720 "job-impressions-supported" and (2) the size of the job with "job-media- 5721 sheets-supported". 5723 4.3.18 Job Progress Attributes 5725 This sub-section defines job attributes that describe the progress of 5726 the job. These attributes are intended to be counters. That is, the 5728 Expires November 22, 2000 5729 value for a job that has not started processing MUST be 0. When the 5730 job's "job-state" is 'processing' or 'processing-stopped', this value is 5731 intended to contain the amount of the job that has been processed to the 5732 time at which the attributes are requested. When the job enters the 5733 'completed', 'canceled', or 'aborted' states, these values are the final 5734 values for the job. 5736 4.3.18.1 job-k-octets-processed (integer(0:MAX)) 5738 This attribute specifies the total number of octets processed in K 5739 octets, i.e., in units of 1024 octets so far. The value MUST be rounded 5740 up, so that a job between 1 and 1024 octets inclusive MUST be indicated 5741 as being 1, 1025 to 2048 inclusive MUST be 2, etc. 5743 For implementations where multiple copies are produced by the 5744 interpreter with only a single pass over the data, the final value MUST 5745 be equal to the value of the "job-k-octets" attribute. For 5746 implementations where multiple copies are produced by the interpreter by 5747 processing the data for each copy, the final value MUST be a multiple of 5748 the value of the "job-k-octets" attribute. 5750 4.3.18.2 job-impressions-completed (integer(0:MAX)) 5752 This job attribute specifies the number of impressions completed for the 5753 job so far. For printing devices, the impressions completed includes 5754 interpreting, marking, and stacking the output. 5756 4.3.18.3 job-media-sheets-completed (integer(0:MAX)) 5758 This job attribute specifies the media-sheets completed marking and 5759 stacking for the entire job so far whether those sheets have been 5760 processed on one side or on both. 5762 4.3.19 attributes-charset (charset) 5764 This REQUIRED attribute is populated using the value in the client 5765 supplied "attributes-charset" attribute in the create request. It 5766 identifies the charset (coded character set and encoding method) used by 5767 any Job attributes with attribute syntax 'text' and 'name' that were 5768 supplied by the client in the create request. See Section 3.1.4 for a 5769 complete description of the "attributes-charset" operation attribute. 5771 This attribute does not indicate the charset in which the 'text' and 5772 'name' values are stored internally in the Job object. The internal 5773 charset is implementation-defined. The IPP object MUST convert from 5774 whatever the internal charset is to that being requested in an operation 5775 as specified in Section 3.1.4. 5777 Expires November 22, 2000 5778 4.3.20 attributes-natural-language (naturalLanguage) 5780 This REQUIRED attribute is populated using the value in the client 5781 supplied "attributes-natural-language" attribute in the create request. 5782 It identifies the natural language used for any Job attributes with 5783 attribute syntax 'text' and 'name' that were supplied by the client in 5784 the create request. See Section 3.1.4 for a complete description of the 5785 "attributes-natural-language" operation attribute. See Sections 4.1.1.2 5786 and 4.1.2.2 for how a Natural Language Override may be supplied 5787 explicitly for each 'text' and 'name' attribute value that differs from 5788 the value identified by the "attributes-natural-language" attribute. 5790 4.4 Printer Description Attributes 5792 These attributes form the attribute group called "printer-description". 5793 The following table summarizes these attributes, their syntax, and 5794 whether or not they are REQUIRED for a Printer object to support. If 5795 they are not indicated as REQUIRED, they are OPTIONAL. The maximum size 5796 in octets for 'text' and 'name' attributes is indicated in 5797 parenthesizes. 5799 Note: How these attributes are set by an Administrator is outside the 5800 scope of this IPP/1.1 document. 5802 Expires November 22, 2000 5803 +----------------------------+---------------------------+-----------+ 5804 | Attribute | Syntax | REQUIRED? | 5805 +----------------------------+---------------------------+-----------+ 5806 | printer-uri-supported | 1setOf uri | REQUIRED | 5807 +----------------------------+---------------------------+-----------+ 5808 | uri-security-supported | 1setOf type2 keyword | REQUIRED | 5809 +----------------------------+---------------------------+-----------+ 5810 | uri-authentication- | 1setOf type2 keyword | REQUIRED | 5811 | supported | | | 5812 +----------------------------+---------------------------+-----------+ 5813 | printer-name | name (127) | REQUIRED | 5814 +----------------------------+---------------------------+-----------+ 5815 | printer-location | text (127) | | 5816 +----------------------------+---------------------------+-----------+ 5817 | printer-info | text (127) | | 5818 +----------------------------+---------------------------+-----------+ 5819 | printer-more-info | uri | | 5820 +----------------------------+---------------------------+-----------+ 5821 | printer-driver-installer | uri | | 5822 +----------------------------+---------------------------+-----------+ 5823 | printer-make-and-model | text (127) | | 5824 +----------------------------+---------------------------+-----------+ 5825 | printer-more-info- | uri | | 5826 | manufacturer | | | 5827 +----------------------------+---------------------------+-----------+ 5828 | printer-state | type1 enum | REQUIRED | 5829 +----------------------------+---------------------------+-----------+ 5830 | printer-state-reasons | 1setOf type2 keyword | REQUIRED | 5831 +----------------------------+---------------------------+-----------+ 5832 | printer-state-message | text (MAX) | | 5833 +----------------------------+---------------------------+-----------+ 5834 | ipp-versions-supported | 1setOf type2 keyword | REQUIRED | 5835 +----------------------------+---------------------------+-----------+ 5836 | operations-supported | 1setOf type2 enum | REQUIRED | 5837 +----------------------------+---------------------------+-----------+ 5838 | multiple-document-jobs- | boolean | | 5839 | supported | | | 5840 +----------------------------+---------------------------+-----------+ 5841 | charset-configured | charset | REQUIRED | 5842 +----------------------------+---------------------------+-----------+ 5843 | charset-supported | 1setOf charset | REQUIRED | 5844 +----------------------------+---------------------------+-----------+ 5845 | natural-language-configured| naturalLanguage | REQUIRED | 5846 +----------------------------+---------------------------+-----------+ 5847 | generated-natural-language-| 1setOf naturalLanguage | REQUIRED | 5848 | supported | | | 5849 +----------------------------+---------------------------+-----------+ 5850 | document-format-default | mimeMediaType | REQUIRED | 5851 +----------------------------+---------------------------+-----------+ 5852 | document-format-supported | 1setOf mimeMediaType | REQUIRED | 5853 +----------------------------+---------------------------+-----------+ 5854 | printer-is-accepting-jobs | boolean | REQUIRED | 5855 +----------------------------+---------------------------+-----------+ 5856 | queued-job-count | integer (0:MAX) | REQUIRED | 5858 Expires November 22, 2000 5859 +----------------------------+---------------------------+-----------+ 5860 | printer-message-from- | text (127) | | 5861 | operator | | | 5862 +----------------------------+---------------------------+-----------+ 5863 | color-supported | boolean | | 5864 +----------------------------+---------------------------+-----------+ 5865 | reference-uri-schemes- | 1setOf uriScheme | | 5866 | supported | | | 5867 +----------------------------+---------------------------+-----------+ 5868 | pdl-override-supported | type2 keyword | REQUIRED | 5869 +----------------------------+---------------------------+-----------+ 5870 | printer-up-time | integer (1:MAX) | REQUIRED | 5871 +----------------------------+---------------------------+-----------+ 5872 | printer-current-time | dateTime | | 5873 +----------------------------+---------------------------+-----------+ 5874 | multiple-operation-time-out| integer (1:MAX) | | 5875 +----------------------------+---------------------------+-----------+ 5876 | compression-supported | 1setOf type3 keyword | REQUIRED | 5877 +----------------------------+---------------------------+-----------+ 5878 | job-k-octets-supported | rangeOfInteger (0:MAX) | | 5879 +----------------------------+---------------------------+-----------+ 5880 | job-impressions-supported | rangeOfInteger (0:MAX) | | 5881 +----------------------------+---------------------------+-----------+ 5882 | job-media-sheets-supported | rangeOfInteger (0:MAX) | | 5883 +----------------------------+---------------------------+-----------+ 5884 | pages-per-minute | integer(0:MAX) | | 5885 +----------------------------+---------------------------+-----------+ 5886 | pages-per-minute-color | integer(0:MAX) | | 5887 +----------------------------+---------------------------+-----------+ 5889 4.4.1 printer-uri-supported (1setOf uri) 5891 This REQUIRED Printer attribute contains at least one URI for the 5892 Printer object. It OPTIONALLY contains more than one URI for the 5893 Printer object. An administrator determines a Printer object's URI(s) 5894 and configures this attribute to contain those URIs by some means 5895 outside the scope of this IPP/1.1 document. The precise format of this 5896 URI is implementation dependent and depends on the protocol. See the 5897 next two sections for a description of the "uri-security-supported" and 5898 "uri-authentication-supported" attributes, both of which are the 5899 REQUIRED companion attributes to this "printer-uri-supported" attribute. 5900 See section 2.4 on Printer object identity and section 8.2 on security 5901 and URIs for more information. 5903 4.4.2 uri-authentication-supported (1setOf type2 keyword) 5905 This REQUIRED Printer attribute MUST have the same cardinality (contain 5906 the same number of values) as the "printer-uri-supported" attribute. 5907 This attribute identifies the Client Authentication mechanism associated 5908 with each URI listed in the "printer-uri-supported" attribute. The 5909 Printer object uses the specified mechanism to identify the 5910 authenticated user (see section 8.3) . The "i th" value in "uri- 5912 Expires November 22, 2000 5913 authentication-supported" corresponds to the "i th" value in "printer- 5914 uri-supported" and it describes the authentication mechanisms used by 5915 the Printer when accessed via that URI. See [IPP-PRO] for more details 5916 on Client Authentication. 5918 The following standard keyword values are defined: 5920 'none': There is no authentication mechanism associated with the URI. 5921 The Printer object assumes that the authenticated user is 5922 "anonymous". 5923 'requesting-user-name': When a client performs an operation whose 5924 target is the associated URI, the Printer object assumes that the 5925 authenticated user is specified by the "requesting-user-name" 5926 Operation attribute (see section 8.3). If the "requesting-user- 5927 name" attribute is absent in a request, the Printer object assumes 5928 that the authenticated user is "anonymous". 5929 'basic': When a client performs an operation whose target is the 5930 associated URI, the Printer object challenges the client with HTTP 5931 basic authentication [RFC2617]. The Printer object assumes that the 5932 authenticated user is the name received via the basic 5933 authentication mechanism. 5934 'digest': When a client performs an operation whose target is the 5935 associated URI, the Printer object challenges the client with HTTP 5936 digest authentication [RFC2617]. The Printer object assumes that 5937 the authenticated user is the name received via the digest 5938 authentication mechanism. 5939 'certificate': When a client performs an operation whose target is 5940 the associated URI, the Printer object expects the client to 5941 provide a certificate. The Printer object assumes that the 5942 authenticated user is the textual name contained within the 5943 certificate. 5945 4.4.3 uri-security-supported (1setOf type2 keyword) 5947 This REQUIRED Printer attribute MUST have the same cardinality (contain 5948 the same number of values) as the "printer-uri-supported" attribute. 5949 This attribute identifies the security mechanisms used for each URI 5950 listed in the "printer-uri-supported" attribute. The "i th" value in 5951 "uri-security-supported" corresponds to the "i th" value in "printer- 5952 uri-supported" and it describes the security mechanisms used for 5953 accessing the Printer object via that URI. See [IPP-PRO] for more 5954 details on security mechanisms. 5956 The following standard keyword values are defined: 5958 'none': There are no secure communication channel protocols in use 5959 for the given URI. 5960 'ssl3': SSL3 [SSL] is the secure communications channel protocol in 5961 use for the given URI. 5962 'tls': TLS [RFC2246] is the secure communications channel protocol 5963 in use for the given URI. 5965 Expires November 22, 2000 5967 This attribute is orthogonal to the definition of a Client 5968 Authentication mechanism. Specifically, 'none' does not exclude Client 5969 Authentication. See section 4.4.2. 5971 Consider the following example. For a single Printer object, an 5972 administrator configures the "printer-uri-supported", "uri- 5973 authentication-supported" and "uri-security-supported" attributes as 5974 follows: 5976 "printer-uri-supported": 'xxx://acme.com/open-use-printer', 5977 'xxx://acme.com/restricted-use-printer', 'xxx://acme.com/private- 5978 printer' 5979 "uri-authentication-supported": 'none', 'digest', 'basic' 5980 "uri-security-supported": 'none', 'none', 'tls' 5982 Note: 'xxx' is not a valid scheme. See the IPP/1.1 "Transport and 5983 Encoding" document [IPP-PRO] for the actual URI schemes to be used in 5984 object target attributes. 5986 In this case, one Printer object has three URIs. 5988 - For the first URI, 'xxx://acme.com/open-use-printer', the value 5989 'none' in "uri-security-supported" indicates that there is no 5990 secure channel protocol configured to run under HTTP. The value of 5991 'none' in "uri-authentication-supported" indicates that all users 5992 are 'anonymous'. There will be no challenge and the Printer will 5993 ignore "requesting-user-name". 5994 - For the second URI, 'xxx://acme.com/restricted-use-printer', the 5995 value 'none' in "uri-security-supported" indicates that there is no 5996 secure channel protocol configured to run under HTTP. The value of 5997 'digest' in "uri-authentication-supported" indicates that the 5998 Printer will issue a challenge and that the Printer will use the 5999 name supplied by the digest mechanism to determine the 6000 authenticated user (see section 8.3). 6001 - For the third URI, 'xxx://acme.com/private-printer', the value 6002 'tls' in "uri-security-supported" indicates that TLS is being used 6003 to secure the channel. The client SHOULD be prepared to use TLS 6004 framing to negotiate an acceptable ciphersuite to use while 6005 communicating with the Printer object. In this case, the name 6006 implies the use of a secure communications channel, but the fact is 6007 made explicit by the presence of the 'tls' value in "uri-security- 6008 supported". The client does not need to resort to understanding 6009 which security it must use by following naming conventions or by 6010 parsing the URI to determine which security mechanisms are implied. 6011 The value of 'basic' in "uri-authentication-supported" indicates 6012 that the Printer will issue a challenge and that the Printer will 6013 use the name supplied by the digest mechanism to determine the 6014 authenticated user (see section 8.3) . Because this challenge 6015 occurs in a tls session, the channel is secure. 6017 It is expected that many IPP Printer objects will be configured to 6018 support only one channel (either configured to use TLS access or not) 6019 and only one authentication mechanism. Such Printer objects only have 6020 one URI listed in the "printer-uri-supported" attribute. No matter the 6022 Expires November 22, 2000 6023 configuration of the Printer object (whether it has only one URI or more 6024 than one URI), a client MUST supply only one URI in the target "printer- 6025 uri" operation attribute. 6027 4.4.4 printer-name (name(127)) 6029 This REQUIRED Printer attribute contains the name of the Printer object. 6030 It is a name that is more end-user friendly than a URI. An administrator 6031 determines a printer's name and sets this attribute to that name. This 6032 name may be the last part of the printer's URI or it may be unrelated. 6033 In non-US-English locales, a name may contain characters that are not 6034 allowed in a URI. 6036 4.4.5 printer-location (text(127)) 6038 This Printer attribute identifies the location of the device. This could 6039 include things like: "in Room 123A, second floor of building XYZ". 6041 4.4.6 printer-info (text(127)) 6043 This Printer attribute identifies the descriptive information about this 6044 Printer object. This could include things like: "This printer can be 6045 used for printing color transparencies for HR presentations", or "Out of 6046 courtesy for others, please print only small (1-5 page) jobs at this 6047 printer", or even "This printer is going away on July 1, 1997, please 6048 find a new printer". 6050 4.4.7 printer-more-info (uri) 6052 This Printer attribute contains a URI used to obtain more information 6053 about this specific Printer object. For example, this could be an HTTP 6054 type URI referencing an HTML page accessible to a Web Browser. The 6055 information obtained from this URI is intended for end user consumption. 6056 Features outside the scope of IPP can be accessed from this URI. The 6057 information is intended to be specific to this printer instance and site 6058 specific services (e.g. job pricing, services offered, end user 6059 assistance). The device manufacturer may initially populate this 6060 attribute. 6062 4.4.8 printer-driver-installer (uri) 6064 This Printer attribute contains a URI to use to locate the driver 6065 installer for this Printer object. This attribute is intended for 6066 consumption by automata. The mechanics of print driver installation is 6067 outside the scope of this IPP/1.1 document. The device manufacturer may 6068 initially populate this attribute. 6070 4.4.9 printer-make-and-model (text(127)) 6072 This Printer attribute identifies the make and model of the device. The 6073 device manufacturer may initially populate this attribute. 6075 Expires November 22, 2000 6076 4.4.10 printer-more-info-manufacturer (uri) 6078 This Printer attribute contains a URI used to obtain more information 6079 about this type of device. The information obtained from this URI is 6080 intended for end user consumption. Features outside the scope of IPP 6081 can be accessed from this URI (e.g., latest firmware, upgrades, print 6082 drivers, optional features available, details on color support). The 6083 information is intended to be germane to this printer without regard to 6084 site specific modifications or services. The device manufacturer may 6085 initially populate this attribute. 6087 4.4.11 printer-state (type1 enum) 6089 This REQUIRED Printer attribute identifies the current state of the 6090 device. The "printer-state reasons" attribute augments the "printer- 6091 state" attribute to give more detailed information about the Printer in 6092 the given printer state. 6094 A Printer object need only update this attribute before responding to an 6095 operation which requests the attribute; the Printer object NEED NOT 6096 update this attribute continually, since asynchronous event notification 6097 is not part of IPP/1.1. A Printer NEED NOT implement all values if they 6098 are not applicable to a given implementation. 6100 The following standard enum values are defined: 6102 Value Symbolic Name and Description 6104 '3' 'idle': Indicates that new jobs can start processing without 6105 waiting. 6106 '4' 'processing': Indicates that jobs are processing; new jobs 6107 will wait before processing. 6108 '5' 'stopped': Indicates that no jobs can be processed and 6109 intervention is required. 6111 Values of "printer-state-reasons", such as 'spool-area-full' and 6112 'stopped-partly', MAY be used to provide further information. 6114 4.4.12 printer-state-reasons (1setOf type2 keyword) 6116 This REQUIRED Printer attribute supplies additional detail about the 6117 device's state. Some of the these value definitions indicate 6118 conformance requirements; the rest are OPTIONAL. 6120 Each keyword value MAY have a suffix to indicate its level of severity. 6121 The three levels are: report (least severe), warning, and error (most 6122 severe). 6124 - '-report': This suffix indicates that the reason is a "report". An 6125 implementation may choose to omit some or all reports. Some reports 6126 specify finer granularity about the printer state; others serve as 6127 a precursor to a warning. A report MUST contain nothing that could 6128 affect the printed output. 6130 Expires November 22, 2000 6132 - '-warning': This suffix indicates that the reason is a "warning". 6133 An implementation may choose to omit some or all warnings. Warnings 6134 serve as a precursor to an error. A warning MUST contain nothing 6135 that prevents a job from completing, though in some cases the 6136 output may be of lower quality. 6137 - '-error': This suffix indicates that the reason is an "error". An 6138 implementation MUST include all errors. If this attribute contains 6139 one or more errors, printer MUST be in the stopped state. 6141 If the implementation does not add any one of the three suffixes, all 6142 parties MUST assume that the reason is an "error". 6144 If a Printer object controls more than one output device, each value of 6145 this attribute MAY apply to one or more of the output devices. An error 6146 on one output device that does not stop the Printer object as a whole 6147 MAY appear as a warning in the Printer's "printer-state-reasons 6148 attribute". If the "printer-state" for such a Printer has a value of 6149 'stopped', then there MUST be an error reason among the values in the 6150 "printer-state-reasons" attribute. 6152 The following standard keyword values are defined: 6154 'other': The device has detected an error other than one listed in 6155 this document. 6156 'none': There are not reasons. This state reason is semantically 6157 equivalent to "printer-state-reasons" without any value and MUST be 6158 used, since the 1setOf attribute syntax requires at least one 6159 value. 6160 'media-needed': A tray has run out of media. 6161 'media-jam': The device has a media jam. 6162 'moving-to-paused': Someone has paused the Printer object using the 6163 Pause-Printer operation (see section 3.2.7) or other means, but the 6164 device(s) are taking an appreciable time to stop. Later, when all 6165 output has stopped, the "printer-state" becomes 'stopped', and the 6166 'paused' value replaces the 'moving-to-paused' value in the 6167 "printer-state-reasons" attribute. This value MUST be supported, 6168 if the Pause-Printer operation is supported and the implementation 6169 takes significant time to pause a device in certain circumstances. 6170 'paused': Someone has paused the Printer object using the Pause- 6171 Printer operation (see section 3.2.7) or other means and the 6172 Printer object's "printer-state" is 'stopped'. In this state, a 6173 Printer MUST NOT produce printed output, but it MUST perform other 6174 operations requested by a client. If a Printer had been printing a 6175 job when the Printer was paused, the Printer MUST resume printing 6176 that job when the Printer is no longer paused and leave no evidence 6177 in the printed output of such a pause. This value MUST be 6178 supported, if the Pause-Printer operation is supported. 6179 'shutdown': Someone has removed a Printer object from service, and 6180 the device may be powered down or physically removed. In this 6181 state, a Printer object MUST NOT produce printed output, and unless 6182 the Printer object is realized by a print server that is still 6183 active, the Printer object MUST perform no other operations 6184 requested by a client, including returning this value. If a Printer 6185 object had been printing a job when it was shutdown, the Printer 6187 Expires November 22, 2000 6188 NEED NOT resume printing that job when the Printer is no longer 6189 shutdown. If the Printer resumes printing such a job, it may leave 6190 evidence in the printed output of such a shutdown, e.g. the part 6191 printed before the shutdown may be printed a second time after the 6192 shutdown. 6193 'connecting-to-device': The Printer object has scheduled a job on the 6194 output device and is in the process of connecting to a shared 6195 network output device (and might not be able to actually start 6196 printing the job for an arbitrarily long time depending on the 6197 usage of the output device by other servers on the network). 6198 'timed-out': The server was able to connect to the output device (or 6199 is always connected), but was unable to get a response from the 6200 output device. 6201 'stopping': The Printer object is in the process of stopping the 6202 device and will be stopped in a while. When the device is stopped, 6203 the Printer object will change the Printer object's state to 6204 'stopped'. The 'stopping-warning' reason is never an error, even 6205 for a Printer with a single output device. When an output-device 6206 ceases accepting jobs, the Printer will have this reason while the 6207 output device completes printing. 6208 'stopped-partly': When a Printer object controls more than one output 6209 device, this reason indicates that one or more output devices are 6210 stopped. If the reason is a report, fewer than half of the output 6211 devices are stopped. If the reason is a warning, fewer than all of 6212 the output devices are stopped. 6213 'toner-low': The device is low on toner. 6214 'toner-empty': The device is out of toner. 6215 'spool-area-full': The limit of persistent storage allocated for 6216 spooling has been reached. The Printer is temporarily unable to 6217 accept more jobs. The Printer will remove this value when it is 6218 able to accept more jobs. This value SHOULD be used by a non- 6219 spooling Printer that only accepts one or a small number jobs at a 6220 time or a spooling Printer that has filled the spool space. 6221 'cover-open': One or more covers on the device are open. 6222 'interlock-open': One or more interlock devices on the printer are 6223 unlocked. 6224 'door-open': One or more doors on the device are open. 6225 'input-tray-missing': One or more input trays are not in the device. 6226 'media-low': At least one input tray is low on media. 6227 'media-empty': At least one input tray is empty. 6228 'output-tray-missing': One or more output trays are not in the device 6229 'output-area-almost-full': One or more output area is almost full 6230 (e.g. tray, stacker, collator). 6231 'output-area-full': One or more output area is full. (e.g. tray, 6232 stacker, collator) 6233 'marker-supply-low': The device is low on at least one marker supply. 6234 (e.g. toner, ink, ribbon) 6235 'marker-supply-empty: The device is out of at least one marker 6236 supply. (e.g. toner, ink, ribbon) 6237 'marker-waste-almost-full': The device marker supply waste receptacle 6238 is almost full. 6239 'marker-waste-full': The device marker supply waste receptacle is 6240 full. 6241 'fuser-over-temp': The fuser temperature is above normal. 6243 Expires November 22, 2000 6244 'fuser-under-temp': The fuser temperature is below normal. 6245 'opc-near-eol': The optical photo conductor is near end of life. 6246 'opc-life-over': The optical photo conductor is no longer 6247 functioning. 6248 'developer-low': The device is low on developer. 6249 'developer-empty: The device is out of developer. 6250 'interpreter-resource-unavailable': An interpreter resource is 6251 unavailable (i.e. font, form) 6253 4.4.13 printer-state-message (text(MAX)) 6255 This Printer attribute specifies information about the "printer-state" 6256 and "printer-state-reasons" attributes in human readable text. If the 6257 Printer object supports this attribute, the Printer object MUST be able 6258 to generate this message in any of the natural languages identified by 6259 the Printer's "generated-natural-language-supported" attribute (see the 6260 "attributes-natural-language" operation attribute specified in Section 6261 3.1.4.1). 6263 4.4.14 ipp-versions-supported (1setOf type2 keyword) 6265 This REQUIRED attribute identifies the IPP protocol version(s) that this 6266 Printer supports, including major and minor versions, i.e., the version 6267 numbers for which this Printer implementation meets the conformance 6268 requirements. For version number validation, the Printer matches the 6269 (two-octet binary) "version-number" parameter supplied by the client in 6270 each request (see sections 3.1.1 and 3.1.8) with the (US-ASCII) keyword 6271 values of this attribute. 6273 The following standard keyword values are defined: 6275 '1.0': Meets the conformance requirement of IPP version 1.0 as 6276 specified in RFC 2566 [RFC2566] and RFC 2565 [RFC2565] including 6277 any extensions registered according to Section 6 and any extension 6278 defined in this version or any future version of the IPP "Model and 6279 Semantics" document or the IPP "Encoding and Transport" document 6280 following the rules, if any, when the "version-number" parameter is 6281 '1.0'. 6282 '1.1': Meets the conformance requirement of IPP version 1.1 as 6283 specified in this document and [IPP-PRO] including any extensions 6284 registered according to Section 6 and any extension defined in any 6285 future versions of the IPP "Model and Semantics" document or the 6286 IPP Encoding and Transport document following the rules, if any, 6287 when the "version-number" parameter is '1.1'. 6289 4.4.15 operations-supported (1setOf type2 enum) 6291 This REQUIRED Printer attribute specifies the set of supported 6292 operations for this Printer object and contained Job objects. 6294 This attribute is encoded as any other enum attribute syntax according 6295 to [IPP-PRO] as 32-bits. However, all 32-bit enum values for this 6296 attribute MUST NOT exceed 0x00008FFF, since these same values are also 6298 Expires November 22, 2000 6299 passed in two octets in the "operation-id" parameter (see section 3.1.1) 6300 in each Protocol request with the two high order octets omitted in order 6301 to indicate the operation being performed [IPP-PRO]. 6303 The following standard enum and "operation-id" (see section 3.1.2) 6304 values are defined: 6306 Value Operation Name 6307 ----------------- ------------------------------------- 6309 0x0000 reserved, not used 6310 0x0001 reserved, not used 6311 0x0002 Print-Job 6312 0x0003 Print-URI 6313 0x0004 Validate-Job 6314 0x0005 Create-Job 6315 0x0006 Send-Document 6316 0x0007 Send-URI 6317 0x0008 Cancel-Job 6318 0x0009 Get-Job-Attributes 6319 0x000A Get-Jobs 6320 0x000B Get-Printer-Attributes 6321 0x000C Hold-Job 6322 0x000D Release-Job 6323 0x000E Restart-Job 6324 0x000F reserved for a future operation 6325 0x0010 Pause-Printer 6326 0x0011 Resume-Printer 6327 0x0012 Purge-Jobs 6328 0x0013-0x3FFF reserved for future IETF standards track 6329 operations (see section 6.4) 6330 0x4000-0x8FFF reserved for vendor extensions (see section 6.4) 6332 4.4.16 multiple-document-jobs-supported (boolean) 6334 This Printer attribute indicates whether or not the Printer supports 6335 more than one document per job, i.e., more than one Send-Document or 6336 Send-Data operation with document data. If the Printer supports the 6337 Create-Job and Send-Document operations (see section 3.2.4 and 3.3.1), 6338 it MUST support this attribute. 6340 4.4.17 charset-configured (charset) 6342 This REQUIRED Printer attribute identifies the charset that the Printer 6343 object has been configured to represent 'text' and 'name' Printer 6344 attributes that are set by the operator, system administrator, or 6345 manufacturer, i.e., for "printer-name" (name), "printer-location" 6346 (text), "printer-info" (text), and "printer-make-and-model" (text). 6347 Therefore, the value of the Printer object's "charset-configured" 6348 attribute MUST also be among the values of the Printer object's 6349 "charset-supported" attribute. 6351 Expires November 22, 2000 6352 4.4.18 charset-supported (1setOf charset) 6354 This REQUIRED Printer attribute identifies the set of charsets that the 6355 Printer and contained Job objects support in attributes with attribute 6356 syntax 'text' and 'name'. At least the value 'utf-8' MUST be present, 6357 since IPP objects MUST support the UTF-8 [RFC2279] charset. If a 6358 Printer object supports a charset, it means that for all attributes of 6359 syntax 'text' and 'name' the IPP object MUST (1) accept the charset in 6360 requests and return the charset in responses as needed. 6362 If more charsets than UTF-8 are supported, the IPP object MUST perform 6363 charset conversion between the charsets as described in Section 3.1.4.2. 6365 4.4.19 natural-language-configured (naturalLanguage) 6367 This REQUIRED Printer attribute identifies the natural language that the 6368 Printer object has been configured to represent 'text' and 'name' 6369 Printer attributes that are set by the operator, system administrator, 6370 or manufacturer, i.e., for "printer-name" (name), "printer-location" 6371 (text), "printer-info" (text), and "printer-make-and-model" (text). 6372 When returning these Printer attributes, the Printer object MAY return 6373 them in the configured natural language specified by this attribute, 6374 instead of the natural language requested by the client in the 6375 "attributes-natural-language" operation attribute. See Section 3.1.4.1 6376 for the specification of the OPTIONAL multiple natural language support. 6377 Therefore, the value of the Printer object's "natural-language- 6378 configured" attribute MUST also be among the values of the Printer 6379 object's "generated-natural-language-supported" attribute. 6381 4.4.20 generated-natural-language-supported (1setOf naturalLanguage) 6383 This REQUIRED Printer attribute identifies the natural language(s) that 6384 the Printer object and contained Job objects support in attributes with 6385 attribute syntax 'text' and 'name'. The natural language(s) supported 6386 depends on implementation and/or configuration. Unlike charsets, IPP 6387 objects MUST accept requests with any natural language or any Natural 6388 Language Override whether the natural language is supported or not. 6390 If a Printer object supports a natural language, it means that for any 6391 of the attributes for which the Printer or Job object generates 6392 messages, i.e., for the "job-state-message" and "printer-state-message" 6393 attributes and Operation Messages (see Section 3.1.5) in operation 6394 responses, the Printer and Job objects MUST be able to generate messages 6395 in any of the Printer's supported natural languages. See section 3.1.4 6396 for the definition of 'text' and 'name' attributes in operation requests 6397 and responses. 6399 Note: A Printer object that supports multiple natural languages, often 6400 has separate catalogs of messages, one for each natural language 6401 supported. 6403 Expires November 22, 2000 6404 4.4.21 document-format-default (mimeMediaType) 6406 This REQUIRED Printer attribute identifies the document format that the 6407 Printer object has been configured to assume if the client does not 6408 supply a "document-format" operation attribute in any of the operation 6409 requests that supply document data. The standard values for this 6410 attribute are Internet Media types (sometimes called MIME types). For 6411 further details see the description of the 'mimeMediaType' attribute 6412 syntax in Section 4.1.9. 6414 4.4.22 document-format-supported (1setOf mimeMediaType) 6416 This REQUIRED Printer attribute identifies the set of document formats 6417 that the Printer object and contained Job objects can support. For 6418 further details see the description of the 'mimeMediaType' attribute 6419 syntax in Section 4.1.9. 6421 4.4.23 printer-is-accepting-jobs (boolean) 6423 This REQUIRED Printer attribute indicates whether the printer is 6424 currently able to accept jobs, i.e., is accepting Print-Job, Print-URI, 6425 and Create-Job requests. If the value is 'true', the printer is 6426 accepting jobs. If the value is 'false', the Printer object is 6427 currently rejecting any jobs submitted to it. In this case, the Printer 6428 object returns the 'server-error-not-accepting-jobs' status code. 6430 This value is independent of the "printer-state" and "printer-state- 6431 reasons" attributes because its value does not affect the current job; 6432 rather it affects future jobs. This attribute, when 'false', causes the 6433 Printer to reject jobs even when the "printer-state" is 'idle' or, when 6434 'true', causes the Printer object to accepts jobs even when the 6435 "printer-state" is 'stopped'. 6437 4.4.24 queued-job-count (integer(0:MAX)) 6439 This REQUIRED Printer attribute contains a count of the number of jobs 6440 that are either 'pending', 'processing', 'pending-held', or 'processing- 6441 stopped' and is set by the Printer object. 6443 4.4.25 printer-message-from-operator (text(127)) 6445 This Printer attribute provides a message from an operator, system 6446 administrator or "intelligent" process to indicate to the end user 6447 information or status of the printer, such as why it is unavailable or 6448 when it is expected to be available. 6450 4.4.26 color-supported (boolean) 6452 This Printer attribute identifies whether the device is capable of any 6453 type of color printing at all, including highlight color. All document 6455 Expires November 22, 2000 6456 instructions having to do with color are embedded within the document 6457 PDL (none are external IPP attributes in IPP/1.1). 6459 Note: end-users are able to determine the nature and details of the 6460 color support by querying the "printer-more-info-manufacturer" Printer 6461 attribute. 6463 4.4.27 reference-uri-schemes-supported (1setOf uriScheme) 6465 This Printer attribute specifies which URI schemes are supported for use 6466 in the "document-uri" operation attribute of the Print-URI or Send-URI 6467 operation. If a Printer object supports these optional operations, it 6468 MUST support the "reference-uri-schemes-supported" Printer attribute 6469 with at least the following schemed URI value: 6471 'ftp': The Printer object will use an FTP 'get' operation as defined 6472 in RFC 2228 [RFC2228] using FTP URLs as defined by [RFC2396] 6473 and[RFC2316]. 6475 The Printer object MAY OPTIONALLY support other URI schemes (see section 6476 4.1.6). 6478 4.4.28 pdl-override-supported (type2 keyword) 6480 This REQUIRED Printer attribute expresses the ability for a particular 6481 Printer implementation to either attempt to override document data 6482 instructions with IPP attributes or not. 6484 This attribute takes on the following keyword values: 6486 - 'attempted': This value indicates that the Printer object attempts 6487 to make the IPP attribute values take precedence over embedded 6488 instructions in the document data, however there is no guarantee. 6489 - 'not-attempted': This value indicates that the Printer object makes 6490 no attempt to make the IPP attribute values take precedence over 6491 embedded instructions in the document data. 6493 Section 15 contains a full description of how this attribute interacts 6494 with and affects other IPP attributes, especially the "ipp-attribute- 6495 fidelity" attribute. 6497 4.4.29 printer-up-time (integer(1:MAX)) 6499 This REQUIRED Printer attribute indicates the amount of time (in 6500 seconds) that this Printer instance has been up and running. The value 6501 is a monotonically increasing value starting from 1 when the Printer 6502 object is started-up (initialized, booted, etc.). This value is used to 6503 populate the Event Time Job Description Job attributes "time-at- 6504 creation", "time-at-processing", and "time-at-completed" (see section 6505 4.3.14). 6507 Expires November 22, 2000 6508 If the Printer object goes down at some value 'n', and comes back up, 6509 the implementation MAY: 6511 1. Know how long it has been down, and resume at some value greater 6512 than 'n', or 6513 2. Restart from 1. 6515 In other words, if the device or devices that the Printer object is 6516 representing are restarted or power cycled, the Printer object MAY 6517 continue counting this value or MAY reset this value to 1 depending on 6518 implementation. However, if the Printer object software ceases running, 6519 and restarts without knowing the last value for "printer-up-time", the 6520 implementation MUST reset this value to 1. If this value is reset and 6521 the Printer has persistent jobs, the Printer MUST reset the "time-at- 6522 xxx(integer) Event Time Job Description attributes according to Section 6523 4.3.14. An implementation MAY use both implementation alternatives, 6524 depending on warm versus cold start, respectively. 6526 4.4.30 printer-current-time (dateTime) 6528 This Printer attribute indicates the current date and time. This value 6529 is used to populate the Event Time Job Description attributes: "time- 6530 at-creation", "time-at-processing", and "time-at-completed" (see Section 6531 4.3.14). 6533 The date and time is obtained on a "best efforts basis" and does not 6534 have to be that precise in order to work in practice. A Printer 6535 implementation sets the value of this attribute by obtaining the date 6536 and time via some implementation-dependent means, such as getting the 6537 value from a network time server, initialization at time of manufacture, 6538 or setting by an administrator. See [IPP-IIG] for examples. If an 6539 implementation supports this attribute and the implementation knows that 6540 it has not yet been set, then the implementation MUST return the value 6541 of this attribute using the out-of-band 'no-value' meaning not 6542 configured. See the beginning of section 4.1. 6544 The time zone of this attribute NEED NOT be the time zone used by people 6545 located near the Printer object or device. The client MUST NOT expect 6546 that the time zone of any received 'dateTime' value to be in the time 6547 zone of the client or in the time zone of the people located near the 6548 printer. 6550 The client SHOULD display any dateTime attributes to the user in client 6551 local time by converting the 'dateTime' value returned by the server to 6552 the time zone of the client, rather than using the time zone returned by 6553 the Printer in attributes that use the 'dateTime' attribute syntax. 6555 4.4.31 multiple-operation-time-out (integer(1:MAX)) 6557 This Printer attributes identifies the minimum time (in seconds) that 6558 the Printer object waits for additional Send-Document or Send-URI 6559 operations to follow a still-open Job object before taking any recovery 6560 actions, such as the ones indicated in section 3.3.1. If the Printer 6562 Expires November 22, 2000 6563 object supports the Create-Job and Send-Document operations (see section 6564 3.2.4 and 3.3.1), it MUST support this attribute. 6566 It is RECOMMENDED that vendors supply a value for this attribute that is 6567 between 60 and 240 seconds. An implementation MAY allow a system 6568 administrator to set this attribute (by means outside this IPP/1.1 6569 document). If so, the system administrator MAY be able to set values 6570 outside this range. 6572 4.4.32 compression-supported (1setOf type3 keyword) 6574 This REQUIRED Printer attribute identifies the set of supported 6575 compression algorithms for document data. Compression only applies to 6576 the document data; compression does not apply to the encoding of the IPP 6577 operation itself. The supported values are used to validate the client 6578 supplied "compression" operation attributes in Print-Job, Send-Document, 6579 and Send-URI requests. 6581 Standard keyword values are : 6583 'none': no compression is used. 6584 'deflate': ZIP public domain inflate/deflate) compression technology 6585 [RFC1951] 6586 'gzip' GNU zip compression technology described in RFC 1952 6587 [RFC1952]. 6588 'compress': UNIX compression technology [RFC1977] 6590 4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX)) 6592 This Printer attribute specifies the upper and lower bounds of total 6593 sizes of jobs in K octets, i.e., in units of 1024 octets. The supported 6594 values are used to validate the client supplied "job-k-octets" operation 6595 attributes in create requests. The corresponding job description 6596 attribute "job-k-octets" is defined in section 4.3.17.1. 6598 4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)) 6600 This Printer attribute specifies the upper and lower bounds for the 6601 number of impressions per job. The supported values are used to validate 6602 the client supplied "job-impressions" operation attributes in create 6603 requests. The corresponding job description attribute "job-impressions" 6604 is defined in section 4.3.17.2. 6606 4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX)) 6608 This Printer attribute specifies the upper and lower bounds for the 6609 number of media sheets per job. The supported values are used to 6610 validate the client supplied "job-media-sheets" operation attributes in 6611 create requests. The corresponding Job attribute "job-media-sheets" is 6612 defined in section 4.3.17.3. 6614 Expires November 22, 2000 6615 4.4.36 pages-per-minute (integer(0:MAX)) 6617 This Printer attributes specifies the nominal number of pages per minute 6618 to the nearest whole number which may be generated by this printer 6619 (e.g., simplex, black-and-white). This attribute is informative, not a 6620 service guarantee. Generally, it is the value used in the marketing 6621 literature to describe the device. 6623 A value of 0 indicates a device that takes more than two minutes to 6624 process a page. 6626 4.4.37 pages-per-minute-color (integer(0:MAX)) 6628 This Printer attributes specifies the nominal number of pages per minute 6629 to the nearest whole number which may be generated by this printer when 6630 printing color (e.g., simplex, color). For purposes of this attribute, 6631 "color" means the same as for the "color-supported" attribute, namely, 6632 the device is capable of any type of color printing at all, including 6633 highlight color. This attribute is informative, not a service 6634 guarantee. Generally, it is the value used in the marketing literature 6635 to describe the color capabilities of this device. 6637 A value of 0 indicates a device that takes more than two minutes to 6638 process a page. 6640 If a color device has several color modes, it MAY use the pages-per- 6641 minute value for this attribute that corresponds to the mode that 6642 produces the highest number. 6644 Black and white only printers MUST NOT support this attribute. If this 6645 attribute is present, then the "color-supported" Printer description 6646 attribute MUST be present and have a 'true' value. 6648 The values of these two attributes returned by the Get-Printer- 6649 Attributes operation MAY be affected by the "document-format" attribute 6650 supplied by the client in the Get-Printer-Attributes request. In other 6651 words, the implementation MAY have different speeds depending on the 6652 document format being processed. See section 3.2.5.1 Get-Printer- 6653 Attributes. 6655 5. Conformance 6657 This section describes conformance issues and requirements. This 6658 document introduces model entities such as objects, operations, 6659 attributes, attribute syntaxes, and attribute values. These conformance 6660 sections describe the conformance requirements which apply to these 6661 model entities. 6663 Expires November 22, 2000 6664 5.1 Client Conformance Requirements 6666 This section describes the conformance requirements for a client (see 6667 section 2.1), whether it be: 6669 1. contained within software controlled by an end user, e.g. activated 6670 by the "Print" menu item in an application that sends IPP requests 6671 or 6673 2. the print server component that sends IPP requests to either an 6674 output device or another "downstream" print server. 6676 A conforming client MUST support all REQUIRED operations as defined in 6677 this document. For each attribute included in an operation request, a 6678 conforming client MUST supply a value whose type and value syntax 6679 conforms to the requirements of the Model document as specified in 6680 Sections 3 and 4. A conforming client MAY supply any IETF standards 6681 track extensions and/or vendor extensions in an operation request, as 6682 long as the extensions meet the requirements in Section 6. 6684 Otherwise, there are no conformance requirements placed on the user 6685 interfaces provided by IPP clients or their applications. For example, 6686 one application might not allow an end user to submit multiple documents 6687 per job, while another does. One application might first query a 6688 Printer object in order to supply a graphical user interface (GUI) 6689 dialogue box with supported and default values whereas a different 6690 implementation might not. 6692 When sending a request, an IPP client NEED NOT supply any attributes 6693 that are indicated as OPTIONALLY supplied by the client. 6695 A client MUST be able to accept any of the attribute syntaxes defined in 6696 Section 4.1, including their full range, that may be returned to it in a 6697 response from a Printer object. In particular for each attribute that 6698 the client supports whose attribute syntax is 'text', the client MUST 6699 accept and process both the 'textWithoutLanguage' and 'textWithLanguage' 6700 forms. Similarly, for each attribute that the client supports whose 6701 attribute syntax is 'name', the client MUST accept and process both the 6702 'nameWithoutLanguage' and 'nameWithLanguage' forms. For presentation 6703 purposes, truncation of long attribute values is not recommended. A 6704 recommended approach would be for the client implementation to allow the 6705 user to scroll through long attribute values. 6707 A response MAY contain attribute groups, attributes, attribute syntaxes, 6708 values, and status codes that the client does not expect. Therefore, a 6709 client implementation MUST gracefully handle such responses and not 6710 refuse to inter-operate with a conforming Printer that is returning IETF 6711 standards track extension or vendor extensions, including attribute 6712 groups, attributes, attribute syntaxes, attribute values, status codes, 6713 and out-of-band attribute values that conform to Section 6. Clients may 6714 choose to ignore any parameters, attributes, attribute syntaxes, or 6715 values that they do not understand. 6717 Expires November 22, 2000 6718 While a client is sending data to a printer, it SHOULD do its best to 6719 prevent a channel from being closed by a lower layer when the channel is 6720 blocked (i.e. flow-controlled off) for whatever reason, e.g. 'out of 6721 paper' or 'job ahead hasn't freed up enough memory'. However, the layer 6722 that launched the print submission (e.g. an end user) MAY close the 6723 channel in order to cancel the job. When a client closes a channel, a 6724 Printer MAY print all or part of the received portion of the document. 6725 See the "Encoding and Transport" document [IPP-PRO] for more details. 6727 A client MUST support Client Authentication as defined in the IPP/1.1 6728 Encoding and Transport document [IPP-PRO]. A client SHOULD support 6729 Operation Privacy and Server Authentication as defined in the IPP/1.1 6730 Encoding and Transport document [IPP-PRO]. See also section 8 of this 6731 document. 6733 5.2 IPP Object Conformance Requirements 6735 This section specifies the conformance requirements for conforming 6736 implementations of IPP objects (see section 2). These requirements 6737 apply to an IPP object whether it is: 6739 (1) an (embedded) device component that accepts IPP requests and 6740 controls the device or 6742 (2) a component of a print server that accepts IPP requests (where 6743 the print server control one or more networked devices using IPP or 6744 other protocols). 6746 5.2.1 Objects 6748 Conforming implementations MUST implement all of the model objects as 6749 defined in this document in the indicated sections: 6751 Section 2.1 - Printer Object 6752 Section 2.2 - Job Object 6754 5.2.2 Operations 6756 Conforming IPP object implementations MUST implement all of the REQUIRED 6757 model operations, including REQUIRED responses, as defined in this 6758 document in the indicated sections: 6760 For a Printer object: 6761 Print-Job (section 3.2.1) REQUIRED 6762 Print-URI (section 3.2.2) OPTIONAL 6763 Validate-Job (section 3.2.3) REQUIRED 6764 Create-Job (section 3.2.4) OPTIONAL 6765 Get-Printer-Attributes (section 3.2.5) REQUIRED 6766 Get-Jobs (section 3.2.6) REQUIRED 6767 Pause-Printer (section 3.2.7) OPTIONAL 6768 Resume-Printer (section 3.2.8) OPTIONAL 6769 Purge-Jobs (section 3.2.9) OPTIONAL 6771 Expires November 22, 2000 6773 For a Job object: 6774 Send-Document (section 3.3.1) OPTIONAL 6775 Send-URI (section 3.3.2) OPTIONAL 6776 Cancel-Job (section 3.3.3) REQUIRED 6777 Get-Job-Attributes (section 3.3.4) REQUIRED 6778 Hold-Job (section 3.3.5) OPTIONAL 6779 Release-Job (section 3.3.6) OPTIONAL 6780 Restart-Job (section 3.3.7) OPTIONAL 6782 Conforming IPP objects MUST support all REQUIRED operation attributes 6783 and all values of such attributes if so indicated in the description. 6784 Conforming IPP objects MUST ignore all unsupported or unknown operation 6785 attributes or operation attribute groups received in a request, but MUST 6786 reject a request that contains a supported operation attribute that 6787 contains an unsupported value. 6789 Conforming IPP objects MAY return operation responses that contain 6790 attributes groups, attributes names, attribute syntaxes, attribute 6791 values, and status codes that are extensions to this standard. The 6792 additional attribute groups MAY occur in any order. 6794 The following section on object attributes specifies the support 6795 required for object attributes. 6797 5.2.3 IPP Object Attributes 6799 Conforming IPP objects MUST support all of the REQUIRED object 6800 attributes, as defined in this document in the indicated sections. 6802 If an object supports an attribute, it MUST support only those values 6803 specified in this document or through the extension mechanism described 6804 in section 5.2.4. It MAY support any non-empty subset of these values. 6805 That is, it MUST support at least one of the specified values and at 6806 most all of them. 6808 5.2.4 Versions 6810 IPP/1.1 clients MUST meet the conformance requirements for clients 6811 specified in this document and [IPP-PRO]. IPP/1.1 clients MUST send 6812 requests containing a "version-number" parameter with a '1.1' value. 6814 IPP/1.1 Printer and Job objects MUST meet the conformance requirements 6815 for IPP objects specified in this document and [IPP-PRO]. IPP/1.1 6816 objects MUST accept requests containing a "version-number" parameter 6817 with a '1.1' value (or reject the request if the operation is not 6818 supported). 6820 It is beyond the scope of this specification to mandate conformance with 6821 previous versions. IPP/1.1 was deliberately designed, however, to make 6822 supporting previous versions easy. It is worth noting that, at the time 6823 of composing this specification (1999), we would expect IPP/1.1 Printer 6824 implementations to: 6826 Expires November 22, 2000 6827 understand any valid request in the format of IPP/1.0, or 1.1; 6829 respond appropriately with a response containing the same "version- 6830 number" parameter value used by the client in the request. 6832 And we would expect IPP/1.1 clients to: 6834 understand any valid response in the format of IPP/1.0, or 1.1. 6836 It is recommended that IPP/1.1 clients try supplying alternate version 6837 numbers if they receive a 'server-error-version-not-supported' error 6838 return in a response. 6840 5.2.5 Extensions 6842 A conforming IPP object MAY support IETF standards track extensions and 6843 vendor extensions, as long as the extensions meet the requirements 6844 specified in Section 6. 6846 For each attribute included in an operation response, a conforming IPP 6847 object MUST return a value whose type and value syntax conforms to the 6848 requirement of the Model document as specified in Sections 3 and 4. 6850 5.2.6 Attribute Syntaxes 6852 An IPP object MUST be able to accept any of the attribute syntaxes 6853 defined in Section 4.1, including their full range, in any operation in 6854 which a client may supply attributes or the system administrator may 6855 configure attributes (by means outside the scope of this IPP/1.1 6856 document). In particular for each attribute that the IPP object 6857 supports whose attribute syntax is 'text', the IPP object MUST accept 6858 and process both the 'textWithoutLanguage' and 'textWithLanguage' forms. 6859 Similarly, for each attribute that the IPP object supports whose 6860 attribute syntax is 'name', the IPP object MUST accept and process both 6861 the 'nameWithoutLanguage' and 'nameWithLanguage' forms. Furthermore, an 6862 IPP object MUST return attributes to the client in operation responses 6863 that conform to the syntax specified in Section 4.1, including their 6864 full range if supplied previously by a client. 6866 5.2.7 Security 6868 An IPP Printer implementation SHOULD contain support for Client 6869 Authentication as defined in the IPP/1.1 Encoding and Transport document 6870 [IPP-PRO]. A Printer implementation MAY allow an administrator to 6871 configure the Printer so that all, some, or none of the users are 6872 authenticated. See also section 8 of this document. 6874 An IPP Printer implementation SHOULD contain support for Operation 6875 Privacy and Server Authentication as defined in the IPP/1.1 Encoding and 6876 Transport document [IPP-PRO]. A Printer implementation MAY allow an 6877 administrator to configure the degree of support for Operation Privacy 6878 and Server Authentication. See also section 8 of this document. 6880 Expires November 22, 2000 6881 Security MUST NOT be compromised when a client supplies a lower 6882 "version-number" parameter in a request. For example, if an IPP/1.1 6883 conforming Printer object accepts version '1.0' requests and is 6884 configured to enforce Digest Authentication, it MUST do the same for a 6885 version '1.0' request. 6887 5.3 Charset and Natural Language Requirements 6889 All clients and IPP objects MUST support the 'utf-8' charset as defined 6890 in section 4.1.7. 6892 IPP objects MUST be able to accept any client request which correctly 6893 uses the "attributes-natural-language" operation attribute or the 6894 Natural Language Override mechanism on any individual attribute whether 6895 or not the natural language is supported by the IPP object. If an IPP 6896 object supports a natural language, then it MUST be able to translate 6897 (perhaps by table lookup) all generated 'text' or 'name' attribute 6898 values into one of the supported languages (see section 3.1.4). That 6899 is, the IPP object that supports a natural language NEED NOT be a 6900 general purpose translator of any arbitrary 'text' or 'name' value 6901 supplied by the client into that natural language. However, the object 6902 MUST be able to translate (automatically generate) any of its own 6903 attribute values and messages into that natural language. 6905 6. IANA Considerations 6907 This section describes the procedures for defining semantics for the 6908 following IETF standards track extensions and vendor extensions to the 6909 IPP/1.1 Model and Semantics document: 6911 1. keyword attribute values 6912 2. enum attribute values 6913 3. attributes 6914 4. attribute syntaxes 6915 5. operations 6916 6. attribute groups 6917 7. status codes 6918 8. out-of-band attribute values 6920 Extensions registered for use with IPP/1.1 are OPTIONAL for client and 6921 IPP object conformance to the IPP/1.1 "Model and Semantics" document 6922 (this document). 6924 These extension procedures are aligned with the guidelines as set forth 6925 by the IESG [IANA-CON]. Section 11 describes how to propose new 6926 registrations for consideration. IANA will reject registration 6927 proposals that leave out required information or do not follow the 6928 appropriate format described in Section 11. The IPP/1.1 Model and 6929 Semantics document may also be extended by an appropriate RFC that 6930 specifies any of the above extensions. 6932 Expires November 22, 2000 6933 6.1 Typed 'keyword' and 'enum' Extensions 6935 IPP allows for 'keyword' and 'enum' extensions (see sections 4.1.2.3 and 6936 4.1.4). This document uses prefixes to the 'keyword' and 'enum' basic 6937 attribute syntax type in order to communicate extra information to the 6938 reader through its name. This extra information is not represented in 6939 the protocol because it is unimportant to a client or Printer object. 6940 The list below describes the prefixes and their meaning. 6942 "type1": This IPP specification document must be revised (or another 6943 IETF standards track document which augments this document) to add 6944 a new keyword or a new enum. No vendor defined keywords or enums 6945 are allowed. 6947 "type2": Implementers can, at any time, add new keyword or enum 6948 values by proposing the complete specification to IANA: 6950 iana@iana.org 6952 IANA will forward the registration proposal to the IPP Designated 6953 Expert who will review the proposal with a mailing list that the 6954 Designated Expert keeps for this purpose. Initially, that list 6955 will be the mailing list used by the IPP WG: 6957 ipp@pwg.org 6959 even after the IPP WG is disbanded as permitted by [IANA-CON]. The 6960 IPP Designated Expert is appointed by the IESG Area Director 6961 responsible for IPP, according to [IANA-CON]. 6963 When a type2 keyword or enum is approved, the IPP Designated Expert 6964 becomes the point of contact for any future maintenance that might 6965 be required for that registration. 6967 "type3": Implementers can, at any time, add new keyword and enum 6968 values by submitting the complete specification to IANA as for 6969 type2 who will forward the proposal to the IPP Designated Expert. 6970 While no additional technical review is required, the IPP 6971 Designated Expert may, at his/her discretion, forward the proposal 6972 to the same mailing list as for type2 registrations for advice and 6973 comment. 6975 When a type3 keyword or enum is approved by the IPP Designated 6976 Expert, the original proposer becomes the point of contact for any 6977 future maintenance that might be required for that registration. 6979 For type2 and type3 keywords, the proposer includes the name of the 6980 keyword in the registration proposal and the name is part of the 6981 technical review. 6983 After type2 and type3 enums specifications are approved, the IPP 6984 Designated Expert in consultation with IANA assigns the next available 6985 enum number for each enum value. 6987 Expires November 22, 2000 6988 IANA will publish approved type2 and type3 keyword and enum attributes 6989 value registration specifications in: 6991 ftp.isi.edu/iana/assignments/ipp/attribute-values/xxx/yyy.txt 6993 where xxx is the attribute name that specifies the initial values and 6994 yyy.txt is a descriptive file name that contains one or more enums or 6995 keywords approved at the same time. For example, if several additional 6996 enums for stapling are approved for use with the "finishings" attribute 6997 (and "finishings-default" and "finishings-supported" attributes), IANA 6998 will publish the additional values in the file: 7000 ftp.isi.edu/iana/assignments/ipp/attribute- 7001 values/finishings/stapling.txt 7003 Note: Some attributes are defined to be: 'type3 keywords' | 'name' which 7004 allows for attribute values to be extended by a site administrator with 7005 administrator defined names. Such names are not registered with IANA. 7007 By definition, each of the three types above assert some sort of 7008 registry or review process in order for extensions to be considered 7009 valid. Each higher numbered level (1, 2, 3) tends to be decreasingly 7010 less stringent than the previous level. Therefore, any typeN value MAY 7011 be registered using a process for some typeM where M is less than N, 7012 however such registration is NOT REQUIRED. For example, a type3 value 7013 MAY be registered in a type 1 manner (by being included in a future 7014 version of an IPP specification), however, it is NOT REQUIRED. 7016 This document defines keyword and enum values for all of the above 7017 types, including type3 keywords. 7019 For vendor keyword extensions, implementers SHOULD use keywords with a 7020 suitable distinguishing prefix, such as "xxx-" where xxx follows the 7021 syntax rules for keywords (see section 4.1.3) and is the (lowercase) 7022 fully qualified company name registered with IANA for use in domain 7023 names [RFC1035]. For example, if the company XYZ Corp. had obtained the 7024 domain name "XYZ.com", then a vendor keyword 'abc' would be: 'xyz.com- 7025 abc'. 7027 Note: RFC 1035 [RFC1035] indicates that while upper and lower case 7028 letters are allowed in domain names, no significance is attached to the 7029 case. That is, two names with the same spelling but different case are 7030 to be treated as if identical. Also, the labels in a domain name must 7031 follow the rules for ARPANET host names: They must start with a letter, 7032 end with a letter or digit, and have as interior characters only 7033 letters, digits, and hyphen. Labels must be 63 characters or less. 7034 Labels are separated by the "." character. 7036 For vendor enum extensions, implementers MUST use values in the reserved 7037 integer range which is 2**30 to 2**31-1. 7039 Expires November 22, 2000 7040 6.2 Attribute Extensibility 7042 Attribute names (see section 4.1.3) are type2 keywords. Therefore, new 7043 attributes may be registered and have the same status as attributes in 7044 this document by following the type2 extension rules. For vendor 7045 attribute extensions, implementers SHOULD use keywords with a suitable 7046 distinguishing prefix as described in Section 6.1. 7048 IANA will publish approved attribute registration specifications as 7049 separate files: 7051 ftp.isi.edu/iana/assignments/ipp/attributes/xxx-yyy.txt 7053 where "xxx-yyy" is the new attribute name. 7055 If a new Printer object attribute is defined and its values can be 7056 affected by a specific document format, its specification needs to 7057 contain the following sentence: 7059 "The value of this attribute returned in a Get-Printer- 7060 Attributes response MAY depend on the "document-format" 7061 attribute supplied (see Section 3.2.5.1)." 7063 If the specification does not, then its value in the Get-Printer- 7064 Attributes response MUST NOT depend on the "document-format" supplied in 7065 the request. When a new Job Template attribute is registered, the value 7066 of the Printer attributes MAY vary with "document-format" supplied in 7067 the request without the specification having to indicate so. 7069 6.3 Attribute Syntax Extensibility 7071 Attribute syntaxes (see section 4.1) are like type2 enums. Therefore, 7072 new attribute syntaxes may be registered and have the same status as 7073 attribute syntaxes in this document by following the type2 extension 7074 rules described in Section 6.1. The initial set of value codes that 7075 identify each of the attribute syntaxes have been assigned in the 7076 "Encoding and Transport" document [IPP-PRO], including a designated 7077 range for vendor extension. 7079 For attribute syntaxes, the IPP Designated Expert in consultation with 7080 IANA assigns the next attribute syntax code in the appropriate range as 7081 specified in [IPP-PRO]. IANA will publish approved attribute syntax 7082 registration specifications as separate files: 7084 ftp.isi.edu/iana/assignments/ipp/attribute-syntaxes/xxx-yyy.txt 7086 where 'xxx-yyy' is the new attribute syntax name. 7088 Expires November 22, 2000 7089 6.4 Operation Extensibility 7091 Operations (see section 3) may also be registered following the type2 7092 procedures described in Section 6.1, though major new operations will 7093 usually be done by a new standards track RFC that augments this 7094 document. For vendor operation extensions, implementers MUST use the 7095 range for the "operation-id" in requests specified in Section 4.4.15 7096 "operations-supported" Printer attribute. 7098 For operations, the IPP Designated Expert in consultation with IANA 7099 assigns the next operation-id code as specified in Section 4.4.15. IANA 7100 will publish approved operation registration specifications as separate 7101 files: 7103 ftp.isi.edu/iana/assignments/ipp/operations/Xxx-Yyy.txt 7105 where "Xxx-Yyy" is the new operation name. 7107 6.5 Attribute Group Extensibility 7109 Attribute groups (see section 3.1.3) passed in requests and responses 7110 may be registered following the type2 procedures described in Section 7111 6.1. The initial set of attribute group tags have been assigned in the 7112 "Encoding and Transport" document [IPP-PRO], including a designated 7113 range for vendor extension. 7115 For attribute groups, the IPP Designated Expert in consultation with 7116 IANA assigns the next attribute group tag code in the appropriate range 7117 as specified in [IPP-PRO]. IANA will publish approved attribute group 7118 registration specifications as separate files: 7120 ftp.isi.edu/iana/assignments/ipp/attribute-group-tags/xxx-yyy- 7121 tag.txt 7123 where 'xxx-yyy-tag' is the new attribute group tag name. 7125 6.6 Status Code Extensibility 7127 Operation status codes (see section 3.1.6.1) may also be registered 7128 following the type2 procedures described in Section 6.1. The values for 7129 status codes are allocated in ranges as specified in Section 14 for each 7130 status code class: 7132 "informational" - Request received, continuing process 7133 "successful" - The action was successfully received, understood, and 7134 accepted 7135 "redirection" - Further action must be taken in order to complete the 7136 request 7137 "client-error" - The request contains bad syntax or cannot be 7138 fulfilled 7139 "server-error" - The IPP object failed to fulfill an apparently 7140 valid request 7142 Expires November 22, 2000 7144 For vendor operation status code extensions, implementers MUST use the 7145 top of each range as specified in Section 13. 7147 For operation status codes, the IPP Designated Expert in consultation 7148 with IANA assigns the next status code in the appropriate class range as 7149 specified in Section 13. IANA will publish approved status code 7150 registration specifications as separate files: 7152 ftp.isi.edu/iana/assignments/ipp/status-codes/xxx-yyy.txt 7154 where "xxx-yyy" is the new operation status code keyword. 7156 6.7 Out-of-band Attribute Value Extensibility 7158 Out-of-band attribute values (see the beginning of section 4.1) passed 7159 in requests and responses may be registered following the type2 7160 procedures described in Section 6.1. The initial set of out-of-band 7161 attribute value tags have been assigned in the "Encoding and Transport" 7162 document [IPP-PRO]. 7164 For out-of-band attribute value tags, the IPP Designated Expert in 7165 consultation with IANA assigns the next out-of-band attribute value tag 7166 code in the appropriate range as specified in [IPP-PRO]. IANA will 7167 publish approved out-of-band attribute value tags registration 7168 specifications as separate files: 7170 ftp.isi.edu/iana/assignments/ipp/out-of-band-attribute-value- 7171 tags/xxx-yyy-tag.txt 7173 where 'xxx-yyy-tag' is the new out-of-band attribute value tag name. 7175 6.8 Registration of MIME types/sub-types for document-formats 7177 The "document-format" attribute's syntax is 'mimeMediaType'. This means 7178 that valid values are Internet Media Types (see Section 4.1.9). RFC 7179 2045 [RFC2045] defines the syntax for valid Internet media types. IANA 7180 is the registry for all Internet media types. 7182 6.9 Registration of charsets for use in 'charset' attribute values 7184 The "attributes-charset" attribute's syntax is 'charset'. This means 7185 that valid values are charsets names. When a charset in the IANA 7186 registry has more than one name (alias), the name labeled as "(preferred 7187 MIME name)", if present, MUST be used (see Section 4.1.7). IANA is the 7188 registry for charsets following the procedures of [RFC2278]. 7190 Expires November 22, 2000 7191 7. Internationalization Considerations 7193 Some of the attributes have values that are text strings and names which 7194 are intended for human understanding rather than machine understanding 7195 (see the 'text' and 'name' attribute syntaxes in Sections 4.1.1 and 7196 4.1.2). 7198 In each operation request, the client 7200 - identifies the charset and natural language of the request which 7201 affects each supplied 'text' and 'name' attribute value, and 7202 - requests the charset and natural language for attributes returned 7203 by the IPP object in operation responses (as described in Section 7204 3.1.4.1). 7206 In addition, the client MAY separately and individually identify the 7207 Natural Language Override of a supplied 'text' or 'name' attribute using 7208 the 'textWithLanguage' and 'nameWithLanguage' technique described 7209 section 4.1.1.2 and 4.1.2.2 respectively. 7211 All IPP objects MUST support the UTF-8 [RFC2279] charset in all 'text' 7212 and 'name' attributes supported. If an IPP object supports more than 7213 the UTF-8 charset, the object MUST convert between them in order to 7214 return the requested charset to the client according to Section 3.1.4.2. 7215 If an IPP object supports more than one natural language, the object 7216 SHOULD return 'text' and 'name' values in the natural language requested 7217 where those values are generated by the Printer (see Section 3.1.4.1). 7219 For Printers that support multiple charsets and/or multiple natural 7220 languages in 'text' and 'name' attributes, different jobs may have been 7221 submitted in differing charsets and/or natural languages. All responses 7222 MUST be returned in the charset requested by the client. However, the 7223 Get-Jobs operation uses the 'textWithLanguage' and 'nameWithLanguage' 7224 mechanism to identify the differing natural languages with each job 7225 attribute returned. 7227 The Printer object also has configured charset and natural language 7228 attributes. The client can query the Printer object to determine the 7229 list of charsets and natural languages supported by the Printer object 7230 and what the Printer object's configured values are. See the "charset- 7231 configured", "charset-supported", "natural-language-configured", and 7232 "generated-natural-language-supported" Printer description attributes 7233 for more details. 7235 The "charset-supported" attributed identifies the supported charsets. 7236 If a charset is supported, the IPP object MUST be capable of converting 7237 to and from that charset into any other supported charset. In many 7238 cases, an IPP object will support only one charset and it MUST be the 7239 UTF-8 charset. 7241 The "charset-configured" attribute identifies the one supported charset 7242 which is the native charset given the current configuration of the IPP 7243 object (administrator defined). 7245 Expires November 22, 2000 7246 The "generated-natural-language-supported" attribute identifies the set 7247 of supported natural languages for generated messages; it is not related 7248 to the set of natural languages that must be accepted for client 7249 supplied 'text' and 'name' attributes. For client supplied 'text' and 7250 'name' attributes, an IPP object MUST accept ALL supplied natural 7251 languages. Just because a Printer object is currently configured to 7252 support 'en-us' natural language does not mean that the Printer object 7253 should reject a job if the client supplies a job name that is in 'fr- 7254 ca'. 7256 The "natural-language-configured" attribute identifies the one supported 7257 natural language for generated messages which is the native natural 7258 language given the current configuration of the IPP object 7259 (administrator defined). 7261 Attributes of type 'text' and 'name' are populated from different 7262 sources. These attributes can be categorized into following groups 7263 (depending on the source of the attribute): 7265 1. Some attributes are supplied by the client (e.g., the client 7266 supplied "job-name", "document-name", and "requesting-user-name" 7267 operation attributes along with the corresponding Job object's 7268 "job-name" and "job-originating-user-name" attributes). The IPP 7269 object MUST accept these attributes in any natural language no 7270 matter what the set of supported languages for generated messages 7271 2. Some attributes are supplied by the system administrator (e.g., 7272 the Printer object's "printer-name" and "printer-location" 7273 attributes). These too can be in any natural language. If the 7274 natural language for these attributes is different than what a 7275 client requests, then they must be reported using the Natural 7276 Language Override mechanism. 7277 3. Some attributes are supplied by the device manufacturer (e.g., the 7278 Printer object's "printer-make-and-model" attribute). These too 7279 can be in any natural language. If the natural language for these 7280 attributes is different than what a client requests, then they must 7281 be reported using the Natural Language Override mechanism. 7282 4. Some attributes are supplied by the operator (e.g., the Job 7283 object's "job-message-from-operator" attribute). These too can be 7284 in any natural language. If the natural language for these 7285 attributes is different than what a client requests, then they must 7286 be reported using the Natural Language Override mechanism. 7287 5. Some attributes are generated by the IPP object (e.g., the Job 7288 object's "job-state-message" attribute, the Printer object's 7289 "printer-state-message" attribute, and the "status-message" 7290 operation attribute). These attributes can only be in one of the 7291 "generated-natural-language-supported" natural languages. If a 7292 client requests some natural language for these attributes other 7293 than one of the supported values, the IPP object SHOULD respond 7294 using the value of the "natural-language-configured" attribute 7295 (using the Natural Language Override mechanism if needed). 7297 The 'text' and 'name' attributes specified in this version of this 7298 document (additional ones will be registered according to the procedures 7299 in Section 6) are: 7301 Expires November 22, 2000 7302 Attributes Source 7304 Operation Attributes: 7305 job-name (name) client 7306 document-name (name) client 7307 requesting-user-name (name) client 7308 status-message (text) Job or Printer object 7309 detailed-status-message (text) Job or Printer object - 7310 see rule 1 7311 document-access-error (text) Job or Printer object - 7312 see rule 1 7314 Job Template Attributes: 7315 job-hold-until (keyword | name) client matches 7316 administrator-configured 7317 job-hold-until-default (keyword | name) client matches 7318 administrator-configured 7319 job-hold-until-supported (keyword | client matches 7320 name) administrator-configured 7321 job-sheets (keyword | name) client matches 7322 administrator-configured 7323 job-sheets-default (keyword | name) client matches 7324 administrator-configured 7325 job-sheets-supported (keyword | name) client matches 7326 administrator-configured 7327 media (keyword | name) client matches 7328 administrator-configured 7329 media-default (keyword | name) client matches 7330 administrator-configured 7331 media-supported (keyword | name) client matches 7332 administrator-configured 7333 media-ready (keyword | name) client matches 7334 administrator-configured 7336 Job Description Attributes: 7337 job-name (name) client or Printer object 7338 job-originating-user-name (name) Printer object 7339 job-state-message (text) Job or Printer object 7340 output-device-assigned (name(127)) administrator 7341 job-message-from-operator (text(127)) operator 7342 job-detailed-status-messages (1setOf Job or Printer object - 7343 text) see rule 1 7344 job-document-access-errors (1setOf Job or Printer object - 7345 text) see rule 1 7347 Printer Description Attributes: 7348 printer-name (name(127)) administrator 7349 printer-location (text(127)) administrator 7350 printer-info (text(127)) administrator 7351 printer-make-and-model (text(127)) administrator or 7352 manufacturer 7353 printer-state-message (text) Printer object 7354 printer-message-from-operator operator 7356 Expires November 22, 2000 7357 (text(127)) 7359 Rule 1 - Neither the Printer nor the client localizes these message 7360 attributes, since they are intended for use by the system administrator 7361 or other experienced technical persons. 7363 8. Security Considerations 7365 It is difficult to anticipate the security risks that might exist in any 7366 given IPP environment. For example, if IPP is used within a given 7367 corporation over a private network, the risks of exposing document data 7368 may be low enough that the corporation will choose not to use encryption 7369 on that data. However, if the connection between the client and the IPP 7370 object is over a public network, the client may wish to protect the 7371 content of the information during transmission through the network with 7372 encryption. 7374 Furthermore, the value of the information being printed may vary from 7375 one IPP environment to the next. Printing payroll checks, for example, 7376 would have a different value than printing public information from a 7377 file. There is also the possibly of denial-of-service attacks, but 7378 denial-of-service attacks against printing resources are not well 7379 understood and there is no published precedents regarding this scenario. 7381 Once the authenticated identity of the requester has been supplied to 7382 the IPP object, the object uses that identity to enforce any 7383 authorization policy that might be in place. For example, one site's 7384 policy might be that only the job owner is allowed to cancel a job. The 7385 details and mechanisms to set up a particular access control policy are 7386 not part of IPP/1.1, and must be established via some other type of 7387 administrative or access control framework. However, there are 7388 operation status codes that allow an IPP server to return information 7389 back to a client about any potential access control violations for an 7390 IPP object. 7392 During a create operation, the client's identity is recorded in the Job 7393 object in an implementation-defined attribute. This information can be 7394 used to verify a client's identity for subsequent operations on that Job 7395 object in order to enforce any access control policy that might be in 7396 effect. See section 8.3 below for more details. 7398 Since the security levels or the specific threats that an IPP system 7399 administrator may be concerned with cannot be anticipated, IPP MUST be 7400 capable of operating with different security mechanisms and security 7401 policies as required by the individual installation. Security policies 7402 might vary from very strong, to very weak, to none at all, and 7403 corresponding security mechanisms will be required. 7405 Expires November 22, 2000 7406 8.1 Security Scenarios 7408 The following sections describe specific security attacks for IPP 7409 environments. Where examples are provided they should be considered 7410 illustrative of the environment and not an exhaustive set. Not all of 7411 these environments will necessarily be addressed in initial 7412 implementations of IPP. 7414 8.1.1 Client and Server in the Same Security Domain 7416 This environment is typical of internal networks where traditional 7417 office workers print the output of personal productivity applications on 7418 shared work-group printers, or where batch applications print their 7419 output on large production printers. Although the identity of the user 7420 may be trusted in this environment, a user might want to protect the 7421 content of a document against such attacks as eavesdropping, replaying 7422 or tampering. 7424 8.1.2 Client and Server in Different Security Domains 7426 Examples of this environment include printing a document created by the 7427 client on a publicly available printer, such as at a commercial print 7428 shop; or printing a document remotely on a business associate's printer. 7429 This latter operation is functionally equivalent to sending the document 7430 to the business associate as a facsimile. Printing sensitive information 7431 on a Printer in a different security domain requires strong security 7432 measures. In this environment authentication of the printer is required 7433 as well as protection against unauthorized use of print resources. Since 7434 the document crosses security domains, protection against eavesdropping 7435 and document tampering are also required. It will also be important in 7436 this environment to protect Printers against "spamming" and malicious 7437 document content. 7439 8.1.3 Print by Reference 7441 When the document is not stored on the client, printing can be done by 7442 reference. That is, the print request can contain a reference, or 7443 pointer, to the document instead of the actual document itself (see 7444 sections 3.2.2 and 3.3.2). Standard methods currently do not exist for 7445 remote entities to "assume" the credentials of a client for forwarding 7446 requests to a 3rd party. It is anticipated that Print-By-Reference will 7447 be used to access "public" documents and that sophisticated methods for 7448 authenticating "proxies" is not specified in this document. 7450 8.2 URIs in Operation, Job, and Printer attributes 7452 The "printer-uri-supported" attribute contains the Printer object's 7453 URI(s). Its companion attribute, "uri-security-supported", identifies 7454 the security mechanism used for each URI listed in the "printer-uri- 7455 supported" attribute. For each Printer operation request, a client MUST 7456 supply only one URI in the "printer-uri" operation attribute. In other 7458 Expires November 22, 2000 7459 words, even though the Printer supports more than one URI, the client 7460 only interacts with the Printer object using one if its URIs. This 7461 duality is not needed for Job objects, since the Printer objects is the 7462 factory for Job objects, and the Printer object will generate the 7463 correct URI for new Job objects depending on the Printer object's 7464 security configuration. 7466 8.3 URIs for each authentication mechanisms 7468 Each URI has an authentication mechanism associated with it. If the URI 7469 is the i'th element of "printer-uri-supported", then authentication 7470 mechanism is the "i th" element of "uri-authentication-supported". For a 7471 list of possible authentication mechanisms, see section 4.4.2. 7473 The Printer object uses an authentication mechanism to determine the 7474 name of the user performing an operation. This user is called the 7475 "authenticated user". The credibility of authentication depends on the 7476 mechanism that the Printer uses to obtain the user's name. When the 7477 authentication mechanism is 'none', all authenticated users are 7478 "anonymous". 7480 During job creation operations, the Printer initializes the value of the 7481 "job-originating-user-name" attribute (see section 4.3.6) to be the 7482 authenticated user. The authenticated user is this case is called the 7483 "job owner". 7485 If an implementation can be configured to support more than one 7486 authentication mechanism (see section 4.4.2), then it MUST implement 7487 rules for determining equality of authenticated user names which have 7488 been authenticated via different authentication mechanisms. One 7489 possible policy is that identical names that are authenticated via 7490 different mechanisms are different. For example, a user can cancel his 7491 job only if he uses the same authentication mechanism for both Cancel- 7492 Job and Print-Job. Another policy is that identical names that are 7493 authenticated via different mechanism are the same if the authentication 7494 mechanism for the later operation is not less strong than the 7495 authentication mechanism for the earlier job creation operation. For 7496 example, a user can cancel his job only if he uses the same or stronger 7497 authentication mechanism for Cancel-Job and Print-Job. With this second 7498 policy a job submitted via 'requesting-user-name' authentication could 7499 be canceled via 'digest' authentication. With the first policy, the job 7500 could not be canceled in this way. 7502 A client is able to determine the authentication mechanism used to 7503 create a job. It is the i'th value of the Printer's "uri-authentication- 7504 supported" attribute (see section 4.4.2), where i is the index of the 7505 element of the Printer's "printer-uri-supported" attribute (see section 7506 4.4.1) equal to the job's "job-printer-uri" attribute (see section 7507 4.3.3). 7509 Expires November 22, 2000 7510 8.4 Restricted Queries 7512 In many IPP operations, a client supplies a list of attributes to be 7513 returned in the response. For security reasons, an IPP object may be 7514 configured not to return all attributes (or all values) that a client 7515 requests. The job attributes returned MAY depend on whether the 7516 requesting user is the same as the user that submitted the job. The IPP 7517 object MAY even return none of the requested attributes. In such cases, 7518 the status returned is the same as if the object had returned all 7519 requested attributes. The client cannot tell by such a response whether 7520 the requested attribute was present or absent on the object. 7522 8.5 Operations performed by operators and system administrators 7524 For the three printer operations Pause-Printer, Resume-Printer, and 7525 Purge-Jobs (see sections 3.2.7, 3.2.8 and 3.2.9), the requesting user is 7526 intended to be an operator or administrator of the Printer object (see 7527 section 1). Otherwise, the IPP Printer MUST reject the operation and 7528 return: 'client-error-forbidden', 'client-error-not-authenticated', or 7529 'client-error-not-authorized' as appropriate. For operations on jobs, 7530 the requesting user is intended to be the job owner or may be an 7531 operator or administrator of the Printer object. The means for 7532 authorizing an operator or administrator of the Printer object are not 7533 specified in this document. 7535 8.6 Queries on jobs submitted using non-IPP protocols 7537 If the device that an IPP Printer is representing is able to accept jobs 7538 using other job submission protocols in addition to IPP, it is 7539 RECOMMENDED that such an implementation at least allow such "foreign" 7540 jobs to be queried using Get-Jobs returning "job-id" and "job-uri" as 7541 'unknown'. Such an implementation NEED NOT support all of the same IPP 7542 job attributes as for IPP jobs. The IPP object returns the 'unknown' 7543 out-of-band value for any requested attribute of a foreign job that is 7544 supported for IPP jobs, but not for foreign jobs. 7546 It is further RECOMMENDED, that the IPP Printer generate "job-id" and 7547 "job-uri" values for such "foreign jobs", if possible, so that they may 7548 be targets of other IPP operations, such as Get-Job-Attributes and 7549 Cancel-Job. Such an implementation also needs to deal with the problem 7550 of authentication of such foreign jobs. One approach would be to treat 7551 all such foreign jobs as belonging to users other than the user of the 7552 IPP client. Another approach would be for the foreign job to belong to 7553 'anonymous'. Only if the IPP client has been authenticated as an 7554 operator or administrator of the IPP Printer object, could the foreign 7555 jobs be queried by an IPP request. Alternatively, if the security 7556 policy is to allow users to query other users' jobs, then the foreign 7557 jobs would also be visible to an end-user IPP client using Get-Jobs and 7558 Get-Job-Attributes. 7560 Expires November 22, 2000 7561 9. References 7563 [ASME-Y14.1M] 7564 Metric Drawing Sheet Size and Format, ASME Y14.1M-1995. This 7565 standard defines metric sheet sizes and formats for engineering 7566 drawings. 7568 [ASCII] 7569 Coded Character Set - 7-bit American Standard Code for Information 7570 Interchange (ASCII), ANSI X3.4-1986. This standard is the 7571 specification of the US-ASCII charset. 7573 [BCP-11] 7574 Bradner S., Hovey R., "The Organizations Involved in the IETF 7575 Standards Process", 1996/10/29 (RFC 2028) 7577 [HTPP] 7578 J. Barnett, K. Carter, R. DeBry, "Initial Draft - Hypertext 7579 Printing Protocol - HTPP/1.0", October 1996, 7580 ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/overview.ps.gz 7582 [IANA-CON] 7583 Narte, T. and Alvestrand, H.T.: Guidelines for Writing an IANA 7584 Considerations Section in RFCs, Work in Progress, draft-iesg-iana- 7585 considerations-04.txt, May 21, 1998. 7587 [IANA-CS] 7588 IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- 7589 notes/iana/assignments/character-sets 7591 [IANA-MT] 7592 IANA Registry of Media Types: ftp://ftp.isi.edu/in- 7593 notes/iana/assignments/media-types/ 7595 [IPP-IIG] 7596 Hastings, T., Manros, C., "Internet Printing Protocol/1.1: draft- 7597 ietf-ipp-implementers-guide-v11-00.txt, work in progress, September 7598 27, 1999. 7600 [IPP-PRO] 7601 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 7602 Protocol/1.1: Encoding and Transport", draft-ietf-ipp-protocol-v11- 7603 05.txt, March 1, 2000. 7605 [ISO10646-1] 7606 ISO/IEC 10646-1:1993, "Information technology -- Universal 7607 Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture and 7608 Basic Multilingual Plane, JTC1/SC2." 7610 [ISO8859-1] 7611 ISO/IEC 8859-1:1987, "Information technology -- 8-bit One-Byte 7612 Coded Character Set - Part 1: Latin Alphabet Nr 1", 1987, JTC1/SC2. 7614 Expires November 22, 2000 7616 [ISO10175] 7617 ISO/IEC 10175 Document Printing Application (DPA), June 1996. 7619 [LDPA] 7620 T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. Taylor, P. 7621 Zehler, "LDPA - Lightweight Document Printing Application", 7622 October 1996, 7623 ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz 7625 [P1387.4] 7626 Kirk, M. (editor), POSIX System Administration - Part 4: Printing 7627 Interfaces, POSIX 1387.4 D8, 1994. 7629 [PSIS] Herriot, R. (editor), X/Open A Printing System 7630 Interoperability Specification (PSIS), August 1995. 7632 [PWG] 7633 Printer Working Group, http://www.pwg.org. 7635 [RFC1035] 7636 P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION", 7637 RFC 1035, November 1987. 7639 [RFC1179] 7640 McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 7641 1179, August 1990. 7643 [RFC1759] 7644 Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 7645 J., "Printer MIB", RFC 1759, March 1995. 7647 [RFC1766] 7648 H. Alvestrand, "Tags for the Identification of Languages", RFC 7649 1766, March 1995. 7651 [RFC1951] 7652 P. Deutsch, "DEFLATE Compressed Data Format Specification version 7653 1.3 ", RFC 1951, May 1996. 7655 [RFC1952] 7656 P. Deutsch, "GZIP file format specification version 4.3", RFC 1952, 7657 May 1996. 7659 [RFC1977] 7660 V. Schryver, "PPP BSD Compression Protocol", RFC 1977, August 1996. 7662 [RFC2026] 7663 S. Bradner, "The Internet Standards Process -- Revision 3", RFC 7664 2026, October 1996. 7666 [RFC2045] 7667 N. Fried, N. Borenstein, ", Multipurpose Internet Mail Extensions 7668 (MIME) Part One: Format of Internet Message Bodies " RFC 2045, 7669 November 1996. 7671 Expires November 22, 2000 7673 [RFC2046] 7674 Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. 7675 N. Freed & N. Borenstein. November 1996. (Obsoletes RFC1521, 7676 RFC1522, RFC1590), RFC 2046. 7678 [RFC2048] 7679 N. Freed, J. Klensin & J. Postel, "Multipurpose Internet Mail 7680 Extension (MIME) Part Four: Registration Procedures". RFC 2048, 7681 November 1996. 7683 [RFC2119] 7684 S. Bradner, "Key words for use in RFCs to Indicate Requirement 7685 Levels", RFC 2119 , March 1997 7687 [RFC2228] 7688 M. Horowitz, S. Lunt, "FTP Security Extensions", RFC 2228, October 7689 1997. 7691 [RFC2246] 7692 T. Dierks, C. Allen, "The TLS Protocol Version 1.0", RFC 2246, 7693 January 1999. 7695 [RFC2277] 7696 H. Alvestrand, "IETF Policy on Character Sets and Languages" RFC 7697 2277, January 1998. 7699 [RFC2278] 7700 N. Freed, J. Postel: "IANA CharSet Registration Procedures", RFC 7701 2278, January 1998. 7703 [RFC2279] 7704 F. Yergeau , "UTF-8, a transformation format of ISO 10646", RFC 7705 2279. January 1998. 7707 [RFC2316] 7708 S. Bellovin , "Report of the IAB Security Architecture Workshop", 7709 RFC 2316, April 1998. 7711 [RFC2396] 7712 Berners-Lee, T., Fielding, R., Masinter, L., "Uniform Resource 7713 Identifiers (URI): Generic Syntax", RFC 2396, August 1998. 7715 [RFC2565] 7716 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 7717 Protocol/1.0: Encoding and Transport", RFC 2565, April 1999. 7719 [RFC2566] 7720 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 7721 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, 7722 April 1999. 7724 [RFC2567] 7725 Wright, D., "Design Goals for an Internet Printing Protocol", RFC 7726 2567, April 1999. 7728 Expires November 22, 2000 7730 [RFC2568] 7731 Zilles, S., "Rationale for the Structure and Model and Protocol for 7732 the Internet Printing Protocol", RFC 2568, April 1999. 7734 [RFC2569] 7735 Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping between 7736 LPD and IPP Protocols", RFC 2569, April 1999. 7738 [RFC2579] 7739 K. McCloghrie, D. Perkins, J. Schoenwaelder, "Textual Conventions 7740 for SMIv2" RFC 2579 (Also STD0058), April 1999. 7742 [RFC2616] 7743 R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. 7744 Leach, T. Berners-Lee, "Hypertext Transfer Protocol - HTTP/1.1", 7745 RFC 2616, June 1999. 7747 [RFC2617] 7748 J. Franks, P. Hallam-Baker, J. Hostetler, S. Lawrence, P. Leach, A. 7749 Luotonen, L. Stewart, "HTTP Authentication: Basic and Digest Access 7750 Authentication", RFC 2617, June 1999. 7752 [SSL] 7753 Netscape, The SSL Protocol, Version 3, (Text version 3.02), 7754 November 1996. 7756 [SWP] 7757 P. Moore, B. Jahromi, S. Butler, "Simple Web Printing SWP/1.0", May 7758 7, 1997, ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf 7760 10. Author's Address 7762 Scott A. Isaacson (Editor) 7763 Novell, Inc. 7764 122 E 1700 S 7765 Provo, UT 84606 7767 Phone: 801-861-7366 7768 Fax: 801-861-2517 7769 e-mail: sisaacson@novell.com 7771 Tom Hastings 7772 Xerox Corporation 7773 737 Hawaii St. ESAE 231 7774 El Segundo, CA 90245 7776 Phone: 310-333-6413 7777 Fax: 310-333-5514 7778 e-mail: hastings@cp10.es.xerox.com 7780 Robert Herriot 7781 Xerox Corp. 7783 Expires November 22, 2000 7784 3400 Hill View Ave, Building 1 7785 Palo Alto, CA 94304 7787 Phone: 650-813-7696 7788 Fax: 650-813-6860 7789 e-mail: robert.herriot@pahv.xerox.com 7791 Roger deBry 7792 Utah Valley State College 7793 Orem, UT 84058 7795 Phone: (801) 222-8000 7796 EMail: debryro@uvsc.edu 7798 Patrick Powell 7799 Astart Technologies 7800 9475 Chesapeake Dr., Suite D 7801 San Diego, CA 95123 7803 Phone: (619) 874-6543 7804 Fax: (619) 279-8424 7805 e-mail: papowell@astart.com 7807 IPP Mailing List: ipp@pwg.org 7808 IPP Mailing List Subscription: ipp-request@pwg.org 7809 IPP Web Page: http://www.pwg.org/ipp/ 7811 Implementers of this specification document are encouraged to join IPP 7812 Mailing List in order to participate in any discussions of clarification 7813 issues and review of registration proposals for additional attributes 7814 and values. 7816 Other Participants: 7818 Expires November 22, 2000 7819 Chuck Adams - Tektronix Shivaun Albright - HP 7820 Stefan Andersson - Axis Jeff Barnett - IBM 7821 Ron Bergman - Hitachi Koki Imaging Dennis Carney - IBM 7822 Systems 7823 Keith Carter - IBM Angelo Caruso - Xerox 7824 Rajesh Chawla - TR Computing Nancy Chen - Okidata 7825 Solutions 7826 Josh Cohen - Microsoft Jeff Copeland - QMS 7827 Andy Davidson - Tektronix Roger deBry - IBM 7828 Maulik Desai - Auco Mabry Dozier - QMS 7829 Lee Farrell - Canon Information Satoshi Fujitami - Ricoh 7830 Systems 7831 Steve Gebert - IBM Sue Gleeson - Digital 7832 Charles Gordon - Osicom Brian Grimshaw - Apple 7833 Jerry Hadsell - IBM Richard Hart - Digital 7834 Tom Hastings - Xerox Henrik Holst - I-data 7835 Stephen Holmstead Zhi-Hong Huang - Zenographics 7836 Scott Isaacson - Novell Babek Jahromi - Microsoft 7837 Swen Johnson - Xerox David Kellerman - Northlake 7838 Software 7839 Robert Kline - TrueSpectra Charles Kong - Panasonic 7840 Carl Kugler - IBM Dave Kuntz - Hewlett-Packard 7841 Takami Kurono - Brother Rick Landau - Digital 7842 Scott Lawrence - Agranot Systems Greg LeClair - Epson 7843 Dwight Lewis - Lexmark Harry Lewis - IBM 7844 Tony Liao - Vivid Image Roy Lomicka - Digital 7845 Pete Loya - HP Ray Lutz - Cognisys 7846 Mike MacKay - Novell, Inc. David Manchala - Xerox 7847 Carl-Uno Manros - Xerox Jay Martin - Underscore 7848 Stan McConnell - Xerox Larry Masinter - Xerox 7849 Sandra Matts - Hewlett Packard Peter Michalek - Shinesoft 7850 Ira McDonald - High North Inc. Mike Moldovan - G3 Nova 7851 Tetsuya Morita - Ricoh Yuichi Niwa - Ricoh 7852 Pat Nogay - IBM Ron Norton - Printronics 7853 Hugo Parra, Novell Bob Pentecost - Hewlett-Packard 7854 Patrick Powell - Astart Jeff Rackowitz - Intermec 7855 Technologies 7856 Eric Random - Peerless Rob Rhoads - Intel 7857 Xavier Riley - Xerox Gary Roberts - Ricoh 7858 David Roach - Unisys Stuart Rowley - Kyocera 7859 Yuji Sasaki - Japan Computer Richard Schneider - Epson 7860 Industry 7861 Kris Schoff - HP Katsuaki Sekiguchi - Canon 7862 Information Systems 7863 Bob Setterbo - Adobe Gail Songer - Peerless 7864 Hideki Tanaka - Cannon Information Devon Taylor - Novell, Inc. 7865 Systems 7866 Mike Timperman - Lexmark Atsushi Uchino - Epson 7867 Shigeru Ueda - Canon Bob Von Andel - Allegro Software 7868 William Wagner - NetSilicon/DPI Jim Walker - DAZEL 7869 Chris Wellens - Interworking Labs Trevor Wells - Hewlett Packard 7870 Craig Whittle - Sharp Labs Rob Whittle - Novell, Inc. 7871 Jasper Wong - Xionics Don Wright - Lexmark 7872 Michael Wu - Heidelberg Digital Rick Yardumian - Xerox 7874 Expires November 22, 2000 7875 Michael Yeung - Canon Information Lloyd Young - Lexmark 7876 Systems 7877 Atsushi Yuki - Kyocera Peter Zehler - Xerox 7878 William Zhang- Canon Information Frank Zhao - Panasonic 7879 Systems 7880 Steve Zilles - Adobe Rob Zirnstein - Canon Information 7881 Systems 7883 Expires November 22, 2000 7885 11. Formats for IPP Registration Proposals 7887 In order to propose an IPP extension for registration, the proposer must 7888 submit an application to IANA by email to "iana@iana.org" or by filling 7889 out the appropriate form on the IANA web pages (http://www.iana.org). 7890 This section specifies the required information and the formats for 7891 proposing registrations of extensions to IPP as provided in Section 6 7892 for: 7894 1. type2 'keyword' attribute values 7895 2. type3 'keyword' attribute values 7896 3. type2 'enum' attribute values 7897 4. type3 'enum' attribute values 7898 5. attributes 7899 6. attribute syntaxes 7900 7. operations 7901 8. status codes 7902 9. out-of-band attribute values 7904 11.1 Type2 keyword attribute values registration 7906 Type of registration: type2 keyword attribute value 7907 Name of attribute to which this keyword specification is to be added: 7908 Proposed keyword name of this keyword value: 7909 Specification of this keyword value (follow the style of IPP Model 7910 Section 4.1.2.3): 7911 Name of proposer: 7912 Address of proposer: 7913 Email address of proposer: 7915 Note: For type2 keywords, the Designated Expert will be the point of 7916 contact for the approved registration specification, if any maintenance 7917 of the registration specification is needed. 7919 11.2 Type3 keyword attribute values registration 7921 Type of registration: type3 keyword attribute value 7922 Name of attribute to which this keyword specification is to be added: 7923 Proposed keyword name of this keyword value: 7924 Specification of this keyword value (follow the style of IPP Model 7925 Section 4.1.2.3): 7926 Name of proposer: 7927 Address of proposer: 7928 Email address of proposer: 7930 Note: For type3 keywords, the proposer will be the point of contact for 7931 the approved registration specification, if any maintenance of the 7932 registration specification is needed. 7934 11.3 Type2 enum attribute values registration 7936 Type of registration: type2 enum attribute value 7937 Name of attribute to which this enum specification is to be added: 7938 Keyword symbolic name of this enum value: 7940 Expires November 22, 2000 7941 Numeric value (to be assigned by the IPP Designated Expert in 7942 consultation with IANA): 7943 Specification of this enum value (follow the style of IPP Model Section 7944 4.1.4): 7945 Name of proposer: 7946 Address of proposer: 7947 Email address of proposer: 7949 Note: For type2 enums, the Designated Expert will be the point of 7950 contact for the approved registration specification, if any maintenance 7951 of the registration specification is needed. 7953 11.4 Type3 enum attribute values registration 7955 Type of registration: type3 enum attribute value 7956 Name of attribute to which this enum specification is to be added: 7957 Keyword symbolic name of this enum value: 7958 Numeric value (to be assigned by the IPP Designated Expert in 7959 consultation with IANA): 7960 Specification of this enum value (follow the style of IPP Model Section 7961 4.1.4): 7962 Name of proposer: 7963 Address of proposer: 7964 Email address of proposer: 7966 Note: For type3 enums, the proposer will be the point of contact for 7967 the approved registration specification, if any maintenance of the 7968 registration specification is needed. 7970 11.5 Attribute registration 7972 Type of registration: attribute 7973 Proposed keyword name of this attribute: 7974 Types of attribute (Operation, Job Template, Job Description, Printer 7975 Description): 7976 Operations to be used with if the attribute is an operation attribute: 7977 Object (Job, Printer, etc. if bound to an object): 7978 Attribute syntax(es) (include 1setOf and range as in Section 4.2): 7979 If attribute syntax is 'keyword' or 'enum', is it type2 or type3: 7980 If this is a Printer attribute, MAY the value returned depend on 7981 "document-format" (See Section 6.2): 7982 If this is a Job Template attribute, how does its specification depend 7983 on the value of the "multiple-document-handling" attribute: 7984 Specification of this attribute (follow the style of IPP Model Section 7985 4.2): 7986 Name of proposer: 7987 Address of proposer: 7988 Email address of proposer: 7990 Note: For attributes, the IPP Designated Expert will be the point of 7991 contact for the approved registration specification, if any maintenance 7992 of the registration specification is needed. 7994 Expires November 22, 2000 7995 11.6 Attribute Syntax registration 7997 Type of registration: attribute syntax 7998 Proposed name of this attribute syntax: 7999 Type of attribute syntax (integer, octetString, character-string, see 8000 [IPP-PRO]): 8001 Numeric tag according to [IPP-PRO] (to be assigned by the IPP Designated 8002 Expert in consultation with IANA): 8003 Specification of this attribute (follow the style of IPP Model Section 8004 4.1): 8005 Name of proposer: 8006 Address of proposer: 8007 Email address of proposer: 8009 Note: For attribute syntaxes, the IPP Designated Expert will be the 8010 point of contact for the approved registration specification, if any 8011 maintenance of the registration specification is needed. 8013 11.7 Operation registration 8015 Type of registration: operation 8016 Proposed name of this operation: 8017 Numeric operation-id value according to section 4.4.15 (to be assigned 8018 by the IPP Designated Expert in consultation with IANA): 8019 Object Target (Job, Printer, etc. that operation is upon): 8020 Specification of this operation (follow the style of IPP Model Section 8021 3): 8022 Name of proposer: 8023 Address of proposer: 8024 Email address of proposer: 8026 Note: For operations, the IPP Designated Expert will be the point of 8027 contact for the approved registration specification, if any maintenance 8028 of the registration specification is needed. 8030 11.8 Attribute Group registration 8032 Type of registration: attribute group 8033 Proposed name of this attribute group: 8034 Numeric tag according to [IPP-PRO] (to be assigned by the IPP Designated 8035 Expert in consultation with IANA): 8036 Operation requests and group number for each operation in which the 8037 attribute group occurs: 8038 Operation responses and group number for each operation in which the 8039 attribute group occurs: 8040 Specification of this attribute group (follow the style of IPP Model 8041 Section 3): 8042 Name of proposer: 8043 Address of proposer: 8044 Email address of proposer: 8046 Note: For attribute groups, the IPP Designated Expert will be the point 8047 of contact for the approved registration specification, if any 8048 maintenance of the registration specification is needed. 8050 Expires November 22, 2000 8051 11.9 Status code registration 8053 Type of registration: status code 8054 Keyword symbolic name of this status code value: 8055 Numeric value (to be assigned by the IPP Designated Expert in 8056 consultation with IANA): 8057 Operations that this status code may be used with: 8058 Specification of this status code (follow the style of IPP Model Section 8059 13 APPENDIX B: Status Codes and Suggested Status Code Messages): 8060 Name of proposer: 8061 Address of proposer: 8062 Email address of proposer: 8064 Note: For status codes, the Designated Expert will be the point of 8065 contact for the approved registration specification, if any maintenance 8066 of the registration specification is needed. 8068 11.10 Out-of-band Attribute Value registration 8070 Type of registration: out-of-band attribute value 8071 Proposed name of this out-of-band attribute value: 8072 Numeric tag according to [IPP-PRO] (to be assigned by the IPP Designated 8073 Expert in consultation with IANA): 8074 Operations that this out-of-band attribute value may be used with: 8075 Attributes that this out-of-band attribute value may be used with: 8076 Specification of this out-of-band attribute value (follow the style of 8077 the beginning of IPP Model Section 4.1): 8078 Name of proposer: 8079 Address of proposer: 8080 Email address of proposer: 8082 Note: For out-of-band attribute values, the IPP Designated Expert will 8083 be the point of contact for the approved registration specification, if 8084 any maintenance of the registration specification is needed. 8086 12. APPENDIX A: Terminology 8088 This specification document uses the terminology defined in this 8089 section. 8091 12.1 Conformance Terminology 8093 The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", 8094 "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be 8095 interpreted as described in RFC 2119 [RFC2119]. 8097 12.1.1 NEED NOT 8099 This term is not included in RFC 2119. The verb "NEED NOT" indicates an 8100 action that the subject of the sentence does not have to implement in 8102 Expires November 22, 2000 8103 order to claim conformance to the standard. The verb "NEED NOT" is used 8104 instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. 8106 12.2 Model Terminology 8108 12.2.1 Keyword 8110 Keywords are used within this document as identifiers of semantic 8111 entities within the abstract model (see section 4.1.2.3). Attribute 8112 names, some attribute values, attribute syntaxes, and attribute group 8113 names are represented as keywords. 8115 12.2.2 Attributes 8117 An attribute is an item of information that is associated with an 8118 instance of an IPP object. An attribute consists of an attribute name 8119 and one or more attribute values. Each attribute has a specific 8120 attribute syntax. All object attributes are defined in section 4 and 8121 all operation attributes are defined in section 3. 8123 Job Template Attributes are described in section 4.2. The client 8124 optionally supplies Job Template attributes in a create request 8125 (operation requests that create Job objects). The Printer object has 8126 associated attributes which define supported and default values for the 8127 Printer. 8129 12.2.2.1 Attribute Name 8131 Each attribute is uniquely identified in this document by its attribute 8132 name. An attribute name is a keyword. The keyword attribute name is 8133 given in the section header describing that attribute. In running text 8134 in this document, attribute names are indicated inside double quotation 8135 marks (") where the quotation marks are not part of the keyword itself. 8137 12.2.2.2 Attribute Group Name 8139 Related attributes are grouped into named groups. The name of the group 8140 is a keyword. The group name may be used in place of naming all the 8141 attributes in the group explicitly. Attribute groups are defined in 8142 section 3. 8144 12.2.2.3 Attribute Value 8146 Each attribute has one or more values. Attribute values are represented 8147 in the syntax type specified for that attribute. In running text in this 8148 document, attribute values are indicated inside single quotation marks 8149 ('), whether their attribute syntax is keyword, integer, text, etc. 8150 where the quotation marks are not part of the value itself. 8152 Expires November 22, 2000 8153 12.2.2.4 Attribute Syntax 8155 Each attribute is defined using an explicit syntax type. In this 8156 document, each syntax type is defined as a keyword with specific 8157 meaning. The "Encoding and Transport" document [IPP-PRO] indicates the 8158 actual "on-the-wire" encoding rules for each syntax type. Attribute 8159 syntax types are defined in section 4.1. 8161 12.2.3 Supports 8163 By definition, a Printer object supports an attribute only if that 8164 Printer object responds with the corresponding attribute populated with 8165 some value(s) in a response to a query for that attribute. A Printer 8166 object supports an attribute value if the value is one of the Printer 8167 object's "supported values" attributes. The device behind a Printer 8168 object may exhibit a behavior that corresponds to some IPP attribute, 8169 but if the Printer object, when queried for that attribute, doesn't 8170 respond with the attribute, then as far as IPP is concerned, that 8171 implementation does not support that feature. If the Printer object's 8172 "xxx-supported" attribute is not populated with a particular value (even 8173 if that value is a legal value for that attribute), then that Printer 8174 object does not support that particular value. 8176 A conforming implementation MUST support all REQUIRED attributes. 8177 However, even for REQUIRED attributes, conformance to IPP does not 8178 mandate that all implementations support all possible values 8179 representing all possible job processing behaviors and features. For 8180 example, if a given instance of a Printer supports only certain document 8181 formats, then that Printer responds with the "document-format-supported" 8182 attribute populated with a set of values, possibly only one, taken from 8183 the entire set of possible values defined for that attribute. This 8184 limited set of values represents the Printer's set of supported document 8185 formats. Supporting an attribute and some set of values for that 8186 attribute enables IPP end users to be aware of and make use of those 8187 features associated with that attribute and those values. If an 8188 implementation chooses to not support an attribute or some specific 8189 value, then IPP end users would have no ability to make use of that 8190 feature within the context of IPP itself. However, due to existing 8191 practice and legacy systems which are not IPP aware, there might be some 8192 other mechanism outside the scope of IPP to control or request the 8193 "unsupported" feature (such as embedded instructions within the document 8194 data itself). 8196 For example, consider the "finishings-supported" attribute. 8198 1) If a Printer object is not physically capable of stapling, the 8199 "finishings-supported" attribute MUST NOT be populated with the 8200 value of 'staple'. 8201 2) A Printer object is physically capable of stapling, however an 8202 implementation chooses not to support stapling in the IPP 8203 "finishings" attribute. In this case, 'staple' MUST NOT be a value 8204 in the "finishings-supported" Printer object attribute. Without 8205 support for the value 'staple', an IPP end user would have no means 8206 within the protocol itself to request that a Job be stapled. 8208 Expires November 22, 2000 8209 However, an existing document data formatter might be able to 8210 request that the document be stapled directly with an embedded 8211 instruction within the document data. In this case, the IPP 8212 implementation does not "support" stapling, however the end user is 8213 still able to have some control over the stapling of the completed 8214 job. 8215 3) A Printer object is physically capable of stapling, and an 8216 implementation chooses to support stapling in the IPP "finishings" 8217 attribute. In this case, 'staple' MUST be a value in the 8218 "finishings-supported" Printer object attribute. Doing so, would 8219 enable end users to be aware of and make use of the stapling 8220 feature using IPP attributes. 8222 Even though support for Job Template attributes by a Printer object is 8223 OPTIONAL, it is RECOMMENDED that if the device behind a Printer object 8224 is capable of realizing any feature or function that corresponds to an 8225 IPP attribute and some associated value, then that implementation SHOULD 8226 support that IPP attribute and value. 8228 The set of values in any of the supported value attributes is set 8229 (populated) by some administrative process or automatic sensing 8230 mechanism that is outside the scope of this IPP/1.1 document. For 8231 administrative policy and control reasons, an administrator may choose 8232 to make only a subset of possible values visible to the end user. In 8233 this case, the real output device behind the IPP Printer abstraction may 8234 be capable of a certain feature, however an administrator is specifying 8235 that access to that feature not be exposed to the end user through the 8236 IPP protocol. Also, since a Printer object may represent a logical 8237 print device (not just a physical device) the actual process for 8238 supporting a value is undefined and left up to the implementation. 8239 However, if a Printer object supports a value, some manual human action 8240 may be needed to realize the semantic action associated with the value, 8241 but no end user action is required. 8243 For example, if one of the values in the "finishings-supported" 8244 attribute is 'staple', the actual process might be an automatic staple 8245 action by a physical device controlled by some command sent to the 8246 device. Or, the actual process of stapling might be a manual action by 8247 an operator at an operator attended Printer object. 8249 For another example of how supported attributes function, consider a 8250 system administrator who desires to control all print jobs so that no 8251 job sheets are printed in order to conserve paper. To force no job 8252 sheets, the system administrator sets the only supported value for the 8253 "job-sheets-supported" attribute to 'none'. In this case, if a client 8254 requests anything except 'none', the create request is rejected or the 8255 "job-sheets" value is ignored (depending on the value of "ipp-attribute- 8256 fidelity"). To force the use of job start/end sheets on all jobs, the 8257 administrator does not include the value 'none' in the "job-sheets- 8258 supported" attribute. In this case, if a client requests 'none', the 8259 create request is rejected or the "job-sheets" value is ignored (again 8260 depending on the value of "ipp-attribute-fidelity"). 8262 Expires November 22, 2000 8263 12.2.4 print-stream page 8265 A "print-stream page" is a page according to the definition of pages in 8266 the language used to express the document data. 8268 12.2.5 impression 8270 An "impression" is the image (possibly many print-stream pages in 8271 different configurations) imposed onto a single media page. 8273 13. APPENDIX B: Status Codes and Suggested Status Code Messages 8275 This section defines status code enum keywords and values that are used 8276 to provide semantic information on the results of an operation request. 8277 Each operation response MUST include a status code. The response MAY 8278 also contain a status message that provides a short textual description 8279 of the status. The status code is intended for use by automata, and the 8280 status message is intended for the human end user. Since the status 8281 message is an OPTIONAL component of the operation response, an IPP 8282 application (i.e., a browser, GUI, print driver or gateway) is NOT 8283 REQUIRED to examine or display the status message, since it MAY not be 8284 returned to the application. 8286 The prefix of the status keyword defines the class of response as 8287 follows: 8289 "informational" - Request received, continuing process 8290 "successful" - The action was successfully received, understood, and 8291 accepted 8292 "redirection" - Further action must be taken in order to complete the 8293 request 8294 "client-error" - The request contains bad syntax or cannot be 8295 fulfilled 8296 "server-error" - The IPP object failed to fulfill an apparently 8297 valid request 8299 As with type2 enums, IPP status codes are extensible. IPP clients are 8300 NOT REQUIRED to understand the meaning of all registered status codes, 8301 though such understanding is obviously desirable. However, IPP clients 8302 MUST understand the class of any status code, as indicated by the 8303 prefix, and treat any unrecognized response as being equivalent to the 8304 first status code of that class, with the exception that an unrecognized 8305 response MUST NOT be cached. For example, if an unrecognized status 8306 code of "client-error-xxx-yyy" is received by the client, it can safely 8307 assume that there was something wrong with its request and treat the 8308 response as if it had received a "client-error-bad-request" status code. 8309 In such cases, IPP applications SHOULD present the OPTIONAL message (if 8310 present) to the end user since the message is likely to contain human 8311 readable information which will help to explain the unusual status. The 8312 name of the enum is the suggested status message for US English. 8314 Expires November 22, 2000 8315 The status code values range from 0x0000 to 0x7FFF. The value ranges 8316 for each status code class are as follows: 8318 "successful" - 0x0000 to 0x00FF 8319 "informational" - 0x0100 to 0x01FF 8320 "redirection" - 0x0200 to 0x02FF 8321 "client-error" - 0x0400 to 0x04FF 8322 "server-error" - 0x0500 to 0x05FF 8324 The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 to 8325 5) is reserved for vendor use within each status code class. Values 8326 0x0600 to 0x7FFF are reserved for future assignment by IETF standards 8327 track documents and MUST NOT be used. 8329 13.1 Status Codes 8331 Each status code is described below. Section 13.1.5.9 contains a table 8332 that indicates which status codes apply to which operations. The 8333 Implementer's Guide [IPP-IIG] describe the suggested steps for 8334 processing IPP attributes for all operations, including returning status 8335 codes. 8337 13.1.1 Informational 8339 This class of status code indicates a provisional response and is to be 8340 used for informational purposes only. 8342 There are no status codes defined in IPP/1.1 for this class of status 8343 code. 8345 13.1.2 Successful Status Codes 8347 This class of status code indicates that the client's request was 8348 successfully received, understood, and accepted. 8350 13.1.2.1 successful-ok (0x0000) 8352 The request has succeeded and no request attributes were substituted or 8353 ignored. In the case of a response to a create request, the 8354 'successful-ok' status code indicates that the request was successfully 8355 received and validated, and that the Job object has been created; it 8356 does not indicate that the job has been processed. The transition of 8357 the Job object into the 'completed' state is the only indicator that the 8358 job has been printed. 8360 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) 8362 The request has succeeded, but some supplied (1) attributes were ignored 8363 or (2) unsupported values were substituted with supported values or were 8364 ignored in order to perform the operation without rejecting it. 8365 Unsupported attributes, attribute syntaxes, or values MUST be returned 8367 Expires November 22, 2000 8368 in the Unsupported Attributes group of the response for all operations. 8369 There is an exception to this rule for the query operations: Get- 8370 Printer-Attributes, Get-Jobs, and Get-Job-Attributes for the "requested- 8371 attributes" operation attribute only. When the supplied values of the 8372 "requested-attributes" operation attribute are requesting attributes 8373 that are not supported, the IPP object MAY, but is NOT REQUIRED to, 8374 return the "requested-attributes" attribute in the Unsupported Attribute 8375 response group (with the unsupported values only). See sections 3.1.7 8376 and 3.2.1.2. 8378 13.1.2.3 successful-ok-conflicting-attributes (0x0002) 8380 The request has succeeded, but some supplied attribute values conflicted 8381 with the values of other supplied attributes. These conflicting values 8382 were either (1) substituted with (supported) values or (2) the 8383 attributes were removed in order to process the job without rejecting 8384 it. Attributes or values which conflict with other attributes and have 8385 been substituted or ignored MUST be returned in the Unsupported 8386 Attributes group of the response for all operations as supplied by the 8387 client. See sections 3.1.7 and 3.2.1.2. 8389 13.1.3 Redirection Status Codes 8391 This class of status code indicates that further action needs to be 8392 taken to fulfill the request. 8394 There are no status codes defined in IPP/1.1 for this class of status 8395 code. 8397 13.1.4 Client Error Status Codes 8399 This class of status code is intended for cases in which the client 8400 seems to have erred. The IPP object SHOULD return a message containing 8401 an explanation of the error situation and whether it is a temporary or 8402 permanent condition. 8404 13.1.4.1 client-error-bad-request (0x0400) 8406 The request could not be understood by the IPP object due to malformed 8407 syntax (such as the value of a fixed length attribute whose length does 8408 not match the prescribed length for that attribute - see the 8409 Implementer's Guide [IPP-IIG] ). The IPP application SHOULD NOT repeat 8410 the request without modifications. 8412 13.1.4.2 client-error-forbidden (0x0401) 8414 The IPP object understood the request, but is refusing to fulfill it. 8415 Additional authentication information or authorization credentials will 8416 not help and the request SHOULD NOT be repeated. This status code is 8417 commonly used when the IPP object does not wish to reveal exactly why 8418 the request has been refused or when no other response is applicable. 8420 Expires November 22, 2000 8421 13.1.4.3 client-error-not-authenticated (0x0402) 8423 The request requires user authentication. The IPP client may repeat the 8424 request with suitable authentication information. If the request already 8425 included authentication information, then this status code indicates 8426 that authorization has been refused for those credentials. If this 8427 response contains the same challenge as the prior response, and the user 8428 agent has already attempted authentication at least once, then the 8429 response message may contain relevant diagnostic information. This 8430 status codes reveals more information than "client-error-forbidden". 8432 13.1.4.4 client-error-not-authorized (0x0403) 8434 The requester is not authorized to perform the request. Additional 8435 authentication information or authorization credentials will not help 8436 and the request SHOULD NOT be repeated. This status code is used when 8437 the IPP object wishes to reveal that the authentication information is 8438 understandable, however, the requester is explicitly not authorized to 8439 perform the request. This status codes reveals more information than 8440 "client-error-forbidden" and "client-error-not-authenticated". 8442 13.1.4.5 client-error-not-possible (0x0404) 8444 This status code is used when the request is for something that can not 8445 happen. For example, there might be a request to cancel a job that has 8446 already been canceled or aborted by the system. The IPP client SHOULD 8447 NOT repeat the request. 8449 13.1.4.6 client-error-timeout (0x0405) 8451 The client did not produce a request within the time that the IPP object 8452 was prepared to wait. For example, a client issued a Create-Job 8453 operation and then, after a long period of time, issued a Send-Document 8454 operation and this error status code was returned in response to the 8455 Send-Document request (see section 3.3.1). The IPP object might have 8456 been forced to clean up resources that had been held for the waiting 8457 additional Documents. The IPP object was forced to close the Job since 8458 the client took too long. The client SHOULD NOT repeat the request 8459 without modifications. 8461 13.1.4.7 client-error-not-found (0x0406) 8463 The IPP object has not found anything matching the request URI. No 8464 indication is given of whether the condition is temporary or permanent. 8465 For example, a client with an old reference to a Job (a URI) tries to 8466 cancel the Job, however in the mean time the Job might have been 8467 completed and all record of it at the Printer has been deleted. This 8468 status code, 'client-error-not-found' is returned indicating that the 8469 referenced Job can not be found. This error status code is also used 8470 when a client supplies a URI as a reference to the document data in 8471 either a Print-URI or Send-URI operation, but the document can not be 8472 found. 8474 Expires November 22, 2000 8475 In practice, an IPP application should avoid a not found situation by 8476 first querying and presenting a list of valid Printer URIs and Job URIs 8477 to the end-user. 8479 13.1.4.8 client-error-gone (0x0407) 8481 The requested object is no longer available and no forwarding address is 8482 known. This condition should be considered permanent. Clients with 8483 link editing capabilities should delete references to the request URI 8484 after user approval. If the IPP object does not know or has no facility 8485 to determine, whether or not the condition is permanent, the status code 8486 "client-error-not-found" should be used instead. 8488 This response is primarily intended to assist the task of maintenance by 8489 notifying the recipient that the resource is intentionally unavailable 8490 and that the IPP object administrator desires that remote links to that 8491 resource be removed. It is not necessary to mark all permanently 8492 unavailable resources as "gone" or to keep the mark for any length of 8493 time -- that is left to the discretion of the IPP object administrator 8494 and/or Printer implementation. 8496 13.1.4.9 client-error-request-entity-too-large (0x0408) 8498 The IPP object is refusing to process a request because the request 8499 entity is larger than the IPP object is willing or able to process. An 8500 IPP Printer returns this status code when it limits the size of print 8501 jobs and it receives a print job that exceeds that limit or when the 8502 attributes are so many that their encoding causes the request entity to 8503 exceed IPP object capacity. 8505 13.1.4.10 client-error-request-value-too-long (0x0409) 8507 The IPP object is refusing to service the request because one or more of 8508 the client-supplied attributes has a variable length value that is 8509 longer than the maximum length specified for that attribute. The IPP 8510 object might not have sufficient resources (memory, buffers, etc.) to 8511 process (even temporarily), interpret, and/or ignore a value larger than 8512 the maximum length. Another use of this error code is when the IPP 8513 object supports the processing of a large value that is less than the 8514 maximum length, but during the processing of the request as a whole, the 8515 object may pass the value onto some other system component which is not 8516 able to accept the large value. For more details, see the Implementer's 8517 Guide [IPP-IIG] . 8519 Note: For attribute values that are URIs, this rare condition is only 8520 likely to occur when a client has improperly submitted a request with 8521 long query information (e.g. an IPP application allows an end-user to 8522 enter an invalid URI), when the client has descended into a URI "black 8523 hole" of redirection (e.g., a redirected URI prefix that points to a 8524 suffix of itself), or when the IPP object is under attack by a client 8525 attempting to exploit security holes present in some IPP objects using 8526 fixed-length buffers for reading or manipulating the Request-URI. 8528 Expires November 22, 2000 8529 13.1.4.11 client-error-document-format-not-supported (0x040A) 8531 The IPP object is refusing to service the request because the document 8532 data is in a format, as specified in the "document-format" operation 8533 attribute, that is not supported by the Printer object. This error is 8534 returned independent of the client-supplied "ipp-attribute-fidelity". 8535 The Printer object MUST return this status code, even if there are other 8536 Job Template attributes that are not supported as well, since this error 8537 is a bigger problem than with Job Template attributes. See sections 8538 3.1.6.1, 3.1.7, and 3.2.1.1. 8540 13.1.4.12 client-error-attributes-or-values-not-supported (0x040B) 8542 In a create request, if the Printer object does not support one or more 8543 attributes, attribute syntaxes, or attribute values supplied in the 8544 request and the client supplied the "ipp-attribute-fidelity" operation 8545 attribute with the 'true' value, the Printer object MUST return this 8546 status code. The Printer object MUST also return in the Unsupported 8547 Attributes Group all the attributes and/or values supplied by the client 8548 that are not supported. See section 3.1.7. For example, if the request 8549 indicates 'iso-a4' media, but that media type is not supported by the 8550 Printer object. Or, if the client supplies a Job Template attribute and 8551 the attribute itself is not even supported by the Printer. If the "ipp- 8552 attribute-fidelity" attribute is 'false', the Printer MUST ignore or 8553 substitute values for unsupported Job Template attributes and values 8554 rather than reject the request and return this status code. 8556 For any operation where a client requests attributes (such as a Get- 8557 Jobs, Get-Printer-Attributes, or Get-Job-Attributes operation), if the 8558 IPP object does not support one or more of the requested attributes, the 8559 IPP object simply ignores the unsupported requested attributes and 8560 processes the request as if they had not been supplied, rather than 8561 returning this status code. In this case, the IPP object MUST return 8562 the 'successful-ok-ignored-or-substituted-attributes' status code and 8563 MAY return the unsupported attributes as values of the "requested- 8564 attributes" in the Unsupported Attributes Group (see section 13.1.2.2). 8566 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) 8568 The scheme of the client-supplied URI in a Print-URI or a Send-URI 8569 operation is not supported. See sections 3.1.6.1 and 3.1.7. 8571 13.1.4.14 client-error-charset-not-supported (0x040D) 8573 For any operation, if the IPP Printer does not support the charset 8574 supplied by the client in the "attributes-charset" operation attribute, 8575 the Printer MUST reject the operation and return this status and any 8576 'text' or 'name' attributes using the 'utf-8' charset (see Section 8577 3.1.4.1). See sections 3.1.6.1 and 3.1.7. 8579 Expires November 22, 2000 8580 13.1.4.15 client-error-conflicting-attributes (0x040E) 8582 The request is rejected because some attribute values conflicted with 8583 the values of other attributes which this document does not permit to be 8584 substituted or ignored. The Printer object MUST also return in the 8585 Unsupported Attributes Group the conflicting attributes supplied by the 8586 client. See sections 3.1.7 and 3.2.1.2. 8588 13.1.4.16 client-error-compression-not-supported (0x040F) 8590 The IPP object is refusing to service the request because the document 8591 data, as specified in the "compression" operation attribute, is 8592 compressed in a way that is not supported by the Printer object. This 8593 error is returned independent of the client-supplied "ipp-attribute- 8594 fidelity". The Printer object MUST return this status code, even if 8595 there are other Job Template attributes that are not supported as well, 8596 since this error is a bigger problem than with Job Template attributes. 8597 See sections 3.1.6.1, 3.1.7, and 3.2.1.1. 8599 13.1.4.17 client-error-compression-error (0x0410) 8601 The IPP object is refusing to service the request because the document 8602 data cannot be decompressed when using the algorithm specified by the 8603 "compression" operation attribute. This error is returned independent 8604 of the client-supplied "ipp-attribute-fidelity". The Printer object 8605 MUST return this status code, even if there are Job Template attributes 8606 that are not supported as well, since this error is a bigger problem 8607 than with Job Template attributes. See sections 3.1.7 and 3.2.1.1. 8609 13.1.4.18 client-error-document-format-error (0x0411) 8611 The IPP object is refusing to service the request because Printer 8612 encountered an error in the document data while interpreting it. This 8613 error is returned independent of the client-supplied "ipp-attribute- 8614 fidelity". The Printer object MUST return this status code, even if 8615 there are Job Template attributes that are not supported as well, since 8616 this error is a bigger problem than with Job Template attributes. See 8617 sections 3.1.7 and 3.2.1.1. 8619 13.1.4.19 client-error-document-access-error (0x0412) 8621 The IPP object is refusing to service the Print-URI or Send-URI request 8622 because Printer encountered an access error while attempting to validate 8623 the accessibility or access the document data specified in the 8624 "document-uri" operation attribute. The Printer MAY also return a 8625 specific document access error code using the "document-access-error" 8626 operation attribute (see section 3.1.6.4). This error is returned 8627 independent of the client-supplied "ipp-attribute-fidelity". The 8628 Printer object MUST return this status code, even if there are Job 8629 Template attributes that are not supported as well, since this error is 8630 a bigger problem than with Job Template attributes. See sections 8631 3.1.6.1 and 3.1.7. 8633 Expires November 22, 2000 8634 13.1.5 Server Error Status Codes 8636 This class of status codes indicates cases in which the IPP object is 8637 aware that it has erred or is incapable of performing the request. The 8638 IPP object SHOULD include a message containing an explanation of the 8639 error situation, and whether it is a temporary or permanent condition. 8641 13.1.5.1 server-error-internal-error (0x0500) 8643 The IPP object encountered an unexpected condition that prevented it 8644 from fulfilling the request. This error status code differs from 8645 "server-error-temporary-error" in that it implies a more permanent type 8646 of internal error. It also differs from "server-error-device-error" in 8647 that it implies an unexpected condition (unlike a paper-jam or out-of- 8648 toner problem which is undesirable but expected). This error status 8649 code indicates that probably some knowledgeable human intervention is 8650 required. 8652 13.1.5.2 server-error-operation-not-supported (0x0501) 8654 The IPP object does not support the functionality required to fulfill 8655 the request. This is the appropriate response when the IPP object does 8656 not recognize an operation or is not capable of supporting it. See 8657 sections 3.1.6.1 and 3.1.7. 8659 13.1.5.3 server-error-service-unavailable (0x0502) 8661 The IPP object is currently unable to handle the request due to a 8662 temporary overloading or maintenance of the IPP object. The implication 8663 is that this is a temporary condition which will be alleviated after 8664 some delay. If known, the length of the delay may be indicated in the 8665 message. If no delay is given, the IPP application should handle the 8666 response as it would for a "server-error-temporary-error" response. If 8667 the condition is more permanent, the error status codes "client-error- 8668 gone" or "client-error-not-found" could be used. 8670 13.1.5.4 server-error-version-not-supported (0x0503) 8672 The IPP object does not support, or refuses to support, the IPP protocol 8673 version that was supplied as the value of the "version-number" operation 8674 parameter in the request. The IPP object is indicating that it is 8675 unable or unwilling to complete the request using the same major and 8676 minor version number as supplied in the request other than with this 8677 error message. The error response SHOULD contain a "status-message" 8678 attribute (see section 3.1.6.2) describing why that version is not 8679 supported and what other versions are supported by that IPP object. See 8680 sections 3.1.6.1, 3.1.7, and 3.1.8. 8682 The error response MUST identify in the "version-number" operation 8683 parameter the closest version number that the IPP object does support. 8684 For example, if a client supplies version '1.0' and an IPP/1.1 object 8685 supports version '1.0', then it responds with version '1.0' in all 8687 Expires November 22, 2000 8688 responses to such a request. If the IPP/1.1 object does not support 8689 version '1.0', then it should accept the request and respond with 8690 version '1.1' or may reject the request and respond with this error code 8691 and version '1.1'. If a client supplies a version '1.2', the IPP/1.1 8692 object should accept the request and return version '1.1' or may reject 8693 the request and respond with this error code and version '1.1'. See 8694 sections 3.1.8 and 4.4.14. 8696 13.1.5.5 server-error-device-error (0x0504) 8698 A printer error, such as a paper jam, occurs while the IPP object 8699 processes a Print or Send operation. The response contains the true Job 8700 Status (the values of the "job-state" and "job-state-reasons" 8701 attributes). Additional information can be returned in the OPTIONAL 8702 "job-state-message" attribute value or in the OPTIONAL status message 8703 that describes the error in more detail. This error status code is only 8704 returned in situations where the Printer is unable to accept the create 8705 request because of such a device error. For example, if the Printer is 8706 unable to spool, and can only accept one job at a time, the reason it 8707 might reject a create request is that the printer currently has a paper 8708 jam. In many cases however, where the Printer object can accept the 8709 request even though the Printer has some error condition, the 8710 'successful-ok' status code will be returned. In such a case, the 8711 client would look at the returned Job Object Attributes or later query 8712 the Printer to determine its state and state reasons. 8714 13.1.5.6 server-error-temporary-error (0x0505) 8716 A temporary error such as a buffer full write error, a memory overflow 8717 (i.e. the document data exceeds the memory of the Printer), or a disk 8718 full condition, occurs while the IPP Printer processes an operation. 8719 The client MAY try the unmodified request again at some later point in 8720 time with an expectation that the temporary internal error condition may 8721 have been cleared. Alternatively, as an implementation option, a 8722 Printer object MAY delay the response until the temporary condition is 8723 cleared so that no error is returned. 8725 13.1.5.7 server-error-not-accepting-jobs (0x0506) 8727 A temporary error indicating that the Printer is not currently accepting 8728 jobs, because the administrator has set the value of the Printer's 8729 "printer-is-accepting-jobs" attribute to 'false' (by means outside the 8730 scope of this IPP/1.1 document). 8732 13.1.5.8 server-error-busy (0x0507) 8734 A temporary error indicating that the Printer is too busy processing 8735 jobs and/or other requests. The client SHOULD try the unmodified request 8736 again at some later point in time with an expectation that the temporary 8737 busy condition will have been cleared. 8739 Expires November 22, 2000 8740 13.1.5.9 server-error-job-canceled (0x0508) 8742 An error indicating that the job has been canceled by an operator or the 8743 system while the client was transmitting the data to the IPP Printer. 8744 If a job-id and job-uri had been created, then they are returned in the 8745 Print-Job, Send-Document, or Send-URI response as usual; otherwise, no 8746 job-id and job-uri are returned in the response. 8748 13.1.5.10 server-error-multiple-document-jobs-not-supported (0x0509) 8750 The IPP object does not support multiple documents per job and a client 8751 attempted to supply document data with a second Send-Document or Send- 8752 URI operation. 8754 Expires November 22, 2000 8755 13.2 Status Codes for IPP Operations 8757 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 8758 SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and 8759 Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job 8761 IPP Operations 8762 IPP Status Keyword PJ PU CJ SD SU V GA GJ C 8763 ------------------ -- -- -- -- -- - -- -- - 8764 successful-ok x x x x x x x x x 8765 successful-ok-ignored-or-substituted- x x x x x x x x x 8766 attributes 8767 successful-ok-conflicting-attributes x x x x x x x x x 8768 client-error-bad-request x x x x x x x x x 8769 client-error-forbidden x x x x x x x x x 8770 client-error-not-authenticated x x x x x x x x x 8771 client-error-not-authorized x x x x x x x x x 8772 client-error-not-possible x x x x x x x x x 8773 client-error-timeout x x 8774 client-error-not-found x x x x x x x x x 8775 client-error-gone x x x x x x x x x 8776 client-error-request-entity-too-large x x x x x x x x x 8777 client-error-request-value-too-long x x x x x x x x x 8778 client-error-document-format-not- x x x x x x 8779 supported 8780 client-error-attributes-or-values-not- x x x x x x x x x 8781 supported 8782 client-error-uri-scheme-not-supported x x 8783 client-error-charset-not-supported x x x x x x x x x 8784 client-error-conflicting-attributes x x x x x x x x x 8785 client-error-compression-not-supported x x x x x 8786 client-error-compression-error x x x x 8787 client-error-document-format-error x x x x 8788 client-error-document-access-error x x 8789 server-error-internal-error x x x x x x x x x 8790 server-error-operation-not-supported x x x x 8791 server-error-service-unavailable x x x x x x x x x 8792 server-error-version-not-supported x x x x x x x x x 8793 server-error-device-error x x x x x 8794 server-error-temporary-error x x x x x 8795 server-error-not-accepting-jobs x x x x 8796 server-error-busy x x x x x x x x x 8797 server-error-job-canceled x x x 8798 server-error-multiple-document-jobs- x x 8799 not-supported 8801 Expires November 22, 2000 8803 HJ = Hold-Job, RJ = Release-Job, RS = Restart-Job 8804 PP = Pause-Printer, RP = Resume-Printer, PJ = Purge-Jobs 8806 IPP Operations (cont.) 8807 IPP Status Keyword HJ RJ RS PP RP PJ 8808 ------------------ -- -- -- -- -- -- 8809 successful-ok x x x x x x 8810 successful-ok-ignored-or-substituted- x x x x x x 8811 attributes 8812 successful-ok-conflicting-attributes x x x x x x 8813 client-error-bad-request x x x x x x 8814 client-error-forbidden x x x x x x 8815 client-error-not-authenticated x x x x x x 8816 client-error-not-authorized x x x x x x 8817 client-error-not-possible x x x x x x 8818 client-error-timeout 8819 client-error-not-found x x x x x x 8820 client-error-gone x x x x x x 8821 client-error-request-entity-too-large x x x x x x 8822 client-error-request-value-too-long x x x x x x 8823 client-error-document-format-not- 8824 supported 8825 client-error-attributes-or-values-not- x x x x x x 8826 supported 8827 client-error-uri-scheme-not-supported 8828 client-error-charset-not-supported x x x x x x 8829 client-error-conflicting-attributes x x x x x x 8830 client-error-compression-not-supported 8831 client-error-compression-error 8832 client-error-document-format-error 8833 client-error-document-access-error 8834 server-error-internal-error x x x x x x 8835 server-error-operation-not-supported x x x x x x 8836 server-error-service-unavailable x x x x x x 8837 server-error-version-not-supported x x x x x x 8838 server-error-device-error 8839 server-error-temporary-error x x x x x x 8840 server-error-not-accepting-jobs 8841 server-error-busy x x x x x x 8842 server-error-job-canceled 8843 server-error-multiple-document-jobs- 8844 not-supported 8846 Expires November 22, 2000 8848 14. APPENDIX C: "media" keyword values 8850 14. APPENDIX C: "media" keyword values 8852 Standard keyword values are taken from several sources. 8854 Standard values are defined (taken from DPA[ISO10175] and the Printer 8855 MIB[RFC1759]): 8857 'default': The default medium for the output device 8858 'iso-a4-white': Specifies the ISO A4 white medium: 210 mm x 297 mm 8859 'iso-a4-colored': Specifies the ISO A4 colored medium: 210 mm x 297 8860 mm 8861 'iso-a4-transparent' Specifies the ISO A4 transparent medium: 210 mm 8862 x 297 mm 8863 'iso-a3-white': Specifies the ISO A3 white medium: 297 mm x 420 mm 8864 'iso-a3-colored': Specifies the ISO A3 colored medium: 297 mm x 420 8865 mm 8866 'iso-a5-white': Specifies the ISO A5 white medium: 148 mm x 210 mm 8867 'iso-a5-colored': Specifies the ISO A5 colored medium: 148 mm x 210 8868 mm 8869 'iso-b4-white': Specifies the ISO B4 white medium: 250 mm x 353 mm 8870 'iso-b4-colored': Specifies the ISO B4 colored medium: 250 mm x 353 8871 mm 8872 'iso-b5-white': Specifies the ISO B5 white medium: 176 mm x 250 mm 8873 'iso-b5-colored': Specifies the ISO B5 colored medium: 176 mm x 250 8874 mm 8875 'jis-b4-white': Specifies the JIS B4 white medium: 257 mm x 364 mm 8876 'jis-b4-colored': Specifies the JIS B4 colored medium: 257 mm x 364 8877 mm 8878 'jis-b5-white': Specifies the JIS B5 white medium: 182 mm x 257 mm 8879 'jis-b5-colored': Specifies the JIS B5 colored medium: 182 mm x 257 8880 mm 8882 The following standard values are defined for North American media: 8884 'na-letter-white': Specifies the North American letter white medium 8885 'na-letter-colored': Specifies the North American letter colored 8886 medium 8887 'na-letter-transparent': Specifies the North American letter 8888 transparent medium 8889 'na-legal-white': Specifies the North American legal white medium 8890 'na-legal-colored': Specifies the North American legal colored medium 8892 The following standard values are defined for envelopes: 8894 'iso-b4-envelope': Specifies the ISO B4 envelope medium 8895 'iso-b5-envelope': Specifies the ISO B5 envelope medium 8896 'iso-c3-envelope': Specifies the ISO C3 envelope medium 8897 'iso-c4-envelope': Specifies the ISO C4 envelope medium 8898 'iso-c5-envelope': Specifies the ISO C5 envelope medium 8900 Expires November 22, 2000 8901 'iso-c6-envelope': Specifies the ISO C6 envelope medium 8902 'iso-designated-long-envelope': Specifies the ISO Designated Long 8903 envelope medium 8904 'na-10x13-envelope': Specifies the North American 10x13 envelope 8905 medium 8906 'na-9x12-envelope': Specifies the North American 9x12 envelope medium 8907 'monarch-envelope': Specifies the Monarch envelope 8908 'na-number-10-envelope': Specifies the North American number 10 8909 business envelope medium 8910 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 8911 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 8912 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 8913 'na-number-9-envelope': Specifies the North American number 9 8914 business envelope 8915 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 8916 'na-10x15-envelope': Specifies the North American 10x15 inch envelope 8918 The following standard values are defined for the less commonly used 8919 media-: 8921 'executive-white': Specifies the white executive medium 8922 'folio-white': Specifies the folio white medium 8923 'invoice-white': Specifies the white invoice medium 8924 'ledger-white': Specifies the white ledger medium 8925 'quarto-white': Specified the white quarto medium 8926 'iso-a0-white': Specifies the ISO A0 white medium: 841 mm x 1189 mm 8927 'iso-a0-transparent': Specifies the ISO A0 transparent medium: 841 mm 8928 x 1189 mm 8929 'iso-a0-translucent': Specifies the ISO A0 translucent medium: 841 mm 8930 x 1189 mm 8931 'iso-a1-white': Specifies the ISO A1 white medium: 594 mm x 841 mm 8932 'iso-a1-transparent': Specifies the ISO A1 transparent medium: 594 mm 8933 x 841 mm 8934 'iso-a1-translucent': Specifies the ISO A1 translucent medium: 594 mm 8935 x 841 mm 8936 'iso-a2-white': Specifies the ISO A2 white medium: 420 mm x 594 mm 8937 'iso-a2-transparent': Specifies the ISO A2 transparent medium: 420 mm 8938 x 594 mm 8939 'iso-a2-translucent': Specifies the ISO A2 translucent medium: 420 mm 8940 x 594 mm 8941 'iso-a3-transparent': Specifies the ISO A3 transparent medium: 297 mm 8942 x 420 mm 8943 'iso-a3-translucent': Specifies the ISO A3 translucent medium: 297 mm 8944 x 420 mm 8945 'iso-a4-translucent': Specifies the ISO A4 translucent medium: 210 mm 8946 x 297 mm 8947 'iso-a5-transparent': Specifies the ISO A5 transparent medium: 148 mm 8948 x 210 mm 8949 'iso-a5-translucent': Specifies the ISO A5 translucent medium: 148 mm 8950 x 210 mm 8951 'iso-a6-white': Specifies the ISO A6 white medium: 105 mm x 148 mm 8952 'iso-a7-white': Specifies the ISO A7 white medium: 74 mm x 105 mm 8953 'iso-a8-white': Specifies the ISO A8 white medium: 52 mm x 74 mm 8955 Expires November 22, 2000 8956 'iso-a9-white': Specifies the ISO A9 white medium: 37 mm x 52 mm 8957 'iso-10-white': Specifies the ISO A10 white medium: 26 mm x 37 mm 8958 'iso-b0-white': Specifies the ISO B0 white medium: 1000 mm x 1414 mm 8959 'iso-b1-white': Specifies the ISO B1 white medium: 707 mm x 1000 mm 8960 'iso-b2-white': Specifies the ISO B2 white medium: 500 mm x 707 mm 8961 'iso-b3-white': Specifies the ISO B3 white medium: 353 mm x 500 mm 8962 'iso-b6-white': Specifies the ISO B6 white medium: 125 mm x 176 mm 8963 'iso-b7-white': Specifies the ISO B7 white medium: 88 mm x 125 mm 8964 'iso-b8-white': Specifies the ISO B8 white medium: 62 mm x 88 mm 8965 'iso-b9-white': Specifies the ISO B9 white medium: 44 mm x 62 mm 8966 'iso-b10-white': Specifies the ISO B10 white medium: 31 mm x 44 mm 8967 'jis-b0-white': Specifies the JIS B0 white medium: 1030 mm x 1456 mm 8968 'jis-b0-transparent': Specifies the JIS B0 transparent medium: 1030 8969 mm x 1456 mm 8970 'jis-b0-translucent': Specifies the JIS B0 translucent medium: 1030 8971 mm x 1456 mm 8972 'jis-b1-white': Specifies the JIS B1 white medium: 728 mm x 1030 mm 8973 'jis-b1-transparent': Specifies the JIS B1 transparent medium: 728 mm 8974 x 1030 mm 8975 'jis-b1-translucent': Specifies the JIS B1 translucent medium: 728 mm 8976 x 1030 mm 8977 'jis-b2-white': Specifies the JIS B2 white medium: 515 mm x 728 mm 8978 'jis-b2-transparent': Specifies the JIS B2 transparent medium: 515 mm 8979 x 728 mm 8980 'jis-b2-translucent': Specifies the JIS B2 translucent medium: 515 mm 8981 x 728 mm 8982 'jis-b3-white': Specifies the JIS B3 white medium: 364 mm x 515 mm 8983 'jis-b3-transparent': Specifies the JIS B3 transparent medium: 364 mm 8984 x 515 mm 8985 'jis-b3-translucent': Specifies the JIS B3 translucent medium: 364 mm 8986 x 515 mm 8987 'jis-b4-transparent': Specifies the JIS B4 transparent medium: 257 mm 8988 x 364 mm 8989 'jis-b4-translucent': Specifies the JIS B4 translucent medium: 257 mm 8990 x 364 mm 8991 'jis-b5-transparent': Specifies the JIS B5 transparent medium: 182 mm 8992 x 257 mm 8993 'jis-b5-translucent': Specifies the JIS B5 translucent medium: 182 mm 8994 x 257 mm 8995 'jis-b6-white': Specifies the JIS B6 white medium: 128 mm x 182 mm 8996 'jis-b7-white': Specifies the JIS B7 white medium: 91 mm x 128 mm 8997 'jis-b8-white': Specifies the JIS B8 white medium: 64 mm x 91 mm 8998 'jis-b9-white': Specifies the JIS B9 white medium: 45 mm x 64 mm 8999 'jis-b10-white': Specifies the JIS B10 white medium: 32 mm x 45 mm 9001 The following standard values are defined for American Standard (i.e. 9002 ANSI) engineering media: 9004 'a-white': Specifies the engineering ANSI A size white medium: 8.5 9005 inches x 11 inches 9006 'a-transparent': Specifies the engineering ANSI A size transparent 9007 medium: 8.5 inches x 11 inches 9009 Expires November 22, 2000 9011 'a-translucent': Specifies the engineering ANSI A size translucent 9012 medium: 8.5 inches x 11 inches 9013 'b-white': Specifies the engineering ANSI B size white medium: 11 9014 inches x 17 inches 9015 'b-transparent': Specifies the engineering ANSI B size transparent 9016 medium: 11 inches x 17 inches) 9017 'b-translucent': Specifies the engineering ANSI B size translucent 9018 medium: 11 inches x 17 inches 9019 'c-white': Specifies the engineering ANSI C size white medium: 17 9020 inches x 22 inches 9021 'c-transparent': Specifies the engineering ANSI C size transparent 9022 medium: 17 inches x 22 inches 9023 'c-translucent': Specifies the engineering ANSI C size translucent 9024 medium: 17 inches x 22 inches 9025 'd-white': Specifies the engineering ANSI D size white medium: 22 9026 inches x 34 inches 9027 'd-transparent': Specifies the engineering ANSI D size transparent 9028 medium: 22 inches x 34 inches 9029 'd-translucent': Specifies the engineering ANSI D size translucent 9030 medium: 22 inches x 34 inches 9031 'e-white': Specifies the engineering ANSI E size white medium: 34 9032 inches x 44 inches 9033 'e-transparent': Specifies the engineering ANSI E size transparent 9034 medium: 34 inches x 44 inches 9035 'e-translucent': Specifies the engineering ANSI E size translucent 9036 medium: 34 inches x 44 inches 9038 The following standard values are defined for American Standard (i.e. 9039 ANSI) engineering media for devices that provide the "synchro-cut" 9040 feature (see section 14.1): 9042 'axsynchro-white': Specifies the roll paper having the width of the 9043 longer edge (11 inches) of the engineering ANSI A size white medium 9044 and cuts synchronizing with data. 9045 'axsynchro-transparent': Specifies the roll paper having the width of 9046 the longer edge (11 inches) of the engineering ANSI A size 9047 transparent medium and cuts synchronizing with data. 9048 'axsynchro-translucent': Specifies the roll paper having the width of 9049 the longer edge (11 inches) of the engineering ANSI A size 9050 translucent medium and cuts synchronizing with data. 9051 'bxsynchro-white': Specifies the roll paper having the width of the 9052 longer edge (17 inches) of the engineering ANSI B size white medium 9053 and cuts synchronizing with data. 9054 'bxsynchro-transparent': Specifies the roll paper having the width of 9055 the longer edge (17 inches) of the engineering ANSI B size 9056 transparent medium and cuts synchronizing with data. 9057 'bxsynchro-translucent': Specifies the roll paper having the width of 9058 the longer edge (17 inches) of the engineering ANSI B size 9059 translucent medium and cuts synchronizing with data. 9060 'cxsynchro-white': Specifies the roll paper having the width of the 9061 longer edge (22 inches) of the engineering ANSI C size white medium 9062 and cuts synchronizing with data. 9064 Expires November 22, 2000 9066 'cxsynchro-transparent': Specifies the roll paper having the width of 9067 the longer edge (22 inches) of the engineering ANSI C size 9068 transparent medium and cuts synchronizing with data. 9069 'cxsynchro-translucent': Specifies the roll paper having the width of 9070 the longer edge (22 inches) of the engineering ANSI C size 9071 translucent medium and cuts synchronizing with data. 9072 'dxsynchro-white': Specifies the roll paper having the width of the 9073 longer edge (34 inches) of the engineering ANSI D size white medium 9074 and cuts synchronizing with data. 9075 'dxsynchro-transparent': Specifies the roll paper having the width of 9076 the longer edge (34 inches) of the engineering ANSI D size 9077 transparent medium and cuts synchronizing with data. 9078 'dxsynchro-translucent': Specifies the roll paper having the width of 9079 the longer edge (34 inches) of the engineering ANSI D size 9080 translucent medium and cuts synchronizing with data. 9081 'exsynchro-white': Specifies the roll paper having the width of the 9082 longer edge (44 inches) of the engineering ANSI E size white medium 9083 and cuts synchronizing with data. 9084 'exsynchro-transparent': Specifies the roll paper having the width of 9085 the longer edge (44 inches) of the engineering ANSI E size 9086 transparent medium and cuts synchronizing with data. 9087 'exsynchro-translucent': Specifies the roll paper having the width of 9088 the longer edge (44 inches) of the engineering ANSI E size 9089 translucent medium and cuts synchronizing with data. 9091 The following standard values are defined for American Architectural 9092 engineering media: 9094 'arch-a-white': Specifies the Architectural A size white medium: 9 9095 inches x 12 inches 9096 'arch-a-transparent': Specifies the Architectural A size transparent 9097 medium: 9 inches x 12 inches 9098 'arch-a-translucent': Specifies the Architectural A size translucent 9099 medium: 9 inches x 12 inches 9100 'arch-b-white': Specifies the Architectural B size white medium: 12 9101 inches x 18 inches 9102 'arch-b-transparent': Specifies the Architectural B size transparent 9103 medium: 12 inches x 18 inches 9104 'arch-b-translucent': Specifies the Architectural B size translucent 9105 medium: 12 inches x 18 inches 9106 'arch-c-white': Specifies the Architectural C size white medium: 18 9107 inches x 24 inches 9108 'arch-c-transparent': Specifies the Architectural C size transparent 9109 medium: 18 inches x 24 inches 9110 'arch-c-translucent': Specifies the Architectural C size translucent 9111 medium: 18 inches x 24 inches 9112 'arch-d-white': Specifies the Architectural D size white medium: 24 9113 inches x 36 inches 9114 'arch-d-transparent': Specifies the Architectural D size transparent 9115 medium: 24 inches x 36 inches 9116 'arch-d-translucent': Specifies the Architectural D size translucent 9117 medium: 24 inches x 36 inches 9118 'arch-e-white': Specifies the Architectural E size white medium: 36 9119 inches x 48 inches 9121 Expires November 22, 2000 9123 'arch-e-transparent': Specifies the Architectural E size transparent 9124 medium: 36 inches x 48 inches 9125 'arch-e-translucent': Specifies the Architectural E size translucent 9126 medium: 36 inches x 48 inches 9128 The following standard values are defined for American Architectural 9129 engineering media for devices that provide the "synchro-cut" feature 9130 (see section 14.1): 9132 'arch-axsynchro-white': Specifies the roll paper having the width of 9133 the longer edge (12 inches) of the Architectural A size white 9134 medium and cuts synchronizing with data. 9135 'arch-axsynchro-transparent': Specifies the roll paper having the 9136 width of the longer edge (12 inches) of the Architectural A size 9137 transparent medium and cuts synchronizing with data. 9138 'arch-axsynchro-translucent': Specifies the roll paper having the 9139 width of the longer edge (12 inches) of the Architectural A size 9140 translucent medium and cuts synchronizing with data. 9141 'arch-bxsynchro-white': Specifies the roll paper having the width of 9142 the longer edge (18 inches) of the Architectural B size white 9143 medium and cuts synchronizing with data. 9144 'arch-bxsynchro-transparent': Specifies the roll paper having the 9145 width of the longer edge (18 inches) of the Architectural B size 9146 transparent medium and cuts synchronizing with data. 9147 'arch-bxsynchro-translucent': Specifies the roll paper having the 9148 width of the longer edge (18 inches) of the Architectural B size 9149 translucent medium and cuts synchronizing with data. 9150 'arch-cxsynchro-white': Specifies the roll paper having the width of 9151 the longer edge (24 inches) of the Architectural C size white 9152 medium and cuts synchronizing with data. 9153 'arch-cxsynchro-transparent': Specifies the roll paper having the 9154 width of the longer edge (24 inches) of the Architectural C size 9155 transparent medium and cuts synchronizing with data. 9156 'arch-cxsynchro-translucent': Specifies the roll paper having the 9157 width of the longer edge (24 inches) of the Architectural C size 9158 translucent medium and cuts synchronizing with data. 9159 'arch-dxsynchro-white': Specifies the roll paper having the width of 9160 the longer edge (36 inches) of the Architectural D size white 9161 medium and cuts synchronizing with data. 9162 'arch-dxsynchro-transparent': Specifies the roll paper having the 9163 width of the longer edge (36 inches) of the Architectural D size 9164 transparent medium and cuts synchronizing with data. 9165 'arch-dxsynchro-translucent': Specifies the roll paper having the 9166 width of the longer edge (36 inches) of the Architectural D size 9167 translucent medium and cuts synchronizing with data. 9168 'arch-exsynchro-white': Specifies the roll paper having the width of 9169 the longer edge (48 inches) of the Architectural E size white 9170 medium and cuts synchronizing with data. 9171 'arch-exsynchro-transparent': Specifies the roll paper having the 9172 width of the longer edge (48 inches) of the Architectural E size 9173 transparent medium and cuts synchronizing with data. 9174 'arch-exsynchro-translucent': Specifies the roll paper having the 9175 width of the longer edge (48 inches) of the Architectural E size 9176 translucent medium and cuts synchronizing with data. 9178 Expires November 22, 2000 9180 The following standard values are defined for Japanese and European 9181 Standard (i.e. ISO) engineering media, which are of a long fixed size 9182 [ASME-Y14.1M]: 9184 'iso-a1x3-white': Specifies the ISO A1X3 white medium having the 9185 width of the longer edge (841 mm) of the ISO A1 medium 9186 'iso-a1x3-transparent': Specifies the ISO A1X3 transparent medium 9187 having the width of the longer edge (841 mm) of the ISO A1 9188 medium 9189 'iso-a1x3-translucent': Specifies the ISO A1X3 translucent medium 9190 having the width of the longer edge (841 mm) of the ISO A1 9191 medium 9192 'iso-a1x4-white': Specifies the ISO A1X4 white medium having the 9193 width of the longer edge (841 mm) of the ISO A1 medium 9194 'iso-a1x4-transparent': Specifies the ISO A1X4 transparent medium 9195 having the width of the longer edge (841 mm) of the ISO A1 9196 medium 9197 'iso-a1x4- translucent': Specifies the ISO A1X4 translucent medium 9198 having the width of the longer edge (841 mm) of the ISO A1 9199 medium 9200 'iso-a2x3-white': Specifies the ISO A2X3 white medium having the 9201 width of the longer edge (594 mm) of the ISO A2 medium 9202 'iso-a2x3-transparent': Specifies the ISO A2X3 transparent medium 9203 having the width of the longer edge (594 mm) of the ISO A2 9204 medium 9205 'iso-a2x3-translucent': Specifies the ISO A2X3 translucent medium 9206 having the width of the longer edge (594 mm) of the ISO A2 9207 medium 9208 'iso-a2x4-white': Specifies the ISO A2X4 white medium having the 9209 width of the longer edge (594 mm) of the ISO A2 medium 9210 'iso-a2x4-transparent': Specifies the ISO A2X4 transparent medium 9211 having the width of the longer edge (594 mm) of the ISO A2 9212 medium 9213 'iso-a2x4-translucent': Specifies the ISO A2X4 translucent medium 9214 having the width of the longer edge (594 mm) of the ISO A2 9215 medium 9216 'iso-a2x5-white': Specifies the ISO A2X5 white medium having the 9217 width of the longer edge (594 mm) of the ISO A2 medium 9218 'iso-a2x5-transparent': Specifies the ISO A2X5 transparent medium 9219 having the width of the longer edge (594 mm) of the ISO A2 9220 medium 9221 'iso-a2x5-translucent': Specifies the ISO A2X5 translucent medium 9222 having the width of the longer edge (594 mm) of the ISO A2 9223 medium 9224 'iso-a3x3-white': Specifies the ISO A3X3 white medium having the 9225 width of the longer edge (420 mm) of the ISO A3 medium 9226 'iso-a3x3-transparent': Specifies the ISO A3X3 transparent medium 9227 having the width of the longer edge (420 mm) of the ISO A3 9228 medium 9229 'iso-a3x3-translucent': Specifies the ISO A3X3 translucent medium 9230 having the width of the longer edge (420 mm) of the ISO A3 9231 medium 9233 Expires November 22, 2000 9235 'iso-a3x4-white': Specifies the ISO A3X4 white medium having the 9236 width of the longer edge (420 mm) of the ISO A3 medium 9237 'iso-a3x4-transparent': Specifies the ISO A3X4 transparent medium 9238 having the width of the longer edge (420 mm) of the ISO A3 9239 medium 9240 'iso-a3x4-translucent': Specifies the ISO A3X4 translucent medium 9241 having the width of the longer edge (420 mm) of the ISO A3 9242 medium 9243 'iso-a3x5-white': Specifies the ISO A3X5 white medium having the 9244 width of the longer edge (420 mm) of the ISO A3 medium 9245 'iso-a3x5-transparent': Specifies the ISO A3X5 transparent medium 9246 having the width of the longer edge (420 mm) of the ISO A3 9247 medium 9248 'iso-a3x5-translucent': Specifies the ISO A3X5 translucent medium 9249 having the width of the longer edge (420 mm) of the ISO A3 9250 medium 9251 'iso-a3x6-white': Specifies the ISO A3X6 white medium having the 9252 width of the longer edge (420 mm) of the ISO A3 medium 9253 'iso-a3x6-transparent': Specifies the ISO A3X6 transparent medium 9254 having the width of the longer edge (420 mm) of the ISO A3 9255 medium 9256 'iso-a3x6-translucent': Specifies the ISO A3X6 translucent medium 9257 having the width of the longer edge (420 mm) of the ISO A3 9258 medium 9259 'iso-a3x7-white': Specifies the ISO A3X7 white medium having the 9260 width of the longer edge (420 mm) of the ISO A3 medium 9261 'iso-a3x7-transparent': Specifies the ISO A3X7 transparent medium 9262 having the width of the longer edge (420 mm) of the ISO A3 9263 medium 9264 'iso-a3x7-translucent'': Specifies the ISO A3X7 translucent' medium 9265 having the width of the longer edge (420 mm) of the ISO A3 9266 medium 9267 'iso-a4x3-white': Specifies the ISO A4X3 white medium having the 9268 width of the longer edge (297 mm) of the ISO A4 medium 9269 'iso-a4x3-transparent': Specifies the ISO A4X3 transparent medium 9270 having the width of the longer edge (297 mm) of the ISO A4 9271 medium 9272 'iso-a4x3-translucent'': Specifies the ISO A4X3 translucent' medium 9273 having the width of the longer edge (297 mm) of the ISO A4 9274 medium 9275 'iso-a4x4-white': Specifies the ISO A4X4 white medium having the 9276 width of the longer edge (297 mm) of the ISO A4 medium 9277 'iso-a4x4-transparent': Specifies the ISO A4X4 transparent medium 9278 having the width of the longer edge (297 mm) of the ISO A4 9279 medium 9280 'iso-a4x4-translucent': Specifies the ISO A4X4 translucent medium 9281 having the width of the longer edge (297 mm) of the ISO A4 9282 medium 9283 'iso-a4x5-white': Specifies the ISO A4X5 white medium having the 9284 width of the longer edge (297 mm) of the ISO A4 medium 9285 'iso-a4x5-transparent': Specifies the ISO A4X5 transparent medium 9286 having the width of the longer edge (297 mm) of the ISO A4 9287 medium 9289 Expires November 22, 2000 9291 'iso-a4x5-translucent': Specifies the ISO A4X5 translucent medium 9292 having the width of the longer edge (297 mm) of the ISO A4 9293 medium 9294 'iso-a4x6-white': Specifies the ISO A4X6 white medium having the 9295 width of the longer edge (297 mm) of the ISO A4 medium 9296 'iso-a4x6-transparent': Specifies the ISO A4X6 transparent medium 9297 having the width of the longer edge (297 mm) of the ISO A4 9298 medium 9299 'iso-a4x6-translucent': Specifies the ISO A4X6 translucent medium 9300 having the width of the longer edge (297 mm) of the ISO A4 9301 medium 9302 'iso-a4x7-white': Specifies the ISO A4X7 white medium having the 9303 width of the longer edge (297 mm) of the ISO A4 medium 9304 'iso-a4x7-transparent': Specifies the ISO A4X7 transparent medium 9305 having the width of the longer edge (297 mm) of the ISO A4 9306 medium 9307 'iso-a4x7-translucent': Specifies the ISO A4X7 translucent medium 9308 having the width of the longer edge (297 mm) of the ISO A4 9309 medium 9310 'iso-a4x8-white': Specifies the ISO A4X8 white medium having the 9311 width of the longer edge (297 mm) of the ISO A4 medium 9312 'iso-a4x8-transparent': Specifies the ISO A4X8 transparent medium 9313 having the width of the longer edge (297 mm) of the ISO A4 9314 medium 9315 'iso-a4x8-translucent': Specifies the ISO A4X8 translucent medium 9316 having the width of the longer edge (297 mm) of the ISO A4 9317 medium 9318 'iso-a4x9-white': Specifies the ISO A4X9 white medium having the 9319 width of the longer edge (297 mm) of the ISO A4 medium 9320 'iso-a4x9-transparent': Specifies the ISO A4X9 transparent medium 9321 having the width of the longer edge (297 mm) of the ISO A4 9322 medium 9323 'iso-a4x9-translucent': Specifies the ISO A4X9 translucent medium 9324 having the width of the longer edge (297 mm) of the ISO A4 9325 medium 9327 The following standard values are defined for Japanese and European 9328 Standard (i.e. ISO) engineering media, which are either a long fixed 9329 size [ASME-Y14.1M] or roll feed, for devices that provide the "synchro- 9330 cut" feature (see section 14.1): 9332 'iso-a0xsynchro-white': Specifies the paper having the width of the 9333 longer edge (1189 mm) of the ISO A0 white medium and cuts 9334 synchronizing with data. 9335 'iso-a0xsynchro-transparent': Specifies the paper having the width of 9336 the longer edge (1189 mm) of the ISO A0 transparent medium and 9337 cuts synchronizing with data. 9338 'iso-a0xsynchro-translucent': Specifies the paper having the width of 9339 the longer edge (1189 mm) of the ISO A0 translucent medium and 9340 cuts synchronizing with data. 9341 'iso-a1xsynchro-white': Specifies the paper having the width of the 9342 longer edge (841 mm) of the ISO A1 white medium and cuts 9343 synchronizing with data. 9345 Expires November 22, 2000 9347 'iso-a1xsynchro-transparent': Specifies the paper having the width of 9348 the longer edge (841 mm) of the ISO A1 transparent medium and 9349 cuts synchronizing with data. 9350 'iso-a1xsynchro-translucent': Specifies the paper having the width of 9351 the longer edge (841 mm) of the ISO A1 translucent medium and 9352 cuts synchronizing with data. 9353 'iso-a2xsynchro-white': Specifies the paper having the width of the 9354 longer edge (594 mm) of the ISO A2 white medium and cuts 9355 synchronizing with data. 9356 'iso-a2xsynchro-transparent': Specifies the paper having the width of 9357 the longer edge (594 mm) of the ISO A2 transparent medium and 9358 cuts synchronizing with data. 9359 'iso-a2xsynchro-translucent': Specifies the paper having the width of 9360 the longer edge (594 mm) of the ISO A2 translucent medium and 9361 cuts synchronizing with data. 9362 'iso-a3xsynchro-white': Specifies the paper having the width of the 9363 longer edge (420 mm) of the ISO A3 white medium and cuts 9364 synchronizing with data. 9365 'iso-a3xsynchro-transparent': Specifies the paper having the width of 9366 the longer edge (420 mm) of the ISO A3 transparent medium and 9367 cuts synchronizing with data. 9368 'iso-a3xsynchro-translucent': Specifies the paper having the width of 9369 the longer edge (420 mm) of the ISO A3 translucent medium and 9370 cuts synchronizing with data. 9371 'iso-a4xsynchro-white': Specifies the paper having the width of the 9372 longer edge (297 mm) of the ISO A4 white medium and cuts 9373 synchronizing with data. 9374 'iso-a4xsynchro-transparent': Specifies the paper having the width of 9375 the longer edge (297 mm) of the ISO A4 transparent medium and 9376 cuts synchronizing with data. 9377 'iso-a4xsynchro-translucent': Specifies the paper having the width of 9378 the longer edge (297 mm) of the ISO A4 transparent medium and 9379 cuts synchronizing with data. 9381 The following standard values are defined for American Standard (i.e. 9382 ANSI) engineering media, American Architectural engineering media, and 9383 Japanese and European Standard (i.e. ISO) engineering media, which are 9384 either a long fixed size [ASME-Y14.1M] or roll feed, for devices that 9385 provide the "synchro-cut" feature and/or the "auto-select" feature (see 9386 section 14.1): 9388 'auto-white': Specifies that the printer selects the white medium 9389 with the appropriate fixed size (e.g. a1, a2, etc.) or data- 9390 synchro size, and the selection is implementation-defined. 9391 'auto-transparent': Specifies that the printer selects the 9392 transparent medium with the appropriate fixed size (e.g. a1, a2, 9393 etc.) or data-synchro size, and the selection is implementation- 9394 defined. 9395 'auto-translucent': Specifies that the printer selects the 9396 translucent medium with the appropriate fixed size (e.g. a1, a2, 9397 etc.) or data-synchro size, and the selection is implementation- 9398 defined. 9400 Expires November 22, 2000 9402 'auto-fixed-size-white': Specifies that the printer selects the white 9403 medium with the appropriate fixed size (e.g. a1, a2, etc.) or 9404 the appropriate long fixed size listed above. 9405 'auto-fixed-size-transparent': Specifies that the printer selects the 9406 transparent medium with the appropriate fixed size (e.g. a1, a2, 9407 etc.) or the appropriate long fixed size listed above. 9408 'auto-fixed-size-translucent': Specifies that the printer selects the 9409 translucent medium with the appropriate fixed size (e.g. a1, a2, 9410 etc.) or the appropriate long fixed size listed above. 9411 'auto-synchro-white': Specifies that the printer selects the white 9412 paper with the appropriate width and cuts it synchronizing with 9413 data. 9414 'auto-synchro-transparent': Specifies that the printer selects the 9415 transparent paper with the appropriate width and cuts it 9416 synchronizing with data. 9417 'auto-synchro-translucent': Specifies that the printer selects the 9418 translucent paper with the appropriate width and cuts it 9419 synchronizing with data. 9421 The following standard values are defined for input-trays (from ISO DPA 9422 and the Printer MIB): 9424 'top': The top input tray in the printer. 9425 'middle': The middle input tray in the printer. 9426 'bottom': The bottom input tray in the printer. 9427 'envelope': The envelope input tray in the printer. 9428 'manual': The manual feed input tray in the printer. 9429 'large-capacity': The large capacity input tray in the printer. 9430 'main': The main input tray 9431 'side': The side input tray 9433 The following standard values are defined for media sizes (from ISO 9434 DPA): 9436 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined in 9437 ISO 216 9438 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 9439 ISO 216 9440 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 9441 ISO 216 9442 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 9443 ISO 216 9444 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 9445 ISO 216 9446 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 9447 ISO 216 9448 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 9449 ISO 216 9450 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 9451 ISO 216 9452 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in ISO 9453 216 9455 Expires November 22, 2000 9457 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in ISO 9458 216 9459 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 9460 ISO 216 9461 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined in 9462 ISO 216 9463 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined in 9464 ISO 216 9465 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 9466 ISO 216 9467 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 9468 ISO 216 9469 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 9470 ISO 216 9471 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 9472 ISO 216 9473 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 9474 ISO 216 9475 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 9476 ISO 216 9477 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in ISO 9478 216 9479 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in ISO 9480 216 9481 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 9482 ISO 216 9483 'na-letter': Specifies the North American letter size: 8.5 inches by 9484 11 inches 9485 'na-legal': Specifies the North American legal size: 8.5 inches by 14 9486 inches 9487 'na-8x10': Specifies the North American 8 inches by 10 inches 9488 'na-5x7': Specifies the North American 5 inches by 7 inches 9489 'executive': Specifies the executive size (7.25 X 10.5 in) 9490 'folio': Specifies the folio size (8.5 X 13 in) 9491 'invoice': Specifies the invoice size (5.5 X 8.5 in) 9492 'ledger': Specifies the ledger size (11 X 17 in) 9493 'quarto': Specifies the quarto size (8.5 X 10.83 in) 9494 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 9495 ISO 269 9496 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 9497 ISO 269 9498 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 9499 ISO 269 9500 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 9501 ISO 269 9502 'iso-designated-long': Specifies the ISO Designated Long size: 110 mm 9503 by 220 mm as defined in ISO 269 9504 'na-10x13-envelope': Specifies the North American 10x13 size: 10 9505 inches by 13 inches 9506 'na-9x12-envelope': Specifies the North American 9x12 size: 9 inches 9507 by 12 inches 9508 'na-number-10-envelope': Specifies the North American number 10 9509 business envelope size: 4.125 inches by 9.5 inches 9511 Expires November 22, 2000 9513 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 9514 size 9515 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 9516 size 9517 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 9518 size 9519 'na-number-9-envelope': Specifies the North American number 9 9520 business envelope size 9521 'na-6x9-envelope': Specifies the North American 6x9 envelope size 9522 'na-10x15-envelope': Specifies the North American 10x15 envelope size 9523 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 9524 in) 9525 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 9526 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 9527 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 9528 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 9529 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 9530 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 9531 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 9532 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 9533 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 9534 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 9535 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 9537 The following standard values are defined for American Standard (i.e. 9538 ANSI) engineering media sizes: 9540 'a': Specifies the engineering ANSI A size medium: 8.5 inches x 11 9541 inches 9542 'b': Specifies the engineering ANSI B size medium: 11 inches x 17 9543 inches 9544 'c': Specifies the engineering ANSI C size medium: 17 inches x 22 9545 inches 9546 'd': Specifies the engineering ANSI D size medium: 22 inches x 34 9547 inches 9548 'e': Specifies the engineering ANSI E size medium: 34 inches x 44 9549 inches 9551 The following standard values are defined for American Architectural 9552 engineering media sizes: 9554 'arch-a': Specifies the Architectural A size medium: 9 inches x 12 9555 inches 9556 'arch-b': Specifies the Architectural B size medium: 12 inches x 18 9557 inches 9558 'arch-c': Specifies the Architectural C size medium: 18 inches x 24 9559 inches 9560 'arch-d': Specifies the Architectural D size medium: 24 inches x 36 9561 inches 9562 'arch-e': Specifies the Architectural E size medium: 36 inches x 48 9563 inches 9565 Expires November 22, 2000 9567 14.1.Examples 9569 Below are examples to supplement the engineering media value 9570 definitions. 9572 Example 1: "Synchro-Cut", a device cutting the roll paper in 9573 synchronization with the data 9575 data height: A1 height 9576 data width (shaded): A1 width < data width < (A1 width) x 2 9577 specified value: 'iso-a1xsynchro-white' 9579 | | 9580 |<--- data width --->| 9581 | | 9582 | | | | 9583 |<- A1 width ->|<- A1 width ->| 9584 | | | | 9585 cross ^ | | | | 9586 feed | +--------------------------------------------/ 9587 direction | |//////////////|/////| | ^ / 9588 | |//////////////|/////| | | / 9589 | |//////////////|/////| | | / 9590 | |//////////////|/////| | | \ 9591 <-----------+- |//////////////|/////| | A1 \ roll 9592 feed | |//////////////|/////| | height \ paper 9593 direction |//////////////|/////| | | \ 9594 |//////////////|/////| | | / 9595 |//////////////|/////| | v / 9596 +------------------------------------------/ 9597 | 9598 | 9599 |<------ CUT HERE (to synchronize 9600 | with data width) 9601 | 9603 Expires November 22, 2000 9605 Example 2: "Auto-Cut", a device cutting the roll paper at multiples of 9606 fixed-size media width 9607 data height: A1 height 9608 data width (shaded): A1 width < data width < (A1 width) x 2 9609 specified value: 'auto-fixed-size-white' 9611 | | 9612 |<--- data width --->| 9613 | | 9614 | | | | 9615 |<- A1 width ->|<- A1 width ->| 9616 | | | | 9617 cross ^ | | | | 9618 feed | +--------------------------------------------/ 9619 direction | |//////////////|/////| | ^ / 9620 | |//////////////|/////| | | / 9621 | |//////////////|/////| | | / 9622 | |//////////////|/////| | | \ 9623 <-----------+- |//////////////|/////| | A1 \ roll 9624 feed | |//////////////|/////| | height \ paper 9625 direction |//////////////|/////| | | \ 9626 |//////////////|/////| | | / 9627 |//////////////|/////| | v / 9628 +------------------------------------------/ 9629 | 9630 | 9631 |<--- CUT HERE 9632 | (to synchronize 9633 | with data width) 9635 Expires November 22, 2000 9637 Example 3: the 'iso-a4x4-white' fixed size paper 9639 paper height: A4 height 9640 paper width: (A4 width) x 4 9641 specified value: 'iso-a4x4-white' 9643 | | | | | 9644 |<- A4 width ->|<- A4 width ->|<- A4 width ->|<- A4 width ->| 9645 | | | | | 9646 | | | | | 9647 +-----------------------------------------------------------+ 9648 | ^ | | | | 9649 | | | | | | 9650 | | | | | | 9651 | A4 | | | | 9652 | height | | | | 9653 | | | | | | 9654 | | | | | | 9655 | | | | | | 9656 | v | | | | 9657 +-----------------------------------------------------------+ 9659 Expires November 22, 2000 9660 Example 4: "Synchro-Cut", a device cutting the fixed size paper in 9661 synchronization with the data 9663 data height: A4 height 9664 data width (shaded): (A4 width) x 2 < data width < (A4 width) x 3 9665 specified value: 'iso-a4xsynchro-white' 9667 | | 9668 |<---------- data width ----------->| 9669 | | 9670 | | | | | 9671 |<- A4 width ->|<- A4 width ->|<- A4 width ->| 9672 | | | | | 9673 cross ^ | | | | | 9674 feed | +--------------------------------------------+ 9675 direction | |//////////////|//////////////|/////| ^ | 9676 | |//////////////|//////////////|/////| | | 9677 | |//////////////|//////////////|/////| | | 9678 | |//////////////|//////////////|/////| | | 9679 <-----------+- |//////////////|//////////////|/////| A4 | 9680 feed | |//////////////|//////////////|/////| height | 9681 direction |//////////////|//////////////|/////| | | 9682 |//////////////|//////////////|/////| | | 9683 |//////////////|//////////////|/////| v | 9684 +--------------------------------------------+ 9685 | 9686 CUT HERE ---->| 9687 (to synchronize | 9688 with data width) | 9690 Expires November 22, 2000 9692 Standard keyword values are taken from several sources. 9694 Standard values are defined (taken from DPA[ISO10175] and the Printer 9695 MIB[RFC1759]): 9697 'default': The default medium for the output device 9698 'iso-a4-white': Specifies the ISO A4 white medium 9699 'iso-a4-colored': Specifies the ISO A4 colored medium 9700 'iso-a4-transparent' Specifies the ISO A4 transparent medium 9701 'iso-a3-white': Specifies the ISO A3 white medium 9702 'iso-a3-colored': Specifies the ISO A3 colored medium 9703 'iso-a5-white': Specifies the ISO A5 white medium 9704 'iso-a5-colored': Specifies the ISO A5 colored medium 9705 'iso-b4-white': Specifies the ISO B4 white medium 9706 'iso-b4-colored': Specifies the ISO B4 colored medium 9707 'iso-b5-white': Specifies the ISO B5 white medium 9708 'iso-b5-colored': Specifies the ISO B5 colored medium 9709 'jis-b4-white': Specifies the JIS B4 white medium 9710 'jis-b4-colored': Specifies the JIS B4 colored medium 9711 'jis-b5-white': Specifies the JIS B5 white medium 9712 'jis-b5-colored': Specifies the JIS B5 colored medium 9714 The following standard values are defined for North American media: 9716 'na-letter-white': Specifies the North American letter white medium 9717 'na-letter-colored': Specifies the North American letter colored 9718 medium 9719 'na-letter-transparent': Specifies the North American letter 9720 transparent medium 9721 'na-legal-white': Specifies the North American legal white medium 9722 'na-legal-colored': Specifies the North American legal colored medium 9724 The following standard values are defined for envelopes: 9726 'iso-b4-envelope': Specifies the ISO B4 envelope medium 9727 'iso-b5-envelope': Specifies the ISO B5 envelope medium 9728 'iso-c3-envelope': Specifies the ISO C3 envelope medium 9729 'iso-c4-envelope': Specifies the ISO C4 envelope medium 9730 'iso-c5-envelope': Specifies the ISO C5 envelope medium 9731 'iso-c6-envelope': Specifies the ISO C6 envelope medium 9732 'iso-designated-long-envelope': Specifies the ISO Designated Long 9733 envelope medium 9734 'na-10x13-envelope': Specifies the North American 10x13 envelope 9735 medium 9736 'na-9x12-envelope': Specifies the North American 9x12 envelope medium 9737 'monarch-envelope': Specifies the Monarch envelope 9738 'na-number-10-envelope': Specifies the North American number 10 9739 business envelope medium 9740 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 9741 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 9742 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 9744 Expires November 22, 2000 9745 'na-number-9-envelope': Specifies the North American number 9 9746 business envelope 9747 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 9748 'na-10x15-envelope': Specifies the North American 10x15 inch envelope 9750 The following standard values are defined for the less commonly used 9751 media (white-only): 9753 'executive-white': Specifies the white executive medium 9754 'folio-white': Specifies the folio white medium 9755 'invoice-white': Specifies the white invoice medium 9756 'ledger-white': Specifies the white ledger medium 9757 'quarto-white': Specified the white quarto medium 9758 'iso-a0-white': Specifies the ISO A0 white medium 9759 'iso-a1-white': Specifies the ISO A1 white medium 9760 'iso-a2-white': Specifies the ISO A2 white medium 9761 'iso-a6-white': Specifies the ISO A6 white medium 9762 'iso-a7-white': Specifies the ISO A7 white medium 9763 'iso-a8-white': Specifies the ISO A8 white medium 9764 'iso-a9-white': Specifies the ISO A9 white medium 9765 'iso-10-white': Specifies the ISO A10 white medium 9766 'iso-b0-white': Specifies the ISO B0 white medium 9767 'iso-b1-white': Specifies the ISO B1 white medium 9768 'iso-b2-white': Specifies the ISO B2 white medium 9769 'iso-b3-white': Specifies the ISO B3 white medium 9770 'iso-b6-white': Specifies the ISO B6 white medium 9771 'iso-b7-white': Specifies the ISO B7 white medium 9772 'iso-b8-white': Specifies the ISO B8 white medium 9773 'iso-b9-white': Specifies the ISO B9 white medium 9774 'iso-b10-white': Specifies the ISO B10 white medium 9775 'jis-b0-white': Specifies the JIS B0 white medium 9776 'jis-b1-white': Specifies the JIS B1 white medium 9777 'jis-b2-white': Specifies the JIS B2 white medium 9778 'jis-b3-white': Specifies the JIS B3 white medium 9779 'jis-b6-white': Specifies the JIS B6 white medium 9780 'jis-b7-white': Specifies the JIS B7 white medium 9781 'jis-b8-white': Specifies the JIS B8 white medium 9782 'jis-b9-white': Specifies the JIS B9 white medium 9783 'jis-b10-white': Specifies the JIS B10 white medium 9785 The following standard values are defined for engineering media (white 9786 only): 9788 'a-white': Specifies the engineering A size medium 9789 'b-white': Specifies the engineering B size medium 9790 'c-white': Specifies the engineering C size medium 9791 'd-white': Specifies the engineering D size medium 9792 'e-white': Specifies the engineering E size medium 9794 The following standard values are defined for input-trays (from ISO DPA 9795 and the Printer MIB): 9797 Expires November 22, 2000 9798 'top': The top input tray in the printer. 9799 'middle': The middle input tray in the printer. 9800 'bottom': The bottom input tray in the printer. 9801 'envelope': The envelope input tray in the printer. 9802 'manual': The manual feed input tray in the printer. 9803 'large-capacity': The large capacity input tray in the printer. 9804 'main': The main input tray 9805 'side': The side input tray 9807 The following standard values are defined for media sizes (from ISO 9808 DPA): 9810 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined in 9811 ISO 216 9812 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 9813 ISO 216 9814 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 9815 ISO 216 9816 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 9817 ISO 216 9818 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 9819 ISO 216 9820 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 9821 ISO 216 9822 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 9823 ISO 216 9824 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 9825 ISO 216 9826 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in ISO 9827 216 9828 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in ISO 9829 216 9830 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 9831 ISO 216 9832 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined in 9833 ISO 216 9834 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined in 9835 ISO 216 9836 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 9837 ISO 216 9838 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 9839 ISO 216 9840 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 9841 ISO 216 9842 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 9843 ISO 216 9844 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 9845 ISO 216 9846 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 9847 ISO 216 9848 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in ISO 9849 216 9851 Expires November 22, 2000 9853 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in ISO 9854 216 9855 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 9856 ISO 216 9857 'na-letter': Specifies the North American letter size: 8.5 inches by 9858 11 inches 9859 'na-legal': Specifies the North American legal size: 8.5 inches by 14 9860 inches 9861 'executive': Specifies the executive size (7.25 X 10.5 in) 9862 'folio': Specifies the folio size (8.5 X 13 in) 9863 'invoice': Specifies the invoice size (5.5 X 8.5 in) 9864 'ledger': Specifies the ledger size (11 X 17 in) 9865 'quarto': Specifies the quarto size (8.5 X 10.83 in) 9866 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 9867 ISO 269 9868 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 9869 ISO 269 9870 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 9871 ISO 269 9872 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 9873 ISO 269 9874 'iso-designated-long': Specifies the ISO Designated Long size: 110 mm 9875 by 220 mm as defined in ISO 269 9876 'na-10x13-envelope': Specifies the North American 10x13 size: 10 9877 inches by 13 inches 9878 'na-9x12-envelope': Specifies the North American 9x12 size: 9 inches 9879 by 12 inches 9880 'na-number-10-envelope': Specifies the North American number 10 9881 business envelope size: 4.125 inches by 9.5 inches 9882 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 9883 size 9884 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 9885 size 9886 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 9887 size 9888 'na-number-9-envelope': Specifies the North American number 9 9889 business envelope size 9890 'na-6x9-envelope': Specifies the North American 6x9 envelope size 9891 'na-10x15-envelope': Specifies the North American 10x15 envelope size 9892 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 9893 in) 9894 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 9895 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 9896 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 9897 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 9898 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 9899 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 9900 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 9901 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 9902 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 9903 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 9904 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 9906 The following standard values are defined for engineering media sizes: 9908 Expires November 22, 2000 9909 'a': Specifies the engineering A size: 8.5 inches x 11 inches 9910 'b': Specifies the engineering B size: 11 inches x 17 inches 9911 'c': Specifies the engineering C size: 17 inches x 22 inches 9912 'd': Specifies the engineering D size: 22 inches x 34 inches 9913 'e': Specifies the engineering E size: 34 inches x 44 inches 9915 15. APPENDIX D: Processing IPP Attributes 9917 When submitting a print job to a Printer object, the IPP model allows a 9918 client to supply operation and Job Template attributes along with the 9919 document data. These Job Template attributes in the create request 9920 affect the rendering, production and finishing of the documents in the 9921 job. Similar types of instructions may also be contained in the 9922 document to be printed, that is, embedded within the print data itself. 9923 In addition, the Printer has a set of attributes that describe what 9924 rendering and finishing options which are supported by that Printer. 9925 This model, which allows for flexibility and power, also introduces the 9926 potential that at job submission time, these client-supplied attributes 9927 may conflict with either: 9929 - what the implementation is capable of realizing (i.e., what the 9930 Printer supports), as well as 9931 - the instructions embedded within the print data itself. 9933 The following sections describe how these two types of conflicts are 9934 handled in the IPP model. 9936 15.1 Fidelity 9938 If there is a conflict between what the client requests and what a 9939 Printer object supports, the client may request one of two possible 9940 conflict handling mechanisms: 9942 1) either reject the job since the job can not be processed exactly 9943 as specified, or 9944 2) allow the Printer to make any changes necessary to proceed with 9945 processing the Job the best it can. 9947 In the first case the client is indicating to the Printer object: "Print 9948 the job exactly as specified with no exceptions, and if that can't be 9949 done, don't even bother printing the job at all." In the second case, 9950 the client is indicating to the Printer object: "It is more important to 9951 make sure the job is printed rather than be processed exactly as 9952 specified; just make sure the job is printed even if client supplied 9953 attributes need to be changed or ignored." 9955 The IPP model accounts for this situation by introducing an "ipp- 9956 attribute-fidelity" attribute. 9958 Expires November 22, 2000 9959 In a create request, "ipp-attribute-fidelity" is a boolean operation 9960 attribute that is OPTIONALLY supplied by the client. The value 'true' 9961 indicates that total fidelity to client supplied Job Template attributes 9962 and values is required. The client is requesting that the Job be 9963 printed exactly as specified, and if that is not possible then the job 9964 MUST be rejected rather than processed incorrectly. The value 'false' 9965 indicates that a reasonable attempt to print the Job is acceptable. If 9966 a Printer does not support some of the client supplied Job Template 9967 attributes or values, the Printer MUST ignore them or substitute any 9968 supported value for unsupported values, respectively. The Printer may 9969 choose to substitute the default value associated with that attribute, 9970 or use some other supported value that is similar to the unsupported 9971 requested value. For example, if a client supplies a "media" value of 9972 'na-letter', the Printer may choose to substitute 'iso-a4' rather than a 9973 default value of 'envelope'. If the client does not supply the "ipp- 9974 attribute-fidelity" attribute, the Printer assumes a value of 'false'. 9976 Each Printer implementation MUST support both types of "fidelity" 9977 printing (that is whether the client supplies a value of 'true' or 9978 'false'): 9980 - If the client supplies 'false' or does not supply the attribute, 9981 the Printer object MUST always accept the request by ignoring 9982 unsupported Job Template attributes and by substituting unsupported 9983 values of supported Job Template attributes with supported values. 9984 - If the client supplies 'true', the Printer object MUST reject the 9985 request if the client supplies unsupported Job Template attributes. 9987 Since a client can always query a Printer to find out exactly what is 9988 and is not supported, "ipp-attribute-fidelity" set to 'false' is useful 9989 when: 9991 1) The End-User uses a command line interface to request attributes 9992 that might not be supported. 9993 2) In a GUI context, if the End User expects the job might be moved 9994 to another printer and prefers a sub-optimal result to nothing at 9995 all. 9996 3) The End User just wants something reasonable in lieu of nothing at 9997 all. 9999 15.2 Page Description Language (PDL) Override 10001 If there is a conflict between the value of an IPP Job Template 10002 attribute and a corresponding instruction in the document data, the 10003 value of the IPP attribute SHOULD take precedence over the document 10004 instruction. Consider the case where a previously formatted file of 10005 document data is sent to an IPP Printer. In this case, if the client 10006 supplies any attributes at job submission time, the client desires that 10007 those attributes override the embedded instructions. Consider the case 10008 were a previously formatted document has embedded in it commands to load 10009 'iso-a4' media. However, the document is passed to an end user that 10010 only has access to a printer with 'na-letter' media loaded. That end 10011 user most likely wants to submit that document to an IPP Printer with 10013 Expires November 22, 2000 10014 the "media" Job Template attribute set to 'na-letter'. The job 10015 submission attribute should take precedence over the embedded PDL 10016 instruction. However, until companies that supply document data 10017 interpreters allow a way for external IPP attributes to take precedence 10018 over embedded job production instructions, a Printer might not be able 10019 to support the semantics that IPP attributes override the embedded 10020 instructions. 10022 The IPP model accounts for this situation by introducing a "pdl- 10023 override-supported" attribute that describes the Printer objects 10024 capabilities to override instructions embedded in the PDL data stream. 10025 The value of the "pdl-override-supported" attribute is configured by 10026 means outside the scope of this IPP/1.1 document. 10028 This REQUIRED Printer attribute takes on the following values: 10030 - 'attempted': This value indicates that the Printer object attempts 10031 to make the IPP attribute values take precedence over embedded 10032 instructions in the document data, however there is no guarantee. 10033 - 'not-attempted': This value indicates that the Printer object makes 10034 no attempt to make the IPP attribute values take precedence over 10035 embedded instructions in the document data. 10037 At job processing time, an implementation that supports the value of 10038 'attempted' might do one of several different actions: 10040 1) Generate an output device specific command sequence to realize the 10041 feature represented by the IPP attribute value. 10042 2) Parse the document data itself and replace the conflicting 10043 embedded instruction with a new embedded instruction that matches 10044 the intent of the IPP attribute value. 10045 3) Indicate to the Printer that external supplied attributes take 10046 precedence over embedded instructions and then pass the external 10047 IPP attribute values to the document data interpreter. 10048 4) Anything else that allows for the semantics that IPP attributes 10049 override embedded document data instructions. 10051 Since 'attempted' does not offer any type of guarantee, even though a 10052 given Printer object might not do a very "good" job of attempting to 10053 ensure that IPP attributes take a higher precedence over instructions 10054 embedded in the document data, it would still be a conforming 10055 implementation. 10057 At job processing time, an implementation that supports the value of 10058 'not-attempted' might do one of the following actions: 10060 1) Simply pre-pend the document data with the PDL instruction that 10061 corresponds to the client-supplied PDL attribute, such that if the 10062 document data also has the same PDL instruction, it will override 10063 what the Printer object pre-pended. In other words, this 10064 implementation is using the same implementation semantics for the 10065 client-supplied IPP attributes as for the Printer object defaults. 10067 Expires November 22, 2000 10069 2) Parse the document data and replace the conflicting embedded 10070 instruction with a new embedded instruction that approximates, but 10071 does not match, the semantic intent of the IPP attribute value. 10073 Note: The "ipp-attribute-fidelity" attribute applies to the Printer's 10074 ability to either accept or reject other unsupported Job Template 10075 attributes. In other words, if "ipp-attribute-fidelity" is set to 10076 'true', a Job is accepted if and only if the client supplied Job 10077 Template attributes and values are supported by the Printer. Whether 10078 these attributes actually affect the processing of the Job when the 10079 document data contains embedded instructions depends on the ability of 10080 the Printer to override the instructions embedded in the document data 10081 with the semantics of the IPP attributes. If the document data 10082 attributes can be overridden ("pdl-override-supported" set to 10083 'attempted'), the Printer makes an attempt to use the IPP attributes 10084 when processing the Job. If the document data attributes can not be 10085 overridden ("pdl-override-supported" set to 'not-attempted'), the 10086 Printer makes no attempt to override the embedded document data 10087 instructions with the IPP attributes when processing the Job, and hence, 10088 the IPP attributes may fail to affect the Job processing and output when 10089 the corresponding instruction is embedded in the document data. 10091 15.3 Using Job Template Attributes During Document Processing. 10093 The Printer object uses some of the Job object's Job Template attributes 10094 during the processing of the document data associated with that job. 10095 These include, but are not limited to, "orientation-requested", "number- 10096 up", "sides", "media", and "copies". The processing of each document in 10097 a Job Object MUST follow the steps below. These steps are intended only 10098 to identify when and how attributes are to be used in processing 10099 document data and any alternative steps that accomplishes the same 10100 effect can be used to implement this specification document. 10102 1. Using the client supplied "document-format" attribute or some form 10103 of document format detection algorithm (if the value of "document- 10104 format" is not specific enough), determine whether or not the 10105 document data has already been formatted for printing. If the 10106 document data has been formatted, then go to step 2. Otherwise, the 10107 document data MUST be formatted. The formatting detection algorithm 10108 is implementation defined and is not specified by this document. 10109 The formatting of the document data uses the "orientation- 10110 requested" attribute to determine how the formatted print data 10111 should be placed on a print-stream page, see section 4.2.10 for the 10112 details. 10114 2. The document data is in the form of a print-stream in a known 10115 media type. The "page-ranges" attribute is used to select, as 10116 specified in section 4.2.7, a sub-sequence of the pages in the 10117 print-stream that are to be processed and images. 10119 3. The input to this step is a sequence of print-stream pages. This 10120 step is controlled by the "number-up" attribute. If the value of 10121 "number-up" is N, then during the processing of the print-stream 10123 Expires November 22, 2000 10124 pages, each N print-stream pages are positioned, as specified in 10125 section 4.2.9, to create a single impression. If a given document 10126 does not have N more print-stream pages, then the completion of the 10127 impression is controlled by the "multiple-document-handling" 10128 attribute as described in section 4.2.4; when the value of this 10129 attribute is 'single-document' or 'single-document-new-sheet', the 10130 print-stream pages of document data from subsequent documents is 10131 used to complete the impression. 10133 The size(scaling), position(translation) and rotation of the print- 10134 stream pages on the impression is implementation defined. Note 10135 that during this process the print-stream pages may be rendered to 10136 a form suitable for placing on the impression; this rendering is 10137 controlled by the values of the "printer-resolution" and "print- 10138 quality" attributes as described in sections 4.2.12 and 4.2.13. In 10139 the case N=1, the impression is nearly the same as the print-stream 10140 page; the differences would only be in the size, position and 10141 rotation of the print-stream page and/or any decoration, such as a 10142 frame to the page, that is added by the implementation. 10144 4. The collection of impressions is placed, in sequence, onto sides 10145 of the media sheets. This placement is controlled by the "sides" 10146 attribute and the orientation of the print-stream page, as 10147 described in section 4.2.8. The orientation of the print-stream 10148 pages affects the orientation of the impression; for example, if 10149 "number-up" equals 2, then, typically, two portrait print-stream 10150 pages become one landscape impression. Note that the placement of 10151 impressions onto media sheets is also controlled by the "multiple- 10152 document-handling" attribute as described in section 4.2.4. 10154 5. The "copies" and "multiple-document-handling" attributes are used 10155 to determine how many copies of each media instance are created and 10156 in what order. See sections 4.2.5 and 4.2.4 for the details. 10158 6. When the correct number of copies are created, the media instances 10159 are finished according to the values of the "finishings" attribute 10160 as described in 4.2.6. Note that sometimes finishing operations may 10161 require manual intervention to perform the finishing operations on 10162 the copies, especially uncollated copies. This document allows any 10163 or all of the processing steps to be performed automatically or 10164 manually at the discretion of the Printer object. 10166 16. APPENDIX E: Generic Directory Schema 10168 This section defines a generic schema for an entry in a directory 10169 service. A directory service is a means by which service users can 10170 locate service providers. In IPP environments, this means that IPP 10171 Printers can be registered (either automatically or with the help of an 10172 administrator) as entries of type printer in the directory using an 10173 implementation specific mechanism such as entry attributes, entry type 10174 fields, specific branches, etc. Directory clients can search or browse 10175 for entries of type printer. Clients use the directory service to find 10177 Expires November 22, 2000 10178 entries based on naming, organizational contexts, or filtered searches 10179 on attribute values of entries. For example, a client can find all 10180 printers in the "Local Department" context. Authentication and 10181 authorization are also often part of a directory service so that an 10182 administrator can place limits on end users so that they are only 10183 allowed to find entries to which they have certain access rights. IPP 10184 itself does not require any specific directory service protocol or 10185 provider. 10187 Note: Some directory implementations allow for the notion of "aliasing". 10188 That is, one directory entry object can appear as multiple directory 10189 entry object with different names for each object. In each case, each 10190 alias refers to the same directory entry object which refers to a single 10191 IPP Printer object. 10193 The generic schema is a subset of IPP Printer Job Template and Printer 10194 Description attributes (sections 4.2 and 4.4). These attributes are 10195 identified as either RECOMMENDED or OPTIONAL for the directory entry 10196 itself. This conformance labeling is NOT the same conformance labeling 10197 applied to the attributes of IPP Printers objects. The conformance 10198 labeling in this Appendix is intended to apply to directory templates 10199 and to IPP Printer implementations that subscribe by adding one or more 10200 entries to a directory. RECOMMENDED attributes SHOULD be associated 10201 with each directory entry. OPTIONAL attributes MAY be associated with 10202 the directory entry (if known or supported). In addition, all directory 10203 entry attributes SHOULD reflect the current attribute values for the 10204 corresponding Printer object. 10206 The names of attributes in directory schema and entries SHOULD be the 10207 same as the IPP Printer attribute names as shown, as much as possible. 10209 In order to bridge between the directory service and the IPP Printer 10210 object, one of the RECOMMENDED directory entry attributes is the Printer 10211 object's "printer-uri-supported" attribute. The directory client 10212 queries the "printer-uri-supported" attribute (or its equivalent) in the 10213 directory entry and then the IPP client addresses the IPP Printer object 10214 using one of its URIs. The "uri-security-supported" attribute 10215 identifies the protocol (if any) used to secure a channel. 10217 The following attributes define the generic schema for directory entries 10218 of type PRINTER: 10220 printer-uri-supported RECOMMENDED Section 4.4.1 10221 uri-authentication-supported RECOMMENDED Section 4.4.2 10222 uri-security-supported RECOMMENDED Section 4.4.3 10223 printer-name RECOMMENDED Section 4.4.4 10224 printer-location RECOMMENDED Section 4.4.5 10225 printer-info OPTIONAL Section 4.4.6 10226 printer-more-info OPTIONAL Section 4.4.7 10227 printer-make-and-model RECOMMENDED Section 4.4.9 10228 ipp-versions-supported RECOMMENDED Section 4.4.14 10229 multiple-document-jobs-supported OPTIONAL Section 4.4.16 10230 charset-supported OPTIONAL Section 4.4.18 10231 generated-natural-language- 10233 Expires November 22, 2000 10234 supported OPTIONAL Section 4.4.20 10235 document-format-supported RECOMMENDED Section 4.4.22 10236 color-supported RECOMMENDED Section 4.4.26 10237 compression-supported RECOMMENDED Section 4.4.32 10238 pages-per-minute OPTIONAL Section 4.4.36 10239 pages-per-minute-color OPTIONAL Section 4.4.37 10241 finishings-supported OPTIONAL Section 4.2.6 10242 number-up-supported OPTIONAL Section 4.2.7 10243 sides-supported RECOMMENDED Section 4.2.8 10244 media-supported RECOMMENDED Section 4.2.11 10245 printer-resolution-supported OPTIONAL Section 4.2.12 10246 print-quality-supported OPTIONAL Section 4.2.13 10248 Expires November 22, 2000 10250 17. APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and 10251 Semantics" Documents 10253 This Appendix is divided into two lists that summarize the differences 10254 between IPP/1.1 (this document) and IPP/1.0 [RFC2566]. The section 10255 numbers refer to the numbers in this document which in some cases have 10256 changed from RFC 2566. When a change affects multiple sections, the 10257 item is listed once in the order of the first section affected and the 10258 remaining affected section numbers are indicated. 10260 The first list contains extensions and clarifications and the second 10261 list contains changes in semantics or conformance. However, client and 10262 IPP object implementations of IPP/1.0 MAY implement any of the 10263 extensions and clarifications in this document. 10265 The following extensions and clarifications have been incorporated into 10266 this document: 10268 1. Section 2.1 - clarified that the term "client" can be either 10269 contained in software controlled by an end user or a part of a 10270 print server that controls devices. 10271 2. Section 2 - clarified that the term "IPP object" and "Printer 10272 object" can either be embedded in a device object or part of a 10273 print server that accepts IPP requests. 10274 3. Section 2.4 - added the description of the new "uri-authentication- 10275 supported" Printer Description attribute. 10276 4. Section 3.1.3, 3.1.6, 3.2.5.2, and 3.2.6.2 - clarified the error 10277 handling for operation attributes that have their own status code. 10278 5. Section 3.1.3 - clarified that multiple occurrences of the same 10279 attribute in an attribute group is mal-formed. An IPP Printer MAY 10280 reject the request or choose one of the attributes. 10281 6. Section 3.1.6 - reorganized this section into sub-sections to 10282 separately describe "status-code", "status-message", "detailed- 10283 status-message", and "document-access-error" attributes. 10284 7. Section 3.1.6.1 - clarified the error status codes and their 10285 relationship to operation attributes. 10286 8. Section 3.1.6.3 - Added the OPTIONAL "detailed-status-message 10287 (text(MAX))" operation attribute to provide additional more 10288 detailed information about a response. 10289 9. Section 3.1.6.4 and 3.2.2 - Added the OPTIONAL "document-access- 10290 error (text(MAX))" operation attribute for use with Print-URI and 10291 Send-URI responses. 10292 10. Sections 3.1.7 - Added this new section to clarify returning 10293 Unsupported Attributes for all operations, including only returning 10294 attributes that were in the request. Moved the text from section 10295 3.2.1.2 Unsupported Attributes to this section. 10296 11. Sections 3.1.7 and 4.1 - clarified the encoding of the "out- 10297 of-band" 'unsupported' and 'unknown' values. 10298 12. Section 3.1.8 - clarified that only the version number 10299 parameter will be carried forward into future major or minor 10300 versions of the protocol. 10302 Expires November 22, 2000 10304 13. Section 3.1.8 - relaxed the requirements to increment the 10305 major version number in future versions of the Model and Semantics 10306 document. 10307 14. Section 3.1.9, and 3.2.5 - added the 'processing' state to the 10308 list of job states that a job can be in after a Create-Job 10309 operation. 10310 15. Section 3.1.9 - clarified that a non-spooling Printer MAY 10311 accept zero or more subsequent jobs while processing a job and flow 10312 control them down. Subsequent create requests are rejected with 10313 the 'server-error-busy' error status. 10314 16. Section 3.2.1.1 - clarified the validation of the 10315 "compression" operation attribute and its relationship to the 10316 validation of the "document-format" attribute and returning 10317 Unsupported Attributes. 10318 17. Sections 3.2.1.1, 4.3.8, 13.1.4.16, and 13.1.4.17 - added the 10319 'client-error-compression-not-supported', 'client-error- 10320 compression-error' status codes and the 'unsupported-compression' 10321 and 'compression-error' job-state-reasons. 10322 18. Sections 3.2.1.1 and 4.3.8 - added 'unsupported-document- 10323 format' and 'document-format-error' job-state-reasons. 10324 19. Sections 3.2.2, 4.3.8 and 13.1.4.19 - added 'client-error- 10325 document-access-error' status code and 'document-access-error' job 10326 state reason. 10327 20. Section 3.2.5.2 and 3.2.6.2 - clarified that the Unsupported 10328 Attributes group MUST NOT include attributes not requested in the 10329 Get-Printer-Attributes request. 10330 21. Section 3.2.6 - clarified that "limit" takes precedence over 10331 "which-jobs" and "my-jobs'. 10332 22. Section 3.2.6.2 - clarified that Get-Jobs returns 'successful- 10333 ok' when no jobs to return. 10334 23. Sections 3.2.7, 3.2.8, and 3.2.9 - added the OPTIONAL Pause- 10335 Printer, Resume-Printer, and Purge-Jobs operations 10336 24. Section 3.3.1 - clarified that the authorization required for 10337 a Send-Document request MUST be the same user as the Create-Job or 10338 an operator. 10339 25. Section 3.3.1.1 - clarified that a Create-Job Send-Document 10340 with "last-document" = 'true' and no data is not an error; its a 10341 job with no documents. 10342 26. Sections 3.3.5, 3.3.6, and 3.3.7 - added the OPTIONAL Hold- 10343 Job, Release-Job, and Restart-Job operations. Clarified the 10344 Restart-Job operation so that the Printer MUST re-fetch any 10345 documents passed by-reference (Print-URI or Send-URI). 10346 27. Section 4.1 - clarified that the encoding of the out-of-band 10347 values are specified in the Encoding and Transport" document. 10348 28. Section 4.1 - Clarified that the requirement that clients MUST 10349 NOT send "out-of-band" values in requests applies only to 10350 operations defined in this document. Other operations are allowed 10351 to define "out-of-band" values that clients can supply. 10352 29. Sections 4.1.1 and 4.1.2 - clarified that the maximum 'text' 10353 and 'name' values of 1023 and 255 are for the 'textWithoutLanguage' 10354 portion of the 'textWithLanguage' form, so that the maximum number 10355 of octets for the actual text and name data is the same for the 10356 without and with language forms; the 'naturalLanguage' part is in 10357 addition. 10359 Expires November 22, 2000 10361 30. Section 4.1.9 - clarified that 'mimeMediaType' values can 10362 include any parameters from the IANA Registry, not just charset 10363 parameters. 10364 31. Section 4.1.9.1 - clarified that 'application/octet-stream' 10365 auto-sensing can happen at create request time and/or job/document 10366 processing time. 10367 32. Section 4.1.9.1 - clarified that auto-sensing involves the 10368 Printer examining some number of octets of document data using an 10369 implementation-dependent method. 10370 33. Section 4.1.14 - clarified that the localization of dateTime 10371 by the client includes the time zone. 10372 34. Section 4.2 - clarified that xxx-supported have multiple 10373 keywords and/or names by adding parentheses to the table to give: 10374 (1setOf (type3 keyword | name)) 10375 35. Section 4.2.2 - added the 'indefinite' keyword value to the 10376 "job-hold-until" attribute for use with the create operations and 10377 Hold-Job and Restart-Job operations. 10378 36. Section 4.2.6 - added more enum values to the "finishings" Job 10379 Template attribute. 10380 37. Section 4.2.6 - clarified that the landscape definition is a 10381 rotation of the image with respect to the medium. 10382 38. Section 4.3.7 - added that a forwarding server that cannot get 10383 any job state MAY return the job's state as 'completed', provided 10384 that it also return the new 'queued-in-device' job state reason. 10385 39. Section 4.3.7.2 - added the Partitioning of Job States section 10386 to clarify the concepts of Job Retention, Job History, and Job 10387 Removal. 10388 40. Section 4.3.8 - added 'job-data-insufficient' job state reason 10389 to indicate whether sufficient data has arrived for the document to 10390 start to be processed. 10391 41. Section 4.3.8 - added 'document-access-error' job state reason 10392 to indicate an access error of any kind. 10393 42. Section 4.3.8 - added 'job-queued-for-marker' job state reason 10394 to indicate whether the job has completed some processing and is 10395 waiting for the marker. 10396 43. Section 4.3.8 - added 'unsupported-compression' and 10397 'compression-error' job state reasons to indicate compression not 10398 supported or compression processing error after the create has been 10399 accepted. 10400 44. Section 4.3.8 - added 'unsupported-document-format' and 10401 'document-format-error' job state reasons to indicate document not 10402 supported or document format processing error after the create has 10403 been accepted. 10404 45. Section 4.3.8 - added 'queued-in-device' job state reason to 10405 indicate that a job as been forwarded to a print system or device 10406 that does not provide any job status. 10407 46. Section 4.3.10 - added "job-detailed-status-messages (1setOf 10408 text(MAX)) for returning detailed error messages. 10409 47. Section 4.3.11 - added the "job-document-access-errors (1setOf 10410 text(MAX)) 10411 48. Section 4.3.14.2 - clarified that the time recorded is the 10412 first time processing since the create operation or the Restart-Job 10413 operation. 10415 Expires November 22, 2000 10417 49. Section 4.3.14.2 and 4.3.14.3 - clarified that the out-of-band 10418 value 'no-value' is returned if the job has not started processing 10419 or has not completed, respectively. 10420 50. Section 4.3.14 - Added the OPTIONAL "date-time-at-creation", 10421 "date-time-at-processing", and "date-time-at-completed" Event Time 10422 Job Description attributes 10423 51. Section 4.4.3 - added the 'tls' value to "uri-security- 10424 supported" attribute. 10425 52. Section 4.4.3 - clarified "uri-security-supported" is 10426 orthogonal to Client Authentication so that 'none' does not exclude 10427 Client Authentication. 10428 53. Section 4.4.11 - simplified the "printer-state" descriptions 10429 while generalizing to allow high end devices that interpret one or 10430 more jobs while marking another. Indicated that 'spool-area-full' 10431 and 'stopped-partly' "printer-state-reasons" may be used to provide 10432 further state information. 10433 54. Section 4.4.12 - added the 'moving-to-paused' keyword value to 10434 the "printer-state-reasons" attribute for use with the Pause- 10435 Printer operation. 10436 55. Section 4.4.12 - replaced the duplicate 'marker-supply-low' 10437 keyword with the missing 'toner-empty' keyword for the "printer- 10438 state-reasons" attribute. (This correction was also made before 10439 RFC 2566 was published). 10440 56. Section 4.4.12 - clarified 'spool-area-full' "printer-state- 10441 reasons" to include non-spooling printers to indicate when it can 10442 and cannot accept another job. 10443 57. Section 4.4.15 - added the enum values to the "operations- 10444 supported" attribute for the new operations. Clarified that the 10445 values of this attribute are encoded as any enum, namely 32-bit 10446 values. 10447 58. Section 4.4.30 - clarified that the dateTime value of 10448 "printer-current-time" is on a "best efforts basis". If a proper 10449 date-time cannot be obtained, the implementation returns the 'no- 10450 value' out-of-band value. Also clarified that the time zone NEED 10451 NOT be the time zone that the people near the device use and that 10452 the client SHOULD display the dateTime attributes in the user's 10453 local time. 10454 59. Sections 4.4.36 and 4.4.37 - added the OPTIONAL "pages-per- 10455 minute" and "pages-per-minute-color" Printer Description 10456 attributes. 10457 60. Section 5.1 - clarified that the client conformance 10458 requirements apply to clients controlled by an end user and clients 10459 in servers. 10460 61. Section 5.1 - clarified that any response MAY contain 10461 additional attribute groups, attributes, attribute syntaxes, or 10462 attribute values. 10463 62. Section 5.1 - clarified that a client SHOULD do its best to 10464 prevent a channel from being closed by a lower layer when the 10465 channel is flow controlled off by the IPP Printer. 10466 63. Section 5.2 - clarified that the IPP object requirements apply 10467 to objects embedded in devices or that are parts of servers. 10468 64. Section 5.2.2 - clarified that IPP objects MAY return 10469 operation responses that contain attribute groups, attribute names, 10471 Expires November 22, 2000 10472 attribute syntaxes, attribute values, and status codes that are 10473 extensions to this standard. 10474 65. Section 6 - changed the terminology of "private extensions" to 10475 "vendor extensions" and indicated that they are registered with 10476 IANA along with IETF standards track extensions. 10477 66. Section 6.7 - inserted this section on registering out-of-band 10478 attribute values with IANA as extensions. 10479 67. Section 8.3 - clarified the use of URIs for each Client 10480 Authentication mechanism. 10481 68. Section 8.5 - added the security discussion around the new 10482 operator/administrator operations. 10483 69. Section 13.1.4.16 - added client-error-compression-not- 10484 supported (0x040F) 10485 70. Section 13.1.4.17 - added client-error-compression-error 10486 (0x0410) 10487 71. Section 13.1.4.18 - added client-error-document-format-error 10488 (0x0411) 10489 72. Section 13.1.4.19 - added client-error-document-access-error 10490 (0x0412) 10491 73. Section 13.1.5.10 - added server-error-multiple-document-jobs- 10492 not-supported (0x0509) 10493 74. Section 14 - added 'a-white', 'b-white', 'c-white', 'd-white', 10494 and 'e-white' and clarified that the existing 'a', 'b', 'c', 'd', 10495 and 'e' values are size values. Added American, Japanese, and 10496 European Engineering sizes, filled out -transparent and - 10497 translucent media names and drawings for the synchro cut sizes. 10498 75. Section 16 - softened the RECOMMENDATION for IPP Printer 10499 attributes in a Directory schema so that they can have equivalents. 10500 76. Section 16 - added the OPTIONAL "pages-per-minute" and "pages- 10501 per-minute-color" Printer attributes to the Directory schema. 10502 77. Section 16 - added OPTIONAL "multiple-document-jobs-supported" 10503 to the Directory schema. 10504 78. Section 16 - added RECOMMENDED "uri-authentication-supported", 10505 "ipp-versions-supported", and "compression-supported" to the 10506 Directory schema. 10508 The following changes in semantics and/or conformance have been 10509 incorporated into this document: 10511 1. Section 3.1.6.3 - allowed a Printer to localize the "detailed- 10512 status-message" operation response attribute, but indicated that 10513 such localization might obscure the technical meaning of such 10514 messages. 10515 2. Section 3.1.8, 5.2.4, and 13.1.5.4 - Clients and IPP objects MUST 10516 support version 1.1 conformance requirements. It is 10517 recommended that they interoperate with 1.0. Also clarified 10518 that IPP Printers MUST accept '1.1' requests. It is 10519 recommended that they also accept '1.x' requests. 10520 3. Section 3.2.1.1 and section 4.4.32 - changed the "compression" 10521 operation and the "compression-supported" Printer Description 10522 attribute from OPTIONAL to REQUIRED. 10523 4. Sections 3.2.1.2 and 4.3.8 - changed "job-state-reasons" from 10524 RECOMMENDED to REQUIRED, so that "job-state-reasons" MUST be 10525 returned in create operation responses. 10527 Expires November 22, 2000 10529 5. Sections 3.2.4, 3.3.1, 4.4.16, and 16 - changed Create-Job/Send- 10530 Document so that they MAY be implemented while only supporting 10531 one document jobs. Added the "multiple-document-jobs-supported" 10532 boolean Printer Description attribute to indicate whether 10533 Create-Job/Send-Document support multiple document jobs or not. 10534 Added to the Directory schema. 10535 6. Section 4.1.9 - deleted 'text/plain; charset=iso-10646-ucs-2', 10536 since binary is not legal with the 'text' type. 10537 7. Section 4.1.9.1 - added the RECOMMENDATION that a Printer indicate 10538 by printing on the job's job-start-sheet that auto-sensing has 10539 occurred and what document format was auto-sensed. 10540 8. Section 4.2.4 - indicated that the "multiple-document-handling" 10541 Job Template attribute MUST be supported with at least one value 10542 if the Printer supports multiple documents per job 10543 9. Section 4.3.7.2 - indicated that the 'job-restartable' job state 10544 reason SHOULD be supported if the Restart-Job operation is 10545 supported. 10546 10. Section 4.3.8 - changed "job-state-reasons" from RECOMMENDED to 10547 REQUIRED. 10548 11. Section 4.3.8 - clarified the conformance of the values of the 10549 "job-state-reasons" attribute by copying conformance 10550 requirements from other sections of the document so that it is 10551 clear from reading the definition of "job-state-reasons" which 10552 values MUST or SHOULD be supported. The 'none', 'unsupported- 10553 compression', and 'unsupported-document-format' values MUST be 10554 supported. The ''job-hold-until-specified' SHOULD be specified 10555 if the "job-hold-until" Job Template is supported. The 10556 following values SHOULD be supported: 'job-canceled-by-user', 10557 'aborted-by-system', and 'job-completed-successfully'. The 10558 'job-canceled-by-operator' SHOULD be supported if the 10559 implementation permits canceling by other than the job owner. 10560 The 'job-canceled-at-device' SHOULD be supported if the device 10561 supports canceling jobs at the console. The 'job-completed- 10562 with-warnings' SHOULD be supported, if the implementation 10563 detects warnings. The 'job-completed-with-errors' SHOULD be 10564 supported if the implementation detects errors. The 'job- 10565 restartable' SHOULD be supported if the Restart-Job operation is 10566 supported. 10567 12. Section 4.3.10 - allowed a Printer to localize the "job-detailed- 10568 status-message" Job Description attribute, but indicated that 10569 such localization might obscure the technical meaning of such 10570 messages. 10571 13. Section 4.3.14 - changed the "time-at-creation", "time-at- 10572 processing", and "time-at-completed" Event Time Job Description 10573 attributes from OPTIONAL to REQUIRED. 10574 14. Section 4.3.14.4 - added the REQUIRED "job-printer-up-time 10575 (integer(1:MAX))" Job Description attribute as an alias for 10576 "printer-up-time" to reduce number of operations to get job 10577 times. 10578 15. Section 4.4.2 - added the REQUIRED "uri-authentication-supported 10579 (1setOf type2 keyword)" Printer Description attribute to 10580 describe the Client Authentication used by each Printer URI. 10581 16. Section 4.4.12 - changed "printer-state-reasons" Printer 10582 Description attribute from OPTIONAL to REQUIRED. 10584 Expires November 22, 2000 10586 17. Section 4.4.12 - changed 'paused' value of "printer-state- 10587 reasons" to MUST if Pause-Printer operation is supported. 10588 18. Section 4.4.14 - added the REQUIRED "ipp-versions-supported 10589 (1setOf keyword)" Printer Description attribute, since IPP/1.1 10590 Printers do not have to support version '1.0' conformance 10591 requirements. Section 4.4.16 - added the "multiple-document- 10592 jobs-supported (boolean)" Printer Description attribute so that 10593 a client can tell whether a Printer that supports Create- 10594 Job/Send-Document supports multiple document jobs or not. This 10595 attribute is REQUIRED if the Create-Job operation is supported. 10596 19. Section 4.4.24 - changed the "queued-job-count" Printer 10597 Description attribute from RECOMMENDED to REQUIRED. 10598 20. Section 4.4.32 - changed "compression-supported (1setOf type3 10599 keyword)" Printer Description attribute from OPTIONAL to 10600 REQUIRED. 10601 21. Section 5.1 - changed the client security requirements from 10602 RECOMMENDED non-standards track SSL3 to MUST support Client 10603 Authentication as defined in the IPP/1.1 Encoding and Transport 10604 document [IPP-PRO]. A client SHOULD support Operation Privacy 10605 and Server Authentication as defined in the IPP/1.1 Encoding and 10606 Transport document [IPP-PRO]. 10607 22. Section 5.2.7 - changed the IPP object security requirements from 10608 OPTIONAL non-standards track SSL3 to SHOULD contain support for 10609 Client Authentication as defined in the IPP/1.1 Encoding and 10610 Transport document [IPP-PRO]. A Printer implementation MAY 10611 allow an administrator to configure the Printer so that all, 10612 some, or none of the users are authenticated. An IPP Printer 10613 implementation SHOULD contain support for Operation Privacy and 10614 Server Authentication as defined in the IPP/1.1 Encoding and 10615 Transport document [IPP-PRO]. A Printer implementation MAY 10616 allow an administrator to configure the degree of support for 10617 Operation Privacy and Server Authentication. Security MUST NOT 10618 be compromised when the client supplies a lower version-number 10619 in a request. 10621 See also the "IPP/1.1 Encoding and Transport" [IPP-PRO] document for 10622 differences between IPP/1.0 [RFC2565] and IPP/1.1 [IPP-PRO]. 10624 18. Full Copyright Statement 10626 Copyright (C) The Internet Society (2000). All Rights Reserved. 10628 This document and translations of it may be copied and furnished to 10629 others, and derivative works that comment on or otherwise explain it or 10630 assist in its implementation may be prepared, copied, published and 10631 distributed, in whole or in part, without restriction of any kind, 10632 provided that the above copyright notice and this paragraph are included 10633 on all such copies and derivative works. However, this document itself 10634 may not be modified in any way, such as by removing the copyright notice 10635 or references to the Internet Society or other Internet organizations, 10636 except as needed for the purpose of developing Internet standards in 10637 which case the procedures for copyrights defined in the Internet 10639 Expires November 22, 2000 10640 Standards process must be followed, or as required to translate it into 10641 languages other than English. 10643 The limited permissions granted above are perpetual and will not be 10644 revoked by the Internet Society or its successors or assigns. 10646 This document and the information contained herein is provided on an "AS 10647 IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK 10648 FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT 10649 LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT 10650 INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR 10651 FITNESS FOR A PARTICULAR PURPOSE. 10653 Expires November 22, 2000