idnits 2.17.1 draft-ietf-ipp-model-v11-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** Missing expiration date. The document expiration date should appear on the first and last page. ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories -- 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 174 longer pages, the longest (page 131) being 84 lines == It seems as if not all pages are separated by form feeds - found 0 form feeds but 174 pages 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], [RFC2569], [IPP-PRO], [IPP-IIG], [RFC2567]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 7 instances of lines with non-RFC2606-compliant FQDNs in the document. == There are 77 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 703 has weird spacing: '...any indicate...' == Line 942 has weird spacing: '... object which...' == Line 1543 has weird spacing: '...charset clien...' == Line 1629 has weird spacing: '...client to ide...' == (15 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: This term is not included in RFC 2119. The verb "NEED NOT" indicates an action that the subject of the sentence does not have to implement in order to claim conformance to the standard. The verb "NEED NOT" is used instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (May 10, 1998) is 9480 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'TLS' is mentioned on line 811, but not defined == Missing Reference: 'IPP-MOD' is mentioned on line 6735, but not defined -- Looks like a reference, but probably isn't: '52' on line 3981 -- Looks like a reference, but probably isn't: '56' on line 3981 == Unused Reference: 'BCP-11' is defined on line 7402, but no explicit reference was found in the text == Unused Reference: 'ISO10646-1' is defined on line 7463, but no explicit reference was found in the text == Unused Reference: 'PWG' is defined on line 7488, but no explicit reference was found in the text == Unused Reference: 'RFC2068' is defined on line 7536, but no explicit reference was found in the text == Unused Reference: 'RFC2069' is defined on line 7540, but no explicit reference was found in the text == Unused Reference: 'RFC2277' is defined on line 7557, 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' -- No information found for draft-ietf-ipp-implementers-guide-v11- - is the name correct? -- Possible downref: Normative reference to a draft: ref. 'IPP-IIG' ** Downref: Normative reference to an Experimental draft: draft-ietf-ipp-lpd-ipp-map (ref. 'RFC2569') ** Obsolete normative reference: RFC 2566 (Obsoleted by RFC 2911) == Outdated reference: A later version (-06) exists of draft-ietf-ipp-protocol-v11-01 ** Obsolete normative reference: RFC 2565 (Obsoleted by RFC 2910) ** Downref: Normative reference to an Experimental draft: draft-ietf-ipp-rat (ref. 'RFC2568') ** Downref: Normative reference to an Experimental draft: draft-ietf-ipp-req (ref. 'RFC2567') -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO10646-1' -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO8859-1' -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO10175' -- Possible downref: Non-RFC (?) normative reference: ref. 'LDPA' -- Possible downref: Non-RFC (?) normative reference: ref. 'PSIS' -- Possible downref: Non-RFC (?) normative reference: ref. 'PWG' ** Downref: Normative reference to an Informational RFC: RFC 1179 ** Obsolete normative reference: RFC 1759 (Obsoleted by RFC 3805) ** Obsolete normative reference: RFC 1766 (Obsoleted by RFC 3066, RFC 3282) ** Obsolete normative reference: RFC 1903 (Obsoleted by RFC 2579) ** Downref: Normative reference to an Informational RFC: RFC 1952 ** Obsolete normative reference: RFC 2048 (Obsoleted by RFC 4288, RFC 4289) ** Obsolete normative reference: RFC 2068 (Obsoleted by RFC 2616) ** Obsolete normative reference: RFC 2069 (Obsoleted by RFC 2617) ** 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) -- Possible downref: Non-RFC (?) normative reference: ref. 'SSL' -- Possible downref: Non-RFC (?) normative reference: ref. 'SWP' Summary: 26 errors (**), 0 flaws (~~), 24 warnings (==), 20 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 INTERNET-DRAFT 2 draft-ietf-ipp-model-v11-02.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 10, 1998 15 Internet Printing Protocol/1.1: Model and Semantics 17 Copyright (C) The Internet Society (1999). 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 10, 1999 55 The full set of IPP documents includes: 57 Design Goals for an Internet Printing Protocol [RFC2567] 58 Rationale for the Structure and Model and Protocol for the Internet 59 Printing Protocol [RFC2568] 60 Internet Printing Protocol/1.1: Model and Semantics (this document) 61 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 62 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 63 Mapping between LPD and IPP Protocols [RFC2569] 65 The "Design Goals for an Internet Printing Protocol" document takes a 66 broad look at distributed printing functionality, and it enumerates 67 real-life scenarios that help to clarify the features that need to be 68 included in a printing protocol for the Internet. It identifies 69 requirements for three types of users: end users, operators, and 70 administrators. It calls out a subset of end user requirements that are 71 satisfied in IPP/1.0. Operator and administrator requirements are out 72 of scope for version 1.0. A few OPTIONAL operator operations have been 73 added to IPP/1.1. 75 The "Rationale for the Structure and Model and Protocol for the Internet 76 Printing Protocol" document describes IPP from a high level view, 77 defines a roadmap for the various documents that form the suite of IPP 78 specifications, and gives background and rationale for the IETF working 79 group's major decisions. 81 The "Internet Printing Protocol/1.1: Encoding and Transport" document is 82 a formal mapping of the abstract operations and attributes defined in 83 the model document onto HTTP/1.1. It defines the encoding rules for a 84 new Internet MIME media type called "application/ipp". This document 85 also defines the rules for transporting over HTTP a message body whose 86 Content-Type is "application/ipp". This document defines a new scheme 87 named 'ipp' for identifying IPP printers and jobs. Finally, this 88 document defines interoperability rules for supporting IPP/1.0 clients. 89 Issue 33 91 The "Internet Printing Protocol/1.1: Implementer's Guide" document gives 92 insight and advice to implementers of IPP clients and IPP objects. It 93 is intended to help them understand IPP/1.1 and some of the 94 considerations that may assist them in the design of their client and/or 95 IPP object implementations. For example, a typical order of processing 96 requests is given, including error checking. Motivation for some of the 97 specification decisions is also included. 99 The "Mapping between LPD and IPP Protocols" document gives some advice 100 to implementers of gateways between IPP and LPD (Line Printer Daemon) 101 implementations. 103 Expires November 10, 1999 104 Table of Contents 106 1. Introduction.....................................................9 107 1.1 Simplified Printing Model.....................................10 109 2. IPP Objects.....................................................12 110 2.1 Printer Object................................................13 111 2.2 Job Object....................................................15 112 2.3 Object Relationships..........................................16 113 2.4 Object Identity...............................................17 115 3. IPP Operations..................................................19 116 3.1 Common Semantics..............................................20 117 3.1.1 Required Parameters........................................20 118 3.1.2 Operation IDs and Request IDs..............................21 119 3.1.3 Attributes.................................................21 120 3.1.4 Character Set and Natural Language Operation Attributes....23 121 3.1.4.1 Request Operation Attributes..........................23 122 3.1.4.2 Response Operation Attributes.........................27 123 3.1.5 Operation Targets..........................................28 124 3.1.6 Operation Status Codes and Messages........................29 125 3.1.7 Unsupported Attributes.....................................30 126 3.1.8 Versions...................................................31 127 3.1.9 Job Creation Operations....................................33 128 3.2 Printer Operations............................................35 129 3.2.1 Print-Job Operation........................................35 130 3.2.1.1 Print-Job Request.....................................35 131 3.2.1.2 Print-Job Response....................................39 132 3.2.2 Print-URI Operation........................................41 133 3.2.3 Validate-Job Operation.....................................42 134 3.2.4 Create-Job Operation.......................................42 135 3.2.5 Get-Printer-Attributes Operation...........................43 136 3.2.5.1 Get-Printer-Attributes Request........................43 137 3.2.5.2 Get-Printer-Attributes Response.......................45 138 3.2.6 Get-Jobs Operation.........................................46 139 3.2.6.1 Get-Jobs Request......................................46 140 3.2.6.2 Get-Jobs Response.....................................48 141 3.2.7 Pause-Printer Operation....................................49 142 3.2.7.1 Pause-Printer Request.................................50 143 3.2.7.2 Pause-Printer Response................................51 144 3.2.8 Resume-Printer Operation...................................51 145 3.2.9 Purge-Jobs Operation.......................................52 146 3.3 Job Operations................................................52 147 3.3.1 Send-Document Operation....................................53 148 3.3.1.1 Send-Document Request.................................54 149 3.3.1.2 Send-Document Response................................55 150 3.3.2 Send-URI Operation.........................................56 151 3.3.3 Cancel-Job Operation.......................................56 152 3.3.3.1 Cancel-Job Request....................................57 153 3.3.3.2 Cancel-Job Response...................................57 154 3.3.4 Get-Job-Attributes Operation...............................58 155 3.3.4.1 Get-Job-Attributes Request............................59 156 3.3.4.2 Get-Job-Attributes Response...........................59 157 3.3.5 Hold-Job Operation.........................................60 159 Expires November 10, 1999 160 3.3.5.1 Hold-Job Request......................................61 161 3.3.5.2 Hold-Job Response.....................................62 162 3.3.6 Release-Job Operation......................................62 163 3.3.7 Restart-Job Operation......................................63 164 3.3.7.1 Restart-Job Request...................................64 165 3.3.7.2 Restart-Job Response..................................65 167 4. Object Attributes...............................................65 168 4.1 Attribute Syntaxes............................................66 169 4.1.1 'text'.....................................................67 170 4.1.1.1 'textWithoutLanguage'.................................67 171 4.1.1.2 'textWithLanguage'....................................68 172 4.1.2 'name'.....................................................68 173 4.1.2.1 'nameWithoutLanguage'.................................69 174 4.1.2.2 'nameWithLanguage'....................................69 175 4.1.2.3 Matching 'name' attribute values......................69 176 4.1.3 'keyword'..................................................70 177 4.1.4 'enum'.....................................................71 178 4.1.5 'uri'......................................................71 179 4.1.6 'uriScheme'................................................71 180 4.1.7 'charset'..................................................72 181 4.1.8 'naturalLanguage'..........................................72 182 4.1.9 'mimeMediaType'............................................73 183 4.1.9.1 Application/octet-stream -- Auto-Sensing the document 184 format 73 185 4.1.10................................................'octetString'74 186 4.1.11....................................................'boolean'74 187 4.1.12....................................................'integer'75 188 4.1.13.............................................'rangeOfInteger'75 189 4.1.14...................................................'dateTime'75 190 4.1.15.................................................'resolution'75 191 4.1.16..................................................'1setOf X'75 192 4.2 Job Template Attributes.......................................76 193 4.2.1 job-priority (integer(1:100))..............................79 194 4.2.2 job-hold-until (type3 keyword | name (MAX))................80 195 4.2.3 job-sheets (type3 keyword | name(MAX)).....................80 196 4.2.4 multiple-document-handling (type2 keyword).................81 197 4.2.5 copies (integer(1:MAX))....................................82 198 4.2.6 finishings (1setOf type2 enum).............................82 199 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))................84 200 4.2.8 sides (type2 keyword)......................................85 201 4.2.9 number-up (integer(1:MAX)).................................86 202 4.2.10...........................orientation-requested (type2 enum)86 203 4.2.11............................media (type3 keyword | name(MAX))87 204 4.2.12..............................printer-resolution (resolution)88 205 4.2.13...................................print-quality (type2 enum)88 206 4.3 Job Description Attributes....................................88 207 4.3.1 job-uri (uri)..............................................90 208 4.3.2 job-id (integer(1:MAX))....................................90 209 4.3.3 job-printer-uri (uri)......................................90 210 4.3.4 job-more-info (uri)........................................90 211 4.3.5 job-name (name(MAX)).......................................91 212 4.3.6 job-originating-user-name (name(MAX))......................91 213 4.3.7 job-state (type1 enum).....................................91 214 4.3.7.1 Partitioning of Job States............................94 216 Expires November 10, 1999 218 4.3.8 job-state-reasons (1setOf type2 keyword)..................95 219 4.3.9 job-state-message (text(MAX))..............................98 220 4.3.10.........................number-of-documents (integer(0:MAX))98 221 4.3.11...........................output-device-assigned (name(127))98 222 4.3.12..............Event Time Job Description Attributes Issue 1799 223 4.3.12.1 time-at-creation (integer(MIN:MAX) | dateTime)........99 224 4.3.12.2 time-at-processing (integer(MIN:MAX) | dateTime)......99 225 4.3.12.3 time-at-completed (integer(MIN:MAX) | dateTime)......100 226 4.3.12.4 job-printer-up-time (integer(1:MAX)) Issue 17........100 227 4.3.13..................number-of-intervening-jobs (integer(0:MAX))100 228 4.3.14........................job-message-from-operator (text(127))100 229 4.3.15..........................................Job Size Attributes100 230 4.3.15.1 job-k-octets (integer(0:MAX))........................101 231 4.3.15.2 job-impressions (integer(0:MAX)).....................101 232 4.3.15.3 job-media-sheets (integer(0:MAX))....................101 233 4.3.16......................................Job Progress Attributes102 234 4.3.16.1 job-k-octets-processed (integer(0:MAX))..............102 235 4.3.16.2 job-impressions-completed (integer(0:MAX))...........102 236 4.3.16.3 job-media-sheets-completed (integer(0:MAX))..........102 237 4.3.17.................................attributes-charset (charset)102 238 4.3.18................attributes-natural-language (naturalLanguage)103 239 4.4 Printer Description Attributes...............................103 240 4.4.1 printer-uri-supported (1setOf uri)........................105 241 4.4.2 uri-authentication-supported (1setOf type2 keyword) Issue 2105 242 4.4.3 uri-security-supported (1setOf type2 keyword).............106 243 4.4.4 printer-name (name(127))..................................108 244 4.4.5 printer-location (text(127))..............................108 245 4.4.6 printer-info (text(127))..................................108 246 4.4.7 printer-more-info (uri)...................................108 247 4.4.8 printer-driver-installer (uri)............................108 248 4.4.9 printer-make-and-model (text(127))........................108 249 4.4.10.........................printer-more-info-manufacturer (uri)108 250 4.4.11...................................printer-state (type1 enum)109 251 4.4.12.................printer-state-reasons (1setOf type2 keyword)110 252 4.4.13............................printer-state-message (text(MAX))113 253 4.4.14......ipp-versions-supported (1setOf type2 keyword) Issue 36113 254 4.4.15.....................operations-supported (1setOf type2 enum)113 255 4.4.16.........multiple-document-jobs-supported (boolean) Issue 34114 256 4.4.17.................................charset-configured (charset)114 257 4.4.18...........................charset-supported (1setOf charset)114 258 4.4.19................natural-language-configured (naturalLanguage)115 259 4.4.20generated-natural-language-supported (1setOf naturalLanguage)115 260 4.4.21......................document-format-default (mimeMediaType)115 261 4.4.22.............document-format-supported (1setOf mimeMediaType)116 262 4.4.23..........................printer-is-accepting-jobs (boolean)116 263 4.4.24............................queued-job-count (integer(0:MAX))116 264 4.4.25....................printer-message-from-operator (text(127))116 265 4.4.26....................................color-supported (boolean)116 266 4.4.27...........reference-uri-schemes-supported (1setOf uriScheme)116 267 4.4.28.......................pdl-override-supported (type2 keyword)117 268 4.4.29.............................printer-up-time (integer(1:MAX))117 269 4.4.30..............................printer-current-time (dateTime)118 270 4.4.31.................multiple-operation-time-out (integer(1:MAX))118 271 4.4.32.................compression-supported (1setOf type3 keyword)118 272 4.4.33...............job-k-octets-supported (rangeOfInteger(0:MAX))119 274 Expires November 10, 1999 275 4.4.34............job-impressions-supported (rangeOfInteger(0:MAX))119 276 4.4.35...........job-media-sheets-supported (rangeOfInteger(0:MAX))119 277 4.4.36............................pages-per-minute (integer(0:MAX))119 278 4.4.37......................pages-per-minute-color (integer(0:MAX))119 280 5. Conformance....................................................120 281 5.1 Client Conformance Requirements..............................120 282 5.2 IPP Object Conformance Requirements..........................121 283 5.2.1 Objects...................................................122 284 5.2.2 Operations................................................122 285 5.2.3 IPP Object Attributes.....................................123 286 5.2.4 Versions..................................................123 287 5.2.5 Extensions................................................123 288 5.2.6 Attribute Syntaxes........................................123 289 5.2.7 Security Issue 32.........................................123 290 5.3 Charset and Natural Language Requirements....................124 292 6. IANA Considerations (registered and private extensions)........124 293 6.1 Typed 'keyword' and 'enum' Extensions........................125 294 6.2 Attribute Extensibility......................................126 295 6.3 Attribute Syntax Extensibility...............................127 296 6.4 Operation Extensibility......................................127 297 6.5 Attribute Groups.............................................128 298 6.6 Status Code Extensibility....................................128 299 6.7 Registration of MIME types/sub-types for document-formats....129 300 6.8 Registration of charsets for use in 'charset' attribute values129 302 7. Internationalization Considerations............................129 304 8. Security Considerations........................................132 305 8.1 Security Scenarios...........................................133 306 8.1.1 Client and Server in the Same Security Domain.............133 307 8.1.2 Client and Server in Different Security Domains...........133 308 8.1.3 Print by Reference........................................133 309 8.2 URIs in Operation, Job, and Printer attributes...............134 310 8.3 URIs for each authentication mechanisms......................134 311 8.4 Restricted Queries...........................................135 312 8.5 Operations performed by operators and system administrators..135 313 8.6 Queries on jobs submitted using non-IPP protocols............135 315 9. References.....................................................136 317 10.Author's Address..............................................139 319 11.Formats for IPP Registration Proposals........................142 320 11.1.....................Type2 keyword attribute values registration 321 142 322 11.2.....................Type3 keyword attribute values registration 323 142 324 11.3........................Type2 enum attribute values registration 325 142 326 11.4........................Type3 enum attribute values registration 327 143 328 11.5..........................................Attribute registration 329 143 331 Expires November 10, 1999 333 11.6...................................Attribute Syntax registration 334 143 335 11.7..........................................Operation registration 336 144 337 11.8....................................Attribute Group registration 338 144 339 11.9........................................Status code registration 340 144 342 12.APPENDIX A: Terminology.......................................145 343 12.1.........................................Conformance Terminology 344 145 345 12.1.1.....................................................NEED NOT145 346 12.2...............................................Model Terminology 347 145 348 12.2.1......................................................Keyword145 349 12.2.2...................................................Attributes145 350 12.2.2.1 Attribute Name.......................................146 351 12.2.2.2 Attribute Group Name.................................146 352 12.2.2.3 Attribute Value......................................146 353 12.2.2.4 Attribute Syntax.....................................146 354 12.2.3.....................................................Supports146 355 12.2.4............................................print-stream page148 356 12.2.5...................................................impression148 358 13.APPENDIX B: Status Codes and Suggested Status Code Messages..148 359 13.1....................................................Status Codes 360 149 361 13.1.1................................................Informational149 362 13.1.2......................................Successful Status Codes150 363 13.1.2.1 successful-ok (0x0000)...............................150 364 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)150 365 13.1.2.3 successful-ok-conflicting-attributes (0x0002)........150 366 13.1.3.....................................Redirection Status Codes150 367 13.1.4....................................Client Error Status Codes151 368 13.1.4.1 client-error-bad-request (0x0400)....................151 369 13.1.4.2 client-error-forbidden (0x0401)......................151 370 13.1.4.3 client-error-not-authenticated (0x0402)..............151 371 13.1.4.4 client-error-not-authorized (0x0403).................151 372 13.1.4.5 client-error-not-possible (0x0404)...................151 373 13.1.4.6 client-error-timeout (0x0405)........................152 374 13.1.4.7 client-error-not-found (0x0406)......................152 375 13.1.4.8 client-error-gone (0x0407)...........................152 376 13.1.4.9 client-error-request-entity-too-large (0x0408).......152 377 13.1.4.10client-error-request-value-too-long (0x0409).........153 378 13.1.4.11client-error-document-format-not-supported (0x040A)..153 379 13.1.4.12client-error-attributes-or-values-not-supported (0x040B)153 380 13.1.4.13client-error-uri-scheme-not-supported (0x040C).......154 381 13.1.4.14client-error-charset-not-supported (0x040D)..........154 382 13.1.4.15client-error-conflicting-attributes (0x040E).........154 383 13.1.4.16client-error-compression-not-supported (0x040F) Issue 6154 384 13.1.4.17client-error-compression-error (0x0410) Issue 6.....154 385 13.1.4.18client-error-document-format-error (0x0411) Issue 28155 386 13.1.4.19client-error-document-access-error (0x0412) Issue 35155 387 13.1.5....................................Server Error Status Codes155 389 Expires November 10, 1999 390 13.1.5.1 server-error-internal-error (0x0500).................155 391 13.1.5.2 server-error-operation-not-supported (0x0501)........155 392 13.1.5.3 server-error-service-unavailable (0x0502)............155 393 13.1.5.4 server-error-version-not-supported (0x0503)..........156 394 13.1.5.5 server-error-device-error (0x0504)...................156 395 13.1.5.6 server-error-temporary-error (0x0505)................156 396 13.1.5.7 server-error-not-accepting-jobs (0x0506).............157 397 13.1.5.8 server-error-busy (0x0507)...........................157 398 13.1.5.9 server-error-job-canceled (0x0508)...................157 399 13.1.5.10server-error-multiple-document-jobs-not-supported (0x0509) 400 Issue 34 157 401 13.2.................................Status Codes for IPP Operations 402 158 404 14.APPENDIX C: "media" keyword values...........................160 406 15.APPENDIX D: Processing IPP Attributes.........................164 407 15.1........................................................Fidelity 408 164 409 15.2........................Page Description Language (PDL) Override 410 165 411 15.3.......Using Job Template Attributes During Document Processing. 412 167 414 16.APPENDIX E: Generic Directory Schema..........................168 416 17.APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and 417 Semantics" Specifications.........................................170 419 18.Full Copyright Statement......................................174 421 Expires November 10, 1999 422 1. Introduction 424 The Internet Printing Protocol (IPP) is an application level protocol 425 that can be used for distributed printing using Internet tools and 426 technologies. IPP version 1.1 (IPP/1.1) focuses only on end user 427 functionality. This document is just one of a suite of documents that 428 fully define IPP. The full set of IPP documents includes: 430 Design Goals for an Internet Printing Protocol [RFC2567] 431 Rationale for the Structure and Model and Protocol for the Internet 432 Printing Protocol [RFC2568] 433 Internet Printing Protocol/1.1: Model and Semantics (this document) 434 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 435 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 436 Mapping between LPD and IPP Protocols [RFC2569] 438 Anyone reading these documents for the first time is strongly encouraged 439 to read the IPP documents in the above order. 441 This document is laid out as follows: 443 - The rest of Section 1 is an introduction to the IPP simplified 444 model for distributed printing. 445 - Section 2 introduces the object types covered in the model with 446 their basic behaviors, attributes, and interactions. 447 - Section 3 defines the operations included in IPP/1.1. IPP 448 operations are synchronous, therefore, for each operation, there is 449 a both request and a response. 450 - Section 4 defines the attributes (and their syntaxes) that are used 451 in the model. 452 - Sections 5 - 6 summarizes the implementation conformance 453 requirements for objects that support the protocol and IANA 454 considerations, respectively. 455 - Sections 7 - 12 cover the Internationalization and Security 456 considerations as well as References, Intellectual Property Notice, 457 Copyright Notice, Author contact information, and Formats for 458 Registration Proposals. 459 - Sections 13 - 15 are appendices that cover Terminology, Status 460 Codes and Messages, and "media" keyword values. 462 Note: This document uses terms such as "attributes", 463 "keywords", and "support". These terms have special meaning 464 and are defined in the model terminology section 12.2. 465 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, 466 SHOULD NOT, MAY, NEED NOT, and OPTIONAL, have special meaning 467 relating to conformance. These terms are defined in section 468 12.1 on conformance terminology, most of which is taken from 469 RFC 2119 [RFC2119]. 471 - Section 16 is an appendix that helps to clarify the effects of 472 interactions between related attributes and their values. 473 - Section 17 is an appendix that enumerates the subset of Printer 474 attributes that form a generic directory schema. These attributes 475 are useful when registering a Printer so that a client can find the 476 Printer not just by name, but by filtered searches as well. 478 Expires November 10, 1999 480 - Section 18 is an appendix summarizing the additions and changes 481 from the IPP/1.0 "Model and Semantics" specification [RFC2566] to 482 make this IPP/1.1 document. 484 1.1 Simplified Printing Model 486 In order to achieve its goal of realizing a workable printing protocol 487 for the Internet, the Internet Printing Protocol (IPP) is based on a 488 simplified printing model that abstracts the many components of real 489 world printing solutions. The Internet is a distributed computing 490 environment where requesters of print services (clients, applications, 491 printer drivers, etc.) cooperate and interact with print service 492 providers. This model and semantics document describes a simple, 493 abstract model for IPP even though the underlying configurations may be 494 complex "n-tier" client/server systems. An important simplifying step 495 in the IPP model is to expose only the key objects and interfaces 496 required for printing. The model described in this model document does 497 not include features, interfaces, and relationships that are beyond the 498 scope of the first version of IPP (IPP/1.1). IPP/1.1 incorporates many 499 of the relevant ideas and lessons learned from other specification and 500 development efforts [HTPP] [ISO10175] [LDPA] [P1387.4] [PSIS] [RFC1179] 501 [SWP]. IPP is heavily influenced by the printing model introduced in 502 the Document Printing Application (DPA) [ISO10175] standard. Although 503 DPA specifies both end user and administrative features, IPP version 1.1 504 (IPP/1.1) focuses primarily on end user functionality with a few 505 additional OPTIONAL operator operations. 507 The IPP/1.1 model encapsulates the important components of distributed 508 printing into two object types: 510 - Printer (Section 2.1) 511 - Job (Section 2.2) 513 Each object type has an associated set of operations (see section 3) and 514 attributes (see section 3.3.5). 516 It is important, however, to understand that in real system 517 implementations (which lie underneath the abstracted IPP/1.1 model), 518 there are other components of a print service which are not explicitly 519 defined in the IPP/1.1 model. The following figure illustrates where 520 IPP/1.1 fits with respect to these other components. 522 Expires November 10, 1999 523 +--------------+ 524 | Application | 525 o +. . . . . . . | 526 \|/ | Spooler | 527 / \ +. . . . . . . | +---------+ 528 End-User | Print Driver |---| File | 529 +-----------+ +-----+ +------+-------+ +----+----+ 530 | Browser | | GUI | | | 531 +-----+-----+ +--+--+ | | 532 | | | | 533 | +---+------------+---+ | 534 N D S | | IPP Client |------------+ 535 O I E | +---------+----------+ 536 T R C | | 537 I E U | 538 F C R -------------- Transport ------------------ 539 I T I 540 C O T | --+ 541 A R Y +--------+--------+ | 542 T Y | IPP Server | | 543 I +--------+--------+ | 544 O | | 545 N +-----------------+ | IPP Printer 546 | Print Service | | 547 +-----------------+ | 548 | --+ 549 +-----------------+ 550 | Output Device(s)| 551 +-----------------+ 553 An IPP Printer object encapsulates the functions normally associated 554 with physical output devices along with the spooling, scheduling and 555 multiple device management functions often associated with a print 556 server. Printer objects are optionally registered as entries in a 557 directory where end users find and select them based on some sort of 558 filtered and context based searching mechanism (see section 16). The 559 directory is used to store relatively static information about the 560 Printer, allowing end users to search for and find Printers that match 561 their search criteria, for example: name, context, printer capabilities, 562 etc. The more dynamic information, such as state, currently loaded and 563 ready media, number of jobs at the Printer, errors, warnings, and so 564 forth, is directly associated with the Printer object itself rather than 565 with the entry in the directory which only represents the Printer 566 object. 568 IPP clients implement the IPP protocol on the client side and give end 569 users (or programs running on behalf of end users) the ability to query 570 Printer objects and submit and manage print jobs. An IPP server is just 571 that part of the Printer object that implements the server-side 572 protocol. The rest of the Printer object implements (or gateways into) 573 the application semantics of the print service itself. The Printer 574 objects may be embedded in an output device or may be implemented on a 575 host on the network that communicates with an output device. 577 Expires November 10, 1999 578 When a job is submitted to the Printer object and the Printer object 579 validates the attributes in the submission request, the Printer object 580 creates a new Job object. The end user then interacts with this new Job 581 object to query its status and monitor the progress of the job. An end 582 user can also cancel their print jobs by using the Job object's Cancel- 583 Job operation. An end-user can also hold, release, and restart their 584 print jobs using the Job object's OPTIONAL Hold-Job, Release-Job, and 585 Restart-Job operations, if implemented. 587 A privileged operator or administrator of a Printer object can cancel, 588 hold, release, and restart any user's job using the REQUIRED Cancel-Job 589 and the OPTIONAL Hold-Job, Release-Job, and Restart-Job operations. In 590 additional privileged operator or administrator of a Printer object can 591 pause, resume, or purge (jobs from) a Printer object using the OPTIONAL 592 Pause-Printer, Resume-Printer, and Purge-Jobs operations, if 593 implemented. 595 The notification service is out of scope for this IPP/1.1 specification, 596 but using such a notification service, the end user is able to register 597 for and receive Printer specific and Job specific events. An end user 598 can query the status of Printer objects and can follow the progress of 599 Job objects by polling using the Get-Printer-Attributes, Get-Jobs, and 600 Get-Job-Attributes operations. 602 2. IPP Objects 604 The IPP/1.1 model introduces objects of type Printer and Job. Each type 605 of object models relevant aspects of a real-world entity such as a real 606 printer or real print job. Each object type is defined as a set of 607 possible attributes that may be supported by instances of that object 608 type. For each object (instance), the actual set of supported 609 attributes and values describe a specific implementation. The object's 610 attributes and values describe its state, capabilities, realizable 611 features, job processing functions, and default behaviors and 612 characteristics. For example, the Printer object type is defined as a 613 set of attributes that each Printer object potentially supports. In the 614 same manner, the Job object type is defined as a set of attributes that 615 are potentially supported by each Job object. 617 Each attribute included in the set of attributes defining an object type 618 is labeled as: 620 - "REQUIRED": each object MUST support the attribute. 621 - "OPTIONAL": each object MAY support the attribute. 623 There is no such similar labeling of attribute values. However, if an 624 implementation supports an attribute, it MUST support at least one of 625 the possible values for that attribute. 627 Expires November 10, 1999 628 2.1 Printer Object 630 The major component of the IPP/1.1 model is the Printer object. A 631 Printer object implements the server-side of the IPP/1.1 protocol. 632 Using the protocol, end users may query the attributes of the Printer 633 object and submit print jobs to the Printer object. The actual 634 implementation components behind the Printer abstraction may take on 635 different forms and different configurations. However, the model 636 abstraction allows the details of the configuration of real components 637 to remain opaque to the end user. Section 3 describes each of the 638 Printer operations in detail. 640 The capabilities and state of a Printer object are described by its 641 attributes. Printer attributes are divided into two groups: 643 - "job-template" attributes: These attributes describe supported job 644 processing capabilities and defaults for the Printer object. (See 645 section 4.2) 646 - "printer-description" attributes: These attributes describe the 647 Printer object's identification, state, location, references to 648 other sources of information about the Printer object, etc. (see 649 section 4.4) 651 Since a Printer object is an abstraction of a generic document output 652 device and print service provider, a Printer object could be used to 653 represent any real or virtual device with semantics consistent with the 654 Printer object, such as a fax device, an imager, or even a CD writer. 656 Some examples of configurations supporting a Printer object include: 658 1) An output device with no spooling capabilities 659 2) An output device with a built-in spooler 660 3) A print server supporting IPP with one or more associated output 661 devices 662 3a) The associated output devices may or may not be capable of 663 spooling jobs 664 3b) The associated output devices may or may not support IPP 666 The following figures show some examples of how Printer objects can be 667 realized on top of various distributed printing configurations. The 668 embedded case below represents configurations 1 and 2. The hosted and 669 fan-out figures below represent configurations 3a and 3b. 671 In this document the term "client" refers to a software entity that 672 sends IPP operation request to an IPP Printer object and accepts IPP 673 operation responses. A client MAY be: 675 1. contained within software controlled by an end user, e.g. activated 676 by the "Print" menu item in an application and/or 678 2. a component of a print server that communicates (using IPP 679 operations) with either an output device or another "downstream" 680 print server. 682 Expires November 10, 1999 684 The term "IPP Printer" is a network entity that accepts IPP operation 685 requests and returns IPP operation responses. As such, an IPP object 686 MAY be: 688 1. (embedded) software that controls a device 690 2. part of a print server that accepts IPP operation requests and, in 691 turn, sends operation requests using (the IPP or other) protocol to 692 one or more networked device(s). 694 Expires November 10, 1999 696 Legend: 698 ##### indicates a Printer object which is 699 either embedded in an output device or is 700 hosted in a server. The Printer object 701 might or might not be capable of queuing/spooling. 703 any indicates any network protocol or direct 704 connect, including IPP 706 embedded printer: 707 output device 708 +---------------+ 709 O +--------+ | ########### | 710 /|\ | client |------------IPP------------># Printer # | 711 / \ +--------+ | # Object # | 712 | ########### | 713 +---------------+ 715 hosted printer: 716 +---------------+ 717 O +--------+ ########### | | 718 /|\ | client |--IPP--># Printer #-any->| output device | 719 / \ +--------+ # Object # | | 720 ########### +---------------+ 722 +---------------+ 723 fan out: | | 724 +-->| output device | 725 any/ | | 726 O +--------+ ########### / +---------------+ 727 /|\ | client |-IPP-># Printer #--* 728 / \ +--------+ # Object # \ +---------------+ 729 ########### any\ | | 730 +-->| output device | 731 | | 732 +---------------+ 734 2.2 Job Object 736 A Job object is used to model a print job. A Job object contains 737 documents. The information required to create a Job object is sent in a 738 create request from the end user via an IPP Client to the Printer 739 object. The Printer object validates the create request, and if the 740 Printer object accepts the request, the Printer object creates the new 741 Job object. Section 3 describes each of the Job operations in detail. 743 Expires November 10, 1999 744 The characteristics and state of a Job object are described by its 745 attributes. Job attributes are grouped into two groups as follows: 747 - "job-template" attributes: These attributes can be supplied by the 748 client or end user and include job processing instructions which 749 are intended to override any Printer object defaults and/or 750 instructions embedded within the document data. (See section 4.2) 751 - "job-description" attributes: These attributes describe the Job 752 object's identification, state, size, etc. The client supplies some 753 of these attributes, and the Printer object generates others. (See 754 section 4.3) 756 An implementation MUST support at least one document per Job object. An 757 implementation MAY support multiple documents per Job object. A 758 document is either: 760 - a stream of document data in a format supported by the Printer 761 object (typically a Page Description Language - PDL), or 762 - a reference to such a stream of document data 764 In IPP/1.1, a document is not modeled as an IPP object, therefore it has 765 no object identifier or associated attributes. All job processing 766 instructions are modeled as Job object attributes. These attributes are 767 called Job Template attributes and they apply equally to all documents 768 within a Job object. 770 2.3 Object Relationships 772 IPP objects have relationships that are maintained persistently along 773 with the persistent storage of the object attributes. 775 A Printer object can represent either one or more physical output 776 devices or a logical device which "processes" jobs but never actually 777 uses a physical output device to put marks on paper. Examples of 778 logical devices include a Web page publisher or a gateway into an online 779 document archive or repository. A Printer object contains zero or more 780 Job objects. 782 A Job object is contained by exactly one Printer object, however the 783 identical document data associated with a Job object could be sent to 784 either the same or a different Printer object. In this case, a second 785 Job object would be created which would be almost identical to the first 786 Job object, however it would have new (different) Job object identifiers 787 (see section 2.4). 789 A Job object is either empty (before any documents have been added) or 790 contains one or more documents. If the contained document is a stream 791 of document data, that stream can be contained in only one document. 792 However, there can be identical copies of the stream in other documents 793 in the same or different Job objects. If the contained document is just 794 a reference to a stream of document data, other documents (in the same 795 or different Job object(s)) may contain the same reference. 797 Expires November 10, 1999 798 2.4 Object Identity 800 All Printer and Job objects are identified by a Uniform Resource 801 Identifier (URI) [RFC2396] so that they can be persistently and 802 unambiguously referenced. The notion of a URI is a useful concept, 803 however, until the notion of URI is more stable (i.e., defined more 804 completely and deployed more widely), it is expected that the URIs used 805 for IPP objects will actually be URLs [RFC2396]. Since every URL is a 806 specialized form of a URI, even though the more generic term URI is used 807 throughout the rest of this document, its usage is intended to cover the 808 more specific notion of URL as well. 810 An administrator configures Printer objects to either support or not 811 support authentication and/or message privacy using TLS [TLS] (the 812 mechanism for security configuration is outside the scope of this 813 IPP/1.1 document). In some situations, both types of connections (both 814 authenticated and unauthenticated) can be established using a single 815 communication channel that has some sort of negotiation mechanism. In 816 other situations, multiple communication channels are used, one for each 817 type of security configuration. Section 8 provides a full description 818 of all security considerations and configurations. 820 If a Printer object supports more than one communication channel, some 821 or all of those channels might support and/or require different security 822 mechanisms. In such cases, an administrator could expose the 823 simultaneous support for these multiple communication channels as 824 multiple URIs for a single Printer object where each URI represents one 825 of the communication channels to the Printer object. To support this 826 flexibility, the IPP Printer object type defines a multi-valued 827 identification attribute called the "printer-uri-supported" attribute. 828 It MUST contain at least one URI. It MAY contain more than one URI. 829 That is, every Printer object will have at least one URI that identifies 830 at least one communication channel to the Printer object, but it may 831 have more than one URI where each URI identifies a different 832 communication channel to the Printer object. The "printer-uri- 833 supported" attribute has two companion attributes, the "uri-security- 834 supported" attribute and the "uri-authentication-supported". Both have 835 the same cardinality as "printer-uri-supported". The purpose of the 836 "uri-security-supported" attribute is to indicate the security 837 mechanisms (if any) used for each URI listed in "printer-uri-supported". 838 The purpose of the "uri-authentication-supported" attribute is to 839 indicate the authentication mechanisms (if any) used for each URI listed 840 in "printer-uri-supported". These three attributes are fully described 841 in sections 4.4.1, 4.4.2, and 4.4.3. Issue 2 843 When a job is submitted to the Printer object via a create request, the 844 client supplies only a single Printer object URI. The client supplied 845 Printer object URI MUST be one of the values in the "printer-uri- 846 supported" Printer attribute. 848 Note: IPP/1.1 does not specify how the client obtains the client 849 supplied URI, but it is RECOMMENDED that a Printer object be registered 850 as an entry in a directory service. End-users and programs can then 851 interrogate the directory searching for Printers. Section 16 defines a 853 Expires November 10, 1999 854 generic schema for Printer object entries in the directory service and 855 describes how the entry acts as a bridge to the actual IPP Printer 856 object. The entry in the directory that represents the IPP Printer 857 object includes the possibly many URIs for that Printer object as values 858 in one its attributes. 860 When a client submits a create request to the Printer object, the 861 Printer object validates the request and creates a new Job object. The 862 Printer object assigns the new Job object a URI which is stored in the 863 "job-uri" Job attribute. This URI is then used by clients as the target 864 for subsequent Job operations. The Printer object generates a Job URI 865 based on its configured security policy and the URI used by the client 866 in the create request. 868 For example, consider a Printer object that supports both a 869 communication channel secured by the use of SSL3 (using HTTP over SSL3 870 with an "https" schemed URI) and another open communication channel that 871 is not secured with SSL3 (using a simple "http" schemed URI). If a 872 client were to submit a job using the secure URI, the Printer object 873 would assign the new Job object a secure URI as well. If a client were 874 to submit a job using the open-channel URI, the Printer would assign the 875 new Job object an open-channel URI. 877 In addition, the Printer object also populates the Job object's "job- 878 printer-uri" attribute. This is a reference back to the Printer object 879 that created the Job object. If a client only has access to a Job 880 object's "job-uri" identifier, the client can query the Job's "job- 881 printer-uri" attribute in order to determine which Printer object 882 created the Job object. If the Printer object supports more than one 883 URI, the Printer object picks the one URI supplied by the client when 884 creating the job to build the value for and to populate the Job's "job- 885 printer-uri" attribute. 887 Allowing Job objects to have URIs allows for flexibility and 888 scalability. For example, in some implementations, the Printer object 889 might create Jobs that are processed in the same local environment as 890 the Printer object itself. In this case, the Job URI might just be a 891 composition of the Printer's URI and some unique component for the Job 892 object, such as the unique 32-bit positive integer mentioned later in 893 this paragraph. In other implementations, the Printer object might be a 894 central clearing-house for validating all Job object creation requests, 895 but the Job object itself might be created in some environment that is 896 remote from the Printer object. In this case, the Job object's URI may 897 have no physical-location relationship at all to the Printer object's 898 URI. Again, the fact that Job objects have URIs allows for flexibility 899 and scalability, however, many existing printing systems have local 900 models or interface constraints that force print jobs to be identified 901 using only a 32-bit positive integer rather than an independent URI. 902 This numeric Job ID is only unique within the context of the Printer 903 object to which the create request was originally submitted. Therefore, 904 in order to allow both types of client access to IPP Job objects (either 905 by Job URI or by numeric Job ID), when the Printer object successfully 906 processes a create request and creates a new Job object, the Printer 907 object MUST generate both a Job URI and a Job ID. The Job ID (stored in 908 the "job-id" attribute) only has meaning in the context of the Printer 910 Expires November 10, 1999 911 object to which the create request was originally submitted. This 912 requirement to support both Job URIs and Job IDs allows all types of 913 clients to access Printer objects and Job objects no matter the local 914 constraints imposed on the client implementation. 916 In addition to identifiers, Printer objects and Job objects have names 917 ("printer-name" and "job-name"). An object name NEED NOT be unique 918 across all instances of all objects. A Printer object's name is chosen 919 and set by an administrator through some mechanism outside the scope of 920 this IPP/1.1 document. A Job object's name is optionally chosen and 921 supplied by the IPP client submitting the job. If the client does not 922 supply a Job object name, the Printer object generates a name for the 923 new Job object. In all cases, the name only has local meaning. 925 To summarize: 927 - Each Printer object is identified with one or more URIs. The 928 Printer's "printer-uri-supported" attribute contains the URI(s). 929 - The Printer object's "uri-security-supported" attribute identifies 930 the communication channel security protocols that may or may not 931 have been configured for the various Printer object URIs (e.g., 932 'tls' or 'none'). 933 - - The Printer object's "uri-authentication-supported" attribute 934 identifies the authentication mechanisms that may or may not have 935 been configured for the various Printer object URIs (e.g., 'digest' 936 or 'none'). 937 Each Job object is identified with a Job URI. The Job's "job-uri" 938 attribute contains the URI. 939 - Each Job object is also identified with Job ID which is a 32-bit, 940 positive integer. The Job's "job-id" attribute contains the Job 941 ID. The Job ID is only unique within the context of the Printer 942 object which created the Job object. 943 - Each Job object has a "job-printer-uri" attribute which contains 944 the URI of the Printer object that was used to create the Job 945 object. This attribute is used to determine the Printer object 946 that created a Job object when given only the URI for the Job 947 object. This linkage is necessary to determine the languages, 948 charsets, and operations which are supported on that Job (the basis 949 for such support comes from the creating Printer object). 950 - Each Printer object has a name (which is not necessarily unique). 951 The administrator chooses and sets this name through some mechanism 952 outside the scope of this IPP/1.1 document. The Printer object's 953 "printer-name" attribute contains the name. 954 - Each Job object has a name (which is not necessarily unique). The 955 client optionally supplies this name in the create request. If the 956 client does not supply this name, the Printer object generates a 957 name for the Job object. The Job object's "job-name" attribute 958 contains the name. 960 3. IPP Operations 962 IPP objects support operations. An operation consists of a request and 963 a response. When a client communicates with an IPP object, the client 964 issues an operation request to the URI for that object. Operation 966 Expires November 10, 1999 967 requests and responses have parameters that identify the operation. 968 Operations also have attributes that affect the run-time characteristics 969 of the operation (the intended target, localization information, etc.). 970 These operation-specific attributes are called operation attributes (as 971 compared to object attributes such as Printer object attributes or Job 972 object attributes). Each request carries along with it any operation 973 attributes, object attributes, and/or document data required to perform 974 the operation. Each request requires a response from the object. Each 975 response indicates success or failure of the operation with a status 976 code as a response parameter. The response contains any operation 977 attributes, object attributes, and/or status messages generated during 978 the execution of the operation request. 980 This section describes the semantics of the IPP operations, both 981 requests and responses, in terms of the parameters, attributes, and 982 other data associated with each operation. 984 The IPP/1.1 Printer operations are: 986 Print-Job (section 3.2.1) 987 Print-URI (section 3.2.2) 988 Validate-Job (section 3.2.3) 989 Create-Job (section 3.2.4) 990 Get-Printer-Attributes (section 3.2.5) 991 Get-Jobs (section 3.2.6) 992 Pause-Printer (section 3.3.5) 993 Resume-Printer (section 3.3.6) 994 Purge-Jobs (section 3.3.7) 996 The Job operations are: 998 Send-Document (section 3.3.1) 999 Send-URI (section 3.3.2) 1000 Cancel-Job (section 3.3.3) 1001 Get-Job-Attributes (section 3.3.4) 1002 Hold-Job (section 3.3.5) 1003 Release-Job (section 3.3.6) 1004 Restart-Job (section 3.3.7) 1006 The Send-Document and Send-URI Job operations are used to add a new 1007 document to an existing multi-document Job object created using the 1008 Create-Job operation. 1010 3.1 Common Semantics 1012 All IPP operations require some common parameters and operation 1013 attributes. These common elements and their semantic characteristics 1014 are defined and described in more detail in the following sections. 1016 3.1.1 Required Parameters 1018 Every operation request contains the following REQUIRED parameters: 1020 Expires November 10, 1999 1021 - a "version-number", 1022 - an "operation-id", 1023 - a "request-id", and 1024 - the attributes that are REQUIRED for that type of request. 1026 Every operation response contains the following REQUIRED parameters: 1028 - a "version-number", 1029 - a "status-code", 1030 - the "request-id" that was supplied in the corresponding request, 1031 and 1032 - the attributes that are REQUIRED for that type of response. 1034 The "Encoding and Transport document [IPP-PRO] defines special rules for 1035 the encoding of these parameters. All other operation elements are 1036 represented using the more generic encoding rules for attributes and 1037 groups of attributes. 1039 3.1.2 Operation IDs and Request IDs 1041 Each IPP operation request includes an identifying "operation-id" value. 1042 Valid values are defined in the "operations-supported" Printer attribute 1043 section (see section 4.4.15). The client specifies which operation is 1044 being requested by supplying the correct "operation-id" value. 1046 In addition, every invocation of an operation is identified by a 1047 "request-id" value. For each request, the client chooses the "request- 1048 id" which MUST be an integer (possibly unique depending on client 1049 requirements) in the range from 1 to 2**31 - 1 (inclusive). This 1050 "request-id" allows clients to manage multiple outstanding requests. The 1051 receiving IPP object copies all 32-bits of the client-supplied "request- 1052 id" attribute into the response so that the client can match the 1053 response with the correct outstanding request, even if the "request-id" 1054 is out of range. If the request is terminated before the complete 1055 "request-id" is received, the IPP object rejects the request and returns 1056 a response with a "request-id" of 0. 1058 Note: In some cases, the transport protocol underneath IPP might be a 1059 connection oriented protocol that would make it impossible for a client 1060 to receive responses in any order other than the order in which the 1061 corresponding requests were sent. In such cases, the "request-id" 1062 attribute would not be essential for correct protocol operation. 1063 However, in other mappings, the operation responses can come back in any 1064 order. In these cases, the "request-id" would be essential. 1066 3.1.3 Attributes 1068 Operation requests and responses are both composed of groups of 1069 attributes and/or document data. The attributes groups are: 1071 - Operation Attributes: These attributes are passed in the operation 1072 and affect the IPP object's behavior while processing the operation 1073 request and may affect other attributes or groups of attributes. 1074 Some operation attributes describe the document data associated 1075 with the print job and are associated with new Job objects, however 1077 Expires November 10, 1999 1078 most operation attributes do not persist beyond the life of the 1079 operation. The description of each operation attribute includes 1080 conformance statements indicating which operation attributes are 1081 REQUIRED and which are OPTIONAL for an IPP object to support and 1082 which attributes a client MUST supply in a request and an IPP 1083 object MUST supply in a response. 1084 - Job Template Attributes: These attributes affect the processing of 1085 a job. A client OPTIONALLY supplies Job Template Attributes in a 1086 create request, and the receiving object MUST be prepared to 1087 receive all supported attributes. The Job object can later be 1088 queried to find out what Job Template attributes were originally 1089 requested in the create request, and such attributes are returned 1090 in the response as Job Object Attributes. The Printer object can 1091 be queried about its Job Template attributes to find out what type 1092 of job processing capabilities are supported and/or what the 1093 default job processing behaviors are, though such attributes are 1094 returned in the response as Printer Object Attributes. The "ipp- 1095 attribute-fidelity" operation attribute affects processing of all 1096 client-supplied Job Template attributes (see sections 3.2.1.2 and 1097 15 for a full description of "ipp-attribute-fidelity" and its 1098 relationship to other attributes). 1099 - Job Object Attributes: These attributes are returned in response to 1100 a query operation directed at a Job object. 1101 - Printer Object Attributes: These attributes are returned in 1102 response to a query operation directed at a Printer object. 1103 - Unsupported Attributes: In a create request, the client supplies a 1104 set of Operation and Job Template attributes. If any of these 1105 attributes or their values is unsupported by the Printer object, 1106 the Printer object returns the set of unsupported attributes in the 1107 response. Sections 3.1.7, 3.2.1.2, and 15 give a full description 1108 of how Job Template attributes supplied by the client in a create 1109 request are processed by the Printer object and how unsupported 1110 attributes are returned to the client. Because of extensibility, 1111 any IPP object might receive a request that contains new or unknown 1112 attributes or values for which it has no support. In such cases, 1113 the IPP object processes what it can and returns the unsupported 1114 attributes in the response. The Unsupported Attribute group is 1115 defined for all operation responses for returning unsupported 1116 attributes that the client supplied in the request. Issue 1118 Later in this section, each operation is formally defined by identifying 1119 the allowed and expected groups of attributes for each request and 1120 response. The model identifies a specific order for each group in each 1121 request or response, but the attributes within each group may be in any 1122 order, unless specified otherwise. 1124 Each attribute specification includes the attribute's name followed by 1125 the name of its attribute syntax(es) in parenthesizes. In addition, 1126 each 'integer' attribute is followed by the allowed range in 1127 parentheses, (m:n), for values of that attribute. Each 'text' or 'name' 1128 attribute is followed by the maximum size in octets in parentheses, 1129 (size), for values of that attribute. For more details on attribute 1130 syntax notation, see the descriptions of these attributes syntaxes in 1131 section 4.1. 1133 Expires November 10, 1999 1134 Note: Document data included in the operation is not strictly an 1135 attribute, but it is treated as a special attribute group for ordering 1136 purposes. The only operations that support supplying the document data 1137 within an operation request are Print-Job and Send-Document. There are 1138 no operation responses that include document data. 1140 Note: Some operations are REQUIRED for IPP objects to support; the 1141 others are OPTIONAL (see section 5.2.2). Therefore, before using an 1142 OPTIONAL operation, a client SHOULD first use the REQUIRED Get-Printer- 1143 Attributes operation to query the Printer's "operations-supported" 1144 attribute in order to determine which OPTIONAL Printer and Job 1145 operations are actually supported. The client SHOULD NOT use an 1146 OPTIONAL operation that is not supported. When an IPP object receives a 1147 request to perform an operation it does not support, it returns the 1148 'server-error-operation-not-supported' status code (see section 1149 13.1.5.2). An IPP object is non-conformant if it does not support a 1150 REQUIRED operation. 1152 3.1.4 Character Set and Natural Language Operation Attributes 1154 Some Job and Printer attributes have values that are text strings and 1155 names intended for human understanding rather than machine understanding 1156 (see the 'text' and 'name' attribute syntax descriptions in section 1157 4.1). The following sections describe two special Operation Attributes 1158 called "attributes-charset" and "attributes-natural-language". These 1159 attributes are always part of the Operation Attributes group. For most 1160 attribute groups, the order of the attributes within the group is not 1161 important. However, for these two attributes within the Operation 1162 Attributes group, the order is critical. The "attributes-charset" 1163 attribute MUST be the first attribute in the group and the "attributes- 1164 natural-language" attribute MUST be the second attribute in the group. 1165 In other words, these attributes MUST be supplied in every IPP request 1166 and response, they MUST come first in the group, and MUST come in the 1167 specified order. For job creation operations, the IPP Printer 1168 implementation saves these two attributes with the new Job object as Job 1169 Description attributes. For the sake of brevity in this document, these 1170 operation attribute descriptions are not repeated with every operation 1171 request and response, but have a reference back to this section instead. 1173 3.1.4.1 Request Operation Attributes 1175 The client MUST supply and the Printer object MUST support the following 1176 REQUIRED operation attributes in every IPP/1.1 operation request: 1178 "attributes-charset" (charset): 1179 This operation attribute identifies the charset (coded character 1180 set and encoding method) used by any 'text' and 'name' attributes 1181 that the client is supplying in this request. It also identifies 1182 the charset that the Printer object MUST use (if supported) for all 1183 'text' and 'name' attributes and status messages that the Printer 1184 object returns in the response to this request. See Sections 4.1.1 1185 and 4.1.2 for the specification of the 'text' and 'name' attribute 1186 syntaxes. 1188 Expires November 10, 1999 1189 All clients and IPP objects MUST support the 'utf-8' charset 1190 [RFC2279] and MAY support additional charsets provided that they 1191 are registered with IANA [IANA-CS]. If the Printer object does not 1192 support the client supplied charset value, the Printer object MUST 1193 reject the request, set the "attributes-charset" to 'utf-8' in the 1194 response, and return the 'client-error-charset-not-supported' 1195 status code and any 'text' or 'name' attributes using the 'utf-8' 1196 charset. The Printer NEED NOT return any attributes in the 1197 Unsupported Attributes Group (See sections 3.1.7 and 3.2.1.2). The 1198 Printer object MUST indicate the charset(s) supported as the values 1199 of the "charset-supported" Printer attribute (see Section 4.4.18), 1200 so that the client can query to determine which charset(s) are 1201 supported. 1203 Note to client implementers: Since IPP objects are only required to 1204 support the 'utf-8' charset, in order to maximize interoperability 1205 with multiple IPP object implementations, a client may want to 1206 supply 'utf-8' in the "attributes-charset" operation attribute, 1207 even though the client is only passing and able to present a 1208 simpler charset, such as US-ASCII or ISO-8859-1. Then the client 1209 will have to filter out (or charset convert) those characters that 1210 are returned in the response that it cannot present to its user. 1211 On the other hand, if both the client and the IPP objects also 1212 support a charset in common besides utf-8, the client may want to 1213 use that charset in order to avoid charset conversion or data loss. 1215 See the 'charset' attribute syntax description in Section 4.1.7 for 1216 the syntax and semantic interpretation of the values of this 1217 attribute and for example values. 1219 "attributes-natural-language" (naturalLanguage): 1220 This operation attribute identifies the natural language used by 1221 any 'text' and 'name' attributes that the client is supplying in 1222 this request. This attribute also identifies the natural language 1223 that the Printer object SHOULD use for all 'text' and 'name' 1224 attributes and status messages that the Printer object returns in 1225 the response to this request. 1227 There are no REQUIRED natural languages required for the Printer 1228 object to support. However, the Printer object's "generated- 1229 natural-language-supported" attribute identifies the natural 1230 languages supported by the Printer object and any contained Job 1231 objects for all text strings generated by the IPP object. A client 1232 MAY query this attribute to determine which natural language(s) are 1233 supported for generated messages. 1235 For any of the attributes for which the Printer object generates 1236 text, i.e., for the "job-state-message", "printer-state-message", 1237 and status messages (see Section 3.1.6), the Printer object MUST be 1238 able to generate these text strings in any of its supported natural 1239 languages. If the client requests a natural language that is not 1240 supported, the Printer object MUST return these generated messages 1241 in the Printer's configured natural language as specified by the 1242 Printer's "natural-language-configured" attribute" (see Section 1243 4.4.19). 1245 Expires November 10, 1999 1246 For other 'text' and 'name' attributes supplied by the client, 1247 authentication system, operator, system administrator, or 1248 manufacturer (i.e., for "job-originating-user-name", "printer-name" 1249 (name), "printer-location" (text), "printer-info" (text), and 1250 "printer-make-and-model" (text)), the Printer object is only 1251 required to support the configured natural language of the Printer 1252 identified by the Printer object's "natural-language-configured" 1253 attribute, though support of additional natural languages for these 1254 attributes is permitted. 1256 For any 'text' or 'name' attribute in the request that is in a 1257 different natural language than the value supplied in the 1258 "attributes-natural-language" operation attribute, the client MUST 1259 use the Natural Language Override mechanism (see sections 4.1.1.2 1260 and 4.1.2.2) for each such attribute value supplied. The client 1261 MAY use the Natural Language Override mechanism redundantly, i.e., 1262 use it even when the value is in the same natural language as the 1263 value supplied in the "attributes-natural-language" operation 1264 attribute of the request. 1266 The IPP object MUST accept any natural language and any Natural 1267 Language Override, whether the IPP object supports that natural 1268 language or not (and independent of the value of the "ipp- 1269 attribute-fidelity" Operation attribute). That is the IPP object 1270 accepts all client supplied values no matter what the values are in 1271 the Printer object's "generated-natural-language-supported" 1272 attribute. That attribute, "generated-natural-language-supported", 1273 only applies to generated messages, not client supplied messages. 1274 The IPP object MUST remember that natural language for all client- 1275 supplied attributes, and when returning those attributes in 1276 response to a query, the IPP object MUST indicate that natural 1277 language. 1279 Each value whose attribute syntax type is 'text' or 'name' (see 1280 sections 4.1.1 and 4.1.2) has an Associated Natural-Language. This 1281 document does not specify how this association is stored in a 1282 Printer or Job object. When such a value is encoded in a request 1283 or response, the natural language is either implicit or explicit: 1285 @ In the implicit case, the value contains only the text/name 1286 value, and the language is specified by the "attributes- 1287 natural-language" operation attribute in the request or 1288 response (see sections 4.1.1.1 textWithoutLanguage and 4.1.2.1 1289 nameWithoutLanguage). 1291 @ In the explicit case (also known as the Natural-Language 1292 Override case), the value contains both the language and the 1293 text/name value (see sections 4.1.1.2 textWithLanguage and 1294 4.1.2.2 nameWithLanguage). 1296 For example, the "job-name" attribute MAY be supplied by the client 1297 in a create request. The text value for this attribute will be in 1298 the natural language identified by the "attribute-natural-language" 1299 attribute, or if different, as identified by the Natural Language 1301 Expires November 10, 1999 1302 Override mechanism. If supplied, the IPP object will use the value 1303 of the "job-name" attribute to populate the Job object's "job-name" 1304 attribute. Whenever any client queries the Job object's "job-name" 1305 attribute, the IPP object returns the attribute as stored and uses 1306 the Natural Language Override mechanism to specify the natural 1307 language, if it is different from that reported in the "attributes- 1308 natural-language" operation attribute of the response. The IPP 1309 object MAY use the Natural Language Override mechanism redundantly, 1310 i.e., use it even when the value is in the same natural language 1311 as the value supplied in the "attributes-natural-language" 1312 operation attribute of the response. 1314 An IPP object MUST NOT reject a request based on a supplied natural 1315 language in an "attributes-natural-language" Operation attribute or 1316 in any attribute that uses the Natural Language Override. 1318 See the 'naturalLanguage' attribute syntax description in section 1319 4.1.8 for the syntax and semantic interpretation of the values of 1320 this attribute and for example values. 1322 Clients SHOULD NOT supply 'text' or 'name' attributes that use an 1323 illegal combination of natural language and charset. For example, 1324 suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and 1325 'iso-8859-7'. Suppose also, that it supports natural languages 'en' 1326 (English), 'fr' (French), and 'el' (Greek). Although the Printer object 1327 supports the charset 'iso-8859-1' and natural language 'el', it probably 1328 does not support the combination of Greek text strings using the 'iso- 1329 8859-1' charset. The Printer object handles this apparent 1330 incompatibility differently depending on the context in which it occurs: 1332 - In a create request: If the client supplies a text or name 1333 attribute (for example, the "job-name" operation attribute) that 1334 uses an apparently incompatible combination, it is a client choice 1335 that does not affect the Printer object or its correct operation. 1336 Therefore, the Printer object simply accepts the client supplied 1337 value, stores it with the Job object, and responds back with the 1338 same combination whenever the client (or any client) queries for 1339 that attribute. 1340 -In a query-type operation, like Get-Printer-Attributes: If the 1341 client requests an apparently incompatible combination, the Printer 1342 object responds (as described in section 3.1.4.2) using the 1343 Printer's configured natural language rather than the natural 1344 language requested by the client. 1346 In either case, the Printer object does not reject the request because 1347 of the apparent incompatibility. The potential incompatible combination 1348 of charset and natural language can occur either at the global operation 1349 level or at the Natural Language Override attribute-by-attribute level. 1350 In addition, since the response always includes explicit charset and 1351 natural language information, there is never any question or ambiguity 1352 in how the client interprets the response. 1354 Expires November 10, 1999 1355 3.1.4.2 Response Operation Attributes 1357 The Printer object MUST supply and the client MUST support the following 1358 REQUIRED operation attributes in every IPP/1.1 operation response: 1360 "attributes-charset" (charset): 1361 This operation attribute identifies the charset used by any 'text' 1362 and 'name' attributes that the Printer object is returning in this 1363 response. The value in this response MUST be the same value as the 1364 "attributes-charset" operation attribute supplied by the client in 1365 the request. If this is not possible (i.e., the charset requested 1366 is not supported), the request would have been rejected. See 1367 "attributes-charset" described in Section 3.1.4.1 above. 1369 If the Printer object supports more than just the 'utf-8' charset, 1370 the Printer object MUST be able to code convert between each of the 1371 charsets supported on a highest fidelity possible basis in order to 1372 return the 'text' and 'name' attributes in the charset requested by 1373 the client. However, some information loss MAY occur during the 1374 charset conversion depending on the charsets involved. For 1375 example, the Printer object may convert from a UTF-8 'a' to a US- 1376 ASCII 'a' (with no loss of information), from an ISO Latin 1 1377 CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' (losing the 1378 accent), or from a UTF-8 Japanese Kanji character to some ISO Latin 1379 1 error character indication such as '?', decimal code equivalent, 1380 or to the absence of a character, depending on implementation. 1382 Note: Whether an implementation that supports more than one charset 1383 stores the data in the charset supplied by the client or code 1384 converts to one of the other supported charsets, depends on 1385 implementation. The strategy should try to minimize loss of 1386 information during code conversion. On each response, such an 1387 implementation converts from its internal charset to that 1388 requested. 1390 "attributes-natural-language" (naturalLanguage): 1391 This operation attribute identifies the natural language used by 1392 any 'text' and 'name' attributes that the IPP object is returning 1393 in this response. Unlike the "attributes-charset" operation 1394 attribute, the IPP object NEED NOT return the same value as that 1395 supplied by the client in the request. The IPP object MAY return 1396 the natural language of the Job object or the Printer's configured 1397 natural language as identified by the Printer object's "natural- 1398 language-configured" attribute, rather than the natural language 1399 supplied by the client. For any 'text' or 'name' attribute or 1400 status message in the response that is in a different natural 1401 language than the value returned in the "attributes-natural- 1402 language" operation attribute, the IPP object MUST use the Natural 1403 Language Override mechanism (see sections 4.1.1.2 and 4.1.2.2) on 1404 each attribute value returned. The IPP object MAY use the Natural 1405 Language Override mechanism redundantly, i.e., use it even when the 1406 value is in the same natural language as the value supplied in the 1407 "attributes-natural-language" operation attribute of the response. 1409 Expires November 10, 1999 1411 3.1.5 Operation Targets 1413 All IPP operations are directed at IPP objects. For Printer operations, 1414 the operation is always directed at a Printer object using one of its 1415 URIs (i.e., one of the values in the Printer object's "printer-uri- 1416 supported" attribute). Even if the Printer object supports more than 1417 one URI, the client supplies only one URI as the target of the 1418 operation. The client identifies the target object by supplying the 1419 correct URI in the "printer-uri (uri)" operation attribute. 1421 For Job operations, the operation is directed at either: 1423 - The Job object itself using the Job object's URI. In this case, 1424 the client identifies the target object by supplying the correct 1425 URI in the "job-uri (uri)" operation attribute. 1426 - The Printer object that created the Job object using both the 1427 Printer objects URI and the Job object's Job ID. Since the Printer 1428 object that created the Job object generated the Job ID, it MUST be 1429 able to correctly associate the client supplied Job ID with the 1430 correct Job object. The client supplies the Printer object's URI 1431 in the "printer-uri (uri)" operation attribute and the Job object's 1432 Job ID in the "job-id (integer(1:MAX))" operation attribute. 1434 If the operation is directed at the Job object directly using the Job 1435 object's URI, the client MUST NOT include the redundant "job-id" 1436 operation attribute. 1438 The operation target attributes are REQUIRED operation attributes that 1439 MUST be included in every operation request. Like the charset and 1440 natural language attributes (see section 3.1.4), the operation target 1441 attributes are specially ordered operation attributes. In all cases, 1442 the operation target attributes immediately follow the "attributes- 1443 charset" and "attributes-natural-language" attributes within the 1444 operation attribute group, however the specific ordering rules are: 1446 - In the case where there is only one operation target attribute 1447 (i.e., either only the "printer-uri" attribute or only the "job- 1448 uri" attribute), that attribute MUST be the third attribute in the 1449 operation attributes group. 1450 - In the case where Job operations use two operation target 1451 attributes (i.e., the "printer-uri" and "job-id" attributes), the 1452 "printer-uri" attribute MUST be the third attribute and the "job- 1453 id" attribute MUST be the fourth attribute. 1455 In all cases, the target URIs contained within the body of IPP operation 1456 requests and responses must be in absolute format rather than relative 1457 format (a relative URL identifies a resource with the scope of the HTTP 1458 server, but does not include scheme, host or port). 1460 The following rules apply to the use of port numbers in URIs that 1461 identify IPP objects: 1463 1. If the URI scheme allows the port number to be explicitly included 1464 in the URI string, and a port number is specified within the URI, 1466 Expires November 10, 1999 1467 then that port number MUST be used by the client to contact the IPP 1468 object. 1470 2. If the URI scheme allows the port number to be explicitly included 1471 in the URI string, and a port number is not specified within the 1472 URI, then default port number implied by that URI scheme MUST be 1473 used by the client to contact the IPP object. 1475 3. If the URI scheme does not allow an explicit port number to be 1476 specified within the URI, then the default port number implied by 1477 that URI MUST be used by the client to contact the IPP object. 1479 Note: The IPP "Encoding and Transport document [IPP-PRO] shows a mapping 1480 of IPP onto HTTP/1.1 and defines a new default port number for using IPP 1481 over HTTP/1.1. 1483 3.1.6 Operation Status Codes and Messages 1485 Every operation response includes a REQUIRED "status-code" parameter and 1486 an OPTIONAL "status-message" operation attribute. The "status-code" 1487 provides information on the processing of a request. A "status-message" 1488 attribute provides a short textual description of the status of the 1489 operation. The status code is intended for use by automata, and the 1490 status message is intended for the human end user. The "status-message" 1491 is especially useful for a later version of a Printer object to return 1492 as supplemental information for the human user to accompany a status 1493 code that an earlier version of a client might not understand. If a 1494 response does include a "status-message" attribute, an IPP client NEED 1495 NOT examine or display the message, however it SHOULD do so in some 1496 implementation specific manner. 1498 The "status-code" value is a numeric value that has semantic meaning. 1499 The "status-code" syntax is similar to a "type2 enum" (see section 4.1 1500 on "Attribute Syntaxes") except that values can range only from 0x0000 1501 to 0x7FFF. Section 13 describes the status codes, assigns the numeric 1502 values, and suggests a corresponding status message for each status 1503 code. The "status-message" attribute's syntax is "text(255)". 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 If the Printer object supports the "status-message" operation attribute, 1508 the Printer object MUST be able to generate this message in any of the 1509 natural languages identified by the Printer object's "generated-natural- 1510 language-supported" attribute (see the "attributes-natural-language" 1511 operation attribute specified in section 3.1.4.1). As described in 1512 section 3.1.4.1 for any returned 'text' attribute, if there is a choice 1513 for generating this message, the Printer object uses the natural 1514 language indicated by the value of the "attributes-natural-language" in 1515 the client request if supported, otherwise the Printer object uses the 1516 value in the Printer object's own "natural-language-configured" 1517 attribute. If the Printer object supports the "status-message" 1518 operation attribute, it SHOULD use the REQUIRED 'utf-8' charset to 1519 return a status message for the following error status codes (see 1520 section 13): 'client-error-bad-request', 'client-error-charset-not- 1522 Expires November 10, 1999 1523 supported', 'server-error-internal-error', 'server-error-operation-not- 1524 supported', and 'server-error-version-not-supported'. In this case, it 1525 MUST set the value of the "attributes-charset" operation attribute to 1526 'utf-8' in the error response. 1528 If the Printer performs an operation with no errors and it encounters no 1529 problems, it MUST return the status code 'successful-ok' in the 1530 response. See section 13. 1532 If the client supplies unsupported values for the following parameters 1533 or Operation attributes, the Printer object MUST reject the operation, 1534 NEED NOT return the unsupported attribute value in the Unsupported 1535 Attributes group, and MUST return the indicated status code: 1537 Parameter/Attribute Status code 1539 version-number server-error-version-not-supported 1541 operation-id server-error-operation-not-supported 1543 attributes-charset client-error-charset-not-supported 1545 compression client-error-compression-not-supported 1547 document-format client-error-document-format-not-supported 1549 document-uri client-error-uri-scheme-not-supported, 1550 client-error-document-access-error 1552 If the client supplies unsupported values for other attributes, or 1553 unsupported attributes, the Printer returns the status code defined in 1554 the next section on Unsupported Attributes. 1556 3.1.7 Unsupported Attributes 1558 The Unsupported Attributes group contains attributes that are not 1559 supported by the operation. This group is primarily for the job creation 1560 operations, but all operations can return this group. 1562 A Printer object MUST include an Unsupported Attributes group in a 1563 response if the status code is one of the following: 'successful-ok- 1564 ignored-or-substituted-attributes', 'successful-ok-conflicting- 1565 attributes', 'client-error-attributes-or-values-not-supported' or 1566 'client-error-conflicting-attributes'. 1568 If the status code is one of the four specified in the preceding 1569 paragraph, the Unsupported Attributes group MUST contain all of those 1570 attributes and only those attributes that are: 1571 a)an Operation or Job Template attribute supplied in the request, 1572 and 1573 b)unsupported by the printer. See below for details on the three 1574 categories .unsupported. attributes. Issues 18, 23, and 27 1576 If the Printer object is not returning any Unsupported Attributes in the 1577 response, the Printer object SHOULD omit Group 2 rather than sending an 1578 empty group. However, a client MUST be able to accept an empty group. 1580 Unsupported attributes fall into three categories: 1582 1. The Printer object does not support the supplied attribute (no 1583 matter what the attribute syntax or value). 1585 Expires November 10, 1999 1586 2. The Printer object does support the attribute, but does not 1587 support some or all of the particular attribute syntaxes or values 1588 supplied by the client (i.e., the Printer object does not have 1589 those attribute syntaxes or values in its corresponding "xxx- 1590 supported" attribute). 1591 3. The Printer object does support the attributes and values 1592 supplied, but the particular values are in conflict with one 1593 another, because they violate a constraint, such as not being able 1594 to staple transparencies. 1596 In the case of an unsupported attribute name, the Printer object returns 1597 the client-supplied attribute with a substituted value of 'unsupported'. 1598 This value's syntax type is "out-of-band" and its encoding is defined by 1599 special rules for "out-of-band" values in the "Encoding and Transport" 1600 specification [IPP-PRO]. Its value indicates no support for the 1601 attribute itself (see the beginning of section 4.1). Issue 12 1603 In the case of a supported attribute with one or more unsupported 1604 attribute syntaxes or values, the Printer object simply returns the 1605 client-supplied attribute with the unsupported attribute syntaxes or 1606 values as supplied by the client. This indicates support for the 1607 attribute, but no support for that particular attribute syntax or value. 1608 If the client supplies a multi-valued attribute with more than one value 1609 and the Printer object supports the attribute but only supports a subset 1610 of the client-supplied attribute syntaxes or values, the Printer object 1611 MUST return only those attribute syntaxes or values that are 1612 unsupported. 1614 In the case of two (or more) supported attribute values that are in 1615 conflict with one another (although each is supported independently, the 1616 values conflict when requested together within the same job), the 1617 Printer object MUST return all the values that it ignores or substitutes 1618 to resolve the conflict, but not any of the values that it is still 1619 using. The choice for exactly how to resolve the conflict is 1620 implementation dependent. See sections 3.2.1.2 and 15. See The 1621 Implementer's Guide [IPP-IIG] for an example. 1623 3.1.8 Versions 1625 Each operation request and response carries with it a "version-number" 1626 parameter. Each value of the "version-number" is in the form "X.Y" 1627 where X is the major version number and Y is the minor version number. 1628 By including a version number in the client request, it allows the 1629 client to identify which version of IPP it is interested in using. If 1630 the IPP object does not support that version, the object responds with a 1631 status code of 'server-error-version-not-supported' along with the 1632 closest version number that is supported (see section 13.1.5.4). 1634 There is no version negotiation per se. However, if after receiving a 1635 'server-error-version-not-supported' status code from an IPP object, 1636 there is nothing that prevents a client from trying again with a 1637 different version number. In order to conform to IPP/1.1, an IPP object 1638 implementations MUST support version '1.1' SHOULD support version 1639 '1.0'. Issue 33 1641 Expires November 10, 1999 1642 There is only one notion of "version number" that covers both IPP Model 1643 and IPP Protocol changes. Thus the version number MUST change when 1644 introducing a new version of the Model and Semantics document [IPP-MOD] 1645 or a new version of the "Encoding and Transport" document [IPP-PRO]. 1647 Changes to the major version number indicate structural or syntactic 1648 changes that make it impossible for older version of IPP clients and 1649 Printer objects to correctly parse and correctly process the new or 1650 changed attributes, operations and responses. If the major version 1651 number changes, the minor version numbers is set to zero. As an 1652 example, adding the REQUIRED "ipp-attribute-fidelity" attribute to 1653 version '1.1' (if it had not been part of version '1.1'), would have 1654 required a change to the major version number, since an IPP/1.0 Printer 1655 would not have processed a request with the correct semantics that 1656 contained the "ipp-attribute-fidelity" attribute that it did not know 1657 about. Items that might affect the changing of the major version number 1658 include any changes to the Model and Semantics document [IPP-MOD] or the 1659 "Encoding and Transport" document [IPP-PRO] itself, such as: 1661 - reordering of ordered attributes or attribute sets 1662 - changes to the syntax of existing attributes 1663 - adding REQUIRED (for an IPP object to support) operation attribute 1664 groups 1665 - adding values to existing REQUIRED operation attributes 1666 - adding REQUIRED operations 1668 Changes to the minor version number indicate the addition of new 1669 features, attributes and attribute values that may not be understood by 1670 all IPP objects, but which can be ignored if not understood. Items that 1671 might affect the changing of the minor version number include any 1672 changes to the model objects and attributes but not the encoding and 1673 transport rules [IPP-PRO] (except adding attribute syntaxes). Examples 1674 of such changes are: 1676 - grouping all extensions not included in a previous version into a 1677 new version 1678 - adding new attribute values 1679 - adding new object attributes 1680 - adding OPTIONAL (for an IPP object to support) operation attributes 1681 (i.e., those attributes that an IPP object can ignore without 1682 confusing clients) 1683 - adding OPTIONAL (for an IPP object to support) operation attribute 1684 groups (i.e., those attributes that an IPP object can ignore 1685 without confusing clients) 1686 - adding new attribute syntaxes 1687 - adding OPTIONAL operations 1688 - changing Job Description attributes or Printer Description 1689 attributes from OPTIONAL to REQUIRED or vice versa. 1690 - adding OPTIONAL attribute syntaxes to an existing attribute. Issue 1691 33 1693 The encoding of the "version-number" MUST NOT change over any version 1694 number (either major or minor). This rule guarantees that all future 1695 versions will be backwards compatible with all previous versions (at 1696 least for checking the "version-number"). In addition, any protocol 1697 elements (attributes, error codes, tags, etc.) that are not carried 1699 Expires November 10, 1999 1700 forward from one version to the next are deprecated so that they can 1701 never be reused with new semantics. 1703 Implementations that support a certain version NEED NOT support ALL 1704 previous versions. As each new version is defined (through the release 1705 of a new specification), that major version will specify which previous 1706 versions MUST and which versions SHOULD be supported in compliant 1707 implementations. Issue 33 1709 3.1.9 Job Creation Operations 1711 In order to "submit a print job" and create a new Job object, a client 1712 issues a create request. A create request is any one of following three 1713 operation requests: 1715 - The Print-Job Request: A client that wants to submit a print job 1716 with only a single document uses the Print-Job operation. The 1717 operation allows for the client to "push" the document data to the 1718 Printer object by including the document data in the request 1719 itself. 1721 - The Print-URI Request: A client that wants to submit a print job 1722 with only a single document (where the Printer object "pulls" the 1723 document data instead of the client "pushing" the data to the 1724 Printer object) uses the Print-URI operation. In this case, the 1725 client includes in the request only a URI reference to the document 1726 data (not the document data itself). 1728 - The Create-Job Request: A client that wants to submit a print job 1729 with multiple documents uses the Create-Job operation. This 1730 operation is followed by an arbitrary number of Send-Document 1731 and/or Send-URI operations (each creating another document for the 1732 newly create Job object). The Send-Document operation includes the 1733 document data in the request (the client "pushes" the document data 1734 to the printer), and the Send-URI operation includes only a URI 1735 reference to the document data in the request (the Printer "pulls" 1736 the document data from the referenced location). The last Send- 1737 Document or Send-URI request for a given Job object includes a 1738 "last-document" operation attribute set to 'true' indicating that 1739 this is the last request. 1741 Throughout this model specification, the term "create request" is used 1742 to refer to any of these three operation requests. 1744 A Create-Job operation followed by only one Send-Document operation is 1745 semantically equivalent to a Print-Job operation, however, for 1746 performance reasons, the client SHOULD use the Print-Job operation for 1747 all single document jobs. Also, Print-Job is a REQUIRED operation (all 1748 implementations MUST support it) whereas Create-Job is an OPTIONAL 1749 operation, hence some implementations might not support it. 1751 Job submission time is the point in time when a client issues a create 1752 request. The initial state of every Job object is the 'pending', 1753 'pending-held', or 'processing' state (see section 4.3.7). Issue 13 1755 Expires November 10, 1999 1756 When the Printer object begins processing the print job, the Job 1757 object's state moves to 'processing'. This is known as job processing 1758 time. There are validation checks that must be done at job submission 1759 time and others that must be performed at job processing time. 1761 At job submission time and at the time a Validate-Job operation is 1762 received, the Printer MUST do the following: 1764 1. Process the client supplied attributes and either accept or reject 1765 the request 1766 2. Validate the syntax of and support for the scheme of any client 1767 supplied URI 1769 At job submission time the Printer object MUST validate whether or not 1770 the supplied attributes, attribute syntaxes, and values are supported by 1771 matching them with the Printer object's corresponding "xxx-supported" 1772 attributes. See section 3.1.7 for details. [IPP-IIG] presents 1773 suggested steps for an IPP object to either accept or reject any request 1774 and additional steps for processing create requests. 1776 At job submission time the Printer object NEED NOT perform the 1777 validation checks reserved for job processing time such as: 1779 1. Validating the document data 1780 2. Validating the actual contents of any client supplied URI (resolve 1781 the reference and follow the link to the document data) 1783 At job submission time, these additional job processing time validation 1784 checks are essentially useless, since they require actually parsing and 1785 interpreting the document data, are not guaranteed to be 100% accurate, 1786 and MUST be done, yet again, at job processing time. Also, in the case 1787 of a URI, checking for availability at job submission time does not 1788 guarantee availability at job processing time. In addition, at job 1789 processing time, the Printer object might discover any of the following 1790 conditions that were not detectable at job submission time: 1792 - runtime errors in the document data, 1793 - nested document data that is in an unsupported format, 1794 - the URI reference is no longer valid (i.e., the server hosting the 1795 document might be down), or 1796 - any other job processing error 1798 At job submission time, a Printer object, especially a non-spooling 1799 Printer, MAY accept jobs that it does not have enough space for. In 1800 such a situation, a Printer object MAY stop reading data from a client 1801 for an indefinite period of time. A client MUST be prepared for a write 1802 operation to block for an indefinite period of time (See section 5.1 on 1803 client conformance). 1805 When a Printer object has too little space for starting a new job, it 1806 MAY reject a new create request. In this case, a Printer object MUST 1807 return a response (in reply to the rejected request) with a status-code 1808 of 'server-error-busy' (See section 14.1.5.8) and it MAY close the 1809 connection before receiving all bytes of the operation. When receiving a 1810 'server-error-busy' status-code in an operation response, a client MUST 1812 Expires November 10, 1999 1813 be prepared for the Printer object to close the connection before the 1814 client has sent all of the data (especially for the Print-Job 1815 operation). A client MUST be prepared to keep submitting a create 1816 request until the IPP Printer object accepts the create request. Issue 1817 20 1819 At job processing time, since the Printer object has already responded 1820 with a successful status code in the response to the create request, if 1821 the Printer object detects an error, the Printer object is unable to 1822 inform the end user of the error with an operation status code. In 1823 this case, the Printer, depending on the error, can set the job object's 1824 "job-state", "job-state-reasons", or "job-state-message" attributes to 1825 the appropriate value(s) so that later queries can report the correct 1826 job status. 1828 Note: Asynchronous notification of events is outside the scope of this 1829 IPP/1.1 document. 1831 3.2 Printer Operations 1833 All Printer operations are directed at Printer objects. A client MUST 1834 always supply the "printer-uri" operation attribute in order to identify 1835 the correct target of the operation. 1837 3.2.1 Print-Job Operation 1839 This REQUIRED operation allows a client to submit a print job with only 1840 one document and supply the document data (rather than just a reference 1841 to the data). See Section 15 for the suggested steps for processing 1842 create operations and their Operation and Job Template attributes. 1844 3.2.1.1 Print-Job Request 1846 The following groups of attributes are supplied as part of the Print-Job 1847 Request: 1849 Group 1: Operation Attributes 1851 Natural Language and Character Set: 1852 The "attributes-charset" and "attributes-natural-language" 1853 attributes as described in section 3.1.4.1. The Printer object 1854 MUST copy these values to the corresponding Job Description 1855 attributes described in sections 4.3.17 and 4.3.18. 1857 Target: 1858 The "printer-uri" (uri) operation attribute which is the target for 1859 this operation as described in section 3.1.5. 1861 Requesting User Name: 1862 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 1863 by the client as described in section 8.3. 1865 Expires November 10, 1999 1867 "job-name" (name(MAX)): 1868 The client OPTIONALLY supplies this attribute. The Printer object 1869 MUST support this attribute. It contains the client supplied Job 1870 name. If this attribute is supplied by the client, its value is 1871 used for the "job-name" attribute of the newly created Job object. 1872 The client MAY automatically include any information that will help 1873 the end-user distinguish amongst his/her jobs, such as the name of 1874 the application program along with information from the document, 1875 such as the document name, document subject, or source file name. 1876 If this attribute is not supplied by the client, the Printer 1877 generates a name to use in the "job-name" attribute of the newly 1878 created Job object (see Section 4.3.5). 1880 "ipp-attribute-fidelity" (boolean): 1881 The client OPTIONALLY supplies this attribute. The Printer object 1882 MUST support this attribute. The value 'true' indicates that total 1883 fidelity to client supplied Job Template attributes and values is 1884 required, else the Printer object MUST reject the Print-Job 1885 request. The value 'false' indicates that a reasonable attempt to 1886 print the Job object is acceptable and the Printer object MUST 1887 accept the Print-job request. If not supplied, the Printer object 1888 assumes the value is 'false'. All Printer objects MUST support 1889 both types of job processing. See section 15 for a full 1890 description of "ipp-attribute-fidelity" and its relationship to 1891 other attributes, especially the Printer object's "pdl-override- 1892 supported" attribute. 1894 "document-name" (name(MAX)): 1895 The client OPTIONALLY supplies this attribute. The Printer object 1896 MUST support this attribute. It contains the client supplied 1897 document name. The document name MAY be different than the Job 1898 name. Typically, the client software automatically supplies the 1899 document name on behalf of the end user by using a file name or an 1900 application generated name. If this attribute is supplied, its 1901 value can be used in a manner defined by each implementation. 1902 Examples include: printed along with the Job (job start sheet, page 1903 adornments, etc.), used by accounting or resource tracking 1904 management tools, or even stored along with the document as a 1905 document level attribute. IPP/1.1 does not support the concept of 1906 document level attributes. 1908 "compression" (type3 keyword) 1909 The client OPTIONALLY supplies this attribute. The Printer object 1910 MUST support this attribute and the "compression-supported" 1911 attribute (see section 4.4.32). The client supplied "compression" 1912 operation attribute identifies the compression algorithm used on 1913 the document data. The following cases exist: 1914 a)If the client omits this attribute, the Printer object MUST 1915 assume that the data is not compressed (i.e. the Printer 1916 follows the rules below as if the client supplied the 1917 "compression" attribute with a value of 'none'). 1918 b)If the client supplies this attribute, but the value is not 1919 supported by the Printer object, i.e., the value is not one 1920 of the values of the Printer object's "compression- 1921 supported" attribute, the Printer object MUST reject the 1923 Expires November 10, 1999 1924 request, and return the 'client-error-compression-not- 1925 supported' status code. See section 3.1.7 for returning 1926 unsupported attributes and values. 1927 c)If the client supplies the attribute and the Printer object 1928 supports the attribute value, the Printer object uses the 1929 corresponding decompression algorithm on the document data. 1930 d)If the decompression algorithm fails before the Printer 1931 returns an operation response, the Printer object MUST 1932 reject the request and return the 'client-error- 1933 compression-error' status code. 1934 e)If the decompression algorithm fails after the Printer 1935 returns an operation response, the Printer object MUST 1936 abort the job and add the 'compression-error' value to the 1937 job's "job-state-reasons" attribute. 1938 f)If the decompression algorithm succeeds, the document data 1939 MUST then have the format specified by the job's "document- 1940 format" attribute (q.v.). Issue 28 1942 "document-format" (mimeMediaType) : 1943 The client OPTIONALLY supplies this attribute. The Printer object 1944 MUST support this attribute. The value of this attribute 1945 identifies the format of the supplied document data. The following 1946 cases exist: 1947 a)If the client does not supply this attribute, the Printer 1948 object assumes that the document data is in the format 1949 defined by the Printer object's "document-format-default" 1950 attribute. (i.e. the Printer follows the rules below as if 1951 the client supplied the "document-format" attribute with a 1952 value equal to the printer's default value). 1953 b)If the client supplies this attribute, but the value is not 1954 supported by the Printer object, i.e., the value is not one 1955 of the values of the Printer object's "document-format- 1956 supported" attribute, the Printer object MUST reject the 1957 request and return the 'client-error-document-format-not- 1958 supported' status code. 1959 c)If the client supplies this attribute and its value is 1960 'application/octet-stream' (i.e. to be auto-sensed, see 1961 Section 4.1.9.1), and the format is not one of the 1962 document-formats that the Printer can auto-sense, and this 1963 check occurs before the Printer returns an operation 1964 response, then the Printer MUST reject the request and 1965 return the 'client-error-document-format-not-supported' 1966 status code. 1967 d)If the client supplies this attribute, and the value is 1968 supported by the Printer object, the document data, the 1969 Printer is capable of interpreting the document data. 1970 e)If interpreting of the document data fails before the 1971 Printer returns an operation response, the Printer object 1972 MUST reject the request and return the 'client-error- 1973 document-format-error' status code. 1974 f)If interpreting of the document data fails after the 1975 Printer returns an operation response, the Printer object 1976 MUST abort the job and add the 'document-format-error' 1977 value to the job's "job-state-reasons" attribute. Issue 11 1979 Expires November 10, 1999 1981 "document-natural-language" (naturalLanguage): 1982 The client OPTIONALLY supplies this attribute. The Printer object 1983 OPTIONALLY supports this attribute. This attribute specifies the 1984 natural language of the document for those document-formats that 1985 require a specification of the natural language in order to image 1986 the document unambiguously. There are no particular values required 1987 for the Printer object to support. 1989 "job-k-octets" (integer(0:MAX)) 1990 The client OPTIONALLY supplies this attribute. The Printer object 1991 OPTIONALLY supports this attribute and the "job-k-octets-supported" 1992 attribute (see section 4.4.33). The client supplied "job-k-octets" 1993 operation attribute identifies the total size of the document(s) in 1994 K octets being submitted (see section 4.3.15.1 for the complete 1995 semantics). If the client supplies the attribute and the Printer 1996 object supports the attribute, the value of the attribute is used 1997 to populate the Job object's "job-k-octets" Job Description 1998 attribute. 2000 Note: For this attribute and the following two attributes ("job- 2001 impressions", and "job-media-sheets"), if the client supplies the 2002 attribute, but the Printer object does not support the attribute, 2003 the Printer object ignores the client-supplied value. If the 2004 client supplies the attribute and the Printer supports the 2005 attribute, and the value is within the range of the corresponding 2006 Printer object's "xxx-supported" attribute, the Printer object MUST 2007 use the value to populate the Job object's "xxx" attribute. If the 2008 client supplies the attribute and the Printer supports the 2009 attribute, but the value is outside the range of the corresponding 2010 Printer object's "xxx-supported" attribute, the Printer object MUST 2011 copy the attribute and its value to the Unsupported Attributes 2012 response group, reject the request, and return the 'client-error- 2013 attributes-or-values-not-supported' status code. If the client 2014 does not supply the attribute, the Printer object MAY choose to 2015 populate the corresponding Job object attribute depending on 2016 whether the Printer object supports the attribute and is able to 2017 calculate or discern the correct value. 2019 "job-impressions" (integer(0:MAX)) 2020 The client OPTIONALLY supplies this attribute. The Printer object 2021 OPTIONALLY supports this attribute and the "job-impressions- 2022 supported" attribute (see section 4.4.34). The client supplied 2023 "job-impressions" operation attribute identifies the total size in 2024 number of impressions of the document(s) being submitted (see 2025 section 4.3.15.2 for the complete semantics). 2027 See note under "job-k-octets". 2029 "job-media-sheets" (integer(0:MAX)) 2030 The client OPTIONALLY supplies this attribute. The Printer object 2031 OPTIONALLY supports this attribute and the "job-media-sheets- 2032 supported" attribute (see section 4.4.35). The client supplied 2033 "job-media-sheets" operation attribute identifies the total number 2035 Expires November 10, 1999 2036 of media sheets to be produced for this job (see section 4.3.15.3 2037 for the complete semantics). 2039 See note under "job-k-octets". 2041 Group 2: Job Template Attributes 2043 The client OPTIONALLY supplies a set of Job Template attributes as 2044 defined in section 4.2. If the client is not supplying any Job 2045 Template attributes in the request, the client SHOULD omit Group 2 2046 rather than sending an empty group. However, a Printer object MUST 2047 be able to accept an empty group. 2049 Group 3: Document Content 2051 The client MUST supply the document data to be processed. 2053 Note: In addition to the MANDATORY parameters required for every 2054 operation request, the simplest Print-Job Request consists of just the 2055 "attributes-charset" and "attributes-natural-language" operation 2056 attributes; the "printer-uri" target operation attribute; the Document 2057 Content and nothing else. In this simple case, the Printer object: 2059 - creates a new Job object (the Job object contains a single 2060 document), 2061 - stores a generated Job name in the "job-name" attribute in the 2062 natural language and charset requested (see Section 3.1.4.1) (if 2063 those are supported, otherwise using the Printer object's default 2064 natural language and charset), and 2065 - at job processing time, uses its corresponding default value 2066 attributes for the supported Job Template attributes that were not 2067 supplied by the client as IPP attribute or embedded instructions in 2068 the document data. 2070 3.2.1.2 Print-Job Response 2072 The Printer object MUST return to the client the following sets of 2073 attributes as part of the Print-Job Response: 2075 Group 1: Operation Attributes 2077 Status Message: 2078 In addition to the REQUIRED status code returned in every response, 2079 the response OPTIONALLY includes a "status-message" (text) 2080 operation attribute as described in sections 13 and 3.1.6. If the 2081 client supplies unsupported or conflicting Job Template attributes 2082 or values, the Printer object MUST reject or accept the Print-Job 2083 request depending on the whether the client supplied a 'true' or 2084 'false' value for the "ipp-attribute-fidelity" operation attribute. 2085 See the Implementer's Guide [IPP-IIG] for a complete description of 2086 the suggested steps for processing a create request. 2088 Expires November 10, 1999 2090 Natural Language and Character Set: 2091 The "attributes-charset" and "attributes-natural-language" 2092 attributes as described in section 3.1.4.2. 2094 Group 2: Unsupported Attributes 2096 See section 3.1.7 for details on returning Unsupported Attributes. 2098 The value of the "ipp-attribute-fidelity" supplied by the client 2099 does not affect what attributes the Printer object returns in this 2100 group. The value of "ipp-attribute-fidelity" only affects whether 2101 the Print-Job operation is accepted or rejected. If the job is 2102 accepted, the client may query the job using the Get-Job-Attributes 2103 operation requesting the unsupported attributes that were returned 2104 in the create response to see which attributes were ignored (not 2105 stored on the Job object) and which attributes were stored with 2106 other (substituted) values. 2108 Group 3: Job Object Attributes 2110 "job-uri" (uri): 2111 The Printer object MUST return the Job object's URI by returning 2112 the contents of the REQUIRED "job-uri" Job object attribute. The 2113 client uses the Job object's URI when directing operations at the 2114 Job object. The Printer object always uses its configured security 2115 policy when creating the new URI. However, if the Printer object 2116 supports more than one URI, the Printer object also uses 2117 information about which URI was used in the Print-Job Request to 2118 generated the new URI so that the new URI references the correct 2119 access channel. In other words, if the Print-Job Request comes in 2120 over a secure channel, the Printer object MUST generate a Job URI 2121 that uses the secure channel as well. 2123 "job-id" (integer(1:MAX)): 2124 The Printer object MUST return the Job object's Job ID by returning 2125 the REQUIRED "job-id" Job object attribute. The client uses this 2126 "job-id" attribute in conjunction with the "printer-uri" attribute 2127 used in the Print-Job Request when directing Job operations at the 2128 Printer object. 2130 "job-state": 2131 The Printer object MUST return the Job object's REQUIRED "job- 2132 state" attribute. The value of this attribute (along with the value 2133 of the next attribute: "job-state-reasons") is taken from a 2134 "snapshot" of the new Job object at some meaningful point in time 2135 (implementation defined) between when the Printer object receives 2136 the Print-Job Request and when the Printer object returns the 2137 response. 2139 "job-state-reasons": 2140 The Printer object MUST return the Job object's REQUIRED "job- 2141 state-reasons" attribute. . Issue 30 2143 Expires November 10, 1999 2145 "job-state-message": 2146 The Printer object OPTIONALLY returns the Job object's OPTIONAL 2147 "job-state-message" attribute. If the Printer object supports this 2148 attribute then it MUST be returned in the response. If this 2149 attribute is not returned in the response, the client can assume 2150 that the "job-state-message" attribute is not supported and will 2151 not be returned in a subsequent Job object query. 2153 "number-of-intervening-jobs": 2154 The Printer object OPTIONALLY returns the Job object's OPTIONAL 2155 "number-of-intervening-jobs" attribute. If the Printer object 2156 supports this attribute then it MUST be returned in the response. 2157 If this attribute is not returned in the response, the client can 2158 assume that the "number-of-intervening-jobs" attribute is not 2159 supported and will not be returned in a subsequent Job object 2160 query. 2162 Note: Since any printer state information which affects a job's 2163 state is reflected in the "job-state" and "job-state-reasons" 2164 attributes, it is sufficient to return only these attributes and no 2165 specific printer status attributes. 2167 Note: In addition to the MANDATORY parameters required for every 2168 operation response, the simplest response consists of the just the 2169 "attributes-charset" and "attributes-natural-language" operation 2170 attributes and the "job-uri", "job-id", and "job-state" Job Object 2171 Attributes. In this simplest case, the status code is 'successful-ok' 2172 and there is no "status-message" operation attribute. 2174 3.2.2 Print-URI Operation 2176 This OPTIONAL operation is identical to the Print-Job operation (section 2177 3.2.1) except that a client supplies a URI reference to the document 2178 data using the "document-uri" (uri) operation attribute (in Group 1) 2179 rather than including the document data itself. Before returning the 2180 response, the Printer MUST validate that the Printer supports the 2181 retrieval method (e.g., http, ftp, etc.) implied by the URI, and MUST 2182 check for valid URI syntax. If the client-supplied URI scheme is not 2183 supported, i.e. the value is not in the Printer object's "referenced- 2184 uri-scheme-supported" attribute, the Printer object MUST reject the 2185 request and return the 'client-error-uri-scheme-not-supported' status 2186 code. 2188 The IPP Printer MAY validate the accessibility of the document as part 2189 of the operation or subsequently. If the Printer determines an 2190 accessibility problem before returning an operation response, it rejects 2191 the request and returns the 'client-error-document-access-error' status 2192 code. If the Printer determines this accessibility problem after 2193 accepting the request and returning an operation response with one of 2194 the successful status codes, the Printer adds the 'document-access- 2195 error' value to the job's "job-state-reasons" attribute. See The 2196 Implementer's Guide [IPP-IIG] for suggested additional checks. Issue 2197 35 2199 Expires November 10, 1999 2200 If the Printer object supports this operation, it MUST support the 2201 "reference-uri-schemes-supported" Printer attribute (see section 2202 4.4.27). 2204 It is up to the IPP object to interpret the URI and subsequently "pull" 2205 the document from the source referenced by the URI string. 2207 3.2.3 Validate-Job Operation 2209 This REQUIRED operation is similar to the Print-Job operation (section 2210 3.2.1) except that a client supplies no document data and the Printer 2211 allocates no resources (i.e., it does not create a new Job object). 2212 This operation is used only to verify capabilities of a printer object 2213 against whatever attributes are supplied by the client in the Validate- 2214 Job request. By using the Validate-Job operation a client can validate 2215 that an identical Print-Job operation (with the document data) would be 2216 accepted. The Validate-Job operation also performs the same security 2217 negotiation as the Print-Job operation (see section 8), so that a client 2218 can check that the client and Printer object security requirements can 2219 be met before performing a Print-Job operation. 2221 Note: The Validate-Job operation does not accept a "document-uri" 2222 attribute in order to allow a client to check that the same Print-URI 2223 operation will be accepted, since the client doesn't send the data with 2224 the Print-URI operation. The client SHOULD just issue the Print-URI 2225 request. 2227 The Printer object returns the same status codes, Operation Attributes 2228 (Group 1) and Unsupported Attributes (Group 2) as the Print-Job 2229 operation. However, no Job Object Attributes (Group 3) are returned, 2230 since no Job object is created. 2232 3.2.4 Create-Job Operation 2234 This OPTIONAL operation is similar to the Print-Job operation (section 2235 3.2.1) except that in the Create-Job request, a client does not supply 2236 document data or any reference to document data. Also, the client does 2237 not supply any of the "document-name", "document-format", "compression", 2238 or "document-natural-language" operation attributes. This operation is 2239 followed by one or more Send-Document or Send-URI operations. In each 2240 of those operation requests, the client OPTIONALLY supplies the 2241 "document-name", "document-format", and "document-natural-language" 2242 attributes for each document in the multi-document Job object. 2244 If a Printer object supports the Create-Job operation, it MUST also 2245 support the Send-Document operation and also MAY support the Send-URI 2246 operation. 2248 If the Printer object supports this operation, it MUST support the 2249 "multiple-operation-time-out" Printer attribute (see section 4.4.31). 2251 If the Printer object supports this operation, then it MUST support the 2252 "multiple-document-jobs-supported" Printer Description attribute and 2253 indicate whether or not it supports multiple-document jobs. Issue 34 2255 Expires November 10, 1999 2256 If the Printer object supports this operation and supports multiple 2257 documents in a job, then it MUST support the "multiple-document- 2258 handling" Job Template job attribute with at least one value (see 2259 section 4.2.4) and the associated "multiple-document-handling-default" 2260 and "multiple-document-handling-supported" Job Template Printer 2261 attributes. Issue 34 2263 After the Create-Job operation has completed, the value of the "job- 2264 state" attribute is similar to the "job-state" after a Print-Job, even 2265 though no document-data has arrived. A Printer MAY set the 'job-data- 2266 insufficient' value of the job's "job-state-reason" attribute to 2267 indicate that processing cannot begin until sufficient data has arrived 2268 and set the "job-state" to either 'pending' or 'pending-held'. A non- 2269 spooling printer that doesn't implement the 'pending' job state may even 2270 set the "job-state" to 'processing', even though there is not yet any 2271 data to process. Issue 13 2273 3.2.5 Get-Printer-Attributes Operation 2275 This REQUIRED operation allows a client to request the values of the 2276 attributes of a Printer object. In the request, the client supplies 2277 the set of Printer attribute names and/or attribute group names in which 2278 the requester is interested. In the response, the Printer object 2279 returns a corresponding attribute set with the appropriate attribute 2280 values filled in. 2282 For Printer objects, the possible names of attribute groups are: 2284 - 'job-template': the subset of the Job Template attributes that 2285 apply to a Printer object (the last two columns of the table in 2286 Section 4.2) that the implementation supports for Printer objects. 2287 - 'printer-description': the subset of the attributes specified in 2288 Section 4.4 that the implementation supports for Printer objects. 2289 - 'all': the special group 'all' that includes all attributes that 2290 the implementation supports for Printer objects. Issue 23 2292 Since a client MAY request specific attributes or named groups, there is 2293 a potential that there is some overlap. For example, if a client 2294 requests, 'printer-name' and 'all', the client is actually requesting 2295 the "printer-name" attribute twice: once by naming it explicitly, and 2296 once by inclusion in the 'all' group. In such cases, the Printer object 2297 NEED NOT return each attribute only once in the response even if it is 2298 requested multiple times. The client SHOULD NOT request the same 2299 attribute in multiple ways. 2301 It is NOT REQUIRED that a Printer object support all attributes 2302 belonging to a group (since some attributes are OPTIONAL). However, it 2303 is REQUIRED that each Printer object support all group names. 2305 3.2.5.1 Get-Printer-Attributes Request 2307 The following sets of attributes are part of the Get-Printer-Attributes 2308 Request: 2310 Expires November 10, 1999 2311 Group 1: Operation Attributes 2313 Natural Language and Character Set: 2314 The "attributes-charset" and "attributes-natural-language" 2315 attributes as described in section 3.1.4.1. 2317 Target: 2318 The "printer-uri" (uri) operation attribute which is the target for 2319 this operation as described in section 3.1.5. 2321 Requesting User Name: 2322 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2323 by the client as described in section 8.3. 2325 "requested-attributes" (1setOf keyword) : 2326 The client OPTIONALLY supplies a set of attribute names and/or 2327 attribute group names in whose values the requester is interested. 2328 The Printer object MUST support this attribute. If the client 2329 omits this attribute, the Printer MUST respond as if this attribute 2330 had been supplied with a value of 'all'. 2332 "document-format" (mimeMediaType) : 2333 The client OPTIONALLY supplies this attribute. The Printer object 2334 MUST support this attribute. This attribute is useful for a 2335 Printer object to determine the set of supported attribute values 2336 that relate to the requested document format. The Printer object 2337 MUST return the attributes and values that it uses to validate a 2338 job on a create or Validate-Job operation in which this document 2339 format is supplied. The Printer object SHOULD return only (1) those 2340 attributes that are supported for the specified format and (2) the 2341 attribute values that are supported for the specified document 2342 format. By specifying the document format, the client can get the 2343 Printer object to eliminate the attributes and values that are not 2344 supported for a specific document format. For example, a Printer 2345 object might have multiple interpreters to support both 2346 'application/postscript' (for PostScript) and 'text/plain' (for 2347 text) documents. However, for only one of those interpreters might 2348 the Printer object be able to support "number-up" with values of 2349 '1', '2', and '4'. For the other interpreter it might be able to 2350 only support "number-up" with a value of '1'. Thus a client can use 2351 the Get-Printer-Attributes operation to obtain the attributes and 2352 values that will be used to accept/reject a create job operation. 2354 If the Printer object does not distinguish between different sets 2355 of supported values for each different document format when 2356 validating jobs in the create and Validate-Job operations, it MUST 2357 NOT distinguish between different document formats in the Get- 2358 Printer-Attributes operation. If the Printer object does 2359 distinguish between different sets of supported values for each 2360 different document format specified by the client, this 2361 specialization applies only to the following Printer object 2362 attributes: 2364 Expires November 10, 1999 2365 - Printer attributes that are Job Template attributes ("xxx- 2366 default" "xxx-supported", and "xxx-ready" in the Table in 2367 Section 4.2), 2368 - "pdl-override-supported", 2369 - "compression-supported", 2370 - "job-k-octets-supported", 2371 - "job-impressions-supported, 2372 - "job-media-sheets-supported" 2373 - "printer-driver-installer", 2374 - "color-supported", and 2375 - "reference-uri-schemes-supported" 2377 The values of all other Printer object attributes (including 2378 "document-format-supported") remain invariant with respect to the 2379 client supplied document format (except for new Printer description 2380 attribute as registered according to section 6.2). 2382 If the client omits this "document-format" operation attribute, the 2383 Printer object MUST respond as if the attribute had been supplied 2384 with the value of the Printer object's "document-format-default" 2385 attribute. It is recommended that the client always supply a value 2386 for "document-format", since the Printer object's "document-format- 2387 default" may be 'application/octet-stream', in which case the 2388 returned attributes and values are for the union of the document 2389 formats that the Printer can automatically sense. For more 2390 details, see the description of the 'mimeMediaType' attribute 2391 syntax in section 4.1.9. 2393 If the client supplies a value for the "document-format" Operation 2394 attribute that is not supported by the Printer, i.e., is not among 2395 the values of the Printer object's "document-format-supported" 2396 attribute, the Printer object MUST reject the operation and return 2397 the 'client-error-document-format-not-supported' status code. 2399 3.2.5.2 Get-Printer-Attributes Response 2401 The Printer object returns the following sets of attributes as part of 2402 the Get-Printer-Attributes Response: 2404 Group 1: Operation Attributes 2406 Status Message: 2407 In addition to the REQUIRED status code returned in every response, 2408 the response OPTIONALLY includes a "status-message" (text) 2409 operation attribute as described in sections 13 and 3.1.6. 2411 Natural Language and Character Set: 2412 The "attributes-charset" and "attributes-natural-language" 2413 attributes as described in section 3.1.4.2. 2415 Group 2: Unsupported Attributes 2417 See section 3.1.7 for details on returning Unsupported Attributes. 2419 Expires November 10, 1999 2420 The response NEED NOT contain the "requested-attributes" operation 2421 attribute with any supplied values (attribute keywords) that were 2422 requested by the client but are not supported by the IPP object. If 2423 the Printer does include unsupported attributes referenced in 2424 "requested-attributes" and such attributes include group names, 2425 such as 'all', the unsupported attributes MUST NOT include 2426 attributes described in the standard but not supported by the 2427 implementation. Issue 23 2429 Group 3: Printer Object Attributes 2431 This is the set of requested attributes and their current values. 2432 The Printer object ignores (does not respond with) any requested 2433 attribute which is not supported. The Printer object MAY respond 2434 with a subset of the supported attributes and values, depending on 2435 the security policy in force. However, the Printer object MUST 2436 respond with the 'unknown' value for any supported attribute 2437 (including all REQUIRED attributes) for which the Printer object 2438 does not know the value. Also the Printer object MUST respond with 2439 the 'no-value' for any supported attribute (including all REQUIRED 2440 attributes) for which the system administrator has not configured a 2441 value. See the description of the "out-of-band" values in the 2442 beginning of Section 4.1. 2444 3.2.6 Get-Jobs Operation 2446 This REQUIRED operation allows a client to retrieve the list of Job 2447 objects belonging to the target Printer object. The client may also 2448 supply a list of Job attribute names and/or attribute group names. A 2449 group of Job object attributes will be returned for each Job object that 2450 is returned. 2452 This operation is similar to the Get-Job-Attributes operation, except 2453 that this Get-Jobs operation returns attributes from possibly more than 2454 one object (see the description of Job attribute group names in section 2455 3.3.4). 2457 3.2.6.1 Get-Jobs Request 2459 The client submits the Get-Jobs request to a Printer object. 2461 The following groups of attributes are part of the Get-Jobs Request: 2463 Group 1: Operation Attributes 2465 Natural Language and Character Set: 2466 The "attributes-charset" and "attributes-natural-language" 2467 attributes as described in section 3.1.4.1. 2469 Target: 2470 The "printer-uri" (uri) operation attribute which is the target for 2471 this operation as described in section 3.1.5. 2473 Expires November 10, 1999 2475 Requesting User Name: 2476 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2477 by the client as described in section 8.3. 2479 "limit" (integer(1:MAX)): 2480 The client OPTIONALLY supplies this attribute. The Printer object 2481 MUST support this attribute. It is an integer value that determines 2482 the maximum number of jobs that a client will receive from the 2483 Printer even if "which-jobs" or "my-jobs" constrain which jobs are 2484 returned. The limit is a "stateless limit" in that if the value 2485 supplied by the client is 'N', then only the first 'N' jobs are 2486 returned in the Get-Jobs Response. There is no mechanism to allow 2487 for the next 'M' jobs after the first 'N' jobs. If the client does 2488 not supply this attribute, the Printer object responds with all 2489 applicable jobs. Issue 8 2491 "requested-attributes" (1setOf keyword): 2492 The client OPTIONALLY supplies this attribute. The Printer object 2493 MUST support this attribute. It is a set of Job attribute names 2494 and/or attribute groups names in whose values the requester is 2495 interested. This set of attributes is returned for each Job object 2496 that is returned. The allowed attribute group names are the same 2497 as those defined in the Get-Job-Attributes operation in section 2498 3.3.4. If the client does not supply this attribute, the Printer 2499 MUST respond as if the client had supplied this attribute with two 2500 values: 'job-uri' and 'job-id'. 2502 "which-jobs" (keyword): 2503 The client OPTIONALLY supplies this attribute. The Printer object 2504 MUST support this attribute. It indicates which Job objects MUST 2505 be returned by the Printer object. The values for this attribute 2506 are: 2508 'completed': This includes any Job object whose state is 2509 'completed', 'canceled', or 'aborted'. 2510 'not-completed': This includes any Job object whose state is 2511 'pending', 'processing', 'processing-stopped', or 'pending- 2512 held'. 2514 A Printer object MUST support both values. However, if the 2515 implementation does not keep jobs in the 'completed', 'canceled', 2516 and 'aborted' states, then it returns no jobs when the 'completed' 2517 value is supplied. 2519 If a client supplies some other value, the Printer object MUST copy 2520 the attribute and the unsupported value to the Unsupported 2521 Attributes response group, reject the request, and return the 2522 'client-error-attributes-or-values-not-supported' status code. 2524 If the client does not supply this attribute, the Printer object 2525 MUST respond as if the client had supplied the attribute with a 2526 value of 'not-completed'. 2528 Expires November 10, 1999 2530 "my-jobs" (boolean): 2531 The client OPTIONALLY supplies this attribute. The Printer object 2532 MUST support this attribute. It indicates whether jobs from all 2533 users or just the jobs submitted by the requesting user of this 2534 request MUST be returned by the Printer object. If the client does 2535 not supply this attribute, the Printer object MUST respond as if 2536 the client had supplied the attribute with a value of 'false', 2537 i.e., jobs from all users. The means for authenticating the 2538 requesting user and matching the jobs is described in section 8. 2540 3.2.6.2 Get-Jobs Response 2542 The Printer object returns all of the Job objects up to the number 2543 specified by the "limit" attribute that match the criteria as defined by 2544 the attribute values supplied by the client in the request. It is 2545 possible that no Job objects are returned since there may literally be 2546 no Job objects at the Printer, or there may be no Job objects that match 2547 the criteria supplied by the client. If the client requests any Job 2548 attributes at all, there is a set of Job Object Attributes returned for 2549 each Job object. 2551 It is not an error for the Printer to return 0 jobs. If the response 2552 returns 0 jobs because there are no jobs matching the criteria, and the 2553 request would have returned 1 or more jobs with a status code of 2554 'successful-ok' if there had been jobs matching the criteria, then the 2555 status code for 0 jobs MUST be 'successful-ok'. Issue 24 2557 Group 1: Operation Attributes 2559 Status Message: 2560 In addition to the REQUIRED status code returned in every response, 2561 the response OPTIONALLY includes a "status-message" (text) 2562 operation attribute as described in sections 13 and 3.1.6. 2564 Natural Language and Character Set: 2565 The "attributes-charset" and "attributes-natural-language" 2566 attributes as described in section 3.1.4.2. 2568 Group 2: Unsupported Attributes 2570 See section 3.1.7 for details on returning Unsupported Attributes. 2572 The response NEED NOT contain the "requested-attributes" operation 2573 attribute with any supplied values (attribute keywords) that were 2574 requested by the client but are not supported by the IPP object. If 2575 the Printer does include unsupported attributes referenced in 2576 "requested-attributes" and such attributes include group names, 2577 such as 'all', the unsupported attributes MUST NOT include 2578 attributes described in the standard but not supported by the 2579 implementation. Issue 23 2581 Groups 3 to N: Job Object Attributes 2583 The Printer object responds with one set of Job Object Attributes 2584 for each returned Job object. The Printer object ignores (does not 2586 Expires November 10, 1999 2587 respond with) any requested attribute or value which is not 2588 supported or which is restricted by the security policy in force, 2589 including whether the requesting user is the user that submitted 2590 the job (job originating user) or not (see section 8). However, 2591 the Printer object MUST respond with the 'unknown' value for any 2592 supported attribute (including all REQUIRED attributes) for which 2593 the Printer object does not know the value, unless it would violate 2594 the security policy. See the description of the "out-of-band" 2595 values in the beginning of Section 4.1. 2597 Jobs are returned in the following order: 2599 - If the client requests all 'completed' Jobs (Jobs in the 2600 'completed', 'aborted', or 'canceled' states), then the Jobs 2601 are returned newest to oldest (with respect to actual 2602 completion time) 2603 - If the client requests all 'not-completed' Jobs (Jobs in the 2604 'pending', 'processing', 'pending-held', and 'processing- 2605 stopped' states), then Jobs are returned in relative 2606 chronological order of expected time to complete (based on 2607 whatever scheduling algorithm is configured for the Printer 2608 object). 2610 3.2.7 Pause-Printer Operation 2612 This OPTIONAL operation allows a client to stop the Printer object from 2613 scheduling jobs on all its devices. Depending on implementation, the 2614 Pause-Printer operation MAY also stop the Printer from processing the 2615 current job or jobs. Any job that is currently being printed is either 2616 stopped as soon as the implementation permits or is completed, depending 2617 on implementation. The Printer object MUST still accept create 2618 operations to create new jobs, but MUST prevent any jobs from entering 2619 the 'processing' state. 2621 If the Pause-Printer operation is supported, then the Resume-Printer 2622 operation MUST be supported, and vice-versa. 2624 The IPP Printer stops the current job(s) on its device(s) that were in 2625 the 'processing' or 'processing-stopped' states as soon as the 2626 implementation permits. If the implementation Issue 30 will take 2627 appreciable time to stop, the IPP Printer adds the 'moving-to-paused' 2628 value to the Printer object's "printer-state-reasons" attribute (see 2629 section 4.4.12). When the device(s) have all stopped, the IPP Printer 2630 transitions the Printer object to the 'stopped' state, removes the 2631 'moving-to-paused' value, if present, and adds the 'paused' value to the 2632 Printer object's "printer-state-reasons" attribute. 2634 When the current job(s) complete that were in the 'processing' state, 2635 the IPP Printer transitions them to the 'completed' state. When the 2636 current job(s) stop in mid processing that were in the 'processing' 2637 state, the IPP Printer transitions them to the 'processing-stopped' 2638 state and Issue 30 adds the 'printer-stopped' value to the job's "job- 2639 state-reasons" attribute. 2641 Expires November 10, 1999 2642 Note: for any jobs that are 'pending' or 'pending-held', the 'printer- 2643 stopped' value of the jobs' "job-state-reasons" attribute also applies. 2644 However, the IPP Printer NEED NOT update those jobs' "job-state-reasons" 2645 attributes and only need return the 'printer-stopped' value when those 2646 jobs are queried (so-called "lazy evaluation"). 2648 Whether the Pause-Printer operation affects jobs that were submitted to 2649 the device from other sources than the IPP Printer object in the same 2650 way that the Pause-Printer operation affects jobs that were submitted to 2651 the IPP Printer object using IPP, depends on implementation, i.e., on 2652 whether the IPP protocol is being used as a universal management 2653 protocol or just to manage IPP jobs, respectively. 2655 The IPP Printer MUST accept the request in any state and transition the 2656 Printer to the indicated new "printer-state" before returning as 2657 follows: 2659 Current New "printer IPP Printer's response status 2660 "printer- "printer- -state- code and action: 2661 state" state" reasons" 2663 'idle' 'stopped' 'paused' 'successful-ok' 2665 'processin 'processin 'moving- OPTION 1: 'successful-ok'; 2666 g' g' to- Later, when all output has 2667 paused' stopped, the "printer-state" 2668 becomes 'stopped', and the 2669 'paused' value replaces the 2670 'moving-to-paused' value in the 2671 "printer-state-reasons" 2672 attribute 2674 'processin 'stopped' 'paused' OPTION 2: 'successful-ok'; 2675 g' all device output stopped 2676 immediately 2678 'stopped' 'stopped' 'paused' 'successful-ok' 2680 Access Rights: The authenticated user (see section 8.3) performing this 2681 operation must be an operator or administrator of the Printer object 2682 (see Sections 1 and 8.5). Otherwise, the IPP Printer MUST reject the 2683 operation and return: 'client-error-forbidden', 'client-error-not- 2684 authenticated', or 'client-error-not-authorized' as appropriate. 2686 3.2.7.1 Pause-Printer Request 2688 The following groups of attributes are part of the Pause-Printer 2689 Request: 2691 Group 1: Operation Attributes 2693 Natural Language and Character Set: 2694 The "attributes-charset" and "attributes-natural-language" 2695 attributes as described in section 3.1.4.1. 2697 Target: 2698 The "printer-uri" (uri) operation attribute which is the target for 2699 this operation as described in section 3.1.5. 2701 Expires November 10, 1999 2703 Requesting User Name: 2704 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2705 by the client as described in section 8.3. 2707 3.2.7.2 Pause-Printer Response 2709 The following groups of attributes are part of the Pause-Printer 2710 Response: 2712 Group 1: Operation Attributes 2714 Status Message: 2715 In addition to the REQUIRED status code returned in every response, 2716 the response OPTIONALLY includes a "status-message" (text) 2717 operation attribute as described in sections 13 and 3.1.6. 2719 Natural Language and Character Set: 2720 The "attributes-charset" and "attributes-natural-language" 2721 attributes as described in section 3.1.4.2. 2723 Group 2: Unsupported Attributes 2725 See section 3.1.7 for details on returning Unsupported Attributes. 2727 3.2.8 Resume-Printer Operation 2729 This operation allows a client to resume the Printer object scheduling 2730 jobs on all its devices. The Printer object Issue 30 MUST remove the 2731 'paused' and 'moving-to-paused' values from the Printer object's 2732 "printer-state-reasons" attribute, if present. If there are no other 2733 reasons to keep a device paused (such as media-jam), the IPP Printer 2734 transitions itself to the 'processing' or 'idle' states, depending on 2735 whether there are jobs to be processed or not, respectively, and the 2736 device(s) resume processing jobs. 2738 If the Pause-Printer operation is supported, then the Resume-Printer 2739 operation MUST be supported, and vice-versa. 2741 The IPP Printer removes the 'printer-stopped' value from any job's "job- 2742 state-reasons" attributes contained in that Printer. 2744 The IPP Printer MUST accept the request in any state, transition the 2745 Printer object to the indicated new state as follows: 2747 Current New "printer- IPP Printer's response status code 2748 "printer- state" and action: 2749 state" 2751 'idle' 'idle' 'successful-ok' 2753 'processing 'processing' 'successful-ok' 2754 ' 2756 'stopped' 'processing' 'successful-ok'; 2757 when there are jobs to be 2758 processed 2760 'stopped' 'idle' 'successful-ok'; 2762 Expires November 10, 1999 2763 Current New "printer- IPP Printer's response status code 2764 "printer- state" and action: 2765 state" 2767 when there are no jobs to be 2768 processed. 2770 Access Rights: The authenticated user (see section 8.3) performing this 2771 operation must be an operator or administrator of the Printer object 2772 (see Sections 1 and 8.5). Otherwise, the IPP Printer MUST reject the 2773 operation and return: 'client-error-forbidden', 'client-error-not- 2774 authenticated', or 'client-error-not-authorized' as appropriate. 2776 The Resume-Printer Request and Resume-Printer Response have the same 2777 attribute groups and attributes as the Pause-Printer operation (see 2778 sections 3.2.7.1 and 3.2.7.2). 2780 3.2.9 Purge-Jobs Operation 2782 This OPTIONAL operation allows a client to remove all jobs from an IPP 2783 Printer object, regardless of their job states, including jobs in the 2784 Printer object's Job History (see Section 4.3.7.1). After a Purge-Jobs 2785 operation has been performed, a Printer object MUST return no jobs in 2786 subsequent Get-Job-Attributes and Get-Jobs responses (until new jobs are 2787 submitted). 2789 Whether the Purge-Jobs (and Get-Jobs) operation affects jobs that were 2790 submitted to the device from other sources than the IPP Printer object 2791 in the same way that the Purge-Jobs operation affects jobs that were 2792 submitted to the IPP Printer object using IPP, depends on 2793 implementation, i.e., on whether the IPP protocol is being used as a 2794 universal management protocol or just to manage IPP jobs, respectively. 2796 Note: if an operator wants to cancel all jobs without clearing out the 2797 Job History, the operator uses the Cancel-Job operation on each job 2798 instead of using the Purge-Job operation. 2800 The Printer object MUST accept this operation in any state and 2801 transition the Printer object to the 'idle' state. 2803 Access Rights: The authenticated user (see section 8.3) performing this 2804 operation must be an operator or administrator of the Printer object 2805 (see Sections 1 and 8.5). Otherwise, the IPP object MUST reject the 2806 operation and return: client-error-forbidden, client-error-not- 2807 authenticated, and client-error-not-authorized as appropriate. 2809 The Purge-Jobs Request and Purge-Jobs Response have the same attribute 2810 groups and attributes as the Pause-Printer operation (see sections 2811 3.2.7.1 and 3.2.7.2). 2813 3.3 Job Operations 2815 All Job operations are directed at Job objects. A client MUST always 2816 supply some means of identifying the Job object in order to identify the 2818 Expires November 10, 1999 2819 correct target of the operation. That job identification MAY either be 2820 a single Job URI or a combination of a Printer URI with a Job ID. The 2821 IPP object implementation MUST support both forms of identification for 2822 every job. 2824 3.3.1 Send-Document Operation 2826 This OPTIONAL operation allows a client to create a multi-document Job 2827 object that is initially "empty" (contains no documents). In the 2828 Create-Job response, the Printer object returns the Job object's URI 2829 (the "job-uri" attribute) and the Job object's 32-bit identifier (the 2830 "job-id" attribute). For each new document that the client desires to 2831 add, the client uses a Send-Document operation. Each Send-Document 2832 Request contains the entire stream of document data for one document. 2834 If the Printer supports this operation but does not support multiple 2835 documents per job, the Printer MUST reject subsequent Send-Document 2836 operations supplied with data and return the 'server-error-multiple- 2837 document-jobs-not-supported'. However, the Printer MUST accept the 2838 first document with a 'true' or 'false' value for the "last-document" 2839 operation attribute (see below), so that clients MAY always submit one 2840 document jobs with a 'false' value for "last-document" in the first 2841 Send-Document and a 'true' for "last-document" in the second Send- 2842 Document (with no data). Issue 34 2844 Since the Create-Job and the send operations (Send-Document or Send-URI 2845 operations) that follow could occur over an arbitrarily long period of 2846 time for a particular job, a client MUST send another send operation 2847 within an IPP Printer defined minimum time interval after the receipt of 2848 the previous request for the job. If a Printer object supports multiple 2849 document jobs, the Printer object MUST support the "multiple-operation- 2850 time-out" attribute (see section 4.4.31). This attribute indicates the 2851 minimum number of seconds the Printer object will wait for the next send 2852 operation before taking some recovery action. 2854 An IPP object MUST recover from an errant client that does not supply a 2855 send operation, sometime after the minimum time interval specified by 2856 the Printer object's "multiple-operation-time-out" attribute. Such 2857 recovery MAY include any of the following or other recovery actions: 2859 1. Assume that the Job is an invalid job, start the process of 2860 changing the job state to 'aborted', add the 'aborted-by-system' 2861 value to the job's "job-state-reasons" attribute (see section 2862 4.3.8), Issue 30 and clean up all resources associated with the 2863 Job. In this case, if another send operation is finally received, 2864 the Printer responds with an "client-error-not-possible" or 2865 "client-error-not-found" depending on whether or not the Job object 2866 is still around when the send operation finally arrives. 2867 2. Assume that the last send operation received was in fact the last 2868 document (as if the "last-document" flag had been set to 'true'), 2869 close the Job object, and proceed to process it (i.e., move the 2870 Job's state to 'pending'). 2871 3. Assume that the last send operation received was in fact the last 2872 document, close the Job, but move it to the 'pending-held' and add 2873 the 'submission-interrupted' value to the job's "job-state-reasons" 2874 attribute (see section 4.3.8). Issue 30 This action allows the 2876 Expires November 10, 1999 2877 user or an operator to determine whether to continue processing the 2878 Job by moving it back to the 'pending' state using the Release-Job 2879 operation (see section 3.3.6) or to cancel the job using the 2880 Cancel-Job operation (see section 3.3.3). 2882 Each implementation is free to decide the "best" action to take 2883 depending on local policy, whether any documents have been added, 2884 whether the implementation spools jobs or not, and/or any other piece 2885 of information available to it. If the choice is to abort the Job 2886 object, it is possible that the Job object may already have been 2887 processed to the point that some media sheet pages have been printed. 2889 Access Rights: The authenticated user (see section 8.3) performing this 2890 operation must either be the job owner (as determined in the Create-Job 2891 operation) or an operator or administrator of the Printer object (see 2892 Sections 1 and 8.5). Otherwise, the IPP object MUST reject the 2893 operation and return: 'client-error-forbidden', 'client-error-not- 2894 authenticated', or 'client-error-not-authorized' as appropriate. Issue 2895 19 2897 3.3.1.1 Send-Document Request 2899 The following attribute sets are part of the Send-Document Request: 2901 Group 1: Operation Attributes 2903 Natural Language and Character Set: 2904 The "attributes-charset" and "attributes-natural-language" 2905 attributes as described in section 3.1.4.1. 2907 Target: 2908 Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX))or 2909 (2) the "job-uri" (uri) operation attribute(s) which define the 2910 target for this operation as described in section 3.1.5. 2912 Requesting User Name: 2913 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2914 by the client as described in section 8.3. 2916 "document-name" (name(MAX)): 2917 The client OPTIONALLY supplies this attribute. The Printer object 2918 MUST support this attribute. It contains the client supplied 2919 document name. The document name MAY be different than the Job 2920 name. It might be helpful, but NEED NOT be unique across multiple 2921 documents in the same Job. Typically, the client software 2922 automatically supplies the document name on behalf of the end user 2923 by using a file name or an application generated name. See the 2924 description of the "document-name" operation attribute in the 2925 Print-Job Request (section 3.2.1.1) for more information about this 2926 attribute. 2928 "compression" (type3 keyword) 2929 See the description of "compression" for the Print-Job operation in 2930 Section 3.2.1.1. 2932 Expires November 10, 1999 2934 "document-format" (mimeMediaType) : 2935 See the description of "document-format" for the Print-Job 2936 operation in Section 3.2.1.1. Issue 11 2938 "document-natural-language" (naturalLanguage): 2939 The client OPTIONALLY supplies this attribute. The Printer object 2940 OPTIONALLY supports this attribute. This attribute specifies the 2941 natural language of the document for those document-formats that 2942 require a specification of the natural language in order to image 2943 the document unambiguously. There are no particular values 2944 required for the Printer object to support. 2946 "last-document" (boolean): 2947 The client MUST supply this attribute. The Printer object MUST 2948 support this attribute. It is a boolean flag that is set to 'true' 2949 if this is the last document for the Job, 'false' otherwise. 2951 Group 2: Document Content 2953 The client MUST supply the document data if the "last-document" 2954 flag is set to 'false'. However, since a client might not know 2955 that the previous document sent with a Send-Document (or Send-URI) 2956 operation was the last document (i.e., the "last-document" 2957 attribute was set to 'false'), it is legal to send a Send-Document 2958 request with no document data where the "last-document" flag is set 2959 to 'true'. Such a request MUST NOT increment the value of the Job 2960 object's "number-of-documents" attribute, since no real document 2961 was added to the job. 2963 3.3.1.2 Send-Document Response 2965 The following sets of attributes are part of the Send-Document Response: 2967 Group 1: Operation Attributes 2969 Status Message: 2970 In addition to the REQUIRED status code returned in every response, 2971 the response OPTIONALLY includes a "status-message" (text) 2972 operation attribute as described in sections 13 and 3.1.6. 2974 Natural Language and Character Set: 2975 The "attributes-charset" and "attributes-natural-language" 2976 attributes as described in section 3.1.4.2. 2978 Group 2: Unsupported Attributes 2980 See section 3.1.7 for details on returning Unsupported Attributes. 2982 Group 3: Job Object Attributes 2984 This is the same set of attributes as described in the Print-Job 2985 response (see section 3.2.1.2). 2987 Expires November 10, 1999 2989 3.3.2 Send-URI Operation 2991 This OPTIONAL operation is identical to the Send-Document operation (see 2992 section 3.3.1) except that a client MUST supply a URI reference 2993 ("document-uri" operation attribute) rather than the document data 2994 itself. If a Printer object supports this operation, clients can use 2995 both Send-URI or Send-Document operations to add new documents to an 2996 existing multi-document Job object. However, if a client needs to 2997 indicate that the previous Send-URI or Send-Document was the last 2998 document, the client MUST use the Send-Document operation with no 2999 document data and the "last-document" flag set to 'true' (rather than 3000 using a Send-URI operation with no "document-uri" operation attribute). 3002 If a Printer object supports this operation, it MUST also support the 3003 Print-URI operation (see section 3.2.2). 3005 The Printer object MUST validate the syntax and URI scheme of the 3006 supplied URI before returning a response, just as in the Print-URI 3007 operation. 3009 3.3.3 Cancel-Job Operation 3011 This REQUIRED operation allows a client to cancel a Print Job from the 3012 time the job is created up to the time it is completed, canceled, or 3013 aborted. Since a Job might already be printing by the time a Cancel-Job 3014 is received, some media sheet pages might be printed before the job is 3015 actually terminated. 3017 The IPP object MUST accept or reject the request based on the job's 3018 current state and transition the job to the indicated new state as 3019 follows: 3021 Current "job- New "job- IPP object's response status 3022 state" state" code and action: 3024 'pending' 'canceled' 'successful-ok' 3026 'pending- 'canceled' 'successful-ok' 3027 held' 3029 'processing' 'canceled' 'successful-ok' 3031 'processing' 'processing' 'successful-ok' See Note 1 3033 'processing' 'processing' 'client-error-not-possible' See 3034 Note 2 3036 'processing- 'canceled' 'successful-ok' 3037 stopped' 3039 'processing- 'processing- 'successful-ok' See Note 1 3040 stopped' stopped' 3042 'processing- 'processing- 'client-error-not-possible' See 3043 stopped' stopped' Note 2 3045 'completed' 'completed' 'client-error-not-possible' 3047 'canceled' 'canceled' 'client-error-not-possible' 3049 'aborted' 'aborted' 'client-error-not-possible' 3051 Expires November 10, 1999 3052 Note 1: If the implementation requires some measurable time to cancel 3053 the job in the 'processing' or 'processing-stopped' job states, the IPP 3054 object MUST add the 'processing-to-stop-point' value to the job's "job- 3055 state-reasons" attribute and then transition the job to the 'canceled' 3056 state when the processing ceases (see section 4.3.8). 3058 Note 2: If the Job object already has the 'processing-to-stop-point' 3059 value in its "job-state-reasons" attribute, then the Printer object MUST 3060 reject a Cancel-Job operation. 3062 Access Rights: The authenticated user (see section 8.3) performing this 3063 operation must either be the job owner or an operator or administrator 3064 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3065 object MUST reject the operation and return: 'client-error-forbidden', 3066 'client-error-not-authenticated', or 'client-error-not-authorized' as 3067 appropriate. 3069 3.3.3.1 Cancel-Job Request 3071 The following groups of attributes are part of the Cancel-Job Request: 3073 Group 1: Operation Attributes 3075 Natural Language and Character Set: 3076 The "attributes-charset" and "attributes-natural-language" 3077 attributes as described in section 3.1.4.1. 3079 Target: 3080 Either (1) the "printer-uri" (uri) plus "job-id" 3081 (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) 3082 which define the target for this operation as described in section 3083 3.1.5. 3085 Requesting User Name: 3086 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 3087 by the client as described in section 8.3. 3089 "message" (text(127)): 3090 The client OPTIONALLY supplies this attribute. The Printer object 3091 OPTIONALLY supports this attribute. It is a message to the 3092 operator. This "message" attribute is not the same as the "job- 3093 message-from-operator" attribute. That attribute is used to report 3094 a message from the operator to the end user that queries that 3095 attribute. This "message" operation attribute is used to send a 3096 message from the client to the operator along with the operation 3097 request. It is an implementation decision of how or where to 3098 display this message to the operator (if at all). 3100 3.3.3.2 Cancel-Job Response 3102 The following sets of attributes are part of the Cancel-Job Response: 3104 Group 1: Operation Attributes 3106 Expires November 10, 1999 3107 Status Message: 3108 In addition to the REQUIRED status code returned in every response, 3109 the response OPTIONALLY includes a "status-message" (text) 3110 operation attribute as described in sections 13 and 3.1.6. 3112 Natural Language and Character Set: 3113 The "attributes-charset" and "attributes-natural-language" 3114 attributes as described in section 3.1.4.2. 3116 Group 2: Unsupported Attributes 3118 See section 3.1.7 for details on returning Unsupported Attributes. 3120 Once a successful response has been sent, the implementation guarantees 3121 that the Job will eventually end up in the 'canceled' state. Between the 3122 time of the Cancel-Job operation is accepted and when the job enters the 3123 'canceled' job-state (see section 4.3.7), the "job-state-reasons" 3124 attribute SHOULD contain the 'processing-to-stop-point' value which 3125 indicates to later queries that although the Job might still be 3126 'processing', it will eventually end up in the 'canceled' state, not the 3127 'completed' state. 3129 3.3.4 Get-Job-Attributes Operation 3131 This REQUIRED operation allows a client to request the values of 3132 attributes of a Job object and it is almost identical to the Get- 3133 Printer-Attributes operation (see section 3.2.5). The only differences 3134 are that the operation is directed at a Job object rather than a Printer 3135 object, there is no "document-format" operation attribute used when 3136 querying a Job object, and the returned attribute group is a set of Job 3137 object attributes rather than a set of Printer object attributes. 3139 For Jobs, the possible names of attribute groups are: 3141 - 'job-template': the subset of the Job Template attributes that 3142 apply to a Job object (the first column of the table in Section 3143 4.2) that the implementation supports for Job objects. 3144 - 'job-description': the subset of the Job Description attributes 3145 specified in Section 4.3 that the implementation supports for Job 3146 objects. 3147 - 'all': the special group 'all' that includes all attributes that 3148 the implementation supports for Job objects. Issue 23 3150 Since a client MAY request specific attributes or named groups, there is 3151 a potential that there is some overlap. For example, if a client 3152 requests, 'job-name' and 'job-description', the client is actually 3153 requesting the "job-name" attribute once by naming it explicitly, and 3154 once by inclusion in the 'job-description' group. In such cases, the 3155 Printer object NEED NOT return the attribute only once in the response 3156 even if it is requested multiple times. The client SHOULD NOT request 3157 the same attribute in multiple ways. 3159 Expires November 10, 1999 3160 It is NOT REQUIRED that a Job object support all attributes belonging to 3161 a group (since some attributes are OPTIONAL). However it is REQUIRED 3162 that each Job object support all group names. 3164 3.3.4.1 Get-Job-Attributes Request 3166 The following groups of attributes are part of the Get-Job-Attributes 3167 Request when the request is directed at a Job object: 3169 Group 1: Operation Attributes 3171 Natural Language and Character Set: 3172 The "attributes-charset" and "attributes-natural-language" 3173 attributes as described in section 3.1.4.1. 3175 Target: 3176 Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) 3177 or (2) the "job-uri" (uri) operation attribute(s) which define the 3178 target for this operation as described in section 3.1.5. 3180 Requesting User Name: 3181 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 3182 by the client as described in section 8.3. 3184 "requested-attributes" (1setOf keyword) : 3185 The client OPTIONALLY supplies this attribute. The IPP object MUST 3186 support this attribute. It is a set of attribute names and/or 3187 attribute group names in whose values the requester is interested. 3188 If the client omits this attribute, the IPP object MUST respond as 3189 if this attribute had been supplied with a value of 'all'. 3191 3.3.4.2 Get-Job-Attributes Response 3193 The Printer object returns the following sets of attributes as part of 3194 the Get-Job-Attributes Response: 3196 Group 1: Operation Attributes 3198 Status Message: 3199 In addition to the REQUIRED status code returned in every response, 3200 the response OPTIONALLY includes a "status-message" (text) 3201 operation attribute as described in sections 13 and 3.1.6. 3203 Natural Language and Character Set: 3204 The "attributes-charset" and "attributes-natural-language" 3205 attributes as described in section 3.1.4.2. The "attributes- 3206 natural-language" MAY be the natural language of the Job object, 3207 rather than the one requested. 3209 Group 2: Unsupported Attributes 3211 See section 3.1.7 for details on returning Unsupported Attributes. 3213 Expires November 10, 1999 3214 The response NEED NOT contain the "requested-attributes" operation 3215 attribute with any supplied values (attribute keywords) that were 3216 requested by the client but are not supported by the IPP object. If 3217 the Printer does include unsupported attributes referenced in 3218 "requested-attributes" and such attributes include group names, 3219 such as 'all', the unsupported attributes MUST NOT include 3220 attributes described in the standard but not supported by the 3221 implementation. Issue 23 3223 Group 3: Job Object Attributes 3225 This is the set of requested attributes and their current values. 3226 The IPP object ignores (does not respond with) any requested 3227 attribute or value which is not supported or which is restricted by 3228 the security policy in force, including whether the requesting user 3229 is the user that submitted the job (job originating user) or not 3230 (see section 8). However, the IPP object MUST respond with the 3231 'unknown' value for any supported attribute (including all REQUIRED 3232 attributes) for which the IPP object does not know the value, 3233 unless it would violate the security policy. See the description 3234 of the "out-of-band" values in the beginning of Section 4.1. 3236 3.3.5 Hold-Job Operation 3238 This OPTIONAL operation allows a client to hold a pending job in the 3239 queue so that it is not eligible for scheduling. If the Hold-Job 3240 operation is supported, then the Release-Job operation MUST be 3241 supported, and vice-versa. The OPTIONAL "job-hold-until" operation 3242 attribute allows a client to specify whether to hold the job 3243 indefinitely or until a specified time period, if supported. 3245 The IPP object MUST accept or reject the request based on the job's 3246 current state and transition the job to the indicated new state as 3247 follows: 3249 Current "job- New "job- IPP object's response status 3250 state" state" code and action: 3252 'pending' 'pending- 'successful-ok' See Note 1 3253 held' 3255 'pending' 'pending' 'successful-ok' See Note 2 3257 'pending- 'pending- 'successful-ok' See Note 1 3258 held' held' 3260 'pending- 'pending' 'successful-ok' See Note 2 3261 held' 3263 'processing' 'processing' 'client-error-not-possible' 3265 'processing- 'processing- 'client-error-not-possible' 3266 stopped' stopped' 3268 'completed' 'completed' 'client-error-not-possible' 3270 'canceled' 'canceled' 'client-error-not-possible' 3272 'aborted' 'aborted' 'client-error-not-possible' 3274 Expires November 10, 1999 3275 Note 1: If the implementation supports multiple reasons for a job to be 3276 in the 'pending-held' state, the IPP object MUST add the 'job-hold- 3277 until-specified' value to the job's "job-state-reasons" attribute. 3279 Note 2: If the IPP object supports the "job-hold-until" operation 3280 attribute, but the specified time period has already started (or is the 3281 'no-hold' value) and there are no other reasons to hold the job, the IPP 3282 object MUST make the job be a candidate for processing immediately (see 3283 Section 4.2.2) by putting the job in the 'pending' state. 3285 Note: In order to keep the Hold-Job operation simple, such a request is 3286 rejected when the job is in the 'processing' or 'processing-stopped' 3287 states. If an operation is needed to hold jobs while in these states, 3288 it will be added as an additional operation, rather than overloading the 3289 Hold-Job operation. Then it is clear to clients by querying the Printer 3290 object's "operations-supported" (see Section 4.4.15) and the Job 3291 object's "job-state" (see Section 4.3.7) attributes which operations are 3292 possible. 3294 Access Rights: The authenticated user (see section 8.3) performing this 3295 operation must either be the job owner or an operator or administrator 3296 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3297 object MUST reject the operation and return: 'client-error-forbidden', 3298 'client-error-not-authenticated', or 'client-error-not-authorized' as 3299 appropriate. 3301 3.3.5.1 Hold-Job Request 3303 The groups and operation attributes are the same as for a Cancel-Job 3304 request (see section 3.3.3.1), with the addition of the following Group 3305 1 Operation attribute: 3307 "job-hold-until" (type3 keyword | name(MAX)): 3308 The client OPTIONALLY supplies this Operation attribute. The IPP 3309 object MUST support this operation attribute in a Hold-Job request, 3310 if it supports the "job-hold-until" Job template attribute in 3311 create operations. See section 4.2.2. The IPP object SHOULD 3312 support the "job-hold-until" Job Template attribute for use in job 3313 create operations with at least the 'indefinite' value, if it 3314 supports the Hold-Job operation. Otherwise, a client cannot create 3315 a job and hold it immediately (without picking some supported time 3316 period in the future). 3318 If supplied and supported as specified in the Printer's "job-hold- 3319 until-supported" attribute, the IPP object copies the supplied 3320 operation attribute to the Job object, replacing the job's previous 3321 "job-hold-until" attribute, if present, and makes the job a 3322 candidate for scheduling during the supplied named time period. 3324 If supplied, but either the "job-hold-until" Operation attribute 3325 itself or the value supplied is not supported, the IPP object 3326 accepts the request, returns the unsupported attribute or value in 3327 the Unsupported Attributes Group according to section 3.1.7, 3328 returns the 'successful-ok-ignored-or-substituted-attributes, and 3330 Expires November 10, 1999 3331 holds the job indefinitely until a client performs a subsequent 3332 Release-Job operation. 3334 If the client (1) supplies a value that specifies a time period 3335 that has already started or the 'no-hold' value (meaning don't hold 3336 the job) and (2) the IPP object supports the "job-hold-until" 3337 operation attribute and there are no other reasons to hold the job, 3338 the IPP object MUST accept the operation and make the job be a 3339 candidate for processing immediately (see Section 4.2.2). 3341 If the client does not supply a "job-hold-until" Operation 3342 attribute in the request, the IPP object MUST populate the job 3343 object with a "job-hold-until" attribute with the 'indefinite' 3344 value (if IPP object supports the "job-hold-until" attribute) and 3345 hold the job indefinitely, until a client performs a Release-Job 3346 operation. 3348 3.3.5.2 Hold-Job Response 3350 The groups and attributes are the same as for a Cancel-Job response (see 3351 section 3.3.3.2). 3353 3.3.6 Release-Job Operation 3355 This OPTIONAL operation allows a client to release a previously held job 3356 so that it is again eligible for scheduling. If the Hold-Job operation 3357 is supported, then the Release-Job operation MUST be supported, and 3358 vice-versa. 3360 This operation removes the "job-hold-until" job attribute, if present, 3361 from the job object that had been supplied in the create or most recent 3362 Hold-Job or Restart-Job operation and remove its effect on the job. 3363 Issue 30 The IPP object MUST remove the 'job-hold-until-specified' value 3364 from the job's "job-state-reasons" attribute, if present. See section 3365 4.3.8. 3367 The IPP object MUST accept or reject the request based on the job's 3368 current state and transition the job to the indicated new state as 3369 follows: 3371 Current "job- New "job- IPP object's response status 3372 state" state" code and action: 3374 'pending' 'pending' 'successful-ok' No effect on 3375 the job. 3377 'pending- 'pending- 'successful-ok' See Note 1 3378 held' held' 3380 'pending- 'pending' 'successful-ok' 3381 held' 3383 'processing' 'processing' 'successful-ok' No effect on 3384 the job. 3386 'processing- 'processing- 'successful-ok' No effect on 3387 stopped' stopped' the job. 3389 Expires November 10, 1999 3390 Current "job- New "job- IPP object's response status 3391 state" state" code and action: 3393 'completed' 'completed' 'client-error-not-possible' 3395 'canceled' 'canceled' 'client-error-not-possible' 3397 'aborted' 'aborted' 'client-error-not-possible' 3399 Note 1: If there are other reasons to keep the job in the 'pending- 3400 held' state, such as 'resources-are-not-ready', the job remains in the 3401 'pending-held' state. Thus the 'pending-held' state is not just for 3402 jobs that have the 'job-hold-until' applied to them, but are for any 3403 reason to keep the job from being a candidate for scheduling and 3404 processing, such as 'resources-are-not-ready'. See the "job-hold-until" 3405 attribute (section 4.2.2). 3407 Access Rights: The authenticated user (see section 8.3) performing this 3408 operation must either be the job owner or an operator or administrator 3409 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3410 object MUST reject the operation and return: 'client-error-forbidden', 3411 'client-error-not-authenticated', or 'client-error-not-authorized' as 3412 appropriate. 3414 The Release-Job Request and Release-Job Response have the same attribute 3415 groups and attributes as the Cancel-Job operation (see section 3.3.3.1 3416 and 3.3.3.2). 3418 3.3.7 Restart-Job Operation 3420 This OPTIONAL operation allows a client to restart a job that is 3421 retained in the queue after processing has completed (see section 3422 4.3.7.1). 3424 The job is moved to the 'pending' job state and restarts at the 3425 beginning on the same IPP Printer object with the same attribute values. 3426 The Job Description attributes that accumulate job progress, such as 3427 "job-impressions-completed", "job-media-sheets-completed", and "job-k- 3428 octets-processed", MUST be reset to 0 so that they give an accurate 3429 record of the job from its restart point. The job object MUST continue 3430 to use the same "job-uri" and "job-id" attribute values. 3432 Note: If in the future an operation is needed that does not reset the 3433 job progress attributes, then a new operation will be defined which 3434 makes a copy of the job, assigns a new "job-uri" and "job-id" to the 3435 copy and resets the job progress attributes in the new copy only. 3437 The IPP object MUST accept or reject the request based on the job's 3438 current state, transition the job to the indicated new state as follows: 3440 Current "job- New "job- IPP object's response status 3441 state" state" code and action: 3443 'pending' 'pending' 'client-error-not-possible'. 3445 'pending- 'pending- 'client-error-not-possible'. 3446 held' held' 3448 'processing' 'processing' 'client-error-not-possible'. 3450 Expires November 10, 1999 3451 Current "job- New "job- IPP object's response status 3452 state" state" code and action: 3454 'processing- 'processing- 'client-error-not-possible'. 3455 stopped' stopped' 3457 'completed' 'pending' 'successful-ok' - job is started 3458 over. 3460 'completed' 'completed' 'client-error-not-possible' - 3461 see Note 1 3463 'canceled' 'pending' 'successful-ok' - job is started 3464 over. 3466 'canceled' 'canceled' 'client-error-not-possible' - 3467 see Note 1 3469 'aborted' 'pending' 'successful-ok' - job is started 3470 over. 3472 'aborted' 'aborted' 'client-error-not-possible' - 3473 see Note 1 3475 Note 1: If the Job Retention Period has expired for the job in this 3476 state, then the IPP object rejects the operation. See section 4.3.7.1. 3478 Note: In order to prevent a user from inadvertently restarting a job in 3479 the middle, the Restart-Job request is rejected when the job is in the 3480 'processing' or 'processing-stopped' states. If in the future an 3481 operation is needed to hold or restart jobs while in these states, it 3482 will be added as an additional operation, rather than overloading the 3483 Restart-Job operation, so that it is clear that the user intended that 3484 the current job not be completed. 3486 Access Rights: The authenticated user (see section 8.3) performing this 3487 operation must either be the job owner or an operator or administrator 3488 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3489 object MUST reject the operation and return: 'client-error-forbidden', 3490 'client-error-not-authenticated', or 'client-error-not-authorized' as 3491 appropriate. 3493 3.3.7.1 Restart-Job Request 3495 The groups and attributes are the same as for a Cancel-Job request (see 3496 section 3.3.3.1), with the addition of the following Group 1 Operation 3497 attribute: 3499 "job-hold-until" (type3 keyword | name(MAX)): 3500 The client OPTIONALLY supplies this attribute. The IPP object MUST 3501 support this Operation attribute in a Restart-Job request, if it 3502 supports the "job-hold-until" Job Template attribute in create 3503 operations. See section 4.2.2. Otherwise, the IPP object NEED NOT 3504 support the "job-hold-until" Operation attribute in a Restart-Job 3505 request. 3507 If supplied and supported as specified in the Printer's "job-hold- 3508 until-supported" attribute, the IPP object copies the supplied 3509 Operation attribute to the Job object, replacing the job's previous 3510 "job-hold-until" attribute, if present, and makes the job a 3512 Expires November 10, 1999 3513 candidate for scheduling during the supplied named time period. 3514 See section 4.2.2. 3516 If supplied, but the value is not supported, the IPP object accepts 3517 the request, returns the unsupported attribute or value in the 3518 Unsupported Attributes Group according to section 3.1.7, returns 3519 the 'successful-ok-ignored-or-substituted-attributes' status code, 3520 and holds the job indefinitely until a client performs a subsequent 3521 Release-Job operation. 3523 If supplied, but the "job-hold-until" Operation attribute itself is 3524 not supported, the IPP object accepts the request, returns the 3525 unsupported attribute with the out-of-band 'unsupported' value in 3526 the Unsupported Attributes Group according to section 3.1.7, 3527 returns the 'successful-ok-ignored-or-substituted-attributes' 3528 status code, and restarts the job, i.e., ignores the "job-hold- 3529 until" attribute. 3531 If the client (1) supplies a value that specifies a time period 3532 that has already started or the 'no-hold' value (meaning don't hold 3533 the job) and (2) the IPP object supports the "job-hold-until" 3534 operation attribute and there are no other reasons to hold the job, 3535 the IPP object makes the job a candidate for processing immediately 3536 (see Section 4.2.2). 3538 If the client does not supply a "job-hold-until" operation 3539 attribute in the request, the IPP object removes the "job-hold- 3540 until" attribute, if present, from the job. If there are no other 3541 reasons to hold the job, the Restart-Job operation makes the job a 3542 candidate for processing immediately (see Section 4.2.2). 3544 3.3.7.2 Restart-Job Response 3546 The groups and attributes are the same as for a Cancel-Job response (see 3547 section 3.3.3.2). 3549 Note: In the future an OPTIONAL Modify-Job operation may be specified 3550 that allows the client to modify other attributes before releasing the 3551 restarted job. 3553 4. Object Attributes 3555 This section describes the attributes with their corresponding attribute 3556 syntaxes and values that are part of the IPP model. The sections below 3557 show the objects and their associated attributes which are included 3558 within the scope of this protocol. Many of these attributes are derived 3559 from other relevant specifications: 3561 - Document Printing Application (DPA) [ISO10175] 3562 - RFC 1759 Printer MIB [RFC1759] 3564 Expires November 10, 1999 3566 Each attribute is uniquely identified in this document using a "keyword" 3567 (see section 12.2.1) which is the name of the attribute. The keyword is 3568 included in the section header describing that attribute. 3570 Note: Not only are keywords used to identify attributes, but one of the 3571 attribute syntaxes described below is "keyword" so that some attributes 3572 have keyword values. Therefore, these attributes are defined as having 3573 an attribute syntax that is a set of keywords. 3575 4.1 Attribute Syntaxes 3577 This section defines the basic attribute syntax types that all clients 3578 and IPP objects MUST be able to accept in responses and accept in 3579 requests, respectively. Each attribute description in sections 3 and 3580 3.3.5 includes the name of attribute syntax(es) in the heading (in 3581 parentheses). A conforming implementation of an attribute MUST include 3582 the semantics of the attribute syntax(es) so identified. Section 6.3 3583 describes how the protocol can be extended with new attribute syntaxes. 3585 The attribute syntaxes are specified in the following sub-sections, 3586 where the sub-section heading is the keyword name of the attribute 3587 syntax inside the single quotes. In operation requests and responses 3588 each attribute value MUST be represented as one of the attribute 3589 syntaxes specified in the sub-section heading for the attribute. In 3590 addition, the value of an attribute in a response (but not in a request) 3591 MAY be one of the "out-of-band" values whose special encoding rules are 3592 defined in the "Encoding and Transport" specification [IPP-PRO]. 3593 Standard "out-of-band" values are: Issues 12 and 15 3595 'unknown': The attribute is supported by the IPP object, but the 3596 value is unknown to the IPP object for some reason. 3597 'unsupported': The attribute is unsupported by the IPP object. This 3598 value MUST be returned only as the value of an attribute in the 3599 Unsupported Attributes Group. 3600 'no-value': The attribute is supported by the Printer object, but the 3601 administrator has not yet configured a value. 3603 All attributes in a request MUST have one or more values as defined in 3604 Sections 4.2 to 4.4. Thus clients MUST NOT supply attributes with "out- 3605 of-band" values. All attributes in a response MUST have one or more 3606 values as defined in Sections 4.2 to 4.4 or a single "out-of-band" 3607 value. 3609 Most attributes are defined to have a single attribute syntax. However, 3610 a few attributes (e.g., "job-sheet", "media", "job-hold-until") are 3611 defined to have several attribute syntaxes, depending on the value. 3612 These multiple attribute syntaxes are separated by the "|" character in 3613 the sub-section heading to indicate the choice. Since each value MUST 3614 be tagged as to its attribute syntax in the protocol, a single-valued 3615 attribute instance may have any one of its attribute syntaxes and a 3616 multi-valued attribute instance may have a mixture of its defined 3617 attribute syntaxes. 3619 Expires November 10, 1999 3620 4.1.1 'text' 3622 A text attribute is an attribute whose value is a sequence of zero or 3623 more characters encoded in a maximum of 1023 ('MAX') octets. MAX is the 3624 maximum length for each value of any text attribute. However, if an 3625 attribute will always contain values whose maximum length is much less 3626 than MAX, the definition of that attribute will include a qualifier that 3627 defines the maximum length for values of that attribute. For example: 3628 the "printer-location" attribute is specified as "printer-location 3629 (text(127))". In this case, text values for "printer-location" MUST NOT 3630 exceed 127 octets; if supplied with a longer text string via some 3631 external interface (other than the protocol), implementations are free 3632 to truncate to this shorter length limitation. 3634 In this specification, all text attributes are defined using the 'text' 3635 syntax. However, 'text' is used only for brevity; the formal 3636 interpretation of 'text' is: 'textWithoutLanguage | textWithLanguage'. 3637 That is, for any attribute defined in this specification using the 3638 'text' attribute syntax, all IPP objects and clients MUST support both 3639 the 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes. 3640 However, in actual usage and protocol execution, objects and clients 3641 accept and return only one of the two syntax per attribute. The syntax 3642 'text' never appears "on-the-wire". 3644 Both 'textWithoutLanguage' and 'textWithLanguage' are needed to support 3645 the real world needs of interoperability between sites and systems that 3646 use different natural languages as the basis for human communication. 3647 Generally, one natural language applies to all text attributes in a 3648 given request or response. The language is indicated by the "attributes- 3649 natural-language" operation attribute defined in section 3.1.4 or 3650 "attributes-natural-language" job attribute defined in section 4.3.18, 3651 and there is no need to identify the natural language for each text 3652 string on a value-by-value basis. In these cases, the attribute syntax 3653 'textWithoutLanguage' is used for text attributes. In other cases, the 3654 client needs to supply or the Printer object needs to return a text 3655 value in a natural language that is different from the rest of the text 3656 values in the request or response. In these cases, the client or 3657 Printer object uses the attribute syntax 'textWithLanguage' for text 3658 attributes (this is the Natural Language Override mechanism described in 3659 section 3.1.4). 3661 The 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes are 3662 described in more detail in the following sections. 3664 4.1.1.1 'textWithoutLanguage' 3666 The 'textWithoutLanguage' syntax indicates a value that is sequence of 3667 zero or more characters. Text strings are encoded using the rules of 3668 some charset. The Printer object MUST support the UTF-8 charset 3669 [RFC2279] and MAY support additional charsets to represent 'text' 3670 values, provided that the charsets are registered with IANA [IANA-CS]. 3671 See Section 4.1.7 for the specification of the 'charset' attribute 3672 syntax, including restricted semantics and examples of charsets. 3674 Expires November 10, 1999 3675 4.1.1.2 'textWithLanguage' 3677 The 'textWithLanguage' attribute syntax is a compound attribute syntax 3678 consisting of two parts: a 'textWithoutLanguage' part plus an additional 3679 'naturalLanguage' (see section 4.1.8) part that overrides the natural 3680 language in force. The 'naturalLanguage' part explicitly identifies the 3681 natural language that applies to the text part of that value and that 3682 value alone. For any give text attribute, the 'textWithoutLanguage' 3683 part is limited to the maximum length defined for that attribute, but 3684 the 'naturalLanguage' part is always limited to 63 octets. Using the 3685 'textWithLanguage' attribute syntax rather than the normal 3686 'textWithoutLanguage' syntax is the so-called Natural Language Override 3687 mechanism and MUST be supported by all IPP objects and clients. 3689 If the attribute is multi-valued (1setOf text), then the 3690 'textWithLanguage' attribute syntax MUST be used to explicitly specify 3691 each attribute value whose natural language needs to be overridden. 3692 Other values in a multi-valued 'text' attribute in a request or a 3693 response revert to the natural language of the operation attribute. 3695 In a create request, the Printer object MUST accept and store with the 3696 Job object any natural language in the "attributes-natural-language" 3697 operation attribute, whether the Printer object supports that natural 3698 language or not. Furthermore, the Printer object MUST accept and store 3699 any 'textWithLanguage' attribute value, whether the Printer object 3700 supports that natural language or not. These requirements are 3701 independent of the value of the "ipp-attribute-fidelity" operation 3702 attribute that the client MAY supply. 3704 Example: If the client supplies the "attributes-natural-language" 3705 operation attribute with the value: 'en' indicating English, but the 3706 value of the "job-name" attribute is in French, the client MUST use the 3707 'textWithLanguage' attribute syntax with the following two values: 3709 'fr': Natural Language Override indicating French 3710 'Rapport Mensuel': the job name in French 3712 See the "Encoding and Transport" document [IPP-PRO] for a detailed 3713 example of the 'textWithLanguage' attribute syntax. 3715 4.1.2 'name' 3717 This syntax type is used for user-friendly strings, such as a Printer 3718 name, that, for humans, are more meaningful than identifiers. Names are 3719 never translated from one natural language to another. The 'name' 3720 attribute syntax is essentially the same as 'text', including the 3721 REQUIRED support of UTF-8 except that the sequence of characters is 3722 limited so that its encoded form MUST NOT exceed 255 (MAX) octets. 3724 Also like 'text', 'name' is really an abbreviated notation for either 3725 'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP objects 3726 and clients MUST support both the 'nameWithoutLanguage' and 3727 'nameWithLanguage' attribute syntaxes. However, in actual usage and 3728 protocol execution, objects and clients accept and return only one of 3730 Expires November 10, 1999 3731 the two syntax per attribute. The syntax 'name' never appears "on-the- 3732 wire". 3734 Note: Only the 'text' and 'name' attribute syntaxes permit the Natural 3735 Language Override mechanism. 3737 Some attributes are defined as 'type3 keyword | name'. These attributes 3738 support values that are either type3 keywords or names. This dual- 3739 syntax mechanism enables a site administrator to extend these attributes 3740 to legally include values that are locally defined by the site 3741 administrator. Such names are not registered with IANA. 3743 4.1.2.1 'nameWithoutLanguage' 3745 The nameWithoutLanguage' syntax indicates a value that is sequence of 3746 zero or more characters so that its encoded form does not exceed MAX 3747 octets. 3749 4.1.2.2 'nameWithLanguage' 3751 The 'nameWithLanguage' attribute syntax is a compound attribute syntax 3752 consisting of two parts: a 'nameWithoutLanguage' part plus an additional 3753 'naturalLanguage' (see section 4.1.8) part that overrides the natural 3754 language in force. The 'naturalLanguage' part explicitly identifies the 3755 natural language that applies to that name value and that name value 3756 alone. 3758 The 'nameWithLanguage' attribute syntax behaves the same as the 3759 'textWithLanguage' syntax. If a name is in a language that is different 3760 than the rest of the object or operation, then this 'nameWithLanguage' 3761 syntax is used rather than the generic 'nameWithoutLanguage' syntax. 3763 Example: If the client supplies the "attributes-natural-language" 3764 operation attribute with the value: 'en' indicating English, but the 3765 "printer-name" attribute is in German, the client MUST use the 3766 'nameWithLanguage' attribute syntax as follows: 3768 'de': Natural Language Override indicating German 3769 'Farbdrucker': the Printer name in German 3771 4.1.2.3 Matching 'name' attribute values 3773 For purposes of matching two 'name' attribute values for equality, such 3774 as in job validation (where a client-supplied value for attribute "xxx" 3775 is checked to see if the value is among the values of the Printer 3776 object's corresponding "xxx-supported" attribute), the following match 3777 rules apply: 3779 1. 'keyword' values never match 'name' values. 3781 2. 'name' (nameWithoutLanguage and nameWithLanguage) values match 3782 if (1) the name parts match and (2) the Associated Natural-Language 3783 parts (see section 3.1.4.1) match. The matching rules are: 3785 Expires November 10, 1999 3786 a. the name parts match if the two names are identical 3787 character by character, except it is RECOMMENDED that case be 3788 ignored. For example: 'Ajax-letter-head-white' MUST match 3789 'Ajax-letter-head-white' and SHOULD match 'ajax-letter-head- 3790 white' and 'AJAX-LETTER-HEAD-WHITE'. 3792 b. the Associated Natural-Language parts match if the shorter 3793 of the two meets the syntactic requirements of RFC 1766 3794 [RFC1766] and matches byte for byte with the longer. For 3795 example, 'en' matches 'en', 'en-us' and 'en-gb', but matches 3796 neither 'fr' nor 'e'. 3798 4.1.3 'keyword' 3800 The 'keyword' attribute syntax is a sequence of characters, length: 1 to 3801 255, containing only the US-ASCII [ASCII] encoded values for lowercase 3802 letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot ("."), and 3803 underscore ("_"). The first character MUST be a lowercase letter. 3804 Furthermore, keywords MUST be in U.S. English. 3806 This syntax type is used for enumerating semantic identifiers of 3807 entities in the abstract protocol, i.e., entities identified in this 3808 document. Keywords are used as attribute names or values of attributes. 3809 Unlike 'text' and 'name' attribute values, 'keyword' values MUST NOT use 3810 the Natural Language Override mechanism, since they MUST always be US- 3811 ASCII and U.S. English. 3813 Keywords are for use in the protocol. A user interface will likely 3814 provide a mapping between protocol keywords and displayable user- 3815 friendly words and phrases which are localized to the natural language 3816 of the user. While the keywords specified in this document MAY be 3817 displayed to users whose natural language is U.S. English, they MAY be 3818 mapped to other U.S. English words for U.S. English users, since the 3819 user interface is outside the scope of this document. 3821 In the definition for each attribute of this syntax type, the full set 3822 of defined keyword values for that attribute are listed. 3824 When a keyword is used to represent an attribute (its name), it MUST be 3825 unique within the full scope of all IPP objects and attributes. When a 3826 keyword is used to represent a value of an attribute, it MUST be unique 3827 just within the scope of that attribute. That is, the same keyword MUST 3828 NOT be used for two different values within the same attribute to mean 3829 two different semantic ideas. However, the same keyword MAY be used 3830 across two or more attributes, representing different semantic ideas for 3831 each attribute. Section 6.1 describes how the protocol can be extended 3832 with new keyword values. Examples of attribute name keywords: 3834 "job-name" 3835 "attributes-charset" 3837 Note: This document uses "type1", "type2", and "type3" prefixes to the 3838 "keyword" basic syntax to indicate different levels of review for 3839 extensions (see section 6.1). 3841 Expires November 10, 1999 3842 4.1.4 'enum' 3844 The 'enum' attribute syntax is an enumerated integer value that is in 3845 the range from 1 to 2**31 - 1 (MAX). Each value has an associated 3846 'keyword' name. In the definition for each attribute of this syntax 3847 type, the full set of possible values for that attribute are listed. 3848 This syntax type is used for attributes for which there are enum values 3849 assigned by other standards, such as SNMP MIBs. A number of attribute 3850 enum values in this specification are also used for corresponding 3851 attributes in other standards [RFC1759]. This syntax type is not used 3852 for attributes to which the administrator may assign values. Section 3853 6.1 describes how the protocol can be extended with new enum values. 3855 Enum values are for use in the protocol. A user interface will provide 3856 a mapping between protocol enum values and displayable user-friendly 3857 words and phrases which are localized to the natural language of the 3858 user. While the enum symbols specified in this document MAY be 3859 displayed to users whose natural language is U.S. English, they MAY be 3860 mapped to other U.S. English words for U.S. English users, since the 3861 user interface is outside the scope of this document. 3863 Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP "out- 3864 of-band" value 'unknown'. See the description of the "out-of-band" 3865 values at the beginning of Section 4.1. Therefore, attributes of type 3866 'enum' start at '3'. 3868 Note: This document uses "type1", "type2", and "type3" prefixes to the 3869 "enum" basic syntax to indicate different levels of review for 3870 extensions (see section 6.1). 3872 4.1.5 'uri' 3874 The 'uri' attribute syntax is any valid Uniform Resource Identifier or 3875 URI [RFC2396]. Most often, URIs are simply Uniform Resource Locators or 3876 URLs. The maximum length of URIs used as values of IPP attributes is 3877 1023 octets. Although most other IPP attribute syntax types allow for 3878 only lower-cased values, this attribute syntax type conforms to the 3879 case-sensitive and case-insensitive rules specified in [RFC2396]. See 3880 also [IPP-IIG] for a discussion of case in URIs. 3882 4.1.6 'uriScheme' 3884 The 'uriScheme' attribute syntax is a sequence of characters 3885 representing a URI scheme according to RFC 2396 [RFC2396]. Though RFC 3886 2396 requires that the values be case-insensitive, IPP requires all 3887 lower case values in IPP attributes to simplify comparing by IPP clients 3888 and Printer objects. Standard values for this syntax type are the 3889 following keywords: 3891 'http': for HTTP schemed URIs (e.g., "http:...") 3892 'https': for use with HTTPS schemed URIs (e.g., "https:...") (not on 3893 IETF standards track) 3894 'ftp': for FTP schemed URIs (e.g., "ftp:...") 3895 'mailto': for SMTP schemed URIs (e.g., "mailto:...") 3897 Expires November 10, 1999 3898 'file': for file schemed URIs (e.g., "file:...") 3900 A Printer object MAY support any URI 'scheme' that has been registered 3901 with IANA [IANA-MT]. The maximum length of URI 'scheme' values used to 3902 represent IPP attribute values is 63 octets. 3904 4.1.7 'charset' 3906 The 'charset' attribute syntax is a standard identifier for a charset. 3907 A charset is a coded character set and encoding scheme. Charsets are 3908 used for labeling certain document contents and 'text' and 'name' 3909 attribute values. The syntax and semantics of this attribute syntax are 3910 specified in RFC 2046 [RFC2046] and contained in the IANA character-set 3911 Registry [IANA-CS] according to the IANA procedures [RFC2278]. Though 3912 RFC 2046 requires that the values be case-insensitive US-ASCII, IPP 3913 requires all lower case values in IPP attributes to simplify comparing 3914 by IPP clients and Printer objects. When a character-set in the IANA 3915 registry has more than one name (alias), the name labeled as "(preferred 3916 MIME name)", if present, MUST be used. 3918 The maximum length of 'charset' values used to represent IPP attribute 3919 values is 63 octets. 3921 Some examples are: 3923 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set 3924 (UCS) represented as the UTF-8 [RFC2279] transfer encoding scheme 3925 in which US-ASCII is a subset charset. 3926 'us-ascii': 7-bit American Standard Code for Information Interchange 3927 (ASCII), ANSI X3.4-1986 [ASCII]. That standard defines US-ASCII, 3928 but RFC 2045 [RFC2045] eliminates most of the control characters 3929 from conformant usage in MIME and IPP. 3930 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet Nr 3931 1 [ISO8859-1]. That standard defines a coded character set that is 3932 used by Latin languages in the Western Hemisphere and Western 3933 Europe. US-ASCII is a subset charset. 3934 'iso-10646-ucs-2': ISO 10646 Universal Multiple-Octet Coded 3935 Character Set (UCS) represented as two octets (UCS-2), with the 3936 high order octet of each pair coming first (so-called Big Endian 3937 integer). 3939 Some attribute descriptions MAY place additional requirements on charset 3940 values that may be used, such as REQUIRED values that MUST be supported 3941 or additional restrictions, such as requiring that the charset have US- 3942 ASCII as a subset charset. 3944 4.1.8 'naturalLanguage' 3946 The 'naturalLanguage' attribute syntax is a standard identifier for a 3947 natural language and optionally a country. The values for this syntax 3948 type are defined by RFC 1766 [RFC1766]. Though RFC 1766 requires that 3949 the values be case-insensitive US-ASCII, IPP requires all lower case to 3951 Expires November 10, 1999 3952 simplify comparing by IPP clients and Printer objects. Examples 3953 include: 3955 'en': for English 3956 'en-us': for US English 3957 'fr': for French 3958 'de': for German 3960 The maximum length of 'naturalLanguage' values used to represent IPP 3961 attribute values is 63 octets. 3963 4.1.9 'mimeMediaType' 3965 The 'mimeMediaType' attribute syntax is the Internet Media Type 3966 (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and 3967 registered according to the procedures of RFC 2048 [RFC2048] for 3968 identifying a document format. The value MAY include a charset 3969 parameter, depending on the specification of the Media Type in the IANA 3970 Registry [IANA-MT]. Although most other IPP syntax types allow for only 3971 lower-cased values, this syntax type allows for mixed-case values which 3972 are case-insensitive. 3974 Examples are: 3976 'text/html': An HTML document 3977 'text/plain': A plain text document in US-ASCII (RFC 2046 indicates 3978 that in the absence of the charset parameter MUST mean US-ASCII 3979 rather than simply unspecified) [RFC2046]. 3980 'text/plain; charset=US-ASCII': A plain text document in US-ASCII 3981 [52, 56]. 3982 'text/plain; charset=ISO-8859-1': A plain text document in ISO 8859- 3983 1 (Latin 1) [ISO8859-1]. 3984 'text/plain; charset=utf-8': A plain text document in ISO 10646 3985 represented as UTF-8 [RFC2279] 3986 'application/postscript': A PostScript document [RFC2046] 3987 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape 3988 sequence embedded in the document data) 3989 'application/pdf': Portable Document Format - see IANA MIME Media 3990 Type registry 3991 'application/octet-stream': Auto-sense - see below 3993 4.1.9.1 Application/octet-stream -- Auto-Sensing the document format 3995 One special type is 'application/octet-stream'. If the Printer object 3996 supports this value, the Printer object MUST be capable of auto-sensing 3997 the format of the document data, either as part of the create operation 3998 and/or at document processing time. During auto-sensing, a Printer may 3999 determine that the document-data has a format that the Printer doesn't 4000 recognize. If the Printer determines this problem before returning an 4001 operation response, it rejects the request and returns the 'client- 4002 error-document-format-not-supported' status code. If the Printer 4003 determines this problem after accepting the request and returning an 4004 operation response with one of the successful status codes, the Printer 4006 Expires November 10, 1999 4007 adds the 'unsupported-document-format' value to the job's "job-state- 4008 reasons" attribute. Issue 9 and Issue 10 4010 If the Printer object's default value attribute "document-format- 4011 default" is set to 'application/octet-stream', the Printer object not 4012 only supports auto-sensing of the document format, but will depend on 4013 the result of applying its auto-sensing when the client does not supply 4014 the "document-format" attribute. If the client supplies a document 4015 format value, the Printer MUST rely on the supplied attribute, rather 4016 than trust its auto-sensing algorithm. To summarize: 4018 1. If the client does not supply a document format value, the Printer 4019 MUST rely on its default value setting (which may be 4020 'application/octet-stream' indicating an auto-sensing mechanism). 4021 2. If the client supplies a value other than 'application/octet- 4022 stream', the client is supplying valid information about the format 4023 of the document data and the Printer object MUST trust the client 4024 supplied value more than the outcome of applying an automatic 4025 format detection mechanism. For example, the client may be 4026 requesting the printing of a PostScript file as a 'text/plain' 4027 document. The Printer object MUST print a text representation of 4028 the PostScript commands rather than interpret the stream of 4029 PostScript commands and print the result. 4030 3. If the client supplies a value of 'application/octet-stream', the 4031 client is indicating that the Printer object MUST use its auto- 4032 sensing mechanism on the client supplied document data whether 4033 auto-sensing is the Printer object's default or not. 4035 Note: Since the auto-sensing algorithm is probabilistic, if the client 4036 requests both auto-sensing ("document-format" set to 'application/octet- 4037 stream') and true fidelity ("ipp-attribute-fidelity" set to 'true'), the 4038 Printer object might not be able to guarantee exactly what the end user 4039 intended (the auto-sensing algorithm might mistake one document format 4040 for another ), but it is able to guarantee that its auto-sensing 4041 mechanism be used. 4043 The maximum length of a 'mimeMediaType' value to represent IPP attribute 4044 values is 255 octets. 4046 4.1.10 'octetString' 4048 The 'octetString' attribute syntax is a sequence of octets encoded in a 4049 maximum of 1023 octets which is indicated in sub-section headers using 4050 the notation: octetString(MAX). This syntax type is used for opaque 4051 data. 4053 4.1.11 'boolean' 4055 The 'boolean' attribute syntax has only two values: 'true' and 'false'. 4057 Expires November 10, 1999 4058 4.1.12 'integer' 4060 The 'integer' attribute syntax is an integer value that is in the range 4061 from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual attribute may 4062 specify the range constraint explicitly in sub-section headers if the 4063 range is different from the full range of possible integer values. For 4064 example: job-priority (integer(1:100)) for the "job-priority" 4065 attribute. However, the enforcement of that additional constraint is up 4066 to the IPP objects, not the protocol. 4068 4.1.13 'rangeOfInteger' 4070 The 'rangeOfInteger' attribute syntax is an ordered pair of integers 4071 that defines an inclusive range of integer values. The first integer 4072 specifies the lower bound and the second specifies the upper bound. If 4073 a range constraint is specified in the header description for an 4074 attribute in this document whose attribute syntax is 'rangeOfInteger' 4075 (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum value), 4076 then the constraint applies to both integers. 4078 4.1.14 'dateTime' 4080 The 'dateTime' attribute syntax is a standard, fixed length, 11 octet 4081 representation of the "DateAndTime" syntax as defined in RFC 1903 4082 [RFC1903]. RFC 1903 also identifies an 8 octet representation of a 4083 "DateAndTime" value, but IPP objects MUST use the 11 octet 4084 representation. A user interface will provide a mapping between 4085 protocol dateTime values and displayable user-friendly words or 4086 presentation values and phrases which are localized to the natural 4087 language and date format of the user. 4089 4.1.15 'resolution' 4091 The 'resolution' attribute syntax specifies a two-dimensional resolution 4092 in the indicated units. It consists of 3 values: a cross feed direction 4093 resolution (positive integer value), a feed direction resolution 4094 (positive integer value), and a units value. The semantics of these 4095 three components are taken from the Printer MIB [RFC1759] suggested 4096 values. That is, the cross feed direction component resolution 4097 component is the same as the prtMarkerAddressabilityXFeedDir object in 4098 the Printer MIB, the feed direction component resolution component is 4099 the same as the prtMarkerAddressabilityFeedDir in the Printer MIB, and 4100 the units component is the same as the prtMarkerAddressabilityUnit 4101 object in the Printer MIB (namely, '3' indicates dots per inch and '4' 4102 indicates dots per centimeter). All three values MUST be present even 4103 if the first two values are the same. Example: '300', '600', '3' 4104 indicates a 300 dpi cross-feed direction resolution, a 600 dpi feed 4105 direction resolution, since a '3' indicates dots per inch (dpi). 4107 4.1.16 '1setOf X' 4109 The '1setOf X' attribute syntax is 1 or more values of attribute syntax 4110 type X. This syntax type is used for multi-valued attributes. The 4112 Expires November 10, 1999 4113 syntax type is called '1setOf' rather than just 'setOf' as a reminder 4114 that the set of values MUST NOT be empty (i.e., a set of size 0). Sets 4115 are normally unordered. However each attribute description of this type 4116 may specify that the values MUST be in a certain order for that 4117 attribute. 4119 4.2 Job Template Attributes 4121 Job Template attributes describe job processing behavior. Support for 4122 Job Template attributes by a Printer object is OPTIONAL (see section 4123 12.2.3 for a description of support for OPTIONAL attributes). Also, 4124 clients OPTIONALLY supply Job Template attributes in create requests. 4126 Job Template attributes conform to the following rules. For each Job 4127 Template attribute called "xxx": 4129 1. If the Printer object supports "xxx" then it MUST support both a 4130 "xxx-default" attribute (unless there is a "No" in the table below) 4131 and a "xxx-supported" attribute. If the Printer object doesn't 4132 support "xxx", then it MUST support neither an "xxx-default" 4133 attribute nor an "xxx-supported" attribute, and it MUST treat an 4134 attribute "xxx" supplied by a client as unsupported. An attribute 4135 "xxx" may be supported for some document formats and not supported 4136 for other document formats. For example, it is expected that a 4137 Printer object would only support "orientation-requested" for some 4138 document formats (such as 'text/plain' or 'text/html') but not 4139 others (such as 'application/postscript'). 4141 2. "xxx" is OPTIONALLY supplied by the client in a create request. 4142 If "xxx" is supplied, the client is indicating a desired job 4143 processing behavior for this Job. When "xxx" is not supplied, the 4144 client is indicating that the Printer object apply its default job 4145 processing behavior at job processing time if the document content 4146 does not contain an embedded instruction indicating an xxx-related 4147 behavior. 4149 Note: Since an administrator MAY change the default value attribute 4150 after a Job object has been submitted but before it has been 4151 processed, the default value used by the Printer object at job 4152 processing time may be different that the default value in effect 4153 at job submission time. 4155 3. The "xxx-supported" attribute is a Printer object attribute that 4156 describes which job processing behaviors are supported by that 4157 Printer object. A client can query the Printer object to find out 4158 what xxx-related behaviors are supported by inspecting the returned 4159 values of the "xxx-supported" attribute. 4161 Note: The "xxx" in each "xxx-supported" attribute name is singular, 4162 even though an "xxx-supported" attribute usually has more than one 4163 value, such as "job-sheet-supported", unless the "xxx" Job Template 4164 attribute is plural, such as "finishings" or "sides". In such 4165 cases the "xxx-supported" attribute names are: "finishings- 4166 supported" and "sides-supported". 4168 Expires November 10, 1999 4170 4. The "xxx-default" default value attribute describes what will be 4171 done at job processing time when no other job processing 4172 information is supplied by the client (either explicitly as an IPP 4173 attribute in the create request or implicitly as an embedded 4174 instruction within the document data). 4176 If an application wishes to present an end user with a list of supported 4177 values from which to choose, the application SHOULD query the Printer 4178 object for its supported value attributes. The application SHOULD also 4179 query the default value attributes. If the application then limits 4180 selectable values to only those value that are supported, the 4181 application can guarantee that the values supplied by the client in the 4182 create request all fall within the set of supported values at the 4183 Printer. When querying the Printer, the client MAY enumerate each 4184 attribute by name in the Get-Printer-Attributes Request, or the client 4185 MAY just name the "job-template" group in order to get the complete set 4186 of supported attributes (both supported and default attributes). 4188 The "finishings" attribute is an example of a Job Template attribute. 4189 It can take on a set of values such as 'staple', 'punch', and/or 4190 'cover'. A client can query the Printer object for the "finishings- 4191 supported" attribute and the "finishings-default" attribute. The 4192 supported attribute contains a set of supported values. The default 4193 value attribute contains the finishing value(s) that will be used for a 4194 new Job if the client does not supply a "finishings" attribute in the 4195 create request and the document data does not contain any corresponding 4196 finishing instructions. If the client does supply the "finishings" 4197 attribute in the create request, the IPP object validates the value or 4198 values to make sure that they are a subset of the supported values 4199 identified in the Printer object's "finishings-supported" attribute. 4200 See section 3.1.7. 4202 The table below summarizes the names and relationships for all Job 4203 Template attributes. The first column of the table (labeled "Job 4204 Attribute") shows the name and syntax for each Job Template attribute in 4205 the Job object. These are the attributes that can optionally be supplied 4206 by the client in a create request. The last two columns (labeled 4207 "Printer: Default Value Attribute" and "Printer: Supported Values 4208 Attribute") shows the name and syntax for each Job Template attribute in 4209 the Printer object (the default value attribute and the supported values 4210 attribute). A "No" in the table means the Printer MUST NOT support the 4211 attribute (that is, the attribute is simply not applicable). For 4212 brevity in the table, the 'text' and 'name' entries do not show the 4213 maximum length for each attribute. 4215 Expires November 10, 1999 4216 +===================+======================+======================+ 4217 | Job Attribute |Printer: Default Value| Printer: Supported | 4218 | | Attribute | Values Attribute | 4219 +===================+======================+======================+ 4220 | job-priority | job-priority-default |job-priority-supported| 4221 | (integer 1:100) | (integer 1:100) |(integer 1:100) | 4222 +-------------------+----------------------+----------------------+ 4223 | job-hold-until | job-hold-until- |job-hold-until- | 4224 | (type3 keyword | | default | supported | 4225 | name) | (type3 keyword | |(1setOf ( | 4226 | | name) |type3 keyword | name))| 4227 +-------------------+----------------------+----------------------+ 4228 | job-sheets | job-sheets-default |job-sheets-supported | 4229 | (type3 keyword | | (type3 keyword | |(1setOf ( | 4230 | name) | name) |type3 keyword | name))| 4231 +-------------------+----------------------+----------------------+ 4232 |multiple-document- |multiple-document- |multiple-document- | 4233 | handling | handling-default |handling-supported | 4234 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 4235 +-------------------+----------------------+----------------------+ 4236 | copies | copies-default | copies-supported | 4237 | (integer (1:MAX)) | (integer (1:MAX)) | (rangeOfInteger | 4238 | | | (1:MAX)) | 4239 +-------------------+----------------------+----------------------+ 4240 | finishings | finishings-default | finishings-supported | 4241 |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | 4242 +-------------------+----------------------+----------------------+ 4243 | page-ranges | No | page-ranges- | 4244 | (1setOf | | supported (boolean) | 4245 | rangeOfInteger | | | 4246 | (1:MAX)) | | | 4247 +-------------------+----------------------+----------------------+ 4248 | sides | sides-default | sides-supported | 4249 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 4250 +-------------------+----------------------+----------------------+ 4251 | number-up | number-up-default | number-up-supported | 4252 | (integer (1:MAX)) | (integer (1:MAX)) |(1setOf integer | 4253 | | | (1:MAX) | | 4254 | | | rangeOfInteger | 4255 | | | (1:MAX)) | 4256 +-------------------+----------------------+----------------------+ 4257 | orientation- |orientation-requested-|orientation-requested-| 4258 | requested | default | supported | 4259 | (type2 enum) | (type2 enum) | (1setOf type2 enum) | 4260 +-------------------+----------------------+----------------------+ 4261 | media | media-default | media-supported | 4262 | (type3 keyword | | (type3 keyword | |(1setOf ( | 4263 | name) | name) |type3 keyword | name))| 4264 | | | | 4265 | | | media-ready | 4266 | | |(1setOf ( | 4267 | | |type3 keyword | name))| 4268 +-------------------+----------------------+----------------------+ 4269 | printer-resolution| printer-resolution- | printer-resolution- | 4270 | (resolution) | default | supported | 4272 Expires November 10, 1999 4273 | | (resolution) |(1setOf resolution) | 4274 +-------------------+----------------------+----------------------+ 4275 | print-quality | print-quality-default| print-quality- | 4276 | (type2 enum) | (type2 enum) | supported | 4277 | | |(1setOf type2 enum) | 4278 +-------------------+----------------------+----------------------+ 4280 4.2.1 job-priority (integer(1:100)) 4282 This attribute specifies a priority for scheduling the Job. A higher 4283 value specifies a higher priority. The value 1 indicates the lowest 4284 possible priority. The value 100 indicates the highest possible 4285 priority. Among those jobs that are ready to print, a Printer MUST 4286 print all jobs with a priority value of n before printing those with a 4287 priority value of n-1 for all n. 4289 If the Printer object supports this attribute, it MUST always support 4290 the full range from 1 to 100. No administrative restrictions are 4291 permitted. This way an end-user can always make full use of the entire 4292 range with any Printer object. If privileged jobs are implemented 4293 outside IPP/1.1, they MUST have priorities higher than 100, rather than 4294 restricting the range available to end-users. 4296 If the client does not supply this attribute and this attribute is 4297 supported by the Printer object, the Printer object MUST use the value 4298 of the Printer object's "job-priority-default" at job submission time 4299 (unlike most Job Template attributes that are used if necessary at job 4300 processing time). 4302 The syntax for the "job-priority-supported" is also integer(1:100). 4303 This single integer value indicates the number of priority levels 4304 supported. The Printer object MUST take the value supplied by the 4305 client and map it to the closest integer in a sequence of n integers 4306 values that are evenly distributed over the range from 1 to 100 using 4307 the formula: 4309 roundToNearestInt((100x+50)/n) 4311 where n is the value of "job-priority-supported" and x ranges from 0 4312 through n-1. 4314 For example, if n=1 the sequence of values is 50; if n=2, the sequence 4315 of values is: 25 and 75; if n = 3, the sequence of values is: 17, 50 4316 and 83; if n = 10, the sequence of values is: 5, 15, 25, 35, 45, 55, 4317 65, 75, 85, and 95; if n = 100, the sequence of values is: 1, 2, 3, . 4318 100. 4320 If the value of the Printer object's "job-priority-supported" is 10 and 4321 the client supplies values in the range 1 to 10, the Printer object maps 4322 them to 5, in the range 11 to 20, the Printer object maps them to 15, 4323 etc. 4325 Expires November 10, 1999 4326 4.2.2 job-hold-until (type3 keyword | name (MAX)) 4328 This attribute specifies the named time period during which the Job MUST 4329 become a candidate for printing. 4331 Standard keyword values for named time periods are: 4333 'no-hold': immediately, if there are not other reasons to hold the 4334 job 4335 'indefinite': - the job is held indefinitely, until a client 4336 performs a Release-Job (section 3.3.6) 4337 'day-time': during the day 4338 'evening': evening 4339 'night': night 4340 'weekend': weekend 4341 'second-shift': second-shift (after close of business) 4342 'third-shift': third-shift (after midnight) 4344 An administrator MUST associate allowable print times with a named time 4345 period (by means outside the scope of this IPP/1.1 document). An 4346 administrator is encouraged to pick names that suggest the type of time 4347 period. An administrator MAY define additional values using the 'name' 4348 or 'keyword' attribute syntax, depending on implementation. 4350 If the value of this attribute specifies a time period that is in the 4351 future, the Printer MUST add the 'job-hold-until-specified' value to the 4352 job's "job-state-reasons" attribute, move the job to the 'pending-held' 4353 state, and MUST NOT schedule the job for printing until the specified 4354 time-period arrives. When the specified time period arrives, the 4355 Printer MUST remove the 'job-hold-until-specified' value from the job's 4356 "job-state-reason" attribute and, if there are no other job state 4357 reasons that keep the job in the 'pending-held' state, the Printer MUST 4358 consider the job as a candidate for processing by moving the job to the 4359 'pending' state. 4361 If this job attribute value is the named value 'no-hold', or the 4362 specified time period has already started, the job MUST be a candidate 4363 for processing immediately. 4365 If the client does not supply this attribute and this attribute is 4366 supported by the Printer object, the Printer object MUST use the value 4367 of the Printer object's "job-hold-until-default" at job submission time 4368 (unlike most Job Template attributes that are used if necessary at job 4369 processing time). 4371 4.2.3 job-sheets (type3 keyword | name(MAX)) 4373 This attribute determines which job start/end sheet(s), if any, MUST be 4374 printed with a job. 4376 Standard keyword values are: 4378 'none': no job sheet is printed 4380 Expires November 10, 1999 4381 'standard': one or more site specific standard job sheets are 4382 printed, e.g. a single start sheet or both start and end sheet is 4383 printed 4385 An administrator MAY define additional values using the 'name' or 4386 'keyword' attribute syntax, depending on implementation. 4388 Note: The effect of this attribute on jobs with multiple documents MAY 4389 be affected by the "multiple-document-handling" job attribute (section 4390 4.2.4), depending on the job sheet semantics. 4392 4.2.4 multiple-document-handling (type2 keyword) 4394 This attribute is relevant only if a job consists of two or more 4395 documents. This attribute MUST be supported if the Printer supports 4396 multiple documents per job (see sections 3.2.4 and 3.3.1). Issue 34 The 4397 attribute controls finishing operations and the placement of one or more 4398 print-stream pages into impressions and onto media sheets. When the 4399 value of the "copies" attribute exceeds 1, it also controls the order in 4400 which the copies that result from processing the documents are produced. 4401 For the purposes of this explanations, if "a" represents an instance of 4402 document data, then the result of processing the data in document "a" is 4403 a sequence of media sheets represented by "a(*)". 4405 Standard keyword values are: 4407 'single-document': If a Job object has multiple documents, say, the 4408 document data is called a and b, then the result of processing all 4409 the document data (a and then b) MUST be treated as a single 4410 sequence of media sheets for finishing operations; that is, 4411 finishing would be performed on the concatenation of the sequences 4412 a(*),b(*). The Printer object MUST NOT force the data in each 4413 document instance to be formatted onto a new print-stream page, nor 4414 to start a new impression on a new media sheet. If more than one 4415 copy is made, the ordering of the sets of media sheets resulting 4416 from processing the document data MUST be a(*), b(*), a(*), b(*), 4417 ..., and the Printer object MUST force each copy (a(*),b(*)) to 4418 start on a new media sheet. 4419 'separate-documents-uncollated-copies': If a Job object has multiple 4420 documents, say, the document data is called a and b, then the 4421 result of processing the data in each document instance MUST be 4422 treated as a single sequence of media sheets for finishing 4423 operations; that is, the sets a(*) and b(*) would each be finished 4424 separately. The Printer object MUST force each copy of the result 4425 of processing the data in a single document to start on a new media 4426 sheet. If more than one copy is made, the ordering of the sets of 4427 media sheets resulting from processing the document data MUST be 4428 a(*), a(*), ..., b(*), b(*) ... . 4429 'separate-documents-collated-copies': If a Job object has multiple 4430 documents, say, the document data is called a and b, then the 4431 result of processing the data in each document instance MUST be 4432 treated as a single sequence of media sheets for finishing 4433 operations; that is, the sets a(*) and b(*) would each be finished 4434 separately. The Printer object MUST force each copy of the result 4436 Expires November 10, 1999 4437 of processing the data in a single document to start on a new media 4438 sheet. If more than one copy is made, the ordering of the sets of 4439 media sheets resulting from processing the document data MUST be 4440 a(*), b(*), a(*), b(*), ... . 4441 'single-document-new-sheet': Same as 'single-document', except that 4442 the Printer object MUST ensure that the first impression of each 4443 document instance in the job is placed on a new media sheet. This 4444 value allows multiple documents to be stapled together with a 4445 single staple where each document starts on a new sheet. 4447 The 'single-document' value is the same as 'separate-documents-collated- 4448 copies' with respect to ordering of print-stream pages, but not media 4449 sheet generation, since 'single-document' will put the first page of the 4450 next document on the back side of a sheet if an odd number of pages have 4451 been produced so far for the job, while 'separate-documents-collated- 4452 copies' always forces the next document or document copy on to a new 4453 sheet. In addition, if the "finishings" attribute specifies 'staple', 4454 then with 'single-document', documents a and b are stapled together as a 4455 single document with no regard to new sheets, with 'single-document-new- 4456 sheet', documents a and b are stapled together as a single document, but 4457 document b starts on a new sheet, but with 'separate-documents- 4458 uncollated-copies' and 'separate-documents-collated-copies', documents a 4459 and b are stapled separately. 4461 Note: None of these values provide means to produce uncollated sheets 4462 within a document, i.e., where multiple copies of sheet n are produced 4463 before sheet n+1 of the same document. 4465 The relationship of this attribute and the other attributes that control 4466 document processing is described in section 15.3. 4468 4.2.5 copies (integer(1:MAX)) 4470 This attribute specifies the number of copies to be printed. 4472 On many devices the supported number of collated copies will be limited 4473 by the number of physical output bins on the device, and may be 4474 different from the number of uncollated copies which can be supported. 4476 Note: The effect of this attribute on jobs with multiple documents is 4477 controlled by the "multiple-document-handling" job attribute (section 4478 4.2.4) and the relationship of this attribute and the other attributes 4479 that control document processing is described in section 15.3. 4481 4.2.6 finishings (1setOf type2 enum) 4483 This attribute identifies the finishing operations that the Printer uses 4484 for each copy of each printed document in the Job. For Jobs with 4485 multiple documents, the "multiple-document-handling" attribute 4486 determines what constitutes a "copy" for purposes of finishing. 4488 Standard enum values are: 4490 Value Symbolic Name and Description 4492 Expires November 10, 1999 4493 '3' 'none': Perform no finishing 4494 '4' 'staple': Bind the document(s) with one or more staples. The 4495 exact number and placement of the staples is site- 4496 defined. 4497 '5' 'punch': This value indicates that holes are required in the 4498 finished document. The exact number and placement of the 4499 holes is site-defined The punch specification MAY be 4500 satisfied (in a site- and implementation-specific manner) 4501 either by drilling/punching, or by substituting pre- 4502 drilled media. 4503 '6' 'cover': This value is specified when it is desired to select 4504 a non-printed (or pre-printed) cover for the document. 4505 This does not supplant the specification of a printed 4506 cover (on cover stock medium) by the document itself. 4507 '7' 'bind': This value indicates that a binding is to be applied 4508 to the document; the type and placement of the binding is 4509 site-defined. 4511 '8' 'saddle-stitch': Bind the document(s) with one or more 4512 staples (wire stitches) along the middle fold. The exact 4513 number and placement of the staples and the middle fold 4514 is implementation and/or site-defined. 4515 '9' 'edge-stitch': Bind the document(s) with one or more staples 4516 (wire stitches) along one edge. The exact number and 4517 placement of the staples is implementation and/or site- 4518 defined. 4519 '10'-'19' reserved for future generic finishing enum values. 4521 The following values are more specific; they indicate a corner or an 4522 edge as if the document were a portrait document (see below): 4524 '20' 'staple-top-left': Bind the document(s) with one or more 4525 staples in the top left corner. 4526 '21' 'staple-bottom-left': Bind the document(s) with one or more 4527 staples in the bottom left corner. 4528 '22' 'staple-top-right': Bind the document(s) with one or more 4529 staples in the top right corner. 4530 '23' 'staple-bottom-right': Bind the document(s) with one or more 4531 staples in the bottom right corner. 4532 '24' 'edge-stitch-left': Bind the document(s) with one or more 4533 staples (wire stitches) along the left edge. The exact 4534 number and placement of the staples is implementation 4535 and/or site-defined. 4536 '25' 'edge-stitch-top': Bind the document(s) with one or more 4537 staples (wire stitches) along the top edge. The exact 4538 number and placement of the staples is implementation 4539 and/or site-defined. 4540 '26' 'edge-stitch-right': Bind the document(s) with one or more 4541 staples (wire stitches) along the right edge. The exact 4542 number and placement of the staples is implementation 4543 and/or site-defined. 4544 '27' 'edge-stitch-bottom': Bind the document(s) with one or more 4545 staples (wire stitches) along the bottom edge. The exact 4546 number and placement of the staples is implementation 4547 and/or site-defined. 4549 Expires November 10, 1999 4551 '28' 'staple-dual-left': Bind the document(s) with two staples 4552 (wire stitches) along the left edge assuming a portrait 4553 document (see above). 4554 '29' 'staple-dual-top': Bind the document(s) with two staples 4555 (wire stitches) along the top edge assuming a portrait 4556 document (see above). 4557 '30' 'staple-dual-right': Bind the document(s) with two staples 4558 (wire stitches) along the right edge assuming a portrait 4559 document (see above). 4560 '31' 'staple-dual-bottom': Bind the document(s) with two staples 4561 (wire stitches) along the bottom edge assuming a portrait 4562 document (see above). 4564 The 'staple-xxx' values are specified with respect to the document as if 4565 the document were a portrait document. If the document is actually a 4566 landscape or a reverse-landscape document, the client supplies the 4567 appropriate transformed value. For example, to position a staple in the 4568 upper left hand corner of a landscape document when held for reading, 4569 the client supplies the 'staple-bottom-left' value (since landscape is 4570 defined as a +90 degree rotation from portrait, i.e., anti-clockwise). 4571 On the other hand, to position a staple in the upper left hand corner of 4572 a reverse-landscape document when held for reading, the client supplies 4573 the 'staple-top-right' value (since reverse-landscape is defined as a - 4574 90 degree rotation from portrait, i.e., clockwise). 4576 The angle (vertical, horizontal, angled) of each staple with respect to 4577 the document depends on the implementation which may in turn depend on 4578 the value of the attribute. 4580 Note: The effect of this attribute on jobs with multiple documents is 4581 controlled by the "multiple-document-handling" job attribute (section 4582 4.2.4) and the relationship of this attribute and the other attributes 4583 that control document processing is described in section 15.3. 4585 If the client supplies a value of 'none' along with any other 4586 combination of values, it is the same as if only that other combination 4587 of values had been supplied (that is the 'none' value has no effect). 4589 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 4591 This attribute identifies the range(s) of print-stream pages that the 4592 Printer object uses for each copy of each document which are to be 4593 printed. Nothing is printed for any pages identified that do not exist 4594 in the document(s). Ranges MUST be in ascending order, for example: 1- 4595 3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling Printer 4596 object can process the job in a single pass. If the ranges are not 4597 ascending or are overlapping, the IPP object MUST reject the request and 4598 return the 'client-error-bad-request' status code. The attribute is 4599 associated with print-stream pages not application-numbered pages (for 4600 example, the page numbers found in the headers and or footers for 4601 certain word processing applications). 4603 For Jobs with multiple documents, the "multiple-document-handling" 4604 attribute determines what constitutes a "copy" for purposes of the 4605 specified page range(s). When "multiple-document-handling" is 'single- 4607 Expires November 10, 1999 4608 document', the Printer object MUST apply each supplied page range once 4609 to the concatenation of the print-stream pages. For example, if there 4610 are 8 documents of 10 pages each, the page-range '41:60' prints the 4611 pages in the 5th and 6th documents as a single document and none of the 4612 pages of the other documents are printed. When "multiple-document- 4613 handling" is 'separate-documents-uncollated-copies' or 'separate- 4614 documents-collated-copies', the Printer object MUST apply each supplied 4615 page range repeatedly to each document copy. For the same job, the 4616 page-range '1:3, 10:10' would print the first 3 pages and the 10th page 4617 of each of the 8 documents in the Job, as 8 separate documents. 4619 In most cases, the exact pages to be printed will be generated by a 4620 device driver and this attribute would not be required. However, when 4621 printing an archived document which has already been formatted, the end 4622 user may elect to print just a subset of the pages contained in the 4623 document. In this case, if page-range = n.m is specified, the first 4624 page to be printed will be page n. All subsequent pages of the document 4625 will be printed through and including page m. 4627 "page-ranges-supported" is a boolean value indicating whether or not the 4628 printer is capable of supporting the printing of page ranges. This 4629 capability may differ from one PDL to another. There is no "page-ranges- 4630 default" attribute. If the "page-ranges" attribute is not supplied by 4631 the client, all pages of the document will be printed. 4633 Note: The effect of this attribute on jobs with multiple documents is 4634 controlled by the "multiple-document-handling" job attribute (section 4635 4.2.4) and the relationship of this attribute and the other attributes 4636 that control document processing is described in section 15.3. 4638 4.2.8 sides (type2 keyword) 4640 This attribute specifies how print-stream pages are to be imposed upon 4641 the sides of an instance of a selected medium, i.e., an impression. 4643 The standard keyword values are: 4645 'one-sided': imposes each consecutive print-stream page upon the same 4646 side of consecutive media sheets. 4647 'two-sided-long-edge': imposes each consecutive pair of print-stream 4648 pages upon front and back sides of consecutive media sheets, such 4649 that the orientation of each pair of print-stream pages on the 4650 medium would be correct for the reader as if for binding on the 4651 long edge. This imposition is sometimes called 'duplex' or 'head- 4652 to-head'. 4653 'two-sided-short-edge': imposes each consecutive pair of print-stream 4654 pages upon front and back sides of consecutive media sheets, such 4655 that the orientation of each pair of print-stream pages on the 4656 medium would be correct for the reader as if for binding on the 4657 short edge. This imposition is sometimes called 'tumble' or 'head- 4658 to-toe'. 4660 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 4661 all work the same for portrait or landscape. However 'head-to-toe' is 4663 Expires November 10, 1999 4664 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 4665 switches between 'duplex' and 'tumble' when using portrait and landscape 4666 modes. 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 4.2.9 number-up (integer(1:MAX)) 4675 This attribute specifies the number of print-stream pages to impose upon 4676 a single side of an instance of a selected medium. For example, if the 4677 value is: 4679 Value Description 4681 '1' the Printer MUST place one print-stream page on a single side 4682 of an instance of the selected medium (MAY add some sort 4683 of translation, scaling, or rotation). 4684 '2' the Printer MUST place two print-stream pages on a single side 4685 of an instance of the selected medium (MAY add some sort 4686 of translation, scaling, or rotation). 4687 '4' the Printer MUST place four print-stream pages on a single 4688 side of an instance of the selected medium (MAY add some 4689 sort of translation, scaling, or rotation). 4691 This attribute primarily controls the translation, scaling and rotation 4692 of print-stream pages. 4694 Note: The effect of this attribute on jobs with multiple documents is 4695 controlled by the "multiple-document-handling" job attribute (section 4696 4.2.4) and the relationship of this attribute and the other attributes 4697 that control document processing is described in section 15.3. 4699 4.2.10 orientation-requested (type2 enum) 4701 This attribute indicates the desired orientation for printed print- 4702 stream pages; it does not describe the orientation of the client- 4703 supplied print-stream pages. 4705 For some document formats (such as 'application/postscript'), the 4706 desired orientation of the print-stream pages is specified within the 4707 document data. This information is generated by a device driver prior 4708 to the submission of the print job. Other document formats (such as 4709 'text/plain') do not include the notion of desired orientation within 4710 the document data. In the latter case it is possible for the Printer 4711 object to bind the desired orientation to the document data after it has 4712 been submitted. It is expected that a Printer object would only support 4713 "orientations-requested" for some document formats (e.g., 'text/plain' 4714 or 'text/html') but not others (e.g., 'application/postscript'). This 4715 is no different than any other Job Template attribute since section 4.2, 4716 item 1, points out that a Printer object may support or not support any 4717 Job Template attribute based on the document format supplied by the 4719 Expires November 10, 1999 4720 client. However, a special mention is made here since it is very likely 4721 that a Printer object will support "orientation-requested" for only a 4722 subset of the supported document formats. 4724 Standard enum values are: 4726 Value Symbolic Name and Description 4728 '3' 'portrait': The content will be imaged across the short edge 4729 of the medium. 4730 '4' 'landscape': The content will be imaged across the long edge 4731 of the medium. Landscape is defined to be a rotation of 4732 the print-stream page to be imaged by +90 degrees with 4733 respect to the medium (i.e. anti-clockwise) from the 4734 portrait orientation. Note: The +90 direction was 4735 chosen because simple finishing on the long edge is the 4736 same edge whether portrait or landscape 4737 '5' 'reverse-landscape': The content will be imaged across the 4738 long edge of the medium. Reverse-landscape is defined to 4739 be a rotation of the print-stream page to be imaged by - 4740 90 degrees with respect to the medium (i.e. clockwise) 4741 from the portrait orientation. Note: The 'reverse- 4742 landscape' value was added because some applications 4743 rotate landscape -90 degrees from portrait, rather than 4744 +90 degrees. 4745 '6' 'reverse-portrait': The content will be imaged across the 4746 short edge of the medium. Reverse-portrait is defined to 4747 be a rotation of the print-stream page to be imaged by 4748 180 degrees with respect to the medium from the portrait 4749 orientation. Note: The 'reverse-portrait' value was 4750 added for use with the "finishings" attribute in cases 4751 where the opposite edge is desired for finishing a 4752 portrait document on simple finishing devices that have 4753 only one finishing position. Thus a 'text'/plain' 4754 portrait document can be stapled "on the right" by a 4755 simple finishing device as is common use with some middle 4756 eastern languages such as Hebrew. 4758 Note: The effect of this attribute on jobs with multiple documents is 4759 controlled by the "multiple-document-handling" job attribute (section 4760 4.2.4) and the relationship of this attribute and the other attributes 4761 that control document processing is described in section 15.3. 4763 4.2.11 media (type3 keyword | name(MAX)) 4765 This attribute identifies the medium that the Printer uses for all 4766 impressions of the Job. 4768 The values for "media" include medium-names, medium-sizes, input-trays 4769 and electronic forms so that one attribute specifies the media. If a 4770 Printer object supports a medium name as a value of this attribute, such 4771 a medium name implicitly selects an input-tray that contains the 4772 specified medium. If a Printer object supports a medium size as a value 4773 of this attribute, such a medium size implicitly selects a medium name 4775 Expires November 10, 1999 4776 that in turn implicitly selects an input-tray that contains the medium 4777 with the specified size. If a Printer object supports an input-tray as 4778 the value of this attribute, such an input-tray implicitly selects the 4779 medium that is in that input-tray at the time the job prints. This case 4780 includes manual-feed input-trays. If a Printer object supports an 4781 electronic form as the value of this attribute, such an electronic form 4782 implicitly selects a medium-name that in turn implicitly selects an 4783 input-tray that contains the medium specified by the electronic form. 4784 The electronic form also implicitly selects an image that the Printer 4785 MUST merge with the document data as its prints each page. 4787 Standard keyword values are (taken from ISO DPA and the Printer MIB) and 4788 are listed in section 14. An administrator MAY define additional values 4789 using the 'name' or 'keyword' attribute syntax, depending on 4790 implementation. 4792 There is also an additional Printer attribute named "media-ready" which 4793 differs from "media-supported" in that legal values only include the 4794 subset of "media-supported" values that are physically loaded and ready 4795 for printing with no operator intervention required. If an IPP object 4796 supports "media-supported", it NEED NOT support "media-ready". 4798 The relationship of this attribute and the other attributes that control 4799 document processing is described in section 15.3. 4801 4.2.12 printer-resolution (resolution) 4803 This attribute identifies the resolution that Printer uses for the Job. 4805 4.2.13 print-quality (type2 enum) 4807 This attribute specifies the print quality that the Printer uses for the 4808 Job. 4810 The standard enum values are: 4812 Value Symbolic Name and Description 4814 '3' 'draft': lowest quality available on the printer 4815 '4' 'normal': normal or intermediate quality on the printer 4816 '5' 'high': highest quality available on the printer 4818 4.3 Job Description Attributes 4820 The attributes in this section form the attribute group called "job- 4821 description". The following table summarizes these attributes. The 4822 third column indicates whether the attribute is a REQUIRED attribute 4823 that MUST be supported by Printer objects. If it is not indicated as 4824 REQUIRED, then it is OPTIONAL. The maximum size in octets for 'text' 4825 and 'name' attributes is indicated in parenthesizes. 4827 Expires November 10, 1999 4828 +----------------------------+----------------------+----------------+ 4829 | Attribute | Syntax | REQUIRED? | 4830 +----------------------------+----------------------+----------------+ 4831 | job-uri | uri | REQUIRED | 4832 +----------------------------+----------------------+----------------+ 4833 | job-id | integer(1:MAX) | REQUIRED | 4834 +----------------------------+----------------------+----------------+ 4835 | job-printer-uri | uri | REQUIRED | 4836 +----------------------------+----------------------+----------------+ 4837 | job-more-info | uri | | 4838 +----------------------------+----------------------+----------------+ 4839 | job-name | name (MAX) | REQUIRED | 4840 +----------------------------+----------------------+----------------+ 4841 | job-originating-user-name | name (MAX) | REQUIRED | 4842 +----------------------------+----------------------+----------------+ 4843 | job-state | type1 enum | REQUIRED | 4844 +----------------------------+----------------------+----------------+ 4845 | job-state-reasons | 1setOf type2 keyword | REQUIRED | 4846 +----------------------------+----------------------+----------------+ 4847 | job-state-message | text (MAX) | | 4848 +----------------------------+----------------------+----------------+ 4849 | number-of-documents | integer (0:MAX) | | 4850 +----------------------------+----------------------+----------------+ 4851 | output-device-assigned | name (127) | | 4852 +----------------------------+----------------------+----------------+ 4853 | time-at-creation | integer (0:MAX) | REQUIRED | 4854 +----------------------------+----------------------+----------------+ 4855 | time-at-processing | integer (0:MAX) | REQUIRED | 4856 +----------------------------+----------------------+----------------+ 4857 | time-at-completed | integer (0:MAX) | REQUIRED | 4858 +----------------------------+----------------------+----------------+ 4859 | job-printer-up-time | integer (1:MAX) | REQUIRED | 4860 +----------------------------+----------------------+----------------+ 4861 | number-of-intervening-jobs | integer (0:MAX) | | 4862 +----------------------------+----------------------+----------------+ 4863 | job-message-from-operator | text (127) | | 4864 +----------------------------+----------------------+----------------+ 4865 | job-k-octets | integer (0:MAX) | | 4866 +----------------------------+----------------------+----------------+ 4867 | job-impressions | integer (0:MAX) | | 4868 +----------------------------+----------------------+----------------+ 4869 | job-media-sheets | integer (0:MAX) | | 4870 +----------------------------+----------------------+----------------+ 4871 | job-k-octets-processed | integer (0:MAX) | | 4872 +----------------------------+----------------------+----------------+ 4873 | job-impressions-completed | integer (0:MAX) | | 4874 +----------------------------+----------------------+----------------+ 4875 | job-media-sheets-completed | integer (0:MAX) | | 4876 +----------------------------+----------------------+----------------+ 4877 | attributes-charset | charset | REQUIRED | 4878 +----------------------------+----------------------+----------------+ 4879 | attributes-natural-language| naturalLanguage | REQUIRED | 4880 +----------------------------+----------------------+----------------+ 4882 Expires November 10, 1999 4883 4.3.1 job-uri (uri) 4885 This REQUIRED attribute contains the URI for the job. The Printer 4886 object, on receipt of a new job, generates a URI which identifies the 4887 new Job. The Printer object returns the value of the "job-uri" 4888 attribute as part of the response to a create request. The precise 4889 format of a Job URI is implementation dependent. If the Printer object 4890 supports more than one URI and there is some relationship between the 4891 newly formed Job URI and the Printer object's URI, the Printer object 4892 uses the Printer URI supplied by the client in the create request. For 4893 example, if the create request comes in over a secure channel, the new 4894 Job URI MUST use the same secure channel. This can be guaranteed 4895 because the Printer object is responsible for generating the Job URI and 4896 the Printer object is aware of its security configuration and policy as 4897 well as the Printer URI used in the create request. 4899 For a description of this attribute and its relationship to "job-id" and 4900 "job-printer-uri" attribute, see the discussion in section 2.4 on 4901 "Object Identity". 4903 4.3.2 job-id (integer(1:MAX)) 4905 This REQUIRED attribute contains the ID of the job. The Printer, on 4906 receipt of a new job, generates an ID which identifies the new Job on 4907 that Printer. The Printer returns the value of the "job-id" attribute 4908 as part of the response to a create request. The 0 value is not 4909 included to allow for compatibility with SNMP index values which also 4910 cannot be 0. 4912 For a description of this attribute and its relationship to "job-uri" 4913 and "job-printer-uri" attribute, see the discussion in section 2.4 on 4914 "Object Identity". 4916 4.3.3 job-printer-uri (uri) 4918 This REQUIRED attribute identifies the Printer object that created this 4919 Job object. When a Printer object creates a Job object, it populates 4920 this attribute with the Printer object URI that was used in the create 4921 request. This attribute permits a client to identify the Printer object 4922 that created this Job object when only the Job object's URI is available 4923 to the client. The client queries the creating Printer object to 4924 determine which languages, charsets, operations, are supported for this 4925 Job. 4927 For a description of this attribute and its relationship to "job-uri" 4928 and "job-id" attribute, see the discussion in section 2.4 on "Object 4929 Identity". 4931 4.3.4 job-more-info (uri) 4933 Similar to "printer-more-info", this attribute contains the URI 4934 referencing some resource with more information about this Job object, 4935 perhaps an HTML page containing information about the Job. 4937 Expires November 10, 1999 4938 4.3.5 job-name (name(MAX)) 4940 This REQUIRED attribute is the name of the job. It is a name that is 4941 more user friendly than the "job-uri" attribute value. It does not need 4942 to be unique between Jobs. The Job's "job-name" attribute is set to the 4943 value supplied by the client in the "job-name" operation attribute in 4944 the create request (see Section 3.2.1.1). If, however, the "job-name" 4945 operation attribute is not supplied by the client in the create request, 4946 the Printer object, on creation of the Job, MUST generate a name. The 4947 printer SHOULD generate the value of the Job's "job-name" attribute from 4948 the first of the following sources that produces a value: 1) the 4949 "document-name" operation attribute of the first (or only) document, 2) 4950 the "document-URI" attribute of the first (or only) document, or 3) any 4951 other piece of Job specific and/or Document Content information. 4953 4.3.6 job-originating-user-name (name(MAX)) 4955 This REQUIRED attribute contains the name of the end user that submitted 4956 the print job. The Printer object sets this attribute to the most 4957 authenticated printable name that it can obtain from the authentication 4958 service over which the IPP operation was received. Only if such is not 4959 available, does the Printer object use the value supplied by the client 4960 in the "requesting-user-name" operation attribute of the create 4961 operation (see Section 8). 4963 Note: The Printer object needs to keep an internal originating user id 4964 of some form, typically as a credential of a principal, with the Job 4965 object. Since such an internal attribute is implementation-dependent 4966 and not of interest to clients, it is not specified as a Job Description 4967 attribute. This originating user id is used for authorization checks 4968 (if any) on all subsequent operation. 4970 4.3.7 job-state (type1 enum) 4972 This REQUIRED attribute identifies the current state of the job. Even 4973 though the IPP protocol defines seven values for job states (plus the 4974 out-of-band 'unknown' value - see Section 4.1), implementations only 4975 need to support those states which are appropriate for the particular 4976 implementation. In other words, a Printer supports only those job 4977 states implemented by the output device and available to the Printer 4978 object implementation. 4980 Standard enum values are: 4982 Values Symbolic Name and Description 4984 '3' 'pending': The job is a candidate to start processing, but is 4985 not yet processing. 4987 '4' 'pending-held': The job is not a candidate for processing for 4988 any number of reasons but will return to the 'pending' 4989 state as soon as the reasons are no longer present. The 4990 job's "job-state-reason" attribute MUST indicate why the 4991 job is no longer a candidate for processing. 4993 Expires November 10, 1999 4995 '5' 'processing': One or more of: 4997 1. the job is using, or is attempting to use, one or 4998 more purely software processes that are analyzing, 4999 creating, or interpreting a PDL, etc., 5000 2. the job is using, or is attempting to use, one or 5001 more hardware devices that are interpreting a PDL, making 5002 marks on a medium, and/or performing finishing, such as 5003 stapling, etc., 5004 3. the Printer object has made the job ready for 5005 printing, but the output device is not yet printing it, 5006 either because the job hasn't reached the output device 5007 or because the job is queued in the output device or some 5008 other spooler, awaiting the output device to print it. 5010 When the job is in the 'processing' state, the entire job 5011 state includes the detailed status represented in the 5012 Printer object's "printer-state", "printer-state- 5013 reasons", and "printer-state-message" attributes. 5015 Implementations MAY, though they NEED NOT, include 5016 additional values in the job's "job-state-reasons" 5017 attribute to indicate the progress of the job, such as 5018 adding the 'job-printing' value to indicate when the 5019 output device is actually making marks on paper and/or 5020 the 'processing-to-stop-point' value to indicate that the 5021 IPP object is in the process of canceling or aborting the 5022 job. Most implementations won't bother with this nuance. 5024 '6' 'processing-stopped': The job has stopped while processing 5025 for any number of reasons and will return to the 5026 'processing' state as soon as the reasons are no longer 5027 present. 5029 The job's "job-state-reason" attribute MAY indicate why 5030 the job has stopped processing. For example, if the 5031 output device is stopped, the 'printer-stopped' value MAY 5032 be included in the job's "job-state-reasons" attribute. 5034 Note: When an output device is stopped, the device 5035 usually indicates its condition in human readable form 5036 locally at the device. A client can obtain more complete 5037 device status remotely by querying the Printer object's 5038 "printer-state", "printer-state-reasons" and "printer- 5039 state-message" attributes. 5041 '7' 'canceled': The job has been canceled by a Cancel-Job 5042 operation and the Printer object has completed canceling 5043 the job and all job status attributes have reached their 5044 final values for the job. While the Printer object is 5045 canceling the job, the job remains in its current state, 5046 but the job's "job-state-reasons" attribute SHOULD 5048 Expires November 10, 1999 5049 contain the 'processing-to-stop-point' value and one of 5050 the 'canceled-by-user', 'canceled-by-operator', or 5051 'canceled-at-device' value. When the job moves to the 5052 'canceled' state, the 'processing-to-stop-point' value, 5053 if present, MUST be removed, but the 'canceled-by-xxx', 5054 if present, MUST remain. 5056 '8' 'aborted': The job has been aborted by the system, usually 5057 while the job was in the 'processing' or 'processing- 5058 stopped' state and the Printer has completed aborting the 5059 job and all job status attributes have reached their 5060 final values for the job. While the Printer object is 5061 aborting the job, the job remains in its current state, 5062 but the job's "job-state-reasons" attribute SHOULD 5063 contain the 'processing-to-stop-point' and 'aborted-by- 5064 system' values. When the job moves to the 'aborted' 5065 state, the 'processing-to-stop-point' value, if present, 5066 MUST be removed, but the 'aborted-by-system' value, if 5067 present, MUST remain. 5069 '9' 'completed': The job has completed successfully or with 5070 warnings or errors after processing and all of the job 5071 media sheets have been successfully stacked in the 5072 appropriate output bin(s) and all job status attributes 5073 have reached their final values for the job. The job's 5074 "job-state-reasons" attribute SHOULD contain one of: 5075 'completed-successfully', 'completed-with-warnings', or 5076 'completed-with-errors' values. 5078 The final value for this attribute MUST be one of: 'completed', 5079 'canceled', or 'aborted' before the Printer removes the job altogether. 5080 The length of time that jobs remain in the 'canceled', 'aborted', and 5081 'completed' states depends on implementation. See section 4.3.7.1. 5083 The following figure shows the normal job state transitions. 5085 +----> canceled 5086 / 5087 +----> pending --------> processing ---------+------> completed 5088 | ^ ^ \ 5089 --->+ | | +----> aborted 5090 | v v / 5091 +----> pending-held processing-stopped ---+ 5093 Normally a job progresses from left to right. Other state transitions 5094 are unlikely, but are not forbidden. Not shown are the transitions to 5095 the 'canceled' state from the 'pending', 'pending-held', and 5096 'processing-stopped' states. 5098 Jobs reach one of the three terminal states: 'completed', 'canceled', or 5099 'aborted', after the jobs have completed all activity, including 5100 stacking output media, after the jobs have completed all activity, and 5101 all job status attributes have reached their final values for the job. 5103 Expires November 10, 1999 5104 Note: As with all other IPP attributes, if the implementation cannot 5105 determine the correct value for this attribute, it SHOULD respond with 5106 the out-of-band value 'unknown' (see section 4.1) rather than try to 5107 guess at some possibly incorrect value and give the end user the wrong 5108 impression about the state of the Job object. For example, if the 5109 implementation is just a gateway into some printing system from which it 5110 can normally get status, but temporarily is unable, then the 5111 implementation should return the 'unknown' value. However, if the 5112 implementation is a gateway to a printing system that never provides 5113 detailed status about the print job, the implementation MAY set the IPP 5114 Job object's state to 'completed', provided that it also sets the 5115 'queued-in-device' value in the job's "job-state-reasons" attribute (see 5116 section 4.3.8). Issue 14 5118 4.3.7.1 Partitioning of Job States 5120 This section partitions the 7 job states into phases: Job Not 5121 Completed, Job Retention, Job History, and Job Removal. This section 5122 also explains the 'job-restartable' value of the "job-state-reasons" Job 5123 Description attribute for use with the Restart-Job operation. 5125 Job Not Completed: When a job is in the 'pending', 'pending-held', 5126 'processing', or 'processing-stopped' states, the job is not completed. 5128 Job Retention: When a job enters one of the three terminal job states: 5129 'completed', 'canceled', or 'aborted', the IPP Printer object MAY 5130 "retain" the job in a restartable condition for an implementation- 5131 defined time period. This time period MAY be zero seconds and MAY 5132 depend on the terminal job state. This phase is called Job Retention. 5133 While in the Job Retention phase, the job's document data is retained 5134 and a client may restart the job using the Restart-Job operation. If 5135 the IPP object supports Issue 30 the Restart-Job operation, then it 5136 SHOULD indicate that the job is restartable by adding the 'job- 5137 restartable' value to the job's "job-state-reasons" attribute (see 5138 Section 4.3.8) during the Job Retention phase. 5140 Job History: After the Job Retention phase expires for a job, the 5141 Printer object deletes the document data for the job and the job becomes 5142 part of the Job History. The Printer object MAY also delete any number 5143 of the job attributes. Since the job is no longer restartable, the 5144 Printer object MUST remove the 'job-restartable' value from the job's 5145 "job-state-reasons" attribute, if present. 5147 Job Removal: After the job has remained in the Job History for an 5148 implementation-defined time, such as when the number of jobs exceeds a 5149 fixed number or after a fixed time period (which MAY be zero seconds), 5150 the IPP Printer removes the job from the system. 5152 Using the Get-Jobs operation and supplying the 'not-completed' value for 5153 the "which-jobs" operation attribute, a client is requesting jobs in the 5154 Job Not Completed phase. Using the Get-Jobs operation and supplying the 5155 'completed' value for the "which-jobs" operation attribute, a client is 5156 requesting jobs in the Job Retention and Job History phases. Using the 5157 Get-Job-Attributes operation, a client is requesting a job in any phase 5158 except Job Removal. After Job Removal, the Get-Job-Attributes and Get- 5160 Expires November 10, 1999 5161 Jobs operations no longer are capable of returning any information about 5162 a job. 5164 4.3.8 job-state-reasons (1setOf type2 keyword) 5166 This REQUIRED attribute provides additional information about the job's 5167 current state, i.e., information that augments the value of the job's 5168 "job-state" attribute. 5170 While implementation of this attribute is REQUIRED, implementation of 5171 these values is OPTIONAL. Issue 30 These values MAY be used with any 5172 job state or states for which the reason makes sense. Furthermore, when 5173 implemented, the Printer MUST return these values when the reason 5174 applies and MUST NOT return them when the reason no longer applies 5175 whether the value of the Job's "job-state" attribute changed or not. 5176 When the Job does not have any reasons for being in its current state, 5177 the value of the Job's "job-state-reasons" attribute MUST be 'none'. 5179 Note: While values cannot be added to the 'job-state' attribute without 5180 impacting deployed clients that take actions upon receiving "job-state" 5181 values, it is the intent that additional "job-state-reasons" values can 5182 be defined and registered without impacting such deployed clients. In 5183 other words, the "job-state-reasons" attribute is intended to be 5184 extensible. 5186 The following standard keyword values are defined. For ease of 5187 understanding, the values are presented in the order in which the 5188 reasons are likely to occur (if implemented), starting with the 'job- 5189 incoming' value: 5191 'none': There are no reasons for the job's current state. This 5192 state reason is semantically equivalent to "job-state-reasons" 5193 without any value and MUST be used when there is no other value, 5194 since the 1setOf attribute syntax requires at least one value. 5195 'job-incoming': The Create-Job operation has been accepted by the 5196 Printer, but the Printer is expecting additional Send-Document 5197 and/or Send-URI operations and/or is accessing/accepting document 5198 data. 5199 'job-data-insufficient': The Create-Job operation has been accepted 5200 by the Printer, but the Printer is expecting additional document 5201 data before it can move the job into the 'processing' state. If a 5202 Printer starts processing before it has received all data, the 5203 Printer removes the 'job-data-insufficient' reason, but the 'job- 5204 incoming' remains. If a Printer starts processing after it has 5205 received all data, the Printer removes the 'job-data-insufficient' 5206 reason and the 'job-incoming' at the same time. Issue 13 5207 'document-access-error': After accepting a Print-URI or Send-URI 5208 request, the Printer could not access one or more documents passed 5209 by reference. This reason is intended to cover any file access 5210 problem, including file does not exist and access denied because of 5211 an access control problem. Whether the Printer aborts the job and 5212 moves the job to the 'aborted' job state or prints all documents 5213 that are accessible and moves the job to the 'completed' job state 5214 and adds the 'completed-with-errors' value in the job's "job-state- 5216 Expires November 10, 1999 5217 reasons" attribute depends on implementation and/or site policy. 5218 Issue 35 5219 'submission-interrupted': The job was not completely submitted for 5220 some unforeseen reason, such as: (1) the Printer has crashed before 5221 the job was closed by the client, (2) the Printer or the document 5222 transfer method has crashed in some non-recoverable way before the 5223 document data was entirely transferred to the Printer, (3) the 5224 client crashed or failed to close the job before the time-out 5225 period. See section 4.4.31. 5226 'job-outgoing': The Printer is transmitting the job to the output 5227 device. 5228 'job-hold-until-specified': The value of the job's "job-hold-until" 5229 attribute was specified with a time period that is still in the 5230 future. The job MUST NOT be a candidate for processing until this 5231 reason is removed and there are no other reasons to hold the job. 5232 'resources-are-not-ready': At least one of the resources needed by 5233 the job, such as media, fonts, resource objects, etc., is not ready 5234 on any of the physical printer's for which the job is a candidate. 5235 This condition MAY be detected when the job is accepted, or 5236 subsequently while the job is pending or processing, depending on 5237 implementation. The job may remain in its current state or be 5238 moved to the 'pending-held' state, depending on implementation 5239 and/or job scheduling policy. 5240 'printer-stopped-partly': The value of the Printer's "printer-state- 5241 reasons" attribute contains the value 'stopped-partly'. 5242 'printer-stopped': The value of the Printer's "printer-state" 5243 attribute is 'stopped'. 5244 'job-interpreting': Job is in the 'processing' state, but more 5245 specifically, the Printer is interpreting the document data. 5246 'job-queued': Job is in the 'processing' state, but more 5247 specifically, the Printer has queued the document data. 5248 'job-transforming': Job is in the 'processing' state, but more 5249 specifically, the Printer is interpreting document data and 5250 producing another electronic representation. 5251 'job-queued-for-marker': Job is in any of the 'pending-held', 5252 'pending', or 'processing' states, but more specifically, the 5253 Printer has completed enough processing of the document to be able 5254 to start marking and the job is waiting for the marker. Systems 5255 that require human intervention to release jobs using the Release- 5256 Job operation, put the job into the 'pending-held' job state. 5257 Systems that automatically select a job to use the marker put the 5258 job into the 'pending' job state or keep the job in the 5259 'processing' job state while waiting for the marker, depending on 5260 implementation. All implementations put the job into (or back 5261 into) the 'processing' state when marking does begin. Issue 31 5262 'job-printing': The output device is marking media. This value is 5263 useful for Printers which spend a great deal of time processing (1) 5264 when no marking is happening and then want to show that marking is 5265 now happening or (2) when the job is in the process of being 5266 canceled or aborted while the job remains in the 'processing' 5267 state, but the marking has not yet stopped so that impression or 5268 sheet counts are still increasing for the job. 5269 'job-canceled-by-user': The job was canceled by the owner of the job 5270 using the Cancel-Job request, i.e., by a user whose authenticated 5271 identity is the same as the value of the originating user that 5273 Expires November 10, 1999 5274 created the Job object, or by some other authorized end-user, such 5275 as a member of the job owner's security group. 5276 'job-canceled-by-operator': The job was canceled by the operator 5277 using the Cancel-Job request, i.e., by a user who has been 5278 authenticated as having operator privileges (whether local or 5279 remote). If the security policy is to allow anyone to cancel 5280 anyone's job, then this value may be used when the job is canceled 5281 by other than the owner of the job. For such a security policy, in 5282 effect, everyone is an operator as far as canceling jobs with IPP 5283 is concerned. 5284 'job-canceled-at-device': The job was canceled by an unidentified 5285 local user, i.e., a user at a console at the device. 5286 'aborted-by-system': The job (1) is in the process of being aborted, 5287 (2) has been aborted by the system and placed in the 'aborted' 5288 state, or (3) has been aborted by the system and placed in the 5289 'pending-held' state, so that a user or operator can manually try 5290 the job again. 5291 'unsupported-compression': The job was aborted by the system because 5292 the Printer determined while attempting to decompress the document- 5293 data's that the compression is actually not among those supported 5294 by the Printer. Issue 6 5295 'compression-error': The job was aborted by the system because the 5296 Printer encountered an error in the document-data while 5297 decompressing it. If the Printer posts this reason, the document- 5298 data has already passed any tests that would have led to the 5299 'unsupported-compression' job-state-reason. Issue 6 5300 'unsupported-document-format': The job was aborted by the system 5301 because the document-data's document-format is not among those 5302 supported by the Printer. If the client specifies the document- 5303 format as 'application/octet-stream', the printer MAY abort the job 5304 and post this reason even though the format is a member of the 5305 "document-format-supported" printer attribute, but not among the 5306 auto-sensed document-formats. Issue 3 5307 'document-format-error': The job was aborted by the system because 5308 the Printer encountered an error in the document-data while 5309 processing it. If the Printer posts this reason, the document-data 5310 has already passed any tests that would have led to the 5311 'unsupported-document-format' job-state-reason. Issue 3 5312 'processing-to-stop-point': The requester has issued a Cancel-Job 5313 operation or the Printer object has aborted the job, but is still 5314 performing some actions on the job until a specified stop point 5315 occurs or job termination/cleanup is completed. 5317 This reason is recommended to be used in conjunction with the 5318 'processing' job state to indicate that the Printer object is still 5319 performing some actions on the job while the job remains in the 5320 'processing' state. After all the job's job description attributes 5321 have stopped incrementing, the Printer object moves the job from 5322 the 'processing' state to the 'canceled' or 'aborted' job states. 5324 'service-off-line': The Printer is off-line and accepting no jobs. 5325 All 'pending' jobs are put into the 'pending-held' state. This 5326 situation could be true if the service's or document transform's 5327 input is impaired or broken. 5329 Expires November 10, 1999 5331 'job-completed-successfully': The job completed successfully. 5332 'job-completed-with-warnings': The job completed with warnings. 5333 'job-completed-with-errors': The job completed with errors (and 5334 possibly warnings too). 5335 'job-restartable' - This job is retained (see section 4.3.7.1) and is 5336 currently able to be restarted using the Restart-Job operation (see 5337 section 3.3.7). If 'job-restartable' is a value of the job's 'job- 5338 state-reasons' attribute, then the IPP object MUST accept a 5339 Restart-Job operation for that job. 5340 'queued-in-device': The job has been forwarded to a device or print 5341 system that is unable to send back status. The Printer sets the 5342 job's "job-state " attribute to 'completed' and adds the 'queued- 5343 in-device' value to the job's "job-state-reasons" attribute to 5344 indicate that the Printer has no additional information about the 5345 job and never will have any better information. See note in 5346 section 4.3.7. Issue 14 5348 4.3.9 job-state-message (text(MAX)) 5350 This attribute specifies information about the "job-state" and "job- 5351 state-reasons" attributes in human readable text. If the Printer object 5352 supports this attribute, the Printer object MUST be able to generate 5353 this message in any of the natural languages identified by the Printer's 5354 "generated-natural-language-supported" attribute (see the "attributes- 5355 natural-language" operation attribute specified in Section 3.1.4.1). 5357 Note: the value SHOULD NOT contain additional information not contained 5358 in the values of the "job-state" and "job-states-reasons" attributes, 5359 such as interpreter error information. Otherwise, application programs 5360 might attempt to parse the (localized text). For such additional 5361 information such as interpreter errors for application program 5362 consumption or specific document access errors, new attributes with 5363 keyword values, needs to be developed and registered. 5365 4.3.10 number-of-documents (integer(0:MAX)) 5367 This attribute indicates the number of documents in the job, i.e., the 5368 number of Send-Document, Send-URI, Print-Job, or Print-URI operations 5369 that the Printer has accepted for this job, regardless of whether the 5370 document data has reached the Printer object or not. 5372 Implementations supporting the OPTIONAL Create-Job/Send-Document/Send- 5373 URI operations SHOULD support this attribute so that clients can query 5374 the number of documents in each job. 5376 4.3.11 output-device-assigned (name(127)) 5378 This attribute identifies the output device to which the Printer object 5379 has assigned this job. If an output device implements an embedded 5380 Printer object, the Printer object NEED NOT set this attribute. If a 5381 print server implements a Printer object, the value MAY be empty (zero- 5382 length string) or not returned until the Printer object assigns an 5383 output device to the job. This attribute is particularly useful when a 5384 single Printer object support multiple devices (so called "fan-out"). 5386 Expires November 10, 1999 5387 4.3.12 Event Time Job Description Attributes Issue 17 5389 This section defines the Job Description attributes that indicate the 5390 time at which certain events occur for a job. The attribute syntax MUST 5391 be either 'integer' or 'dateTime' for any response in which the 5392 "version-number" parameter is supplied as '1.1', but MUST be an 5393 'integer' for any response in which the "version-number" parameter is 5394 supplied as '1.0', for compatibility with IPP/1.0 [RFC2566]. See 5395 section 3.1.8. 5397 In order to populate these Event Time Job Description Attributes, the 5398 Printer object copies either: 5400 1.the value in its "printer-current-time" attribute for the 5401 'dateTime' value at the time the event occurred if the printer 5402 supports the attribute "printer-current-time" and its value is 5403 not the out-of-band 'no-value' value, 5405 2.the value in its "printer-up-time" attribute for the 'integer' 5406 value at the time the event occurred otherwise 5408 Note: because the time MAY become known to the Printer some time after 5409 power-up, a client could receive jobs that contain some Event Time Job 5410 Description Attributes that use the 'integer' time tick representation 5411 while the later events use the 'dateTime' date/time representation. 5413 If the Printer implementation keeps jobs persistently across power 5414 cycles, then an implementation MUST reset its "printer-up-time" 5415 attribute to 1 on each power-up. In addition, an implementation that 5416 uses the 'integer' form MUST change all of its Event Time Job 5417 Description attributes for those persistent jobs either: 5419 1. to 0 to indicate that the event happened before the most recent 5420 power up 5422 2. to the negative of the number of seconds before the most recent 5423 power-up that the event took place, though the negative number NEED 5424 NOT reflect the exact number of seconds 5426 An implementation that uses the 'dateTime' form does not change the 5427 values of any of its Event Time Job Description Attributes for 5428 persistent jobs on power-up. 5430 4.3.12.1 time-at-creation (integer(MIN:MAX) | dateTime) 5432 This REQUIRED attribute indicates the time at which the Job object was 5433 created. 5435 4.3.12.2 time-at-processing (integer(MIN:MAX) | dateTime) 5437 This REQUIRED attribute indicates the time at which the Job object began 5438 processing. The out-of-band 'no-value' value is returned if the job has 5439 not yet been in the 'processing' state (see the beginning of Section 5440 4.1).. 5442 Expires November 10, 1999 5443 4.3.12.3 time-at-completed (integer(MIN:MAX) | dateTime) 5445 This REQUIRED attribute indicates the time at which the Job object 5446 completed (or was cancelled or aborted). The out-of-band 'no-value' 5447 value is returned if the job has not yet completed, been canceled, or 5448 aborted (see the beginning of Section 4.1). 5450 4.3.12.4 job-printer-up-time (integer(1:MAX)) Issue 17 5452 This REQUIRED Job Description attribute indicates the amount of time (in 5453 seconds) that the Printer implementation has been up and running. This 5454 attribute is an alias for the "printer-up-time" Printer Description 5455 attribute (see Section 4.4.29). 5457 Note: A client MAY request this attribute in a Get-Job-Attributes or 5458 Get-Jobs request and use the value returned in combination with other 5459 requested Event Time Job Description Attributes in order to display time 5460 attributes to a user when the IPP Printer returns them using the 5461 'integer' attribute syntax. The difference between this attribute and 5462 the 'integer' value of a "time-at-xxx" attribute is the number of 5463 seconds ago that the "time-at-xxx" event occurred. A client can compute 5464 the wall-clock time at which the "time-at-xxx" event occurred by 5465 subtracting this difference from the client.s wall-clock time. 5467 4.3.13 number-of-intervening-jobs (integer(0:MAX)) 5469 This attribute indicates the number of jobs that are "ahead" of this job 5470 in the relative chronological order of expected time to complete (i.e., 5471 the current scheduled order). For efficiency, it is only necessary to 5472 calculate this value when an operation is performed that requests this 5473 attribute. 5475 4.3.14 job-message-from-operator (text(127)) 5477 This attribute provides a message from an operator, system administrator 5478 or "intelligent" process to indicate to the end user the reasons for 5479 modification or other management action taken on a job. 5481 4.3.15 Job Size Attributes 5483 This sub-section defines job attributes that describe the size of the 5484 job. These attributes are not intended to be counters; they are 5485 intended to be useful routing and scheduling information if known. For 5486 these attributes, the Printer object may try to compute the value if it 5487 is not supplied in the create request. Even if the client does supply a 5488 value for these three attributes in the create request, the Printer 5489 object MAY choose to change the value if the Printer object is able to 5490 compute a value which is more accurate than the client supplied value. 5491 The Printer object may be able to determine the correct value for these 5492 attributes either right at job submission time or at any later point in 5493 time. 5495 Expires November 10, 1999 5496 4.3.15.1 job-k-octets (integer(0:MAX)) 5498 This attribute specifies the total size of the document(s) in K octets, 5499 i.e., in units of 1024 octets requested to be processed in the job. The 5500 value MUST be rounded up, so that a job between 1 and 1024 octets MUST 5501 be indicated as being 1, 1025 to 2048 MUST be 2, etc. 5503 This value MUST NOT include the multiplicative factors contributed by 5504 the number of copies specified by the "copies" attribute, independent of 5505 whether the device can process multiple copies without making multiple 5506 passes over the job or document data and independent of whether the 5507 output is collated or not. Thus the value is independent of the 5508 implementation and indicates the size of the document(s) measured in K 5509 octets independent of the number of copies. 5511 This value MUST also not include the multiplicative factor due to a 5512 copies instruction embedded in the document data. If the document data 5513 actually includes replications of the document data, this value will 5514 include such replication. In other words, this value is always the size 5515 of the source document data, rather than a measure of the hardcopy 5516 output to be produced. 5518 4.3.15.2 job-impressions (integer(0:MAX)) 5520 This attribute specifies the total size in number of impressions of the 5521 document(s) being submitted (see the definition of impression in section 5522 12.2.5). 5524 As with "job-k-octets", this value MUST NOT include the multiplicative 5525 factors contributed by the number of copies specified by the "copies" 5526 attribute, independent of whether the device can process multiple copies 5527 without making multiple passes over the job or document data and 5528 independent of whether the output is collated or not. Thus the value is 5529 independent of the implementation and reflects the size of the 5530 document(s) measured in impressions independent of the number of copies. 5532 As with "job-k-octets", this value MUST also not include the 5533 multiplicative factor due to a copies instruction embedded in the 5534 document data. If the document data actually includes replications of 5535 the document data, this value will include such replication. In other 5536 words, this value is always the number of impressions in the source 5537 document data, rather than a measure of the number of impressions to be 5538 produced by the job. 5540 4.3.15.3 job-media-sheets (integer(0:MAX)) 5542 This attribute specifies the total number of media sheets to be produced 5543 for this job. 5545 Unlike the "job-k-octets" and the "job-impressions" attributes, this 5546 value MUST include the multiplicative factors contributed by the number 5547 of copies specified by the "copies" attribute and a 'number of copies' 5548 instruction embedded in the document data, if any. This difference 5549 allows the system administrator to control the lower and upper bounds of 5551 Expires November 10, 1999 5552 both (1) the size of the document(s) with "job-k-octets-supported" and 5553 "job-impressions-supported" and (2) the size of the job with "job-media- 5554 sheets-supported". 5556 4.3.16 Job Progress Attributes 5558 This sub-section defines job attributes that describe the progress of 5559 the job. These attributes are intended to be counters. That is, the 5560 value for a job that has not started processing MUST be 0. When the 5561 job's "job-state" is 'processing' or 'processing-stopped', this value is 5562 intended to contain the amount of the job that has been processed to the 5563 time at which the attributes are requested. When the job enters the 5564 'completed', 'canceled', or 'aborted' states, these values are the final 5565 values for the job. 5567 4.3.16.1 job-k-octets-processed (integer(0:MAX)) 5569 This attribute specifies the total number of octets processed in K 5570 octets, i.e., in units of 1024 octets so far. The value MUST be rounded 5571 up, so that a job between 1 and 1024 octets inclusive MUST be indicated 5572 as being 1, 1025 to 2048 inclusive MUST be 2, etc. 5574 For implementations where multiple copies are produced by the 5575 interpreter with only a single pass over the data, the final value MUST 5576 be equal to the value of the "job-k-octets" attribute. For 5577 implementations where multiple copies are produced by the interpreter by 5578 processing the data for each copy, the final value MUST be a multiple of 5579 the value of the "job-k-octets" attribute. 5581 4.3.16.2 job-impressions-completed (integer(0:MAX)) 5583 This job attribute specifies the number of impressions completed for the 5584 job so far. For printing devices, the impressions completed includes 5585 interpreting, marking, and stacking the output. 5587 4.3.16.3 job-media-sheets-completed (integer(0:MAX)) 5589 This job attribute specifies the media-sheets completed marking and 5590 stacking for the entire job so far whether those sheets have been 5591 processed on one side or on both. 5593 4.3.17 attributes-charset (charset) 5595 This REQUIRED attribute is populated using the value in the client 5596 supplied "attributes-charset" attribute in the create request. It 5597 identifies the charset (coded character set and encoding method) used by 5598 any Job attributes with attribute syntax 'text' and 'name' that were 5599 supplied by the client in the create request. See Section 3.1.4 for a 5600 complete description of the "attributes-charset" operation attribute. 5602 This attribute does not indicate the charset in which the 'text' and 5603 'name' values are stored internally in the Job object. The internal 5605 Expires November 10, 1999 5606 charset is implementation-defined. The IPP object MUST convert from 5607 whatever the internal charset is to that being requested in an operation 5608 as specified in Section 3.1.4. 5610 4.3.18 attributes-natural-language (naturalLanguage) 5612 This REQUIRED attribute is populated using the value in the client 5613 supplied "attributes-natural-language" attribute in the create request. 5614 It identifies the natural language used for any Job attributes with 5615 attribute syntax 'text' and 'name' that were supplied by the client in 5616 the create request. See Section 3.1.4 for a complete description of the 5617 "attributes-natural-language" operation attribute. See Sections 4.1.1.2 5618 and 4.1.2.2 for how a Natural Language Override may be supplied 5619 explicitly for each 'text' and 'name' attribute value that differs from 5620 the value identified by the "attributes-natural-language" attribute. 5622 4.4 Printer Description Attributes 5624 These attributes form the attribute group called "printer-description". 5625 The following table summarizes these attributes, their syntax, and 5626 whether or not they are REQUIRED for a Printer object to support. If 5627 they are not indicated as REQUIRED, they are OPTIONAL. The maximum size 5628 in octets for 'text' and 'name' attributes is indicated in 5629 parenthesizes. 5631 Note: How these attributes are set by an Administrator is outside the 5632 scope of this IPP/1.1 document. 5634 Expires November 10, 1999 5635 +----------------------------+---------------------------+-----------+ 5636 | Attribute | Syntax | REQUIRED? | 5637 +----------------------------+---------------------------+-----------+ 5638 | printer-uri-supported | 1setOf uri | REQUIRED | 5639 +----------------------------+---------------------------+-----------+ 5640 | uri-security-supported | 1setOf type2 keyword | REQUIRED | 5641 +----------------------------+---------------------------+-----------+ 5642 | uri-authentication-supported| 1setOf type2 keyword | REQUIRED | 5643 +----------------------------+---------------------------+-----------+ 5644 | printer-name | name (127) | REQUIRED | 5645 +----------------------------+---------------------------+-----------+ 5646 | printer-location | text (127) | | 5647 +----------------------------+---------------------------+-----------+ 5648 | printer-info | text (127) | | 5649 +----------------------------+---------------------------+-----------+ 5650 | printer-more-info | uri | | 5651 +----------------------------+---------------------------+-----------+ 5652 | printer-driver-installer | uri | | 5653 +----------------------------+---------------------------+-----------+ 5654 | printer-make-and-model | text (127) | | 5655 +----------------------------+---------------------------+-----------+ 5656 | printer-more-info- | uri | | 5657 | manufacturer | | | 5658 +----------------------------+---------------------------+-----------+ 5659 | printer-state | type1 enum | REQUIRED | 5660 +----------------------------+---------------------------+-----------+ 5661 | printer-state-reasons | 1setOf type2 keyword | REQUIRED | 5662 +----------------------------+---------------------------+-----------+ 5663 | printer-state-message | text (MAX) | | 5664 +----------------------------+---------------------------+-----------+ 5665 | ipp-versions-supported | 1setOf type2 keyword | REQUIRED | 5666 +----------------------------+---------------------------+-----------+ 5667 | operations-supported | 1setOf type2 enum | REQUIRED | 5668 +----------------------------+---------------------------+-----------+ 5669 | ipp-multiple-document-jobs-| boolean | | 5670 | supported | | | 5671 +----------------------------+---------------------------+-----------+ 5672 | charset-configured | charset | REQUIRED | 5673 +----------------------------+---------------------------+-----------+ 5674 | charset-supported | 1setOf charset | REQUIRED | 5675 +----------------------------+---------------------------+-----------+ 5676 | natural-language-configured| naturalLanguage | REQUIRED | 5677 +----------------------------+---------------------------+-----------+ 5678 | generated-natural-language-| 1setOf naturalLanguage | REQUIRED | 5679 | supported | | | 5680 +----------------------------+---------------------------+-----------+ 5681 | document-format-default | mimeMediaType | REQUIRED | 5682 +----------------------------+---------------------------+-----------+ 5683 | document-format-supported | 1setOf mimeMediaType | REQUIRED | 5684 +----------------------------+---------------------------+-----------+ 5685 | printer-is-accepting-jobs | boolean | REQUIRED | 5686 +----------------------------+---------------------------+-----------+ 5687 | queued-job-count | integer (0:MAX) | REQUIRED | 5688 +----------------------------+---------------------------+-----------+ 5689 | printer-message-from- | text (127) | | 5691 Expires November 10, 1999 5692 | operator | | | 5693 +----------------------------+---------------------------+-----------+ 5694 | color-supported | boolean | | 5695 +----------------------------+---------------------------+-----------+ 5696 | reference-uri-schemes- | 1setOf uriScheme | | 5697 | supported | | | 5698 +----------------------------+---------------------------+-----------+ 5699 | pdl-override-supported | type2 keyword | REQUIRED | 5700 +----------------------------+---------------------------+-----------+ 5701 | printer-up-time | integer (1:MAX) | REQUIRED | 5702 +----------------------------+---------------------------+-----------+ 5703 | printer-current-time | dateTime | | 5704 +----------------------------+---------------------------+-----------+ 5705 | multiple-operation-time-out| integer (1:MAX) | | 5706 +----------------------------+---------------------------+-----------+ 5707 | compression-supported | 1setOf type3 keyword | REQUIRED | 5708 +----------------------------+---------------------------+-----------+ 5709 | job-k-octets-supported | rangeOfInteger (0:MAX) | | 5710 +----------------------------+---------------------------+-----------+ 5711 | job-impressions-supported | rangeOfInteger (0:MAX) | | 5712 +----------------------------+---------------------------+-----------+ 5713 | job-media-sheets-supported | rangeOfInteger (0:MAX) | | 5714 +----------------------------+---------------------------+-----------+ 5715 | pages-per-minute | integer(0:MAX) | | 5716 +----------------------------+---------------------------+-----------+ 5717 | pages-per-minute-color | integer(0:MAX) | | 5718 +----------------------------+---------------------------+-----------+ 5720 4.4.1 printer-uri-supported (1setOf uri) 5722 This REQUIRED Printer attribute contains at least one URI for the 5723 Printer object. It OPTIONALLY contains more than one URI for the 5724 Printer object. An administrator determines a Printer object's URI(s) 5725 and configures this attribute to contain those URIs by some means 5726 outside the scope of this IPP/1.1 document. The precise format of this 5727 URI is implementation dependent and depends on the protocol. See the 5728 next two sections for a description of the "uri-security-supported" and 5729 "uri-authentication-supported" attributes, both of which are the 5730 REQUIRED companion attributes to this "printer-uri-supported" attribute. 5731 See section 2.4 on Printer object identity and section 8.2 on security 5732 and URIs for more information. 5734 4.4.2 uri-authentication-supported (1setOf type2 keyword) Issue 2 5736 This REQUIRED Printer attribute MUST have the same cardinality (contain 5737 the same number of values) as the "printer-uri-supported" attribute. 5738 This attribute identifies the Client Authentication mechanism associated 5739 with each URI listed in the "printer-uri-supported" attribute. The 5740 Printer object uses the specified mechanism to identify the 5741 authenticated user (see section 8.3) . The "i th" value in "uri- 5742 authentication-supported" corresponds to the "i th" value in "printer- 5743 uri-supported" and it describes the authentication mechanisms used by 5745 Expires November 10, 1999 5746 the Printer when accessed via that URI. See [IPP-PRO] for more details 5747 on Client Authentication. 5749 The following standard keyword values are defined: 5751 'none': There is no authentication mechanism associated with the URI. 5752 The Printer object assumes that the authenticated user is 5753 "anonymous". 5754 'requesting-user-name': When a client performs an operation whose 5755 target is the associated URI, the Printer object assumes that the 5756 authenticated user is specified by the "requesting-user-name" 5757 Operation attribute (see section 8.3). If the "requesting-user- 5758 name" attribute is absent in a request, the Printer object assumes 5759 that the authenticated user is "anonymous". 5760 'basic': When a client performs an operation whose target is the 5761 associated URI, the Printer object challenges the client with HTTP 5762 basic authentication. The Printer object assumes that the 5763 authenticated user is the name received via the basic 5764 authentication mechanism. 5765 'digest': When a client performs an operation whose target is the 5766 associated URI, the Printer object challenges the client with HTTP 5767 digest authentication. The Printer object assumes that the 5768 authenticated user is the name received via the digest 5769 authentication mechanism. 5770 'certificate': When a client performs an operation whose target is 5771 the associated URI, the Printer object expects the client to 5772 provide a certificate. The Printer object assumes that the 5773 authenticated user is the textual name contained within the 5774 certificate. 5776 4.4.3 uri-security-supported (1setOf type2 keyword) 5778 This REQUIRED Printer attribute MUST have the same cardinality (contain 5779 the same number of values) as the "printer-uri-supported" attribute. 5780 This attribute identifies the security mechanisms used for each URI 5781 listed in the "printer-uri-supported" attribute. The "i th" value in 5782 "uri-security-supported" corresponds to the "i th" value in "printer- 5783 uri-supported" and it describes the security mechanisms used for 5784 accessing the Printer object via that URI. See [IPP-PRO] for more 5785 details on security mechanisms. 5787 The following standard keyword values are defined: 5789 'none': There are no secure communication channel protocols in use 5790 for the given URI. 5791 'ssl3': SSL3 [SSL] is the secure communications channel protocol in 5792 use for the given URI. 5793 'tls': TLS [RFC2246] is the secure communications channel protocol 5794 in use for the given URI. 5796 This attribute is orthogonal to the specification of a Client 5797 Authentication mechanism. Specifically, 'none' does not exclude Client 5798 Authentication. See section 4.4.2. Issue 21 5800 Expires November 10, 1999 5801 Consider the following example. For a single Printer object, an 5802 administrator configures the "printer-uri-supported", "uri- 5803 authentication-supported" and "uri-security-supported" attributes as 5804 follows: 5806 "printer-uri-supported": 'xxx://acme.com/open-use-printer', 5807 'xxx://acme.com/restricted-use-printer', 'xxx://acme.com/private- 5808 printer' 5809 "uri-authentication-supported": 'none', 'digest', 'basic' 5810 "uri-security-supported": 'none', 'none', 'tls' 5812 Note: 'xxx' is not a valid scheme. See the IPP/1.1 "Transport and 5813 Encoding" specification [IPP-PRO] for the actual URI schemes to be used 5814 in object target attributes. 5816 In this case, one Printer object has three URIs. 5818 - For the first URI, 'xxx://acme.com/open-use-printer', the value 5819 'none' in "uri-security-supported" indicates that there is no 5820 secure channel protocol configured to run under HTTP. The value of 5821 'none' in "uri-authentication-supported" indicates that all users 5822 are 'anonymous'. There will be no challenge and the Printer will 5823 ignore "requesting-user-name". 5824 - For the second URI, 'xxx://acme.com/restricted-use-printer', the 5825 value 'none' in "uri-security-supported" indicates that there is no 5826 secure channel protocol configured to run under HTTP. The value of 5827 'digest' in "uri-authentication-supported" indicates that the 5828 Printer will issue a challenge and that the Printer will use the 5829 name supplied by the digest mechanism to determine the 5830 authenticated user (see section 8.3). 5831 - For the third URI, 'xxx://acme.com/private-printer', the value 5832 'tls' in "uri-security-supported" indicates that TLS is being used 5833 to secure the channel. The client SHOULD be prepared to use TLS 5834 framing to negotiate an acceptable ciphersuite to use while 5835 communicating with the Printer object. In this case, the name 5836 implies the use of a secure communications channel, but the fact is 5837 made explicit by the presence of the 'tls' value in "uri-security- 5838 supported". The client does not need to resort to understanding 5839 which security it must use by following naming conventions or by 5840 parsing the URI to determine which security mechanisms are implied. 5841 The value of 'basic' in "uri-authentication-supported" indicates 5842 that the Printer will issue a challenge and that the Printer will 5843 use the name supplied by the digest mechanism to determine the 5844 authenticated user (see section 8.3) . Because this challenge 5845 occurs in a tls session, the channel is secure. 5847 It is expected that many IPP Printer objects will be configured to 5848 support only one channel (either configured to use TLS access or not) 5849 and only one authentication mechanism. Such Printer objects only have 5850 one URI listed in the "printer-uri-supported" attribute. No matter the 5851 configuration of the Printer object (whether it has only one URI or more 5852 than one URI), a client MUST supply only one URI in the target "printer- 5853 uri" operation attribute. 5855 Expires November 10, 1999 5856 4.4.4 printer-name (name(127)) 5858 This REQUIRED Printer attribute contains the name of the Printer object. 5859 It is a name that is more end-user friendly than a URI. An administrator 5860 determines a printer's name and sets this attribute to that name. This 5861 name may be the last part of the printer's URI or it may be unrelated. 5862 In non-US-English locales, a name may contain characters that are not 5863 allowed in a URI. 5865 4.4.5 printer-location (text(127)) 5867 This Printer attribute identifies the location of the device. This could 5868 include things like: "in Room 123A, second floor of building XYZ". 5870 4.4.6 printer-info (text(127)) 5872 This Printer attribute identifies the descriptive information about this 5873 Printer object. This could include things like: "This printer can be 5874 used for printing color transparencies for HR presentations", or "Out of 5875 courtesy for others, please print only small (1-5 page) jobs at this 5876 printer", or even "This printer is going away on July 1, 1997, please 5877 find a new printer". 5879 4.4.7 printer-more-info (uri) 5881 This Printer attribute contains a URI used to obtain more information 5882 about this specific Printer object. For example, this could be an HTTP 5883 type URI referencing an HTML page accessible to a Web Browser. The 5884 information obtained from this URI is intended for end user consumption. 5885 Features outside the scope of IPP can be accessed from this URI. The 5886 information is intended to be specific to this printer instance and site 5887 specific services (e.g. job pricing, services offered, end user 5888 assistance). The device manufacturer may initially populate this 5889 attribute. 5891 4.4.8 printer-driver-installer (uri) 5893 This Printer attribute contains a URI to use to locate the driver 5894 installer for this Printer object. This attribute is intended for 5895 consumption by automata. The mechanics of print driver installation is 5896 outside the scope of this IPP/1.1 document. The device manufacturer may 5897 initially populate this attribute. 5899 4.4.9 printer-make-and-model (text(127)) 5901 This Printer attribute identifies the make and model of the device. The 5902 device manufacturer may initially populate this attribute. 5904 4.4.10 printer-more-info-manufacturer (uri) 5906 This Printer attribute contains a URI used to obtain more information 5907 about this type of device. The information obtained from this URI is 5909 Expires November 10, 1999 5910 intended for end user consumption. Features outside the scope of IPP 5911 can be accessed from this URI (e.g., latest firmware, upgrades, print 5912 drivers, optional features available, details on color support). The 5913 information is intended to be germane to this printer without regard to 5914 site specific modifications or services. The device manufacturer may 5915 initially populate this attribute. 5917 4.4.11 printer-state (type1 enum) 5919 This REQUIRED Printer attribute identifies the current state of the 5920 device. The "printer-state reasons" attribute augments the "printer- 5921 state" attribute to give more detailed information about the Printer in 5922 the given printer state. 5924 A Printer object need only update this attribute before responding to an 5925 operation which requests the attribute; the Printer object NEED NOT 5926 update this attribute continually, since asynchronous event notification 5927 is not part of IPP/1.1. A Printer NEED NOT implement all values if they 5928 are not applicable to a given implementation. 5930 The following standard enum values are defined: 5932 Value Symbolic Name and Description 5934 '3' 'idle': If a Printer receives a job (whose required resources 5935 are ready) while in this state, such a job MUST transit 5936 into the 'processing' state immediately. If the 5937 "printer-state-reasons" attribute contains any reasons, 5938 they MUST be reasons that would not prevent a job from 5939 transiting into the 'processing' state immediately, e.g., 5940 'toner-low'. 5942 If a Printer can interpret one or more jobs while marking 5943 a job, then it is idle if it is available to interpret 5944 jobs even while marking a job. Issue 31 5946 If a Printer controls more than one output device, the 5947 above definition implies that a Printer is 'idle' if at 5948 least one output device is idle, i.e., the IPP Printer is 5949 available to immediately start processing a job if a 5950 client submitted it. 5952 '4' 'processing': If a Printer receives a job (whose required 5953 resources are ready) while in this state, such a job MUST 5954 transit into the 'pending' state immediately. Such a job 5955 MUST transit into the 'processing' state only after jobs 5956 ahead of it complete. If the "printer-state-reasons" 5957 attribute contains any reasons, they MUST be reasons that 5958 do not prevent the current job from printing, e.g. 5959 'toner-low'. 5961 If a Printer can interpret one or more jobs while marking 5962 a job and receives a job (whose required resources are 5963 ready) while in this state, such a received job MAY 5964 transit into the 'processing' state along with the job 5966 Expires November 10, 1999 5967 that is being marked, if any. Issue 31 5969 If a Printer controls more than one output device, the 5970 above definition implies that a Printer is 'processing' 5971 if at least one output device is processing, and none is 5972 idle. 5974 '5' 'stopped': If a Printer receives a job (whose required 5975 resources are ready) while in this state, such a job MUST 5976 transit into the 'pending' state immediately. Such a job 5977 MUST transit into the 'processing' state only after some 5978 human fixes the problem that stopped the printer and 5979 after jobs ahead of it complete processing. Issue 30 5980 The "printer-state-reasons" attribute MUST contain at 5981 least one reason, e.g. 'media-jam', which prevents it 5982 from either processing the current job or transitioning a 5983 'pending' job to the 'processing' state. 5985 If a Printer can interpret one or more jobs while marking 5986 a job and receives a job (whose required resources are 5987 ready) while in this state, such a submitted job MAY 5988 transit into the 'processing' state in order to be 5989 interpreted even while the Printer is in the 'stopped' 5990 state. However, before such a job can be completed, a 5991 human needs to fix the problem. Issue 31 5993 If a Printer controls more than one output device, the 5994 above definition implies that a Printer is 'stopped' only 5995 if all output devices are stopped. 5997 Note: it is tempting to define 'stopped' as when a 5998 sufficient number of output devices are stopped and leave 5999 it to an implementation to define the sufficient number. 6000 But such a rule complicates the definition of 'stopped' 6001 and 'processing'. For example, with this alternate 6002 definition of 'stopped', a job can move from 'pending' to 6003 'processing' without human intervention, even though the 6004 Printer is stopped. 6006 4.4.12 printer-state-reasons (1setOf type2 keyword) 6008 This REQUIRED Printer attribute supplies additional detail about the 6009 device's state. Issue 30 6011 Each keyword value MAY have a suffix to indicate its level of severity. 6012 The three levels are: report (least severe), warning, and error (most 6013 severe). 6015 - '-report': This suffix indicates that the reason is a "report". An 6016 implementation may choose to omit some or all reports. Some reports 6017 specify finer granularity about the printer state; others serve as 6018 a precursor to a warning. A report MUST contain nothing that could 6019 affect the printed output. 6021 Expires November 10, 1999 6023 - '-warning': This suffix indicates that the reason is a "warning". 6024 An implementation may choose to omit some or all warnings. Warnings 6025 serve as a precursor to an error. A warning MUST contain nothing 6026 that prevents a job from completing, though in some cases the 6027 output may be of lower quality. 6028 - '-error': This suffix indicates that the reason is an "error". An 6029 implementation MUST include all errors. If this attribute contains 6030 one or more errors, printer MUST be in the stopped state. 6032 If the implementation does not add any one of the three suffixes, all 6033 parties MUST assume that the reason is an "error". 6035 If a Printer object controls more than one output device, each value of 6036 this attribute MAY apply to one or more of the output devices. An error 6037 on one output device that does not stop the Printer object as a whole 6038 MAY appear as a warning in the Printer's "printer-state-reasons 6039 attribute". If the "printer-state" for such a Printer has a value of 6040 'stopped', then there MUST be an error reason among the values in the 6041 "printer-state-reasons" attribute. 6043 The following standard keyword values are defined: 6045 'other': The device has detected an error other than one listed in 6046 this document. 6047 'none': There are not reasons. This state reason is semantically 6048 equivalent to "printer-state-reasons" without any value and MUST be 6049 used, since the 1setOf attribute syntax requires at least one 6050 value. 6051 'media-needed': A tray has run out of media. 6052 'media-jam': The device has a media jam. 6053 'moving-to-paused': Someone has paused the Printer object using the 6054 Pause-Printer operation (see section 3.2.7) or other means, but the 6055 device(s) are taking an appreciable time to stop. Later, when all 6056 output has stopped, the "printer-state" becomes 'stopped', and the 6057 'paused' value replaces the 'moving-to-paused' value in the 6058 "printer-state-reasons" attribute. 6059 'paused': Someone has paused the Printer object using the Pause- 6060 Printer operation (see section 3.2.7) or other means and the 6061 Printer object's "printer-state" is 'stopped'. In this state, a 6062 Printer MUST NOT produce printed output, but it MUST perform other 6063 operations requested by a client. If a Printer had been printing a 6064 job when the Printer was paused, the Printer MUST resume printing 6065 that job when the Printer is no longer paused and leave no evidence 6066 in the printed output of such a pause. 6067 'shutdown': Someone has removed a Printer object from service, and 6068 the device may be powered down or physically removed. In this 6069 state, a Printer object MUST NOT produce printed output, and unless 6070 the Printer object is realized by a print server that is still 6071 active, the Printer object MUST perform no other operations 6072 requested by a client, including returning this value. If a Printer 6073 object had been printing a job when it was shutdown, the Printer 6074 NEED NOT resume printing that job when the Printer is no longer 6075 shutdown. If the Printer resumes printing such a job, it may leave 6076 evidence in the printed output of such a shutdown, e.g. the part 6078 Expires November 10, 1999 6079 printed before the shutdown may be printed a second time after the 6080 shutdown. 6081 'connecting-to-device': The Printer object has scheduled a job on the 6082 output device and is in the process of connecting to a shared 6083 network output device (and might not be able to actually start 6084 printing the job for an arbitrarily long time depending on the 6085 usage of the output device by other servers on the network). 6086 'timed-out': The server was able to connect to the output device (or 6087 is always connected), but was unable to get a response from the 6088 output device. 6089 'stopping': The Printer object is in the process of stopping the 6090 device and will be stopped in a while. When the device is stopped, 6091 the Printer object will change the Printer object's state to 6092 'stopped'. The 'stopping-warning' reason is never an error, even 6093 for a Printer with a single output device. When an output-device 6094 ceases accepting jobs, the Printer will have this reason while the 6095 output device completes printing. 6096 'stopped-partly': When a Printer object controls more than one output 6097 device, this reason indicates that one or more output devices are 6098 stopped. If the reason is a report, fewer than half of the output 6099 devices are stopped. If the reason is a warning, fewer than all of 6100 the output devices are stopped. 6101 'toner-low': The device is low on toner. 6102 'toner-empty': The device is out of toner. 6103 'spool-area-full': The limit of persistent storage allocated for 6104 spooling has been reached. 6105 'cover-open': One or more covers on the device are open. 6106 'interlock-open': One or more interlock devices on the printer are 6107 unlocked. 6108 'door-open': One or more doors on the device are open. 6109 'input-tray-missing': One or more input trays are not in the device. 6110 'media-low': At least one input tray is low on media. 6111 'media-empty': At least one input tray is empty. 6112 'output-tray-missing': One or more output trays are not in the device 6113 'output-area-almost-full': One or more output area is almost full 6114 (e.g. tray, stacker, collator). 6115 'output-area-full': One or more output area is full. (e.g. tray, 6116 stacker, collator) 6117 'marker-supply-low': The device is low on at least one marker supply. 6118 (e.g. toner, ink, ribbon) 6119 'marker-supply-empty: The device is out of at least one marker 6120 supply. (e.g. toner, ink, ribbon) 6121 'marker-waste-almost-full': The device marker supply waste receptacle 6122 is almost full. 6123 'marker-waste-full': The device marker supply waste receptacle is 6124 full. 6125 'fuser-over-temp': The fuser temperature is above normal. 6126 'fuser-under-temp': The fuser temperature is below normal. 6127 'opc-near-eol': The optical photo conductor is near end of life. 6128 'opc-life-over': The optical photo conductor is no longer 6129 functioning. 6130 'developer-low': The device is low on developer. 6131 'developer-empty: The device is out of developer. 6132 'interpreter-resource-unavailable': An interpreter resource is 6133 unavailable (i.e. font, form) 6135 Expires November 10, 1999 6137 4.4.13 printer-state-message (text(MAX)) 6139 This Printer attribute specifies the additional information about the 6140 printer state and printer state reasons in human readable text. If the 6141 Printer object supports this attribute, the Printer object MUST be able 6142 to generate this message in any of the natural languages identified by 6143 the Printer's "generated-natural-language-supported" attribute (see the 6144 "attributes-natural-language" operation attribute specified in Section 6145 3.1.4.1). 6147 4.4.14 ipp-versions-supported (1setOf type2 keyword) Issue 36 6149 This REQUIRED attribute identifies the IPP protocol versions that this 6150 Printer supports, including minor versions, i.e., the values of the 6151 "version-number" parameter that it will accept in requests and return in 6152 responses. If an IPP Printer receives a request with the "version- 6153 number" parameter set to a (two-octet binary) value that does not 6154 correspond to one of the values of this (US-ASCII) keyword, it MUST 6155 reject the request and return the 'server-error-version-not-supported' 6156 status code. See Section 3.1.8. 6158 The following standard keyword values are defined: 6160 '1.0': Version 1.0 as specified in RFC 2566 [RFC2566] and RFC 2565 6161 [RFC2565] including any extensions registered according to Section 6162 6 and any extension defined in this version or any future version 6163 of this document following the rules when the "version-number" 6164 parameter is '1.0', if any. For an example of such a '1.0' rule, 6165 see section 4.3.12. 6166 '1.1': Version 1.1 as specified in this document and [IPP-PRO] 6167 including any extensions registered according to Section 6 or 6168 defined in any future version of this document following the rules 6169 when the "version-number" parameter is '1.1', if any. 6171 4.4.15 operations-supported (1setOf type2 enum) 6173 This REQUIRED Printer attribute specifies the set of supported 6174 operations for this Printer object and contained Job objects. 6176 Note: This attribute is encoded as any other enum attribute syntax 6177 according to [IPP-PRO] as 32-bits. However, all 32-bit enum values for 6178 this attribute MUST NOT exceed 0x00008FFF, since these same values are 6179 also passed in two octets in the "operation-id" parameter (see section 6180 3.1.1) in each Protocol request with the two high order octets omitted 6181 in order to indicate the operation being performed [IPP-PRO]. 6183 The following standard enum and "operation-id" (see section 3.1.2) 6184 values are defined: 6186 Value Operation Name 6187 ----------------- ------------------------------------- 6189 0x0000 reserved, not used 6190 0x0001 reserved, not used 6192 Expires November 10, 1999 6193 0x0002 Print-Job 6194 0x0003 Print-URI 6195 0x0004 Validate-Job 6196 0x0005 Create-Job 6197 0x0006 Send-Document 6198 0x0007 Send-URI 6199 0x0008 Cancel-Job 6200 0x0009 Get-Job-Attributes 6201 0x000A Get-Jobs 6202 0x000B Get-Printer-Attributes 6203 0x000C Hold-Job 6204 0x000D Release-Job 6205 0x000E Restart-Job 6206 0x000F reserved for a future operation 6207 0x0010 Pause-Printer 6208 0x0011 Resume-Printer 6209 0x0012 Purge-Jobs 6210 0x00013-0x3FFF reserved for future operations 6211 0x4000-0x8FFF reserved for private extensions 6213 The reserved block for private extensions allows for vendors to 6214 implement private extensions that are guaranteed to not conflict with 6215 future registered extensions. However, there is no guarantee that two 6216 or more private extensions will not conflict. 6218 4.4.16 multiple-document-jobs-supported (boolean) Issue 34 6220 This Printer attribute indicates whether or not the Printer supports 6221 more than one document per job, i.e., more than one Send-Document or 6222 Send-Data operation with document data. If the Printer supports the 6223 Create-Job and Send-Document operations (see section 3.2.4 and 3.3.1), 6224 it MUST support this attribute. 6226 4.4.17 charset-configured (charset) 6228 This REQUIRED Printer attribute identifies the charset that the Printer 6229 object has been configured to represent 'text' and 'name' Printer 6230 attributes that are set by the operator, system administrator, or 6231 manufacturer, i.e., for "printer-name" (name), "printer-location" 6232 (text), "printer-info" (text), and "printer-make-and-model" (text). 6233 Therefore, the value of the Printer object's "charset-configured" 6234 attribute MUST also be among the values of the Printer object's 6235 "charset-supported" attribute. 6237 4.4.18 charset-supported (1setOf charset) 6239 This REQUIRED Printer attribute identifies the set of charsets that the 6240 Printer and contained Job objects support in attributes with attribute 6241 syntax 'text' and 'name'. At least the value 'utf-8' MUST be present, 6242 since IPP objects MUST support the UTF-8 [RFC2279] charset. If a 6243 Printer object supports a charset, it means that for all attributes of 6244 syntax 'text' and 'name' the IPP object MUST (1) accept the charset in 6245 requests and return the charset in responses as needed. 6247 Expires November 10, 1999 6248 If more charsets than UTF-8 are supported, the IPP object MUST perform 6249 charset conversion between the charsets as described in Section 3.1.4.2. 6251 4.4.19 natural-language-configured (naturalLanguage) 6253 This REQUIRED Printer attribute identifies the natural language that the 6254 Printer object has been configured to represent 'text' and 'name' 6255 Printer attributes that are set by the operator, system administrator, 6256 or manufacturer, i.e., for "printer-name" (name), "printer-location" 6257 (text), "printer-info" (text), and "printer-make-and-model" (text). 6258 When returning these Printer attributes, the Printer object MAY return 6259 them in the configured natural language specified by this attribute, 6260 instead of the natural language requested by the client in the 6261 "attributes-natural-language" operation attribute. See Section 3.1.4.1 6262 for the specification of the OPTIONAL multiple natural language support. 6263 Therefore, the value of the Printer object's "natural-language- 6264 configured" attribute MUST also be among the values of the Printer 6265 object's "generated-natural-language-supported" attribute. 6267 4.4.20 generated-natural-language-supported (1setOf naturalLanguage) 6269 This REQUIRED Printer attribute identifies the natural language(s) that 6270 the Printer object and contained Job objects support in attributes with 6271 attribute syntax 'text' and 'name'. The natural language(s) supported 6272 depends on implementation and/or configuration. Unlike charsets, IPP 6273 objects MUST accept requests with any natural language or any Natural 6274 Language Override whether the natural language is supported or not. 6276 If a Printer object supports a natural language, it means that for any 6277 of the attributes for which the Printer or Job object generates 6278 messages, i.e., for the "job-state-message" and "printer-state-message" 6279 attributes and Operation Messages (see Section 3.1.5) in operation 6280 responses, the Printer and Job objects MUST be able to generate messages 6281 in any of the Printer's supported natural languages. See section 3.1.4 6282 for the specification of 'text' and 'name' attributes in operation 6283 requests and responses. 6285 Note: A Printer object that supports multiple natural languages, often 6286 has separate catalogs of messages, one for each natural language 6287 supported. 6289 4.4.21 document-format-default (mimeMediaType) 6291 This REQUIRED Printer attribute identifies the document format that the 6292 Printer object has been configured to assume if the client does not 6293 supply a "document-format" operation attribute in any of the operation 6294 requests that supply document data. The standard values for this 6295 attribute are Internet Media types (sometimes called MIME types). For 6296 further details see the description of the 'mimeMediaType' attribute 6297 syntax in Section 4.1.9. 6299 Expires November 10, 1999 6300 4.4.22 document-format-supported (1setOf mimeMediaType) 6302 This REQUIRED Printer attribute identifies the set of document formats 6303 that the Printer object and contained Job objects can support. For 6304 further details see the description of the 'mimeMediaType' attribute 6305 syntax in Section 4.1.9. 6307 4.4.23 printer-is-accepting-jobs (boolean) 6309 This REQUIRED Printer attribute indicates whether the printer is 6310 currently able to accept jobs, i.e., is accepting Print-Job, Print-URI, 6311 and Create-Job requests. If the value is 'true', the printer is 6312 accepting jobs. If the value is 'false', the Printer object is 6313 currently rejecting any jobs submitted to it. In this case, the Printer 6314 object returns the 'server-error-not-accepting-jobs' status code. 6316 Note: This value is independent of the "printer-state" and "printer- 6317 state-reasons" attributes because its value does not affect the current 6318 job; rather it affects future jobs. This attribute may cause the 6319 Printer to reject jobs when the "printer-state" is 'idle' or it may 6320 cause the Printer object to accepts jobs when the "printer-state" is 6321 'stopped'. 6323 4.4.24 queued-job-count (integer(0:MAX)) 6325 This REQUIRED Printer attribute contains a count of the number of jobs 6326 that are either 'pending', 'processing', 'pending-held', or 'processing- 6327 stopped' and is set by the Printer object. Issue 29 6329 4.4.25 printer-message-from-operator (text(127)) 6331 This Printer attribute provides a message from an operator, system 6332 administrator or "intelligent" process to indicate to the end user 6333 information or status of the printer, such as why it is unavailable or 6334 when it is expected to be available. 6336 4.4.26 color-supported (boolean) 6338 This Printer attribute identifies whether the device is capable of any 6339 type of color printing at all, including highlight color. All document 6340 instructions having to do with color are embedded within the document 6341 PDL (none are external IPP attributes in IPP/1.1). 6343 Note: end-users are able to determine the nature and details of the 6344 color support by querying the "printer-more-info-manufacturer" Printer 6345 attribute. 6347 4.4.27 reference-uri-schemes-supported (1setOf uriScheme) 6349 This Printer attribute specifies which URI schemes are supported for use 6350 in the "document-uri" operation attribute of the Print-URI or Send-URI 6351 operation. If a Printer object supports these optional operations, it 6353 Expires November 10, 1999 6354 MUST support the "reference-uri-schemes-supported" Printer attribute 6355 with at least the following schemed URI value: 6357 'ftp': The Printer object will use an FTP 'get' operation as defined 6358 in RFC 2228 [RFC2228] using FTP URLs as defined by [RFC2396] 6359 and[RFC2316]. 6361 The Printer object MAY OPTIONALLY support other URI schemes (see section 6362 4.1.6). 6364 4.4.28 pdl-override-supported (type2 keyword) 6366 This REQUIRED Printer attribute expresses the ability for a particular 6367 Printer implementation to either attempt to override document data 6368 instructions with IPP attributes or not. 6370 This attribute takes on the following values: 6372 - 'attempted': This value indicates that the Printer object attempts 6373 to make the IPP attribute values take precedence over embedded 6374 instructions in the document data, however there is no guarantee. 6375 - 'not-attempted': This value indicates that the Printer object makes 6376 no attempt to make the IPP attribute values take precedence over 6377 embedded instructions in the document data. 6379 Section 15 contains a full description of how this attribute interacts 6380 with and affects other IPP attributes, especially the "ipp-attribute- 6381 fidelity" attribute. 6383 4.4.29 printer-up-time (integer(1:MAX)) 6385 This REQUIRED Printer attribute indicates the amount of time (in 6386 seconds) that this Printer instance has been up and running. The value 6387 is a monotonically increasing value starting from 1 when the Printer 6388 object is started-up (initialized, booted, etc.). This value or the 6389 value of "printer-current-time" is used to populate the Event Time Job 6390 Description attributes "time-at-creation", "time-at-processing", and 6391 "time-at-completed", depending on implementation (see Section 4.3.12). 6393 If the Printer object software ceases running, and restarts without 6394 knowing the last value for "printer-up-time", the implementation MUST 6395 reset this value to 1. However, if the device or devices that the 6396 Printer object is representing are restarted or power cycled, the 6397 Printer object MAY continue counting this value or MAY reset this value 6398 to 1 depending on implementation. If this value is reset and the 6399 implementation has persistent jobs and the Event Time Job Description 6400 Attributes are represented using the 'integer' form (instead of the 6401 'dateTime' form), they MUST be reset according to Section 4.3.12. Issue 6402 17 6404 Expires November 10, 1999 6405 4.4.30 printer-current-time (dateTime) 6407 This Printer attribute indicates the current wall-clock time. This 6408 value or the value of "printer-uptime-time" is used to populate the Job 6409 attributes "time-at-creation", "time-at-processing", and "time-at- 6410 completed", depending on implementation (see Section 4.3.12). 6412 The date and time is obtained on a "best efforts basis" and does not 6413 have to be that precise in order to work in practice. A Printer 6414 implementation sets the value of this attribute by obtaining the date 6415 and time via some implementation-dependent means, such as getting the 6416 value from a network time server, initialization at time of manufacture, 6417 or setting by an administrator. See [IPP-IIG] for examples. If an 6418 implementation supports this attribute and the implementation knows that 6419 it has not yet been set to a correct value, then the implementation MUST 6420 return the value of this attribute using the out-of-band 'no-value' 6421 meaning not configured. See the beginning of section 4.1. Issue 17 6423 The time zone of this attribute NEED NOT be the time zone used by people 6424 located near the Printer object or device. The client MUST NOT expect 6425 that the time zone of any received 'dateTime' value to be in the time 6426 zone of the client or in the time zone of the people located near the 6427 printer. Issue 17 6429 The client SHOULD display any dateTime attributes to the user in client 6430 local time by converting the 'dateTime' value returned by the server to 6431 the time zone of the client, rather than using the time zone returned by 6432 the Printer in attributes that use the 'dateTime' attribute syntax. 6433 Issue 17 6435 4.4.31 multiple-operation-time-out (integer(1:MAX)) 6437 This Printer attributes identifies the minimum time (in seconds) that 6438 the Printer object waits for additional Send-Document or Send-URI 6439 operations to follow a still-open multi-document Job object before 6440 taking any recovery actions, such as the ones indicated in section 6441 3.3.1. If the Printer object supports the Create-Job and Send-Document 6442 operations (see section 3.2.4 and 3.3.1), it MUST support this 6443 attribute. 6445 It is RECOMMENDED that vendors supply a value for this attribute that is 6446 between 60 and 240 seconds. An implementation MAY allow a system 6447 administrator to set this attribute (by means outside this IPP/1.1 6448 document). If so, the system administrator MAY be able to set values 6449 outside this range. 6451 4.4.32 compression-supported (1setOf type3 keyword) 6453 This REQUIRED Printer attribute identifies the set of supported 6454 compression algorithms for document data. Compression only applies to 6455 the document data; compression does not apply to the encoding of the IPP 6456 operation itself. The supported values are used to validate the client 6457 supplied "compression" operation attributes in Print-Job, Send-Document, 6458 and Send-URI requests. Issue 28 6460 Expires November 10, 1999 6461 Standard values are : 6463 'none': no compression is used. 6464 'deflate': ZIP public domain inflate/deflate) compression technology 6465 'gzip' GNU zip compression technology described in RFC 1952 6466 [RFC1952]. 6467 'compress': UNIX compression technology 6469 4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX)) 6471 This Printer attribute specifies the upper and lower bounds of total 6472 sizes of jobs in K octets, i.e., in units of 1024 octets. The supported 6473 values are used to validate the client supplied "job-k-octets" operation 6474 attributes in create requests. The corresponding job description 6475 attribute "job-k-octets" is defined in section 4.3.15.1. 6477 4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)) 6479 This Printer attribute specifies the upper and lower bounds for the 6480 number of impressions per job. The supported values are used to validate 6481 the client supplied "job-impressions" operation attributes in create 6482 requests. The corresponding job description attribute "job-impressions" 6483 is defined in section 4.3.15.2. 6485 4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX)) 6487 This Printer attribute specifies the upper and lower bounds for the 6488 number of media sheets per job. The supported values are used to 6489 validate the client supplied "job-media-sheets" operation attributes in 6490 create requests. The corresponding Job attribute "job-media-sheets" is 6491 defined in section 4.3.15.3. 6493 4.4.36 pages-per-minute (integer(0:MAX)) 6495 This Printer attributes specifies the nominal number of pages per minute 6496 to the nearest whole number which may be generated by this printer 6497 (e.g., simplex, black-and-white). This attribute is informative, not a 6498 service guarantee. Generally, it is the value used in the marketing 6499 literature to describe the device. 6501 A value of 0 indicates a device that takes more than two minutes to 6502 process a page. 6504 4.4.37 pages-per-minute-color (integer(0:MAX)) 6506 This Printer attributes specifies the nominal number of pages per minute 6507 to the nearest whole number which may be generated by this printer when 6508 printing color (e.g., simplex, color). For purposes of this attribute, 6509 "color" means the same as for the "color-supported" attribute, namely, 6510 the device is capable of any type of color printing at all, including 6511 highlight color. This attribute is informative, not a service 6513 Expires November 10, 1999 6514 guarantee. Generally, it is the value used in the marketing literature 6515 to describe the color capabilities of this device. 6517 A value of 0 indicates a device that takes more than two minutes to 6518 process a page. 6520 Note: If a color device has several color modes, it MAY use the pages- 6521 per-minute value for this attribute that corresponds to the mode that 6522 produces the highest number. 6524 Black and white only printers MUST NOT support this attribute. If this 6525 attribute is present, then the "color-supported" Printer description 6526 attribute MUST be present and have a 'true' value. 6528 Note: The values of these two attributes returned by the Get-Printer- 6529 Attributes operation MAY be affected by the "document-format" attribute 6530 supplied by the client in the Get-Printer-Attributes request. In other 6531 words, the implementation MAY have different speeds depending on the 6532 document format being processed. See section 3.2.5.1 Get-Printer- 6533 Attributes. 6535 5. Conformance 6537 This section describes conformance issues and requirements. This 6538 document introduces model entities such as objects, operations, 6539 attributes, attribute syntaxes, and attribute values. These conformance 6540 sections describe the conformance requirements which apply to these 6541 model entities. 6543 5.1 Client Conformance Requirements 6545 This section describes the conformance requirements for a client (see 6546 section 2.1), whether it be: 6548 1. contained within software controlled by an end user, e.g. activated 6549 by the "Print" menu item in an application or 6551 2. a component of a print server that communicates (using IPP 6552 operations) with either an output device or another "downstream" 6553 print server. Issue 4 and Issue 5 6555 A conforming client MUST support all REQUIRED operations as defined in 6556 this document. For each attribute included in an operation request, a 6557 conforming client MUST supply a value whose type and value syntax 6558 conforms to the requirements of the Model document as specified in 6559 Sections 3 and 3.3.5. A conforming client MAY supply any registered 6560 extensions and/or private extensions in an operation request, as long as 6561 they meet the requirements in Section 6. 6563 Otherwise, there are no conformance requirements placed on the user 6564 interfaces provided by IPP clients or their applications. For example, 6565 one application might not allow an end user to submit multiple documents 6567 Expires November 10, 1999 6568 per job, while another does. One application might first query a 6569 Printer object in order to supply a graphical user interface (GUI) 6570 dialogue box with supported and default values whereas a different 6571 implementation might not. 6573 When sending a request, an IPP client NEED NOT supply any attributes 6574 that are indicated as OPTIONALLY supplied by the client. 6576 A client MUST be able to accept any of the attribute syntaxes defined in 6577 Section 4.1, including their full range, that may be returned to it in a 6578 response from a Printer object. In particular for each attribute that 6579 the client supports whose attribute syntax is 'text', the client MUST 6580 accept and process both the 'textWithoutLanguage' and 'textWithLanguage' 6581 forms. Similarly, for each attribute that the client supports whose 6582 attribute syntax is 'name', the client MUST accept and process both the 6583 'nameWithoutLanguage' and 'nameWithLanguage' forms. For presentation 6584 purposes, truncation of long attribute values is not recommended. A 6585 recommended approach would be for the client implementation to allow the 6586 user to scroll through long attribute values. 6588 A response MAY contain attribute groups, attributes, and values that the 6589 client does not expect. Therefore, a client implementation MUST 6590 gracefully handle such responses and not refuse to inter-operate with a 6591 conforming Printer that is returning registered or private extensions, 6592 including attribute groups, attributes, and attribute values that 6593 conform to Section 6. Clients may choose to ignore any parameters, 6594 attributes, or values that they do not understand. Issues 25 and 26 6596 While a client is sending data to a printer, it SHOULD do its best to 6597 prevent a channel from being closed by a lower layer when the channel is 6598 blocked (i.e. flow-controlled off) for whatever reason, e.g. 'out of 6599 paper' or 'job ahead hasn't freed up enough memory'. However, the layer 6600 that launched the print submission (e.g. an end user) MAY close the 6601 channel in order to cancel the job. When a client closes a channel, a 6602 Printer MAY print all or part of the received portion of the document. 6603 See the "Encoding and Transport" document [IPP-PRO] for more details. 6604 Issues 4 and 5 6606 A client MUST/SHOULD [which is to be determined in consultation with the 6607 Area Director] support Client Authentication as defined in the IPP/1.1 6608 Encoding and Transport document [IPP-PRO]. A client SHOULD support 6609 Operation Privacy and Server Authentication as defined in the IPP/1.1 6610 Encoding and Transport document [IPP-PRO]. See also [IPP-MOD] section 6611 8. Issue 32 6613 5.2 IPP Object Conformance Requirements 6615 This section specifies the conformance requirements for conforming 6616 implementations with respect to objects, operations, and attributes 6617 whether they be (1) IPP objects that accept IPP requests and control one 6618 or more devices or are embedded in a single device or (2) servers that 6619 accept IPP requests and forward them to networked devices (using IPP or 6620 other protocol). 6622 Expires November 10, 1999 6623 5.2.1 Objects 6625 Conforming implementations MUST implement all of the model objects as 6626 defined in this specification in the indicated sections: 6628 Section 2.1 - Printer Object 6629 Section 2.2 - Job Object 6631 whether they are (embedded) software that controls a device or are part 6632 of a print server that accepts IPP operation requests and, in turn, 6633 sends operation requests using (the IPP or other) protocol to one or 6634 more networked device(s). See sections 2.1 and 2.2. 6636 5.2.2 Operations 6638 Conforming IPP object implementations MUST implement all of the REQUIRED 6639 model operations, including REQUIRED responses, as defined in this 6640 specification in the indicated sections: 6642 For a Printer object: 6643 Print-Job (section 3.2.1) REQUIRED 6644 Print-URI (section 3.2.2) OPTIONAL 6645 Validate-Job (section 3.2.3) REQUIRED 6646 Create-Job (section 3.2.4) OPTIONAL 6647 Get-Printer-Attributes (section 3.2.5) REQUIRED 6648 Get-Jobs (section 3.2.6) REQUIRED 6649 Pause-Printer (section 3.2.7) OPTIONAL 6650 Resume-Printer (section 3.2.8) OPTIONAL 6651 Purge-Jobs (section 3.2.9) OPTIONAL 6653 For a Job object: 6654 Send-Document (section 3.3.1) OPTIONAL 6655 Send-URI (section 3.3.2) OPTIONAL 6656 Cancel-Job (section 3.3.3) REQUIRED 6657 Get-Job-Attributes (section 3.3.4) REQUIRED 6658 Hold-Job (section 3.3.5) OPTIONAL 6659 Release-Job (section 3.3.6) OPTIONAL 6660 Restart-Job (section 3.3.7) OPTIONAL 6662 Conforming IPP objects MUST support all REQUIRED operation attributes 6663 and all values of such attributes if so indicated in the description. 6664 Conforming IPP objects MUST ignore all unsupported or unknown operation 6665 attributes or operation attribute groups received in a request, but MUST 6666 reject a request that contains a supported operation attribute that 6667 contains an unsupported value. 6669 Conforming IPP objects MAY return operation responses that contain 6670 attributes groups, attributes name and attribute values that are 6671 extensions to this standard. The additional attribute groups MAY occur 6672 in any order. Issue 26 6674 The following section on object attributes specifies the support 6675 required for object attributes. 6677 Expires November 10, 1999 6678 5.2.3 IPP Object Attributes 6680 Conforming IPP objects MUST support all of the REQUIRED object 6681 attributes, as defined in this specification in the indicated sections. 6683 If an object supports an attribute, it MUST support only those values 6684 specified in this document or through the extension mechanism described 6685 in section 5.2.4. It MAY support any non-empty subset of these values. 6686 That is, it MUST support at least one of the specified values and at 6687 most all of them. 6689 5.2.4 Versions 6691 Clients MUST support version 1.1 and SHOULD also support version 1.0. 6692 IPP objects MUST support version 1.1 and SHOULD also support version 6693 1.0. See section 3.1.8. ISSUE 36 6695 5.2.5 Extensions 6697 A conforming IPP object MAY support registered extensions and private 6698 extensions, as long as they meet the requirements specified in Section 6699 6. 6701 For each attribute included in an operation response, a conforming IPP 6702 object MUST return a value whose type and value syntax conforms to the 6703 requirement of the Model document as specified in Sections 3 and 4. 6705 5.2.6 Attribute Syntaxes 6707 An IPP object MUST be able to accept any of the attribute syntaxes 6708 defined in Section 4.1, including their full range, in any operation in 6709 which a client may supply attributes or the system administrator may 6710 configure attributes (by means outside the scope of this IPP/1.1 6711 document). In particular for each attribute that the IPP object 6712 supports whose attribute syntax is 'text', the IPP object MUST accept 6713 and process both the 'textWithoutLanguage' and 'textWithLanguage' forms. 6714 Similarly, for each attribute that the IPP object supports whose 6715 attribute syntax is 'name', the IPP object MUST accept and process both 6716 the 'nameWithoutLanguage' and 'nameWithLanguage' forms. Furthermore, an 6717 IPP object MUST return attributes to the client in operation responses 6718 that conform to the syntax specified in Section 4.1, including their 6719 full range if supplied previously by a client. 6721 5.2.7 Security Issue 32 6723 An IPP Printer implementation MUST/SHOULD [which is to be determined in 6724 consultation with the Area Director] contain support for Client 6725 Authentication as defined in the IPP/1.1 Encoding and Transport document 6726 [IPP-PRO]. A Printer implementation MAY allow an administrator to 6727 configure the Printer so that all, some, or none of the users are 6728 authenticated. See also [IPP-MOD] section 8. 6730 Expires November 10, 1999 6731 An IPP Printer implementation SHOULD contain support for Operation 6732 Privacy and Server Authentication as defined in the IPP/1.1 Encoding and 6733 Transport document [IPP-PRO]. A Printer implementation MAY allow an 6734 administrator to configure the degree of support for Operation Privacy 6735 and Server Authentication. See also [IPP-MOD] section 8. 6737 5.3 Charset and Natural Language Requirements 6739 All clients and IPP objects MUST support the 'utf-8' charset as defined 6740 in section 4.1.7. 6742 IPP objects MUST be able to accept any client request which correctly 6743 uses the "attributes-natural-language" operation attribute or the 6744 Natural Language Override mechanism on any individual attribute whether 6745 or not the natural language is supported by the IPP object. If an IPP 6746 object supports a natural language, then it MUST be able to translate 6747 (perhaps by table lookup) all generated 'text' or 'name' attribute 6748 values into one of the supported languages (see section 3.1.4). That 6749 is, the IPP object that supports a natural language NEED NOT be a 6750 general purpose translator of any arbitrary 'text' or 'name' value 6751 supplied by the client into that natural language. However, the object 6752 MUST be able to translate (automatically generate) any of its own 6753 attribute values and messages into that natural language. 6755 6. IANA Considerations (registered and private extensions) 6757 This section describes how IPP can be extended to allow the following 6758 registered and private extensions to IPP: 6760 1. keyword attribute values 6761 2. enum attribute values 6762 3. attributes 6763 4. attribute syntaxes 6764 5. operations 6765 6. attribute groups 6766 7. status codes 6768 Extensions registered for use with IPP/1.1 are OPTIONAL for client and 6769 IPP object conformance to the IPP/1.1 Model specification. 6771 These extension procedures are aligned with the guidelines as set forth 6772 by the IESG [IANA-CON]. Section 11 describes how to propose new 6773 registrations for consideration. IANA will reject registration 6774 proposals that leave out required information or do not follow the 6775 appropriate format described in Section 11. IPP/1.1 may also be 6776 extended by an appropriate RFC that specifies any of the above 6777 extensions. 6779 Expires November 10, 1999 6780 6.1 Typed 'keyword' and 'enum' Extensions 6782 IPP allows for 'keyword' and 'enum' extensions (see sections 4.1.2.3 and 6783 4.1.4). This document uses prefixes to the 'keyword' and 'enum' basic 6784 attribute syntax type in order to communicate extra information to the 6785 reader through its name. This extra information is not represented in 6786 the protocol because it is unimportant to a client or Printer object. 6787 The list below describes the prefixes and their meaning. 6789 "type1": The IPP specification must be revised to add a new keyword 6790 or a new enum. No private keywords or enums are allowed. 6792 "type2": Implementers can, at any time, add new keyword or enum 6793 values by proposing the complete specification to IANA: 6795 iana@iana.org 6797 IANA will forward the registration proposal to the IPP Designated 6798 Expert who will review the proposal with a mailing list that the 6799 Designated Expert keeps for this purpose. Initially, that list 6800 will be the mailing list used by the IPP WG: 6802 ipp@pwg.org 6804 even after the IPP WG is disbanded as permitted by [IANA-CON]. The 6805 IPP Designated Expert is appointed by the IESG Area Director 6806 responsible for IPP, according to [IANA-CON]. 6808 When a type2 keyword or enum is approved, the IPP Designated Expert 6809 becomes the point of contact for any future maintenance that might 6810 be required for that registration. 6812 "type3": Implementers can, at any time, add new keyword and enum 6813 values by submitting the complete specification to IANA as for 6814 type2 who will forward the proposal to the IPP Designated Expert. 6815 While no additional technical review is required, the IPP 6816 Designated Expert may, at his/her discretion, forward the proposal 6817 to the same mailing list as for type2 registrations for advice and 6818 comment. 6820 When a type3 keyword or enum is approved by the IPP Designated 6821 Expert, the original proposer becomes the point of contact for any 6822 future maintenance that might be required for that registration. 6824 For type2 and type3 keywords, the proposer includes the name of the 6825 keyword in the registration proposal and the name is part of the 6826 technical review. 6828 After type2 and type3 enums specifications are approved, the IPP 6829 Designated Expert in consultation with IANA assigns the next available 6830 enum number for each enum value. 6832 IANA will publish approved type2 and type3 keyword and enum attributes 6833 value registration specifications in: 6835 Expires November 10, 1999 6836 ftp.isi.edu/iana/assignments/ipp/attribute-values/xxx/yyy.txt 6838 where xxx is the attribute name that specifies the initial values and 6839 yyy.txt is a descriptive file name that contains one or more enums or 6840 keywords approved at the same time. For example, if several additional 6841 enums for stapling are approved for use with the "finishings" attribute 6842 (and "finishings-default" and "finishings-supported" attributes), IANA 6843 will publish the additional values in the file: 6845 ftp.isi.edu/iana/assignments/ipp/attribute- 6846 values/finishings/stapling.txt 6848 Note: Some attributes are defined to be: 'type3 keywords' | 'name' which 6849 allows for attribute values to be extended by a site administrator with 6850 administrator defined names. Such names are not registered with IANA. 6852 By definition, each of the three types above assert some sort of 6853 registry or review process in order for extensions to be considered 6854 valid. Each higher numbered level (1, 2, 3) tends to be decreasingly 6855 less stringent than the previous level. Therefore, any typeN value MAY 6856 be registered using a process for some typeM where M is less than N, 6857 however such registration is NOT REQUIRED. For example, a type3 value 6858 MAY be registered in a type 1 manner (by being included in a future 6859 version of an IPP specification), however, it is NOT REQUIRED. 6861 This specification defines keyword and enum values for all of the above 6862 types, including type3 keywords. 6864 For private (unregistered) keyword extensions, implementers SHOULD use 6865 keywords with a suitable distinguishing prefix, such as "xxx-" where xxx 6866 is the (lowercase) fully qualified company name registered with IANA for 6867 use in domain names [RFC1035]. For example, if the company XYZ Corp. 6868 had obtained the domain name "XYZ.com", then a private keyword 'abc' 6869 would be: 'xyz.com-abc'. 6871 Note: RFC 1035 [RFC1035] indicates that while upper and lower case 6872 letters are allowed in domain names, no significance is attached to the 6873 case. That is, two names with the same spelling but different case are 6874 to be treated as if identical. Also, the labels in a domain name must 6875 follow the rules for ARPANET host names: They must start with a letter, 6876 end with a letter or digit, and have as interior characters only 6877 letters, digits, and hyphen. Labels must be 63 characters or less. 6878 Labels are separated by the "." character. 6880 For private (unregistered) enum extension, implementers MUST use values 6881 in the reserved integer range which is 2**30 to 2**31-1. 6883 6.2 Attribute Extensibility 6885 Attribute names are type2 keywords. Therefore, new attributes may be 6886 registered and have the same status as attributes in this document by 6887 following the type2 extension rules. For private (unregistered) 6888 attribute extensions, implementers SHOULD use keywords with a suitable 6889 distinguishing prefix as described in Section 6.1. 6891 Expires November 10, 1999 6892 IANA will publish approved attribute registration specifications as 6893 separate files: 6895 ftp.isi.edu/iana/assignments/ipp/attributes/xxx-yyy.txt 6897 where "xxx-yyy" is the new attribute name. 6899 If a new Printer object attribute is defined and its values can be 6900 affected by a specific document format, its specification needs to 6901 contain the following sentence: 6903 "The value of this attribute returned in a Get-Printer- 6904 Attributes response MAY depend on the "document-format" 6905 attribute supplied (see Section 3.2.5.1)." 6907 If the specification does not, then its value in the Get-Printer- 6908 Attributes response MUST NOT depend on the "document-format" supplied in 6909 the request. When a new Job Template attribute is registered, the value 6910 of the Printer attributes MAY vary with "document-format" supplied in 6911 the request without the specification having to indicate so. 6913 6.3 Attribute Syntax Extensibility 6915 Attribute syntaxes are like type2 enums. Therefore, new attribute 6916 syntaxes may be registered and have the same status as attribute 6917 syntaxes in this document by following the type2 extension rules 6918 described in Section 6.1. The value codes that identify each of the 6919 attribute syntaxes are assigned in the "Encoding and Transport" 6920 specification [IPP-PRO], including a designated range for private, 6921 experimental use. 6923 For attribute syntaxes, the IPP Designated Expert in consultation with 6924 IANA assigns the next attribute syntax code in the appropriate range as 6925 specified in [IPP-PRO]. IANA will publish approved attribute syntax 6926 registration specifications as separate files: 6928 ftp.isi.edu/iana/assignments/ipp/attribute-syntaxes/xxx-yyy.txt 6930 where 'xxx-yyy' is the new attribute syntax name. 6932 6.4 Operation Extensibility 6934 Operations may also be registered following the type2 procedures 6935 described in Section 6.1, though major new operations will usually be 6936 done by a new standards track RFC that augments this document. For 6937 private (unregistered) operation extensions, implementers MUST use the 6938 range for the "operation-id" in requests specified in Section 4.4.15 6939 "operations-supported" Printer attribute. 6941 For operations, the IPP Designated Expert in consultation with IANA 6942 assigns the next operation-id code as specified in Section 4.4.15. IANA 6943 will publish approved operation registration specifications as separate 6944 files: 6946 Expires November 10, 1999 6947 ftp.isi.edu/iana/assignments/ipp/operations/Xxx-Yyy.txt 6949 where "Xxx-Yyy" is the new operation name. 6951 6.5 Attribute Groups 6953 Attribute groups passed in requests and responses may be registered 6954 following the type2 procedures described in Section 6.1. The tags that 6955 identify each of the attribute groups are assigned in [IPP-PRO]. 6957 For attribute groups, the IPP Designated Expert in consultation with 6958 IANA assigns the next attribute group tag code in the appropriate range 6959 as specified in [IPP-PRO]. IANA will publish approved attribute group 6960 registration specifications as separate files: 6962 ftp.isi.edu/iana/assignments/ipp/attribute-group-tags/xxx-yyy- 6963 tag.txt 6965 where 'xxx-yyy-tag' is the new attribute group tag name. 6967 6.6 Status Code Extensibility 6969 Operation status codes may also be registered following the type2 6970 procedures described in Section 6.1. The values for status codes are 6971 allocated in ranges as specified in Section 14 for each status code 6972 class: 6974 "informational" - Request received, continuing process 6975 "successful" - The action was successfully received, understood, and 6976 accepted 6977 "redirection" - Further action must be taken in order to complete the 6978 request 6979 "client-error" - The request contains bad syntax or cannot be 6980 fulfilled 6981 "server-error" - The IPP object failed to fulfill an apparently 6982 valid request 6984 For private (unregistered) operation status code extensions, 6985 implementers MUST use the top of each range as specified in Section 13. 6987 For operation status codes, the IPP Designated Expert in consultation 6988 with IANA assigns the next status code in the appropriate class range as 6989 specified in Section 13. IANA will publish approved status code 6990 registration specifications as separate files: 6992 ftp.isi.edu/iana/assignments/ipp/status-codes/xxx-yyy.txt 6994 where "xxx-yyy" is the new operation status code keyword. 6996 Expires November 10, 1999 6997 6.7 Registration of MIME types/sub-types for document-formats 6999 The "document-format" attribute's syntax is 'mimeMediaType'. This means 7000 that valid values are Internet Media Types (see Section 4.1.9). RFC 7001 2045 [RFC2045] defines the syntax for valid Internet media types. IANA 7002 is the registry for all Internet media types. 7004 6.8 Registration of charsets for use in 'charset' attribute values 7006 The "attributes-charset" attribute's syntax is 'charset'. This means 7007 that valid values are charsets names. When a charset in the IANA 7008 registry has more than one name (alias), the name labeled as "(preferred 7009 MIME name)", if present, MUST be used (see Section 4.1.7). IANA is the 7010 registry for charsets following the procedures of [RFC2278]. 7012 7. Internationalization Considerations 7014 Some of the attributes have values that are text strings and names which 7015 are intended for human understanding rather than machine understanding 7016 (see the 'text' and 'name' attribute syntaxes in Sections 4.1.1 and 7017 4.1.2). 7019 In each operation request, the client 7021 - identifies the charset and natural language of the request which 7022 affects each supplied 'text' and 'name' attribute value, and 7023 - requests the charset and natural language for attributes returned 7024 by the IPP object in operation responses (as described in Section 7025 3.1.4.1). 7027 In addition, the client MAY separately and individually identify the 7028 Natural Language Override of a supplied 'text' or 'name' attribute using 7029 the 'textWithLanguage' and 'nameWithLanguage' technique described 7030 section 4.1.1.2 and 4.1.2.2 respectively. 7032 All IPP objects MUST support the UTF-8 [RFC2279] charset in all 'text' 7033 and 'name' attributes supported. If an IPP object supports more than 7034 the UTF-8 charset, the object MUST convert between them in order to 7035 return the requested charset to the client according to Section 3.1.4.2. 7036 If an IPP object supports more than one natural language, the object 7037 SHOULD return 'text' and 'name' values in the natural language requested 7038 where those values are generated by the Printer (see Section 3.1.4.1). 7040 For Printers that support multiple charsets and/or multiple natural 7041 languages in 'text' and 'name' attributes, different jobs may have been 7042 submitted in differing charsets and/or natural languages. All responses 7043 MUST be returned in the charset requested by the client. However, the 7044 Get-Jobs operation uses the 'textWithLanguage' and 'nameWithLanguage' 7045 mechanism to identify the differing natural languages with each job 7046 attribute returned. 7048 Expires November 10, 1999 7049 The Printer object also has configured charset and natural language 7050 attributes. The client can query the Printer object to determine the 7051 list of charsets and natural languages supported by the Printer object 7052 and what the Printer object's configured values are. See the "charset- 7053 configured", "charset-supported", "natural-language-configured", and 7054 "generated-natural-language-supported" Printer description attributes 7055 for more details. 7057 The "charset-supported" attributed identifies the supported charsets. 7058 If a charset is supported, the IPP object MUST be capable of converting 7059 to and from that charset into any other supported charset. In many 7060 cases, an IPP object will support only one charset and it MUST be the 7061 UTF-8 charset. 7063 The "charset-configured" attribute identifies the one supported charset 7064 which is the native charset given the current configuration of the IPP 7065 object (administrator defined). 7067 The "generated-natural-language-supported" attribute identifies the set 7068 of supported natural languages for generated messages; it is not related 7069 to the set of natural languages that must be accepted for client 7070 supplied 'text' and 'name' attributes. For client supplied 'text' and 7071 'name' attributes, an IPP object MUST accept ALL supplied natural 7072 languages. Just because a Printer object is currently configured to 7073 support 'en-us' natural language does not mean that the Printer object 7074 should reject a job if the client supplies a job name that is in 'fr- 7075 ca'. 7077 The "natural-language-configured" attribute identifies the one supported 7078 natural language for generated messages which is the native natural 7079 language given the current configuration of the IPP object 7080 (administrator defined). 7082 Attributes of type 'text' and 'name' are populated from different 7083 sources. These attributes can be categorized into following groups 7084 (depending on the source of the attribute): 7086 1. Some attributes are supplied by the client (e.g., the client 7087 supplied "job-name", "document-name", and "requesting-user-name" 7088 operation attributes along with the corresponding Job object's 7089 "job-name" and "job-originating-user-name" attributes). The IPP 7090 object MUST accept these attributes in any natural language no 7091 matter what the set of supported languages for generated messages 7092 2. Some attributes are supplied by the system administrator (e.g., 7093 the Printer object's "printer-name" and "printer-location" 7094 attributes). These too can be in any natural language. If the 7095 natural language for these attributes is different than what a 7096 client requests, then they must be reported using the Natural 7097 Language Override mechanism. 7098 3. Some attributes are supplied by the device manufacturer (e.g., the 7099 Printer object's "printer-make-and-model" attribute). These too 7100 can be in any natural language. If the natural language for these 7101 attributes is different than what a client requests, then they must 7102 be reported using the Natural Language Override mechanism. 7104 Expires November 10, 1999 7106 4. Some attributes are supplied by the operator (e.g., the Job 7107 object's "job-message-from-operator" attribute). These too can be 7108 in any natural language. If the natural language for these 7109 attributes is different than what a client requests, then they must 7110 be reported using the Natural Language Override mechanism. 7111 5. Some attributes are generated by the IPP object (e.g., the Job 7112 object's "job-state-message" attribute, the Printer object's 7113 "printer-state-message" attribute, and the "status-message" 7114 operation attribute). These attributes can only be in one of the 7115 "generated-natural-language-supported" natural languages. If a 7116 client requests some natural language for these attributes other 7117 than one of the supported values, the IPP object SHOULD respond 7118 using the value of the "natural-language-configured" attribute 7119 (using the Natural Language Override mechanism if needed). 7121 The 'text' and 'name' attributes specified in this version of this 7122 document (additional ones will be registered according to the procedures 7123 in Section 6) are: 7125 Attributes Source 7127 Operation Attributes: 7129 job-name (name) client 7131 document-name (name) client 7133 requesting-user-name (name) client 7135 status-message Job or Printer object 7137 Job Template Attributes: 7139 job-hold-until (keyword | client matches administrator- 7140 name) configured 7142 job-hold-until-default client matches administrator- 7143 (keyword | name) configured 7145 job-hold-until-supported client matches administrator- 7146 (keyword | name) configured 7148 job-sheets (keyword | name) client matches administrator- 7149 configured 7151 job-sheets-default (keyword client matches administrator- 7152 | name) configured 7154 job-sheets-supported client matches administrator- 7155 (keyword | name) configured 7157 media (keyword | name) client matches administrator- 7158 configured 7160 media-default (keyword | client matches administrator- 7161 name) configured 7163 media-supported (keyword | client matches administrator- 7164 name) configured 7166 media-ready (keyword | name) client matches administrator- 7167 configured 7169 Job Description Attributes: 7171 job-name (name) client or Printer object 7173 job-originating-user-name Printer object 7174 (name) 7176 job-state-message (text) Job or Printer object 7178 Expires November 10, 1999 7179 output-device-assigned administrator 7180 (name(127)) 7182 job-message-from-operator operator 7183 (text(127)) 7185 Printer Description Attributes: 7187 printer-name (name(127)) administrator 7189 printer-location (text(127)) administrator 7191 printer-info (text(127)) administrator 7193 printer-make-and-model administrator or manufacturer 7194 (text(127)) 7196 printer-state-message (text) Printer object 7198 printer-message-from- operator 7199 operator (text(127)) 7201 8. Security Considerations 7203 It is difficult to anticipate the security risks that might exist in any 7204 given IPP environment. For example, if IPP is used within a given 7205 corporation over a private network, the risks of exposing document data 7206 may be low enough that the corporation will choose not to use encryption 7207 on that data. However, if the connection between the client and the IPP 7208 object is over a public network, the client may wish to protect the 7209 content of the information during transmission through the network with 7210 encryption. 7212 Furthermore, the value of the information being printed may vary from 7213 one IPP environment to the next. Printing payroll checks, for example, 7214 would have a different value than printing public information from a 7215 file. There is also the possibly of denial-of-service attacks, but 7216 denial-of-service attacks against printing resources are not well 7217 understood and there is no published precedents regarding this scenario. 7219 Once the authenticated identity of the requester has been supplied to 7220 the IPP object, the object uses that identity to enforce any 7221 authorization policy that might be in place. For example, one site's 7222 policy might be that only the job owner is allowed to cancel a job. The 7223 details and mechanisms to set up a particular access control policy are 7224 not part of IPP/1.1, and must be established via some other type of 7225 administrative or access control framework. However, there are 7226 operation status codes that allow an IPP server to return information 7227 back to a client about any potential access control violations for an 7228 IPP object. 7230 During a create operation, the client's identity is recorded in the Job 7231 object in an implementation-defined attribute. This information can be 7232 used to verify a client's identity for subsequent operations on that Job 7233 object in order to enforce any access control policy that might be in 7234 effect. See section 8.3 below for more details. 7236 Since the security levels or the specific threats that any given IPP 7237 system administrator may be concerned with cannot be anticipated, IPP 7238 MUST be capable of operating with different security mechanisms and 7240 Expires November 10, 1999 7241 security policies as required by the individual installation. Security 7242 policies might vary from very strong, to very weak, to none at all, and 7243 corresponding security mechanisms will be required. 7245 8.1 Security Scenarios 7247 The following sections describe specific security attacks for IPP 7248 environments. Where examples are provided they should be considered 7249 illustrative of the environment and not an exhaustive set. Not all of 7250 these environments will necessarily be addressed in initial 7251 implementations of IPP. 7253 8.1.1 Client and Server in the Same Security Domain 7255 This environment is typical of internal networks where traditional 7256 office workers print the output of personal productivity applications on 7257 shared work-group printers, or where batch applications print their 7258 output on large production printers. Although the identity of the user 7259 may be trusted in this environment, a user might want to protect the 7260 content of a document against such attacks as eavesdropping, replaying 7261 or tampering. 7263 8.1.2 Client and Server in Different Security Domains 7265 Examples of this environment include printing a document created by the 7266 client on a publicly available printer, such as at a commercial print 7267 shop; or printing a document remotely on a business associate's printer. 7268 This latter operation is functionally equivalent to sending the document 7269 to the business associate as a facsimile. Printing sensitive information 7270 on a Printer in a different security domain requires strong security 7271 measures. In this environment authentication of the printer is required 7272 as well as protection against unauthorized use of print resources. Since 7273 the document crosses security domains, protection against eavesdropping 7274 and document tampering are also required. It will also be important in 7275 this environment to protect Printers against "spamming" and malicious 7276 document content. 7278 8.1.3 Print by Reference 7280 When the document is not stored on the client, printing can be done by 7281 reference. That is, the print request can contain a reference, or 7282 pointer, to the document instead of the actual document itself (see 7283 sections 3.2.2 and 3.3.2). Standard methods currently do not exist for 7284 remote entities to "assume" the credentials of a client for forwarding 7285 requests to a 3rd party. It is anticipated that Print-By-Reference will 7286 be used to access "public" documents and that sophisticated methods for 7287 authenticating "proxies" is not specified in this document. 7289 Expires November 10, 1999 7290 8.2 URIs in Operation, Job, and Printer attributes 7292 The "printer-uri-supported" attribute contains the Printer object's 7293 URI(s). Its companion attribute, "uri-security-supported", identifies 7294 the security mechanism used for each URI listed in the "printer-uri- 7295 supported" attribute. For each Printer operation request, a client MUST 7296 supply only one URI in the "printer-uri" operation attribute. In other 7297 words, even though the Printer supports more than one URI, the client 7298 only interacts with the Printer object using one if its URIs. This 7299 duality is not needed for Job objects, since the Printer objects is the 7300 factory for Job objects, and the Printer object will generate the 7301 correct URI for new Job objects depending on the Printer object's 7302 security configuration. 7304 8.3 URIs for each authentication mechanisms 7306 Each URI has an authentication mechanism associated with it. If the URI 7307 is the ith element of "printer-uri-supported", then authentication 7308 mechanism is the "i th" element of "uri-authentication-supported". For a 7309 list of possible authentication mechanisms, see section 4.4.2. 7311 The Printer object uses an authentication mechanism to determine the 7312 name of the user performing an operation. This user is called the 7313 "authenticated user". The credibility of authentication depends on the 7314 mechanism that the Printer uses to obtain the user.s name. When the 7315 authentication mechanism is @none@, all authenticated users are 7316 "anonymous". 7318 During job creation operations, the Printer initializes the value of the 7319 "job-originating-user-name" attribute to be the authenticated user. The 7320 authenticated user is this case is called the "job-owner". 7322 If an implementation can be configured to support more than one 7323 authentication mechanism, then it MUST implement rules for determining 7324 equality of authenticated user names which have been authenticated via 7325 different authentication mechanisms. One possible policy is that 7326 identical names that are authenticated via different mechanism are 7327 different. For example, a user can cancel his job only if he uses the 7328 same authentication mechanism for both Cancel-Job and Print-Job. 7329 Another policy is that identical names that are authenticated via 7330 different mechanism are the same if the authentication mechanism for the 7331 later operation is not less strong than the authentication mechanism for 7332 the earlier job creation operation. For example, a user can cancel his 7333 job only if he uses the same or stronger authentication mechanism for 7334 Cancel-Job and Print-Job. With this second policy a job submitted via 7335 'requesting-user-name' authentication could be cancelled via 'digest' 7336 authentication. With the first policy, the job could not be cancelled in 7337 this way. 7339 A client is able to determine the authentication mechanism used to 7340 create a job. It is the ith value of the Printer.s "uri-authentication- 7341 supported" attribute, where i is the index of the element of the 7343 Expires November 10, 1999 7344 Printer.s "uri-printer-supported" attribute equal to the job.s "job- 7345 printer-uri" attribute. 7347 8.4 Restricted Queries 7349 In many IPP operations, a client supplies a list of attributes to be 7350 returned in the response. For security reasons, an IPP object may be 7351 configured not to return all attributes (or all values) that a client 7352 requests. The job attributes returned MAY depend on whether the 7353 requesting user is the same as the user that submitted the job. The IPP 7354 object MAY even return none of the requested attributes. In such cases, 7355 the status returned is the same as if the object had returned all 7356 requested attributes. The client cannot tell by such a response whether 7357 the requested attribute was present or absent on the object. 7359 8.5 Operations performed by operators and system administrators 7361 For the three printer operations Pause-Printer, Resume-Printer, and 7362 Purge-Jobs (see sections 3.2.7, 3.2.8 and 3.2.9), the requesting user is 7363 intended to be an operator or administrator of the Printer object (see 7364 section 1). For operations on jobs, the requesting user is intended to 7365 be the job owner or may be an operator or administrator of the Printer 7366 object. The means for authorizing an operator or administrator of the 7367 Printer object are not specified in this document. 7369 8.6 Queries on jobs submitted using non-IPP protocols 7371 If the device that an IPP Printer is representing is able to accept jobs 7372 using other job submission protocols in addition to IPP, it is 7373 RECOMMENDED that such an implementation at least allow such "foreign" 7374 jobs to be queried using Get-Jobs returning "job-id" and "job-uri" as 7375 'unknown'. Such an implementation NEED NOT support all of the same IPP 7376 job attributes as for IPP jobs. The IPP object returns the 'unknown' 7377 out-of-band value for any requested attribute of a foreign job that is 7378 supported for IPP jobs, but not for foreign jobs. 7380 It is further RECOMMENDED, that the IPP Printer generate "job-id" and 7381 "job-uri" values for such "foreign jobs", if possible, so that they may 7382 be targets of other IPP operations, such as Get-Job-Attributes and 7383 Cancel-Job. Such an implementation also needs to deal with the problem 7384 of authentication of such foreign jobs. One approach would be to treat 7385 all such foreign jobs as belonging to users other than the user of the 7386 IPP client. Another approach would be for the foreign job to belong to 7387 'anonymous'. Only if the IPP client has been authenticated as an 7388 operator or administrator of the IPP Printer object, could the foreign 7389 jobs be queried by an IPP request. Alternatively, if the security 7390 policy is to allow users to query other users' jobs, then the foreign 7391 jobs would also be visible to an end-user IPP client using Get-Jobs and 7392 Get-Job-Attributes. 7394 Expires November 10, 1999 7395 9. References 7397 [ASCII] 7398 Coded Character Set - 7-bit American Standard Code for Information 7399 Interchange (ASCII), ANSI X3.4-1986. This standard is the 7400 specification of the US-ASCII charset. 7402 [BCP-11] 7403 Bradner S., Hovey R., "The Organizations Involved in the IETF 7404 Standards Process", 1996/10/29 (RFC 2028) 7406 [HTPP] 7407 J. Barnett, K. Carter, R. DeBry, "Initial Draft - Hypertext 7408 Printing Protocol - HTPP/1.0", October 1996, 7409 ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/overview.ps.gz 7411 [IANA-CON] 7412 Narte, T. and Alvestrand, H.T.: Guidelines for Writing an IANA 7413 Considerations Section in RFCs, Work in Progress, draft-iesg-iana- 7414 considerations-04.txt, May 21, 1998. 7416 [IANA-CS] 7417 IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- 7418 notes/iana/assignments/character-sets 7420 [IANA-MT] 7421 IANA Registry of Media Types: ftp://ftp.isi.edu/in- 7422 notes/iana/assignments/media-types/ 7424 [IPP-IIG] 7425 Hastings, T., Manros, C., "Internet Printing Protocol/1.1: draft- 7426 ietf-ipp-implementers-guide-v11-??.txt, ?? 1999, work in progress. 7428 [IPP-IIG1.0] 7429 Hastings, T., Manros, C., "Internet Printing Protocol/1.0: 7430 Implementer's Guide", draft-ietf-ipp-implementers-guide-01.txt, 7431 February 1999, work in progress. 7433 [RFC2569] 7434 Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping between 7435 LPD and IPP Protocols", draft-ietf-ipp-lpd-ipp-map-05.txt, November 7436 1998. 7438 [RFC2566] 7439 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 7440 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, 7441 April 1999. 7443 [IPP-PRO] 7444 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 7445 Protocol/1.1: Encoding and Transport", draft-ietf-ipp-protocol-v11- 7446 01.txt, May, 1999. 7448 Expires November 10, 1999 7450 [RFC2565] 7451 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 7452 Protocol/1.0: Encoding and Transport", RFC 2565, April 1999. 7454 [RFC2568] 7455 Zilles, S., "Rationale for the Structure and Model and Protocol for 7456 the Internet Printing Protocol", draft-ietf-ipp-rat-04.txt, 7457 November, 1998. 7459 [RFC2567] 7460 Wright, D., "Design Goals for an Internet Printing Protocol", 7461 draft-ietf-ipp-req-03.txt, November, 1998. 7463 [ISO10646-1] 7464 ISO/IEC 10646-1:1993, "Information technology -- Universal 7465 Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture and 7466 Basic Multilingual Plane, JTC1/SC2." 7468 [ISO8859-1] 7469 ISO/IEC 8859-1:1987, "Information technology -- 8-bit One-Byte 7470 Coded Character Set - Part 1: Latin Alphabet Nr 1", 1987, JTC1/SC2. 7472 [ISO10175] 7473 ISO/IEC 10175 Document Printing Application (DPA), June 1996. 7475 [LDPA] 7476 T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. Taylor, P. 7477 Zehler, "LDPA - Lightweight Document Printing Application", 7478 October 1996, 7479 ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz 7481 [P1387.4] 7482 Kirk, M. (editor), POSIX System Administration - Part 4: Printing 7483 Interfaces, POSIX 1387.4 D8, 1994. 7485 [PSIS] Herriot, R. (editor), X/Open A Printing System 7486 Interoperability Specification (PSIS), August 1995. 7488 [PWG] 7489 Printer Working Group, http://www.pwg.org. 7491 [RFC1035] 7492 P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION", 7493 RFC 1035, November 1987. 7495 [RFC1179] 7496 McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 7497 1179, August 1990. 7499 [RFC1759] 7500 Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 7501 J., "Printer MIB", RFC 1759, March 1995. 7503 Expires November 10, 1999 7505 [RFC1766] 7506 H. Alvestrand, "Tags for the Identification of Languages", RFC 7507 1766, March 1995. 7509 [RFC1903] 7510 J. Case, et.al., "Textual Conventions for Version 2 of the Simple 7511 Network Management Protocol (SNMP v2)" RFC 1903, January 1996. 7513 [RFC1952] 7514 P. Deutsch, "GZIP file format specification version 4.3", RFC 1952, 7515 May 1996. 7517 [RFC2026] 7518 S. Bradner, "The Internet Standards Process -- Revision 3", RFC 7519 2026, October 1996. 7521 [RFC2045] 7522 N. Fried, N. Borenstein, ", Multipurpose Internet Mail Extensions 7523 (MIME) Part One: Format of Internet Message Bodies " RFC 2045, 7524 November 1996. 7526 [RFC2046] 7527 Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. 7528 N. Freed & N. Borenstein. November 1996. (Obsoletes RFC1521, 7529 RFC1522, RFC1590), RFC 2046. 7531 [RFC2048] 7532 N. Freed, J. Klensin & J. Postel, "Multipurpose Internet Mail 7533 Extension (MIME) Part Four: Registration Procedures". RFC 2048, 7534 November 1996. 7536 [RFC2068] 7537 R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee, 7538 "Hypertext Transfer Protocol - HTTP/1.1", RFC 2068, January 1997 7540 [RFC2069] 7541 J. Franks, P. Hallam-Baker, J. Hostetler, P. Leach, A. Luotonen, E. 7542 Sink, L. Stewart, "An Extension to HTTP: Digest Access 7543 Authentication", RFC-2069, Jan 1997. 7545 [RFC2119] 7546 S. Bradner, "Key words for use in RFCs to Indicate Requirement 7547 Levels", RFC 2119 , March 1997 7549 [RFC2228] 7550 M. Horowitz, S. Lunt, "FTP Security Extensions", RFC 2228, October 7551 1997. 7553 [RFC2246] 7554 T. Dierks, C. Allen, "The TLS Protocol Version 1.0", RFC 2246, 7555 January 1999. 7557 [RFC2277] 7558 H. Alvestrand, "IETF Policy on Character Sets and Languages" RFC 7559 2277, January 1998. 7561 Expires November 10, 1999 7563 [RFC2278] 7564 N. Freed, J. Postel: "IANA CharSet Registration Procedures", RFC 7565 2278, January 1998. 7567 [RFC2279] 7568 F. Yergeau , "UTF-8, a transformation format of ISO 10646", RFC 7569 2279. January 1998. 7571 [RFC2316] 7572 S. Bellovin , "Report of the IAB Security Architecture Workshop", 7573 RFC 2316, April 1998. 7575 [RFC2396] 7576 Berners-Lee, T., Fielding, R., Masinter, L., "Uniform Resource 7577 Identifiers (URI): Generic Syntax", RFC 2396, August 1998. 7579 [SSL] 7580 Netscape, The SSL Protocol, Version 3, (Text version 3.02), 7581 November 1996. 7583 [SWP] 7584 P. Moore, B. Jahromi, S. Butler, "Simple Web Printing SWP/1.0", May 7585 7, 1997, ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf 7587 10. Author's Address 7589 Scott A. Isaacson (Editor) 7590 Novell, Inc. 7591 122 E 1700 S 7592 Provo, UT 84606 7594 Phone: 801-861-7366 7595 Fax: 801-861-2517 7596 e-mail: sisaacson@novell.com 7598 Tom Hastings 7599 Xerox Corporation 7600 737 Hawaii St. ESAE 231 7601 El Segundo, CA 90245 7603 Phone: 310-333-6413 7604 Fax: 310-333-5514 7605 e-mail: hastings@cp10.es.xerox.com 7607 Robert Herriot 7608 Xerox Corp. 7609 3400 Hill View Ave, Building 1 7610 Palo Alto, CA 94304 7612 Phone: 650-813-7696 7613 Fax: 650-813-6860 7614 e-mail: robert.herriot@pahv.xerox.com 7616 Expires November 10, 1999 7617 Roger deBry 7618 Utah Valley State College 7619 Orem, UT 84058 7621 Phone: (801) 222-8000 7622 EMail: debryro@uvsc.edu 7624 Patrick Powell 7625 Astart Technologies 7626 9475 Chesapeake Dr., Suite D 7627 San Diego, CA 95123 7629 Phone: (619) 874-6543 7630 Fax: (619) 279-8424 7631 e-mail: papowell@astart.com 7633 IPP Mailing List: ipp@pwg.org 7634 IPP Mailing List Subscription: ipp-request@pwg.org 7635 IPP Web Page: http://www.pwg.org/ipp/ 7637 Implementers of this specification are encouraged to join IPP Mailing 7638 List in order to participate in any discussions of clarification issues 7639 and review of registration proposals for additional attributes and 7640 values. 7642 Other Participants: 7644 Chuck Adams - Tektronix 7645 Jeff Barnett - IBM 7646 Ron Bergman - Dataproducts Corp. 7647 Sylvan Butler - HP 7648 Keith Carter - IBM Corporation 7649 Jeff Copeland - QMS 7650 Andy Davidson - Tektronix 7651 Mabry Dozier - QMS 7652 Lee Farrell - Canon Information Systems 7653 Steve Gebert - IBM 7654 Babek Jahromi - Microsoft 7655 David Kellerman - Northlake Software 7656 Rick Landau - Digital 7657 Greg LeClair - Epson 7658 Harry Lewis - IBM 7659 Pete Loya - HP 7660 Ray Lutz - Cognisys 7661 Mike MacKay - Novell, Inc. 7662 Daniel Manchala - Xerox 7663 Carl-Uno Manros - Xerox 7664 Jay Martin - Underscore 7665 Larry Masinter - Xerox 7666 Stan McConnell - Xerox 7667 Ira McDonald - High North Inc. 7668 Paul Moore - Microsoft 7669 Tetsuya Morita - Ricoh 7670 Yuichi Niwa - Ricoh 7671 Pat Nogay - IBM 7673 Expires November 10, 1999 7674 Ron Norton - Printronics 7675 Bob Pentecost - HP 7676 Rob Rhoads - Intel 7677 Xavier Riley - Xerox 7678 David Roach - Unisys 7679 Stuart Rowley - Kyocera 7680 Hiroyuki Sato - Canon 7681 Bob Setterbo - Adobe 7682 Devon Taylor - Novell, Inc. 7683 Mike Timperman - Lexmark 7684 Randy Turner - Sharp 7685 Atsushi Yuki - Kyocera 7686 Rick Yardumian - Xerox 7687 Lloyd Young - Lexmark 7688 Bill Wagner - DPI 7689 Jim Walker - DAZEL 7690 Chris Wellens - Interworking Labs 7691 Rob Whittle - Novell, Inc. 7692 Don Wright - Lexmark 7693 Peter Zehler - Xerox 7694 Steve Zilles - Adobe 7696 Expires November 10, 1999 7698 11. Formats for IPP Registration Proposals 7700 In order to propose an IPP extension for registration, the proposer must 7701 submit an application to IANA by email to "iana@iana.org" or by filling 7702 out the appropriate form on the IANA web pages (http://www.iana.org). 7703 This section specifies the required information and the formats for 7704 proposing registrations of extensions to IPP as provided in Section 6 7705 for: 7707 1. type2 'keyword' attribute values 7708 2. type3 'keyword' attribute values 7709 3. type2 'enum' attribute values 7710 4. type3 'enum' attribute values 7711 5. attributes 7712 6. attribute syntaxes 7713 7. operations 7714 8. status codes 7716 11.1 Type2 keyword attribute values registration 7718 Type of registration: type2 keyword attribute value 7719 Name of attribute to which this keyword specification is to be added: 7720 Proposed keyword name of this keyword value: 7721 Specification of this keyword value (follow the style of IPP Model 7722 Section 4.1.2.3): 7723 Name of proposer: 7724 Address of proposer: 7725 Email address of proposer: 7727 Note: For type2 keywords, the Designated Expert will be the point of 7728 contact for the approved registration specification, if any maintenance 7729 of the registration specification is needed. 7731 11.2 Type3 keyword attribute values registration 7733 Type of registration: type3 keyword attribute value 7734 Name of attribute to which this keyword specification is to be added: 7735 Proposed keyword name of this keyword value: 7736 Specification of this keyword value (follow the style of IPP Model 7737 Section 4.1.2.3): 7738 Name of proposer: 7739 Address of proposer: 7740 Email address of proposer: 7742 Note: For type3 keywords, the proposer will be the point of contact for 7743 the approved registration specification, if any maintenance of the 7744 registration specification is needed. 7746 11.3 Type2 enum attribute values registration 7748 Type of registration: type2 enum attribute value 7749 Name of attribute to which this enum specification is to be added: 7750 Keyword symbolic name of this enum value: 7751 Numeric value (to be assigned by the IPP Designated Expert in 7752 consultation with IANA): 7754 Expires November 10, 1999 7755 Specification of this enum value (follow the style of IPP Model Section 7756 4.1.4): 7757 Name of proposer: 7758 Address of proposer: 7759 Email address of proposer: 7761 Note: For type2 enums, the Designated Expert will be the point of 7762 contact for the approved registration specification, if any maintenance 7763 of the registration specification is needed. 7765 11.4 Type3 enum attribute values registration 7767 Type of registration: type3 enum attribute value 7768 Name of attribute to which this enum specification is to be added: 7769 Keyword symbolic name of this enum value: 7770 Numeric value (to be assigned by the IPP Designated Expert in 7771 consultation with IANA): 7772 Specification of this enum value (follow the style of IPP Model Section 7773 4.1.4): 7774 Name of proposer: 7775 Address of proposer: 7776 Email address of proposer: 7778 Note: For type3 enums, the proposer will be the point of contact for 7779 the approved registration specification, if any maintenance of the 7780 registration specification is needed. 7782 11.5 Attribute registration 7784 Type of registration: attribute 7785 Proposed keyword name of this attribute: 7786 Types of attribute (Operation, Job Template, Job Description, Printer 7787 Description): 7788 Operations to be used with if the attribute is an operation attribute: 7789 Object (Job, Printer, etc. if bound to an object): 7790 Attribute syntax(es) (include 1setOf and range as in Section 4.2): 7791 If attribute syntax is 'keyword' or 'enum', is it type2 or type3: 7792 If this is a Printer attribute, MAY the value returned depend on 7793 "document-format" (See Section 6.2): 7794 If this is a Job Template attribute, how does its specification depend 7795 on the value of the "multiple-document-handling" attribute: 7796 Specification of this attribute (follow the style of IPP Model Section 7797 4.2): 7798 Name of proposer: 7799 Address of proposer: 7800 Email address of proposer: 7802 Note: For attributes, the IPP Designated Expert will be the point of 7803 contact for the approved registration specification, if any maintenance 7804 of the registration specification is needed. 7806 11.6 Attribute Syntax registration 7808 Type of registration: attribute syntax 7809 Proposed name of this attribute syntax: 7811 Expires November 10, 1999 7812 Type of attribute syntax (integer, octetString, character-string, see 7813 [IPP-PRO]): 7814 Numeric value (to be assigned by the IPP Designated Expert in 7815 consultation with IANA): 7816 Specification of this attribute (follow the style of IPP Model Section 7817 4.1): 7818 Name of proposer: 7819 Address of proposer: 7820 Email address of proposer: 7822 Note: For attribute syntaxes, the IPP Designated Expert will be the 7823 point of contact for the approved registration specification, if any 7824 maintenance of the registration specification is needed. 7826 11.7 Operation registration 7828 Type of registration: operation 7829 Proposed name of this operation: 7830 Numeric operation-id value (to be assigned by the IPP Designated Expert 7831 in consultation with IANA): 7832 Object Target (Job, Printer, etc. that operation is upon): 7833 Specification of this attribute (follow the style of IPP Model Section 7834 3): 7835 Name of proposer: 7836 Address of proposer: 7837 Email address of proposer: 7839 Note: For operations, the IPP Designated Expert will be the point of 7840 contact for the approved registration specification, if any maintenance 7841 of the registration specification is needed. 7843 11.8 Attribute Group registration 7845 Type of registration: attribute group 7846 Proposed name of this attribute group: 7847 Numeric tag according to [IPP-PRO] (to be assigned by the IPP Designated 7848 Expert in consultation with IANA): 7849 Operation requests and group number for each operation in which the 7850 attribute group occurs: 7851 Operation responses and group number for each operation in which the 7852 attribute group occurs: 7853 Specification of this attribute group (follow the style of IPP Model 7854 Section 3): 7855 Name of proposer: 7856 Address of proposer: 7857 Email address of proposer: 7859 Note: For attribute groups, the IPP Designated Expert will be the point 7860 of contact for the approved registration specification, if any 7861 maintenance of the registration specification is needed. 7863 11.9 Status code registration 7865 Type of registration: status code 7866 Keyword symbolic name of this status code value: 7868 Expires November 10, 1999 7869 Numeric value (to be assigned by the IPP Designated Expert in 7870 consultation with IANA): 7871 Operations that this status code may be used with: 7872 Specification of this status code (follow the style of IPP Model Section 7873 13 APPENDIX B: Status Codes and Suggested Status Code Messages): 7874 Name of proposer: 7875 Address of proposer: 7876 Email address of proposer: 7878 Note: For status codes, the Designated Expert will be the point of 7879 contact for the approved registration specification, if any maintenance 7880 of the registration specification is needed. 7882 12. APPENDIX A: Terminology 7884 This specification uses the terminology defined in this section. 7886 12.1 Conformance Terminology 7888 The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", 7889 "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be 7890 interpreted as described in RFC 2119 [RFC2119]. 7892 12.1.1 NEED NOT 7894 This term is not included in RFC 2119. The verb "NEED NOT" indicates an 7895 action that the subject of the sentence does not have to implement in 7896 order to claim conformance to the standard. The verb "NEED NOT" is used 7897 instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. 7899 12.2 Model Terminology 7901 12.2.1 Keyword 7903 Keywords are used within this document as identifiers of semantic 7904 entities within the abstract model (see section 4.1.2.3). Attribute 7905 names, some attribute values, attribute syntaxes, and attribute group 7906 names are represented as keywords. 7908 12.2.2 Attributes 7910 An attribute is an item of information that is associated with an 7911 instance of an IPP object. An attribute consists of an attribute name 7912 and one or more attribute values. Each attribute has a specific 7913 attribute syntax. All object attributes are defined in section 3.3.5 7914 and all operation attributes are defined in section 3. 7916 Job Template Attributes are described in section 4.2. The client 7917 optionally supplies Job Template attributes in a create request 7918 (operation requests that create Job objects). The Printer object has 7920 Expires November 10, 1999 7921 associated attributes which define supported and default values for the 7922 Printer. 7924 12.2.2.1 Attribute Name 7926 Each attribute is uniquely identified in this document by its attribute 7927 name. An attribute name is a keyword. The keyword attribute name is 7928 given in the section header describing that attribute. In running text 7929 in this document, attribute names are indicated inside double quotation 7930 marks (") where the quotation marks are not part of the keyword itself. 7932 12.2.2.2 Attribute Group Name 7934 Related attributes are grouped into named groups. The name of the group 7935 is a keyword. The group name may be used in place of naming all the 7936 attributes in the group explicitly. Attribute groups are defined in 7937 section 3. 7939 12.2.2.3 Attribute Value 7941 Each attribute has one or more values. Attribute values are represented 7942 in the syntax type specified for that attribute. In running text in this 7943 document, attribute values are indicated inside single quotation marks 7944 ('), whether their attribute syntax is keyword, integer, text, etc. 7945 where the quotation marks are not part of the value itself. 7947 12.2.2.4 Attribute Syntax 7949 Each attribute is defined using an explicit syntax type. In this 7950 document, each syntax type is defined as a keyword with specific 7951 meaning. The "Encoding and Transport" document [IPP-PRO] indicates the 7952 actual "on-the-wire" encoding rules for each syntax type. Attribute 7953 syntax types are defined in section 4.1. 7955 12.2.3 Supports 7957 By definition, a Printer object supports an attribute only if that 7958 Printer object responds with the corresponding attribute populated with 7959 some value(s) in a response to a query for that attribute. A Printer 7960 object supports an attribute value if the value is one of the Printer 7961 object's "supported values" attributes. The device behind a Printer 7962 object may exhibit a behavior that corresponds to some IPP attribute, 7963 but if the Printer object, when queried for that attribute, doesn't 7964 respond with the attribute, then as far as IPP is concerned, that 7965 implementation does not support that feature. If the Printer object's 7966 "xxx-supported" attribute is not populated with a particular value (even 7967 if that value is a legal value for that attribute), then that Printer 7968 object does not support that particular value. 7970 A conforming implementation MUST support all REQUIRED attributes. 7971 However, even for REQUIRED attributes, conformance to IPP does not 7972 mandate that all implementations support all possible values 7974 Expires November 10, 1999 7975 representing all possible job processing behaviors and features. For 7976 example, if a given instance of a Printer supports only certain document 7977 formats, then that Printer responds with the "document-format-supported" 7978 attribute populated with a set of values, possibly only one, taken from 7979 the entire set of possible values defined for that attribute. This 7980 limited set of values represents the Printer's set of supported document 7981 formats. Supporting an attribute and some set of values for that 7982 attribute enables IPP end users to be aware of and make use of those 7983 features associated with that attribute and those values. If an 7984 implementation chooses to not support an attribute or some specific 7985 value, then IPP end users would have no ability to make use of that 7986 feature within the context of IPP itself. However, due to existing 7987 practice and legacy systems which are not IPP aware, there might be some 7988 other mechanism outside the scope of IPP to control or request the 7989 "unsupported" feature (such as embedded instructions within the document 7990 data itself). 7992 For example, consider the "finishings-supported" attribute. 7994 1) If a Printer object is not physically capable of stapling, the 7995 "finishings-supported" attribute MUST NOT be populated with the 7996 value of 'staple'. 7997 2) A Printer object is physically capable of stapling, however an 7998 implementation chooses not to support stapling in the IPP 7999 "finishings" attribute. In this case, 'staple' MUST NOT be a value 8000 in the "finishings-supported" Printer object attribute. Without 8001 support for the value 'staple', an IPP end user would have no means 8002 within the protocol itself to request that a Job be stapled. 8003 However, an existing document data formatter might be able to 8004 request that the document be stapled directly with an embedded 8005 instruction within the document data. In this case, the IPP 8006 implementation does not "support" stapling, however the end user is 8007 still able to have some control over the stapling of the completed 8008 job. 8009 3) A Printer object is physically capable of stapling, and an 8010 implementation chooses to support stapling in the IPP "finishings" 8011 attribute. In this case, 'staple' MUST be a value in the 8012 "finishings-supported" Printer object attribute. Doing so, would 8013 enable end users to be aware of and make use of the stapling 8014 feature using IPP attributes. 8016 Even though support for Job Template attributes by a Printer object is 8017 OPTIONAL, it is RECOMMENDED that if the device behind a Printer object 8018 is capable of realizing any feature or function that corresponds to an 8019 IPP attribute and some associated value, then that implementation SHOULD 8020 support that IPP attribute and value. 8022 The set of values in any of the supported value attributes is set 8023 (populated) by some administrative process or automatic sensing 8024 mechanism that is outside the scope of this IPP/1.1 document. For 8025 administrative policy and control reasons, an administrator may choose 8026 to make only a subset of possible values visible to the end user. In 8027 this case, the real output device behind the IPP Printer abstraction may 8028 be capable of a certain feature, however an administrator is specifying 8029 that access to that feature not be exposed to the end user through the 8031 Expires November 10, 1999 8032 IPP protocol. Also, since a Printer object may represent a logical 8033 print device (not just a physical device) the actual process for 8034 supporting a value is undefined and left up to the implementation. 8035 However, if a Printer object supports a value, some manual human action 8036 may be needed to realize the semantic action associated with the value, 8037 but no end user action is required. 8039 For example, if one of the values in the "finishings-supported" 8040 attribute is 'staple', the actual process might be an automatic staple 8041 action by a physical device controlled by some command sent to the 8042 device. Or, the actual process of stapling might be a manual action by 8043 an operator at an operator attended Printer object. 8045 For another example of how supported attributes function, consider a 8046 system administrator who desires to control all print jobs so that no 8047 job sheets are printed in order to conserve paper. To force no job 8048 sheets, the system administrator sets the only supported value for the 8049 "job-sheets-supported" attribute to 'none'. In this case, if a client 8050 requests anything except 'none', the create request is rejected or the 8051 "job-sheets" value is ignored (depending on the value of "ipp-attribute- 8052 fidelity"). To force the use of job start/end sheets on all jobs, the 8053 administrator does not include the value 'none' in the "job-sheets- 8054 supported" attribute. In this case, if a client requests 'none', the 8055 create request is rejected or the "job-sheets" value is ignored (again 8056 depending on the value of "ipp-attribute-fidelity"). 8058 12.2.4 print-stream page 8060 A "print-stream page" is a page according to the definition of pages in 8061 the language used to express the document data. 8063 12.2.5 impression 8065 An "impression" is the image (possibly many print-stream pages in 8066 different configurations) imposed onto a single media page. 8068 13. APPENDIX B: Status Codes and Suggested Status Code Messages 8070 This section defines status code enum keywords and values that are used 8071 to provide semantic information on the results of an operation request. 8072 Each operation response MUST include a status code. The response MAY 8073 also contain a status message that provides a short textual description 8074 of the status. The status code is intended for use by automata, and the 8075 status message is intended for the human end user. Since the status 8076 message is an OPTIONAL component of the operation response, an IPP 8077 application (i.e., a browser, GUI, print driver or gateway) is NOT 8078 REQUIRED to examine or display the status message, since it MAY not be 8079 returned to the application. 8081 The prefix of the status keyword defines the class of response as 8082 follows: 8084 Expires November 10, 1999 8085 "informational" - Request received, continuing process 8086 "successful" - The action was successfully received, understood, and 8087 accepted 8088 "redirection" - Further action must be taken in order to complete the 8089 request 8090 "client-error" - The request contains bad syntax or cannot be 8091 fulfilled 8092 "server-error" - The IPP object failed to fulfill an apparently 8093 valid request 8095 As with type2 enums, IPP status codes are extensible. IPP clients are 8096 NOT REQUIRED to understand the meaning of all registered status codes, 8097 though such understanding is obviously desirable. However, IPP clients 8098 MUST understand the class of any status code, as indicated by the 8099 prefix, and treat any unrecognized response as being equivalent to the 8100 first status code of that class, with the exception that an unrecognized 8101 response MUST NOT be cached. For example, if an unrecognized status 8102 code of "client-error-xxx-yyy" is received by the client, it can safely 8103 assume that there was something wrong with its request and treat the 8104 response as if it had received a "client-error-bad-request" status code. 8105 In such cases, IPP applications SHOULD present the OPTIONAL message (if 8106 present) to the end user since the message is likely to contain human 8107 readable information which will help to explain the unusual status. The 8108 name of the enum is the suggested status message for US English. 8110 The status code values range from 0x0000 to 0x7FFF. The value ranges 8111 for each status code class are as follows: 8113 "successful" - 0x0000 to 0x00FF 8114 "informational" - 0x0100 to 0x01FF 8115 "redirection" - 0x0200 to 0x02FF 8116 "client-error" - 0x0400 to 0x04FF 8117 "server-error" - 0x0500 to 0x05FF 8119 The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 to 8120 5) is reserved for private use within each status code class. Values 8121 0x0600 to 0x7FFF are reserved for future assignment and MUST NOT be 8122 used. 8124 13.1 Status Codes 8126 Each status code is described below. Section 13.1.5.9 contains a table 8127 that indicates which status codes apply to which operations. The 8128 Implementer's Guide [IPP-IIG] describe the suggested steps for 8129 processing IPP attributes for all operations, including returning status 8130 codes. 8132 13.1.1 Informational 8134 This class of status code indicates a provisional response and is to be 8135 used for informational purposes only. 8137 Expires November 10, 1999 8138 There are no status codes defined in IPP/1.1 for this class of status 8139 code. 8141 13.1.2 Successful Status Codes 8143 This class of status code indicates that the client's request was 8144 successfully received, understood, and accepted. 8146 13.1.2.1 successful-ok (0x0000) 8148 The request has succeeded and no request attributes were substituted or 8149 ignored. In the case of a response to a create request, the 8150 'successful-ok' status code indicates that the request was successfully 8151 received and validated, and that the Job object has been created; it 8152 does not indicate that the job has been processed. The transition of 8153 the Job object into the 'completed' state is the only indicator that the 8154 job has been printed. 8156 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) 8158 The request has succeeded, but some supplied (1) attributes were ignored 8159 or (2) unsupported values were substituted with supported values or were 8160 ignored in order to perform the operation without rejecting it. 8161 Unsupported attributes, attribute syntaxes, or values MUST be returned 8162 in the Unsupported Attributes group of the response for all operations. 8163 There is an exception to this rule for the query operations: Get- 8164 Printer-Attributes, Get-Jobs, and Get-Job-Attributes for the "requested- 8165 attributes" operation attribute only. When the supplied values of the 8166 "requested-attributes" operation attribute are requesting attributes 8167 that are not supported, the IPP object MAY, but is NOT REQUIRED to, 8168 return the "requested-attributes" attribute in the Unsupported Attribute 8169 response group (with the unsupported values only). See sections 3.1.7 8170 and 3.2.1.2. 8172 13.1.2.3 successful-ok-conflicting-attributes (0x0002) 8174 The request has succeeded, but some supplied attribute values conflicted 8175 with the values of other supplied attributes. These conflicting values 8176 were either (1) substituted with (supported) values or (2) the 8177 attributes were removed in order to process the job without rejecting 8178 it. Attributes or values which conflict with other attributes and have 8179 been substituted or ignored MUST be returned in the Unsupported 8180 Attributes group of the response for all operations as supplied by the 8181 client. See sections 3.1.7 and 3.2.1.2. 8183 13.1.3 Redirection Status Codes 8185 This class of status code indicates that further action needs to be 8186 taken to fulfill the request. 8188 There are no status codes defined in IPP/1.1 for this class of status 8189 code. 8191 Expires November 10, 1999 8192 13.1.4 Client Error Status Codes 8194 This class of status code is intended for cases in which the client 8195 seems to have erred. The IPP object SHOULD return a message containing 8196 an explanation of the error situation and whether it is a temporary or 8197 permanent condition. 8199 13.1.4.1 client-error-bad-request (0x0400) 8201 The request could not be understood by the IPP object due to malformed 8202 syntax (such as the value of a fixed length attribute whose length does 8203 not match the prescribed length for that attribute - see the 8204 Implementer's Guide [IPP-IIG] ). The IPP application SHOULD NOT repeat 8205 the request without modifications. 8207 13.1.4.2 client-error-forbidden (0x0401) 8209 The IPP object understood the request, but is refusing to fulfill it. 8210 Additional authentication information or authorization credentials will 8211 not help and the request SHOULD NOT be repeated. This status code is 8212 commonly used when the IPP object does not wish to reveal exactly why 8213 the request has been refused or when no other response is applicable. 8215 13.1.4.3 client-error-not-authenticated (0x0402) 8217 The request requires user authentication. The IPP client may repeat the 8218 request with suitable authentication information. If the request already 8219 included authentication information, then this status code indicates 8220 that authorization has been refused for those credentials. If this 8221 response contains the same challenge as the prior response, and the user 8222 agent has already attempted authentication at least once, then the 8223 response message may contain relevant diagnostic information. This 8224 status codes reveals more information than "client-error-forbidden". 8226 13.1.4.4 client-error-not-authorized (0x0403) 8228 The requester is not authorized to perform the request. Additional 8229 authentication information or authorization credentials will not help 8230 and the request SHOULD NOT be repeated. This status code is used when 8231 the IPP object wishes to reveal that the authentication information is 8232 understandable, however, the requester is explicitly not authorized to 8233 perform the request. This status codes reveals more information than 8234 "client-error-forbidden" and "client-error-not-authenticated". 8236 13.1.4.5 client-error-not-possible (0x0404) 8238 This status code is used when the request is for something that can not 8239 happen. For example, there might be a request to cancel a job that has 8240 already been canceled or aborted by the system. The IPP client SHOULD 8241 NOT repeat the request. 8243 Expires November 10, 1999 8244 13.1.4.6 client-error-timeout (0x0405) 8246 The client did not produce a request within the time that the IPP object 8247 was prepared to wait. For example, a client issued a Create-Job 8248 operation and then, after a long period of time, issued a Send-Document 8249 operation and this error status code was returned in response to the 8250 Send-Document request (see section 3.3.1). The IPP object might have 8251 been forced to clean up resources that had been held for the waiting 8252 additional Documents. The IPP object was forced to close the Job since 8253 the client took too long. The client SHOULD NOT repeat the request 8254 without modifications. 8256 13.1.4.7 client-error-not-found (0x0406) 8258 The IPP object has not found anything matching the request URI. No 8259 indication is given of whether the condition is temporary or permanent. 8260 For example, a client with an old reference to a Job (a URI) tries to 8261 cancel the Job, however in the mean time the Job might have been 8262 completed and all record of it at the Printer has been deleted. This 8263 status code, 'client-error-not-found' is returned indicating that the 8264 referenced Job can not be found. This error status code is also used 8265 when a client supplies a URI as a reference to the document data in 8266 either a Print-URI or Send-URI operation, but the document can not be 8267 found. 8269 In practice, an IPP application should avoid a not found situation by 8270 first querying and presenting a list of valid Printer URIs and Job URIs 8271 to the end-user. 8273 13.1.4.8 client-error-gone (0x0407) 8275 The requested object is no longer available and no forwarding address is 8276 known. This condition should be considered permanent. Clients with 8277 link editing capabilities should delete references to the request URI 8278 after user approval. If the IPP object does not know or has no facility 8279 to determine, whether or not the condition is permanent, the status code 8280 "client-error-not-found" should be used instead. 8282 This response is primarily intended to assist the task of maintenance by 8283 notifying the recipient that the resource is intentionally unavailable 8284 and that the IPP object administrator desires that remote links to that 8285 resource be removed. It is not necessary to mark all permanently 8286 unavailable resources as "gone" or to keep the mark for any length of 8287 time -- that is left to the discretion of the IPP object administrator. 8289 13.1.4.9 client-error-request-entity-too-large (0x0408) 8291 The IPP object is refusing to process a request because the request 8292 entity is larger than the IPP object is willing or able to process. An 8293 IPP Printer returns this status code when it limits the size of print 8294 jobs and it receives a print job that exceeds that limit or when the 8295 attributes are so many that their encoding causes the request entity to 8296 exceed IPP object capacity. 8298 Expires November 10, 1999 8299 13.1.4.10 client-error-request-value-too-long (0x0409) 8301 The IPP object is refusing to service the request because one or more of 8302 the client-supplied attributes has a variable length value that is 8303 longer than the maximum length specified for that attribute. The IPP 8304 object might not have sufficient resources (memory, buffers, etc.) to 8305 process (even temporarily), interpret, and/or ignore a value larger than 8306 the maximum length. Another use of this error code is when the IPP 8307 object supports the processing of a large value that is less than the 8308 maximum length, but during the processing of the request as a whole, the 8309 object may pass the value onto some other system component which is not 8310 able to accept the large value. For more details, see the Implementer's 8311 Guide [IPP-IIG] . 8313 Note: For attribute values that are URIs, this rare condition is only 8314 likely to occur when a client has improperly submitted a request with 8315 long query information (e.g. an IPP application allows an end-user to 8316 enter an invalid URI), when the client has descended into a URI "black 8317 hole" of redirection (e.g., a redirected URI prefix that points to a 8318 suffix of itself), or when the IPP object is under attack by a client 8319 attempting to exploit security holes present in some IPP objects using 8320 fixed-length buffers for reading or manipulating the Request-URI. 8322 13.1.4.11 client-error-document-format-not-supported (0x040A) 8324 The IPP object is refusing to service the request because the document 8325 data is in a format, as specified in the "document-format" operation 8326 attribute, that is not supported by the Printer object. This error is 8327 returned independent of the client-supplied "ipp-attribute-fidelity". 8328 The Printer object MUST return this status code, even if there are other 8329 Job Template attributes that are not supported as well, since this error 8330 is a bigger problem than with Job Template attributes. See sections 8331 3.1.7 and 3.2.1.1. Issue 11 8333 13.1.4.12 client-error-attributes-or-values-not-supported (0x040B) 8335 In a create request, if the Printer object does not support one or more 8336 attributes, attribute syntaxes, or attribute values supplied in the 8337 request and the client supplied the "ipp-attributes-fidelity" operation 8338 attribute with the 'true' value, the Printer object MUST return this 8339 status code. The Printer object MUST also return in the Unsupported 8340 Attributes Group all the attributes and/or values supplied by the client 8341 that are not supported. See section 3.1.7. Issue 11 For example, if 8342 the request indicates 'iso-a4' media, but that media type is not 8343 supported by the Printer object. Or, if the client supplies a Job 8344 Template attribute and the attribute itself is not even supported by the 8345 Printer. If the "ipp-attribute-fidelity" attribute is 'false', the 8346 Printer MUST ignore or substitute values for unsupported Job Template 8347 attributes and values rather than reject the request and return this 8348 status code. 8350 For any operation where a client requests attributes (such as a Get- 8351 Jobs, Get-Printer-Attributes, or Get-Job-Attributes operation), if the 8352 IPP object does not support one or more of the requested attributes, the 8354 Expires November 10, 1999 8355 IPP object simply ignores the unsupported requested attributes and 8356 processes the request as if they had not been supplied, rather than 8357 returning this status code. In this case, the IPP object MUST return 8358 the 'successful-ok-ignored-or-substituted-attributes' status code and 8359 MAY return the unsupported attributes as values of the "requested- 8360 attributes" in the Unsupported Attributes Group (see section 13.1.2.2). 8362 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) 8364 The scheme of the client-supplied URI in a Print-URI or a Send-URI 8365 operation is not supported. See section 3.1.7. Issue 11 8367 13.1.4.14 client-error-charset-not-supported (0x040D) 8369 For any operation, if the IPP Printer does not support the charset 8370 supplied by the client in the "attributes-charset" operation attribute, 8371 the Printer MUST reject the operation and return this status and any 8372 'text' or 'name' attributes using the 'utf-8' charset (see Section 8373 3.1.4.1). See section 3.1.7. Issue 11 8375 13.1.4.15 client-error-conflicting-attributes (0x040E) 8377 The request is rejected because some attribute values conflicted with 8378 the values of other attributes which this specification does not permit 8379 to be substituted or ignored. The Printer object MUST also return in 8380 the Unsupported Attributes Group the conflicting attributes supplied by 8381 the client. See sections 3.1.7 and 3.2.1.2. Issue 27 8383 13.1.4.16 client-error-compression-not-supported (0x040F) Issue 6 8385 The IPP object is refusing to service the request because the document 8386 data, as specified in the "compression" operation attribute, is 8387 compressed in a way that is not supported by the Printer object. This 8388 error is returned independent of the client-supplied "ipp-attribute- 8389 fidelity". The Printer object MUST return this status code, even if 8390 there are other Job Template attributes that are not supported as well, 8391 since this error is a bigger problem than with Job Template attributes. 8392 Issue 6 See sections 3.1.7 and 3.2.1.1. Issue 11 8394 13.1.4.17 client-error-compression-error (0x0410) Issue 6 8396 The IPP object is refusing to service the request because the document 8397 data cannot be decompressed when using the algorithm specified by the 8398 "compression" operation attribute. This error is returned independent 8399 of the client-supplied "ipp-attribute-fidelity". The Printer object 8400 MUST return this status code, even if there are Job Template attributes 8401 that are not supported as well, since this error is a bigger problem 8402 than with Job Template attributes. See sections 3.1.7 and 3.2.1.1. 8404 Expires November 10, 1999 8405 13.1.4.18 client-error-document-format-error (0x0411) Issue 28 8407 The IPP object is refusing to service the request because Printer 8408 encountered an error in the document data while interpreting it. This 8409 error is returned independent of the client-supplied "ipp-attribute- 8410 fidelity". The Printer object MUST return this status code, even if 8411 there are Job Template attributes that are not supported as well, since 8412 this error is a bigger problem than with Job Template attributes. See 8413 sections 3.1.7 and 3.2.1.1. 8415 13.1.4.19 client-error-document-access-error (0x0412) Issue 35 8417 The IPP object is refusing to service the Print-URI or Send-URI request 8418 because Printer encountered an access error while attempting to validate 8419 the accessibility or access the document data specified in the 8420 "document-uri" operation attribute. This error is returned independent 8421 of the client-supplied "ipp-attribute-fidelity". The Printer object 8422 MUST return this status code, even if there are Job Template attributes 8423 that are not supported as well, since this error is a bigger problem 8424 than with Job Template attributes. See section 3.1.7. 8426 13.1.5 Server Error Status Codes 8428 This class of status codes indicates cases in which the IPP object is 8429 aware that it has erred or is incapable of performing the request. The 8430 IPP object SHOULD include a message containing an explanation of the 8431 error situation, and whether it is a temporary or permanent condition. 8433 13.1.5.1 server-error-internal-error (0x0500) 8435 The IPP object encountered an unexpected condition that prevented it 8436 from fulfilling the request. This error status code differs from 8437 "server-error-temporary-error" in that it implies a more permanent type 8438 of internal error. It also differs from "server-error-device-error" in 8439 that it implies an unexpected condition (unlike a paper-jam or out-of- 8440 toner problem which is undesirable but expected). This error status 8441 code indicates that probably some knowledgeable human intervention is 8442 required. 8444 13.1.5.2 server-error-operation-not-supported (0x0501) 8446 The IPP object does not support the functionality required to fulfill 8447 the request. This is the appropriate response when the IPP object does 8448 not recognize an operation or is not capable of supporting it. See 8449 section 3.1.7. Issue 18 8451 13.1.5.3 server-error-service-unavailable (0x0502) 8453 The IPP object is currently unable to handle the request due to a 8454 temporary overloading or maintenance of the IPP object. The implication 8455 is that this is a temporary condition which will be alleviated after 8456 some delay. If known, the length of the delay may be indicated in the 8458 Expires November 10, 1999 8459 message. If no delay is given, the IPP application should handle the 8460 response as it would for a "server-error-temporary-error" response. If 8461 the condition is more permanent, the error status codes "client-error- 8462 gone" or "client-error-not-found" could be used. 8464 13.1.5.4 server-error-version-not-supported (0x0503) 8466 The IPP object does not support, or refuses to support, the IPP protocol 8467 version that was supplied as the value of the "version-number" operation 8468 parameter in the request. The IPP object is indicating that it is 8469 unable or unwilling to complete the request using the same major and 8470 minor version number as supplied in the request other than with this 8471 error message. The response SHOULD contain a "status-message" attribute 8472 describing why that version is not supported and what other versions are 8473 supported by that IPP object. See section 3.1.6. 8475 The error response MUST identify in the "version-number" operation 8476 parameter the closest version number that the IPP object does support. 8477 For example, if a client supplies version '1.0' and an IPP/1.1 object 8478 supports version '1.0', then it MUST respond with version '1.0'. If the 8479 IPP/1.1 object does not support version '1.0', then it MUST respond with 8480 this error code. Issue 36 8482 13.1.5.5 server-error-device-error (0x0504) 8484 A printer error, such as a paper jam, occurs while the IPP object 8485 processes a Print or Send operation. The response contains the true Job 8486 Status (the values of the "job-state" and "job-state-reasons" 8487 attributes). Additional information can be returned in the OPTIONAL 8488 "job-state-message" attribute value or in the OPTIONAL status message 8489 that describes the error in more detail. This error status code is only 8490 returned in situations where the Printer is unable to accept the create 8491 request because of such a device error. For example, if the Printer is 8492 unable to spool, and can only accept one job at a time, the reason it 8493 might reject a create request is that the printer currently has a paper 8494 jam. In many cases however, where the Printer object can accept the 8495 request even though the Printer has some error condition, the 8496 'successful-ok' status code will be returned. In such a case, the 8497 client would look at the returned Job Object Attributes or later query 8498 the Printer to determine its state and state reasons. 8500 13.1.5.6 server-error-temporary-error (0x0505) 8502 A temporary error such as a buffer full write error, a memory overflow 8503 (i.e. the document data exceeds the memory of the Printer), or a disk 8504 full condition, occurs while the IPP Printer processes an operation. 8505 The client MAY try the unmodified request again at some later point in 8506 time with an expectation that the temporary internal error condition may 8507 have been cleared. Alternatively, as an implementation option, a 8508 Printer object MAY delay the response until the temporary condition is 8509 cleared so that no error is returned. 8511 Expires November 10, 1999 8512 13.1.5.7 server-error-not-accepting-jobs (0x0506) 8514 A temporary error indicating that the Printer is not currently accepting 8515 jobs, because the administrator has set the value of the Printer's 8516 "printer-is-not-accepting-jobs" attribute to 'false' (by means outside 8517 the scope of this IPP/1.1 document). 8519 13.1.5.8 server-error-busy (0x0507) 8521 A temporary error indicating that the Printer is too busy processing 8522 jobs and/or other requests. The client SHOULD try the unmodified request 8523 again at some later point in time with an expectation that the temporary 8524 busy condition will have been cleared. 8526 13.1.5.9 server-error-job-canceled (0x0508) 8528 An error indicating that the job has been canceled by an operator or the 8529 system while the client was transmitting the data to the IPP Printer. 8530 If a job-id and job-uri had been created, then they are returned in the 8531 Print-Job, Send-Document, or Send-URI response as usual; otherwise, no 8532 job-id and job-uri are returned in the response. 8534 13.1.5.10 server-error-multiple-document-jobs-not-supported (0x0509) 8535 Issue 34 8537 The IPP object does not support multiple documents per job and a client 8538 attempted to supply document data with a second Send-Document or Send- 8539 URI operation. 8541 Expires November 10, 1999 8542 13.2 Status Codes for IPP Operations 8544 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 8545 SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and 8546 Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job 8548 IPP Operations 8549 IPP Status Keyword PJ PU CJ SD SU V GA GJ C 8550 ------------------ -- -- -- -- -- - -- -- - 8551 successful-ok x x x x x x x x x 8552 successful-ok-ignored-or-substituted- x x x x x x x x x 8553 attributes 8554 successful-ok-conflicting-attributes x x x x x x x x x 8555 client-error-bad-request x x x x x x x x x 8556 client-error-forbidden x x x x x x x x x 8557 client-error-not-authenticated x x x x x x x x x 8558 client-error-not-authorized x x x x x x x x x 8559 client-error-not-possible x x x x x x x x x 8560 client-error-timeout x x 8561 client-error-not-found x x x x x x x x x 8562 client-error-gone x x x x x x x x x 8563 client-error-request-entity-too-large x x x x x x x x x 8564 client-error-request-value-too-long x x x x x x x x x 8565 client-error-document-format-not- x x x x x x 8566 supported 8567 client-error-attributes-or-values-not- x x x x x x x x x 8568 supported 8569 client-error-uri-scheme-not-supported x x 8570 client-error-charset-not-supported x x x x x x x x x 8571 client-error-conflicting-attributes x x x x x x x x x 8572 client-error-compression-not-supported x x x x x 8573 client-error-compression-error x x x x 8574 client-error-document-format-error x x x x 8575 client-error-document-access-error x x 8576 server-error-internal-error x x x x x x x x x 8577 server-error-operation-not-supported x x x x 8578 server-error-service-unavailable x x x x x x x x x 8579 server-error-version-not-supported x x x x x x x x x 8580 server-error-device-error x x x x x 8581 server-error-temporary-error x x x x x 8582 server-error-not-accepting-jobs x x x x 8583 server-error-busy x x x x x x x x x 8584 server-error-job-canceled x x 8585 server-error-multiple-document-jobs- x x 8586 not-supported 8588 Expires November 10, 1999 8590 HJ = Hold-Job, RJ = Release-Job, RS = Restart-Job 8591 PP = Pause-Printer, RP = Resume-Printer, PJ = Purge-Jobs 8593 IPP Operations (cont.) 8594 IPP Status Keyword HJ RJ RS PP RP PJ 8595 ------------------ -- -- -- -- -- -- 8596 successful-ok x x x x x x 8597 successful-ok-ignored-or-substituted- x x x x x x 8598 attributes 8599 successful-ok-conflicting-attributes x x x x x x 8600 client-error-bad-request x x x x x x 8601 client-error-forbidden x x x x x x 8602 client-error-not-authenticated x x x x x x 8603 client-error-not-authorized x x x x x x 8604 client-error-not-possible x x x x x x 8605 client-error-timeout 8606 client-error-not-found x x x x x x 8607 client-error-gone x x x x x x 8608 client-error-request-entity-too-large x x x x x x 8609 client-error-request-value-too-long x x x x x x 8610 client-error-document-format-not- 8611 supported 8612 client-error-attributes-or-values-not- x x x x x x 8613 supported 8614 client-error-uri-scheme-not-supported 8615 client-error-charset-not-supported x x x x x x 8616 client-error-conflicting-attributes x x x x x x 8617 client-error-compression-not-supported 8618 client-error-compression-error 8619 client-error-document-format-error 8620 client-error-document-access-error 8621 server-error-internal-error x x x x x x 8622 server-error-operation-not-supported x x x x x x 8623 server-error-service-unavailable x x x x x x 8624 server-error-version-not-supported x x x x x x 8625 server-error-device-error 8626 server-error-temporary-error 8627 server-error-not-accepting-jobs 8628 server-error-busy x x x x x x 8629 server-error-job-canceled 8630 server-error-multiple-document-jobs- 8631 not-supported 8633 Expires November 10, 1999 8635 14. APPENDIX C: "media" keyword values 8637 Standard keyword values are taken from several sources. 8639 Standard values are defined (taken from DPA[ISO10175] and the Printer 8640 MIB[RFC1759]): 8642 'default': The default medium for the output device 8643 'iso-a4-white': Specifies the ISO A4 white medium 8644 'iso-a4-colored': Specifies the ISO A4 colored medium 8645 'iso-a4-transparent' Specifies the ISO A4 transparent medium 8646 'iso-a3-white': Specifies the ISO A3 white medium 8647 'iso-a3-colored': Specifies the ISO A3 colored medium 8648 'iso-a5-white': Specifies the ISO A5 white medium 8649 'iso-a5-colored': Specifies the ISO A5 colored medium 8650 'iso-b4-white': Specifies the ISO B4 white medium 8651 'iso-b4-colored': Specifies the ISO B4 colored medium 8652 'iso-b5-white': Specifies the ISO B5 white medium 8653 'iso-b5-colored': Specifies the ISO B5 colored medium 8654 'jis-b4-white': Specifies the JIS B4 white medium 8655 'jis-b4-colored': Specifies the JIS B4 colored medium 8656 'jis-b5-white': Specifies the JIS B5 white medium 8657 'jis-b5-colored': Specifies the JIS B5 colored medium 8659 The following standard values are defined for North American media: 8661 'na-letter-white': Specifies the North American letter white medium 8662 'na-letter-colored': Specifies the North American letter colored 8663 medium 8664 'na-letter-transparent': Specifies the North American letter 8665 transparent medium 8666 'na-legal-white': Specifies the North American legal white medium 8667 'na-legal-colored': Specifies the North American legal colored medium 8669 The following standard values are defined for envelopes: 8671 'iso-b4-envelope': Specifies the ISO B4 envelope medium 8672 'iso-b5-envelope': Specifies the ISO B5 envelope medium 8673 'iso-c3-envelope': Specifies the ISO C3 envelope medium 8674 'iso-c4-envelope': Specifies the ISO C4 envelope medium 8675 'iso-c5-envelope': Specifies the ISO C5 envelope medium 8676 'iso-c6-envelope': Specifies the ISO C6 envelope medium 8677 'iso-designated-long-envelope': Specifies the ISO Designated Long 8678 envelope medium 8679 'na-10x13-envelope': Specifies the North American 10x13 envelope 8680 medium 8681 'na-9x12-envelope': Specifies the North American 9x12 envelope medium 8682 'monarch-envelope': Specifies the Monarch envelope 8683 'na-number-10-envelope': Specifies the North American number 10 8684 business envelope medium 8685 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 8687 Expires November 10, 1999 8688 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 8689 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 8690 'na-number-9-envelope': Specifies the North American number 9 8691 business envelope 8692 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 8693 'na-10x15-envelope': Specifies the North American 10x15 inch envelope 8695 The following standard values are defined for the less commonly used 8696 media (white-only): 8698 'executive-white': Specifies the white executive medium 8699 'folio-white': Specifies the folio white medium 8700 'invoice-white': Specifies the white invoice medium 8701 'ledger-white': Specifies the white ledger medium 8702 'quarto-white': Specified the white quarto medium 8703 'iso-a0-white': Specifies the ISO A0 white medium 8704 'iso-a1-white': Specifies the ISO A1 white medium 8705 'iso-a2-white': Specifies the ISO A2 white medium 8706 'iso-a6-white': Specifies the ISO A6 white medium 8707 'iso-a7-white': Specifies the ISO A7 white medium 8708 'iso-a8-white': Specifies the ISO A8 white medium 8709 'iso-a9-white': Specifies the ISO A9 white medium 8710 'iso-10-white': Specifies the ISO A10 white medium 8711 'iso-b0-white': Specifies the ISO B0 white medium 8712 'iso-b1-white': Specifies the ISO B1 white medium 8713 'iso-b2-white': Specifies the ISO B2 white medium 8714 'iso-b3-white': Specifies the ISO B3 white medium 8715 'iso-b6-white': Specifies the ISO B6 white medium 8716 'iso-b7-white': Specifies the ISO B7 white medium 8717 'iso-b8-white': Specifies the ISO B8 white medium 8718 'iso-b9-white': Specifies the ISO B9 white medium 8719 'iso-b10-white': Specifies the ISO B10 white medium 8720 'jis-b0-white': Specifies the JIS B0 white medium 8721 'jis-b1-white': Specifies the JIS B1 white medium 8722 'jis-b2-white': Specifies the JIS B2 white medium 8723 'jis-b3-white': Specifies the JIS B3 white medium 8724 'jis-b6-white': Specifies the JIS B6 white medium 8725 'jis-b7-white': Specifies the JIS B7 white medium 8726 'jis-b8-white': Specifies the JIS B8 white medium 8727 'jis-b9-white': Specifies the JIS B9 white medium 8728 'jis-b10-white': Specifies the JIS B10 white medium 8730 The following standard values are defined for engineering media: 8732 'a': Specifies the engineering A size medium 8733 'b': Specifies the engineering B size medium 8734 'c': Specifies the engineering C size medium 8735 'd': Specifies the engineering D size medium 8736 'e': Specifies the engineering E size medium 8738 The following standard values are defined for input-trays (from ISO DPA 8739 and the Printer MIB): 8741 Expires November 10, 1999 8742 'top': The top input tray in the printer. 8743 'middle': The middle input tray in the printer. 8744 'bottom': The bottom input tray in the printer. 8745 'envelope': The envelope input tray in the printer. 8746 'manual': The manual feed input tray in the printer. 8747 'large-capacity': The large capacity input tray in the printer. 8748 'main': The main input tray 8749 'side': The side input tray 8751 The following standard values are defined for media sizes (from ISO 8752 DPA): 8754 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined in 8755 ISO 216 8756 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 8757 ISO 216 8758 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 8759 ISO 216 8760 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 8761 ISO 216 8762 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 8763 ISO 216 8764 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 8765 ISO 216 8766 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 8767 ISO 216 8768 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 8769 ISO 216 8770 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in ISO 8771 216 8772 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in ISO 8773 216 8774 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 8775 ISO 216 8776 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined in 8777 ISO 216 8778 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined in 8779 ISO 216 8780 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 8781 ISO 216 8782 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 8783 ISO 216 8784 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 8785 ISO 216 8786 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 8787 ISO 216 8788 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 8789 ISO 216 8790 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 8791 ISO 216 8792 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in ISO 8793 216 8794 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in ISO 8795 216 8797 Expires November 10, 1999 8799 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 8800 ISO 216 8801 'na-letter': Specifies the North American letter size: 8.5 inches by 8802 11 inches 8803 'na-legal': Specifies the North American legal size: 8.5 inches by 14 8804 inches 8805 'executive': Specifies the executive size (7.25 X 10.5 in) 8806 'folio': Specifies the folio size (8.5 X 13 in) 8807 'invoice': Specifies the invoice size (5.5 X 8.5 in) 8808 'ledger': Specifies the ledger size (11 X 17 in) 8809 'quarto': Specifies the quarto size (8.5 X 10.83 in) 8810 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 8811 ISO 269 8812 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 8813 ISO 269 8814 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 8815 ISO 269 8816 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 8817 ISO 269 8818 'iso-designated-long': Specifies the ISO Designated Long size: 110 mm 8819 by 220 mm as defined in ISO 269 8820 'na-10x13-envelope': Specifies the North American 10x13 size: 10 8821 inches by 13 inches 8822 'na-9x12-envelope': Specifies the North American 9x12 size: 9 inches 8823 by 12 inches 8824 'na-number-10-envelope': Specifies the North American number 10 8825 business envelope size: 4.125 inches by 9.5 inches 8826 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 8827 size 8828 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 8829 size 8830 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 8831 size 8832 'na-number-9-envelope': Specifies the North American number 9 8833 business envelope size 8834 'na-6x9-envelope': Specifies the North American 6x9 envelope size 8835 'na-10x15-envelope': Specifies the North American 10x15 envelope size 8836 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 8837 in) 8838 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 8839 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 8840 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 8841 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 8842 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 8843 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 8844 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 8845 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 8846 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 8847 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 8848 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 8850 Expires November 10, 1999 8852 15. APPENDIX D: Processing IPP Attributes 8854 When submitting a print job to a Printer object, the IPP model allows a 8855 client to supply operation and Job Template attributes along with the 8856 document data. These Job Template attributes in the create request 8857 affect the rendering, production and finishing of the documents in the 8858 job. Similar types of instructions may also be contained in the 8859 document to be printed, that is, embedded within the print data itself. 8860 In addition, the Printer has a set of attributes that describe what 8861 rendering and finishing options which are supported by that Printer. 8862 This model, which allows for flexibility and power, also introduces the 8863 potential that at job submission time, these client-supplied attributes 8864 may conflict with either: 8866 - what the implementation is capable of realizing (i.e., what the 8867 Printer supports), as well as 8868 - the instructions embedded within the print data itself. 8870 The following sections describe how these two types of conflicts are 8871 handled in the IPP model. 8873 15.1 Fidelity 8875 If there is a conflict between what the client requests and what a 8876 Printer object supports, the client may request one of two possible 8877 conflict handling mechanisms: 8879 1) either reject the job since the job can not be processed exactly 8880 as specified, or 8881 2) allow the Printer to make any changes necessary to proceed with 8882 processing the Job the best it can. 8884 In the first case the client is indicating to the Printer object: "Print 8885 the job exactly as specified with no exceptions, and if that can't be 8886 done, don't even bother printing the job at all." In the second case, 8887 the client is indicating to the Printer object: "It is more important to 8888 make sure the job is printed rather than be processed exactly as 8889 specified; just make sure the job is printed even if client supplied 8890 attributes need to be changed or ignored." 8892 The IPP model accounts for this situation by introducing an "ipp- 8893 attribute-fidelity" attribute. 8895 In a create request, "ipp-attribute-fidelity" is a boolean operation 8896 attribute that is OPTIONALLY supplied by the client. The value 'true' 8897 indicates that total fidelity to client supplied Job Template attributes 8898 and values is required. The client is requesting that the Job be 8899 printed exactly as specified, and if that is not possible then the job 8900 MUST be rejected rather than processed incorrectly. The value 'false' 8901 indicates that a reasonable attempt to print the Job is acceptable. If 8902 a Printer does not support some of the client supplied Job Template 8903 attributes or values, the Printer MUST ignore them or substitute any 8904 supported value for unsupported values, respectively. The Printer may 8906 Expires November 10, 1999 8907 choose to substitute the default value associated with that attribute, 8908 or use some other supported value that is similar to the unsupported 8909 requested value. For example, if a client supplies a "media" value of 8910 'na-letter', the Printer may choose to substitute 'iso-a4' rather than a 8911 default value of 'envelope'. If the client does not supply the "ipp- 8912 attribute-fidelity" attribute, the Printer assumes a value of 'false'. 8914 Each Printer implementation MUST support both types of "fidelity" 8915 printing (that is whether the client supplies a value of 'true' or 8916 'false'): 8918 - If the client supplies 'false' or does not supply the attribute, 8919 the Printer object MUST always accept the request by ignoring 8920 unsupported Job Template attributes and by substituting unsupported 8921 values of supported Job Template attributes with supported values. 8922 - If the client supplies 'true', the Printer object MUST reject the 8923 request if the client supplies unsupported Job Template attributes. 8925 Since a client can always query a Printer to find out exactly what is 8926 and is not supported, "ipp-attribute-fidelity" set to 'false' is useful 8927 when: 8929 1) The End-User uses a command line interface to request attributes 8930 that might not be supported. 8931 2) In a GUI context, if the End User expects the job might be moved 8932 to another printer and prefers a sub-optimal result to nothing at 8933 all. 8934 3) The End User just wants something reasonable in lieu of nothing at 8935 all. 8937 15.2 Page Description Language (PDL) Override 8939 If there is a conflict between the value of an IPP Job Template 8940 attribute and a corresponding instruction in the document data, the 8941 value of the IPP attribute SHOULD take precedence over the document 8942 instruction. Consider the case where a previously formatted file of 8943 document data is sent to an IPP Printer. In this case, if the client 8944 supplies any attributes at job submission time, the client desires that 8945 those attributes override the embedded instructions. Consider the case 8946 were a previously formatted document has embedded in it commands to load 8947 'iso-a4' media. However, the document is passed to an end user that 8948 only has access to a printer with 'na-letter' media loaded. That end 8949 user most likely wants to submit that document to an IPP Printer with 8950 the "media" Job Template attribute set to 'na-letter'. The job 8951 submission attribute should take precedence over the embedded PDL 8952 instruction. However, until companies that supply document data 8953 interpreters allow a way for external IPP attributes to take precedence 8954 over embedded job production instructions, a Printer might not be able 8955 to support the semantics that IPP attributes override the embedded 8956 instructions. 8958 The IPP model accounts for this situation by introducing a "pdl- 8959 override-supported" attribute that describes the Printer objects 8960 capabilities to override instructions embedded in the PDL data stream. 8962 Expires November 10, 1999 8963 The value of the "pdl-override-supported" attribute is configured by 8964 means outside the scope of this IPP/1.1 document. 8966 This REQUIRED Printer attribute takes on the following values: 8968 - 'attempted': This value indicates that the Printer object attempts 8969 to make the IPP attribute values take precedence over embedded 8970 instructions in the document data, however there is no guarantee. 8971 - 'not-attempted': This value indicates that the Printer object makes 8972 no attempt to make the IPP attribute values take precedence over 8973 embedded instructions in the document data. 8975 At job processing time, an implementation that supports the value of 8976 'attempted' might do one of several different actions: 8978 1) Generate an output device specific command sequence to realize the 8979 feature represented by the IPP attribute value. 8980 2) Parse the document data itself and replace the conflicting 8981 embedded instruction with a new embedded instruction that matches 8982 the intent of the IPP attribute value. 8983 3) Indicate to the Printer that external supplied attributes take 8984 precedence over embedded instructions and then pass the external 8985 IPP attribute values to the document data interpreter. 8986 4) Anything else that allows for the semantics that IPP attributes 8987 override embedded document data instructions. 8989 Since 'attempted' does not offer any type of guarantee, even though a 8990 given Printer object might not do a very "good" job of attempting to 8991 ensure that IPP attributes take a higher precedence over instructions 8992 embedded in the document data, it would still be a conforming 8993 implementation. 8995 At job processing time, an implementation that supports the value of 8996 'not-attempted' might do one of the following actions: 8998 1) Simply pre-pend the document data with the PDL instruction that 8999 corresponds to the client-supplied PDL attribute, such that if the 9000 document data also has the same PDL instruction, it will override 9001 what the Printer object pre-pended. In other words, this 9002 implementation is using the same implementation semantics for the 9003 client-supplied IPP attributes as for the Printer object defaults. 9004 2) Parse the document data and replace the conflicting embedded 9005 instruction with a new embedded instruction that approximates, but 9006 does not match, the semantic intent of the IPP attribute value. 9008 Note: The "ipp-attribute-fidelity" attribute applies to the Printer's 9009 ability to either accept or reject other unsupported Job Template 9010 attributes. In other words, if "ipp-attribute-fidelity" is set to 9011 'true', a Job is accepted if and only if the client supplied Job 9012 Template attributes and values are supported by the Printer. Whether 9013 these attributes actually affect the processing of the Job when the 9014 document data contains embedded instructions depends on the ability of 9015 the Printer to override the instructions embedded in the document data 9016 with the semantics of the IPP attributes. If the document data 9017 attributes can be overridden ("pdl-override-supported" set to 9019 Expires November 10, 1999 9020 'attempted'), the Printer makes an attempt to use the IPP attributes 9021 when processing the Job. If the document data attributes can not be 9022 overridden ("pdl-override-supported" set to 'not-attempted'), the 9023 Printer makes no attempt to override the embedded document data 9024 instructions with the IPP attributes when processing the Job, and hence, 9025 the IPP attributes may fail to affect the Job processing and output when 9026 the corresponding instruction is embedded in the document data. 9028 15.3 Using Job Template Attributes During Document Processing. 9030 The Printer object uses some of the Job object's Job Template attributes 9031 during the processing of the document data associated with that job. 9032 These include, but are not limited to, "orientation-requested", "number- 9033 up", "sides", "media", and "copies". The processing of each document in 9034 a Job Object MUST follow the steps below. These steps are intended only 9035 to identify when and how attributes are to be used in processing 9036 document data and any alternative steps that accomplishes the same 9037 effect can be used to implement this specification. 9039 1. Using the client supplied "document-format" attribute or some form 9040 of document format detection algorithm (if the value of "document- 9041 format" is not specific enough), determine whether or not the 9042 document data has already been formatted for printing. If the 9043 document data has been formatted, then go to step 2. Otherwise, the 9044 document data MUST be formatted. The formatting detection algorithm 9045 is implementation defined and is not specified by this 9046 specification. The formatting of the document data uses the 9047 "orientation-requested" attribute to determine how the formatted 9048 print data should be placed on a print-stream page, see section 9049 4.2.10 for the details. 9051 2. The document data is in the form of a print-stream in a known 9052 media type. The "page-ranges" attribute is used to select, as 9053 specified in section 4.2.7, a sub-sequence of the pages in the 9054 print-stream that are to be processed and images. 9056 3. The input to this step is a sequence of print-stream pages. This 9057 step is controlled by the "number-up" attribute. If the value of 9058 "number-up" is N, then during the processing of the print-stream 9059 pages, each N print-stream pages are positioned, as specified in 9060 section 4.2.9, to create a single impression. If a given document 9061 does not have N more print-stream pages, then the completion of the 9062 impression is controlled by the "multiple-document-handling" 9063 attribute as described in section 4.2.4; when the value of this 9064 attribute is 'single-document' or 'single-document-new-sheet', the 9065 print-stream pages of document data from subsequent documents is 9066 used to complete the impression. 9068 The size(scaling), position(translation) and rotation of the print- 9069 stream pages on the impression is implementation defined. Note 9070 that during this process the print-stream pages may be rendered to 9071 a form suitable for placing on the impression; this rendering is 9072 controlled by the values of the "printer-resolution" and "print- 9073 quality" attributes as described in sections 4.2.12 and 4.2.13. In 9075 Expires November 10, 1999 9076 the case N=1, the impression is nearly the same as the print-stream 9077 page; the differences would only be in the size, position and 9078 rotation of the print-stream page and/or any decoration, such as a 9079 frame to the page, that is added by the implementation. 9081 4. The collection of impressions is placed, in sequence, onto sides 9082 of the media sheets. This placement is controlled by the "sides" 9083 attribute and the orientation of the print-stream page, as 9084 described in section 4.2.8. The orientation of the print-stream 9085 pages affects the orientation of the impression; for example, if 9086 "number-up" equals 2, then, typically, two portrait print-stream 9087 pages become one landscape impression. Note that the placement of 9088 impressions onto media sheets is also controlled by the "multiple- 9089 document-handling" attribute as described in section 4.2.4. 9091 5. The "copies" and "multiple-document-handling" attributes are used 9092 to determine how many copies of each media instance are created and 9093 in what order. See sections 4.2.5 and 4.2.4 for the details. 9095 6. When the correct number of copies are created, the media instances 9096 are finished according to the values of the "finishings" attribute 9097 as described in 4.2.6. Note that sometimes finishing operations may 9098 require manual intervention to perform the finishing operations on 9099 the copies, especially uncollated copies. This specification allows 9100 any or all of the processing steps to be performed automatically or 9101 manually at the discretion of the Printer object. 9103 16. APPENDIX E: Generic Directory Schema 9105 This section defines a generic schema for an entry in a directory 9106 service. A directory service is a means by which service users can 9107 locate service providers. In IPP environments, this means that IPP 9108 Printers can be registered (either automatically or with the help of an 9109 administrator) as entries of type printer in the directory using an 9110 implementation specific mechanism such as entry attributes, entry type 9111 fields, specific branches, etc. IPP clients can search or browse for 9112 entries of type printer. Clients use the directory service to find 9113 entries based on naming, organizational contexts, or filtered searches 9114 on attribute values of entries. For example, a client can find all 9115 printers in the "Local Department" context. Authentication and 9116 authorization are also often part of a directory service so that an 9117 administrator can place limits on end users so that they are only 9118 allowed to find entries to which they have certain access rights. IPP 9119 itself does not require any specific directory service protocol or 9120 provider. 9122 Note: Some directory implementations allow for the notion of "aliasing". 9123 That is, one directory entry object can appear as multiple directory 9124 entry object with different names for each object. In each case, each 9125 alias refers to the same directory entry object which refers to a single 9126 IPP Printer object. 9128 Expires November 10, 1999 9129 The generic schema is a subset of IPP Printer Job Template and Printer 9130 Description attributes (sections 4.2 and 4.4). These attributes are 9131 identified as either RECOMMENDED or OPTIONAL for the directory entry 9132 itself. This conformance labeling is NOT the same conformance labeling 9133 applied to the attributes of IPP Printers objects. The conformance 9134 labeling in this Appendix is intended to apply to directory templates 9135 and to IPP Printer implementations that subscribe by adding one or more 9136 entries to a directory. RECOMMENDED attributes SHOULD be associated 9137 with each directory entry. OPTIONAL attributes MAY be associated with 9138 the directory entry (if known or supported). In addition, all directory 9139 entry attributes SHOULD reflect the current attribute values for the 9140 corresponding Printer object. 9142 The names of attributes in directory schema and entries SHOULD be the 9143 same as the IPP Printer attribute names as shown. 9145 In order to bridge between the directory service and the IPP Printer 9146 object, one of the RECOMMENDED directory entry attributes is the Printer 9147 object's "printer-uri-supported" attribute. The IPP client queries the 9148 "printer-uri-supported" attribute in the directory entry and then 9149 addresses the IPP Printer object using one of its URIs. The "uri- 9150 security-supported" attribute identifies the protocol (if any) used to 9151 secure a channel. 9153 The following attributes define the generic schema for directory entries 9154 of type PRINTER: 9156 printer-uri-supported RECOMMENDED Section 4.4.1 9157 uri-authentication-supported RECOMMENDED Section 4.4.2 9158 uri-security-supported RECOMMENDED Section 4.4.3 9159 printer-name RECOMMENDED Section 4.4.4 9160 printer-location RECOMMENDED Section 4.4.5 9161 printer-info OPTIONAL Section 4.4.6 9162 printer-more-info OPTIONAL Section 4.4.7 9163 printer-make-and-model RECOMMENDED Section 4.4.9 9164 charset-supported OPTIONAL Section 4.4.18| 9165 generated-natural-language- 9166 supported OPTIONAL Section 4.4.20 9167 document-format-supported RECOMMENDED Section 4.4.22 9168 compression-supported RECOMMENDED Section 4.4.32 9169 color-supported RECOMMENDED Section 4.4.26 9170 finishings-supported OPTIONAL Section 4.2.6 9171 number-up-supported OPTIONAL Section 4.2.7 9172 sides-supported RECOMMENDED Section 4.2.8 9173 media-supported RECOMMENDED Section 4.2.11 9174 printer-resolution-supported OPTIONAL Section 4.2.12 9175 print-quality-supported OPTIONAL Section 4.2.13 9176 ipp-versions-supported RECOMMENDED Section 4.4.14 9177 multiple-document-jobs-supportedOPTIONAL Section 4.4.16 9178 pages-per-minute OPTIONAL Section 4.4.36 9179 pages-per-minute-color OPTIONAL Section 4.4.37 9181 Expires November 10, 1999 9183 17. APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and 9184 Semantics" Specifications 9186 This Appendix is divided into two lists that summarize the differences 9187 between IPP/1.1 (this document) and IPP/1.0 [RFC2566]. The section 9188 numbers refer to the numbers in this document which in some cases have 9189 changed from RFC 2566. When a change affects multiple sections, the 9190 item is listed once in the order of the first section affected and the 9191 remaining affected section numbers are indicated. 9193 The first list contains extensions and clarifications and the second 9194 list contains changes in semantics or conformance. However, note that 9195 client and IPP object implementations of IPP/1.0 MAY implement any of 9196 the extensions and clarifications in this document. 9198 The following extensions and clarifications have been incorporated into 9199 this document: 9201 1. Section 2.1 - clarified that the term "client" can be either 9202 contained in software controlled by an end user or a part of a 9203 print server that controls devices. Issue 4 and Issue 5 9204 2. Section 2.4 - added the description of the new "uri-authentication- 9205 supported" Printer Description attribute. Issue 2 9206 3. Section 3.1.3, 3.1.6, 3.2.5.2, and - clarified the error handling 9207 for operation attributes that have their own status code. Issues 9208 18, 23, and 27 9209 4. Sections 3.1.7 - Added this new section to clarify returning 9210 Unsupported Attributes for all operations, including only returning 9211 attributes that were in the request. Issues 18, 23, and 27 9212 5. Sections 3.1.7 and 4.1 - clarified the encoding of the "out-of- 9213 band" 'unsupported' and 'unknown' values. Issues 12 and 15 9214 6. Section 3.1.8 - clarified that only the version number parameter 9215 will be carried forward into future major or minor versions of the 9216 protocol. 9217 7. Section 3.1.8 - indicated that IPP/1.1 Printers SHOULD support 9218 version '1.0' and that not all previous minor versions need be 9219 supported. Issue 33 9220 8. Section 3.1.8 - relaxed the requirements to increment the major 9221 version number. Issue 33 9222 9. Section 3.1.9, and 3.2.5 - added the 'processing' state to the list 9223 of job states that a job can be in after a Create-Job operation. 9224 Issue 13 9225 10. Section 3.1.9 - clarified that a non-spooling Printer MAY 9226 accept zero or more subsequent jobs while processing a job and flow 9227 control them down. Subsequent create requests are rejected with 9228 the 'server-error-busy' error status. Issue 20 9229 11. Section 3.2.1.1 - clarified the validation of the 9230 "compression" operation attribute and its relationship to the 9231 validation of the "document-format" attribute and returning 9232 Unsupported Attributes. Issues 6, 11, and 28 9233 12. Sections 3.2.1.1, 4.3.8, 13.1.4.16, and 13.1.4.17 - added the 9234 'client-error-compression-not-supported', 'client-error- 9236 Expires November 10, 1999 9237 compression-error' status codes and the 'unsupported-compression' 9238 and 'compression-error' job-state-reasons. Issue 28 9239 13. Sections 3.2.1.1 and 4.3.8 - added 'unsupported-document- 9240 format' and 'document-format-error' job-state-reasons. Issue 3 9241 14. Sections 3.2.2, 4.3.8 and 13.1.4.19 - added 'client-error- 9242 document-access-error' status code and 'document-access-error' job 9243 state reason. Issue 35 9244 15. Section 3.2.6 - clarified that "limit" takes precedence over 9245 "which-jobs" and "my-jobs'. Issue 8 9246 16. Section 3.2.6.2 - clarified that Get-Jobs returns 'successful- 9247 ok' when no jobs to return. Issue 24 9248 17. Sections 3.2.7, 3.2.8, and 3.2.9 - added the OPTIONAL Pause- 9249 Printer, Resume-Printer, and Purge-Jobs operations 9250 18. Sections 3.3.5, 3.3.6, and 3.3.7 - added the OPTIONAL Hold- 9251 Job, Release-Job, and Restart-Job operations. 9252 19. Section 4.1.9.1 - clarified that 'application/octet-stream' 9253 auto-sensing can happen at create request time and/or job/document 9254 processing time. Issue 9 and Issue 10 9255 20. Section 4.2 - clarified that xxx-supported have multiple 9256 keywords and/or names by adding parentheses to the table to give: 9257 (1setOf (type3 keyword | name)) 9258 21. Section 4.2.2 - added the 'indefinite' keyword value to the 9259 "job-hold-until" attribute for use with the create operations and 9260 Hold-Job and Restart-Job operations. 9261 22. Section 4.2.4 - clarified that "multiple-document-handling" 9262 MUST be supported if the Printer supports multiple documents per 9263 job Issue 34 9264 23. Section 4.2.6 - added more enum values to the "finishings" Job 9265 Template attribute. 9266 24. Section 4.3.7 - added that a forwarding server that cannot get 9267 any job state MAY return the job's state as 'completed', provided 9268 that it also return the new 'queued-in-device' job state reason. 9269 Issue 14 9270 25. Section 4.3.7.1 - added the Partitioning of Job States 9271 section. 9272 26. Section 4.3.8 - added 'job-data-insufficient' job state reason 9273 to indicate whether sufficient data has arrived for the document to 9274 start to be processed. Issue 13 9275 27. Section 4.3.8 - added 'document-access-error' job state reason 9276 to indicate an access error of any kind. Issue 35 9277 28. Section 4.3.8 - added 'job-queued-for-marker' job state reason 9278 to indicate whether the job has completed some processing and is 9279 waiting for the marker. Issue 31 9280 29. Section 4.3.8 - added 'unsupported-compression' and 9281 'compression-error' job state reasons to indicate compression not 9282 supported or compression processing error after the create has been 9283 accepted. Issue 6 9284 30. Section 4.3.8 - added 'unsupported-document-format' and 9285 'document-format-error' job state reasons to indicate document not 9286 supported or document format processing error after the create has 9287 been accepted. Issue 3 9288 31. Section 4.3.8 - added 'queued-in-device' job state reason to 9289 indicate that a job as been forwarded to a print system or device 9290 that does not provide any job status. Issue 14 9292 Expires November 10, 1999 9294 32. Section 4.4.3 - clarified "uri-security-supported" is 9295 orthogonal to Client Authentication so that 'none' does not exclude 9296 Client Authentication. Issue 2 9297 33. Section 4.4.12 - added the 'moving-to-paused' keyword value to 9298 the "printer-state-reasons" attribute for use with the Pause-Job 9299 operation. 9300 34. Section 4.4.12 - replaced the duplicate 'marker-supply-low' 9301 keyword with the missing 'toner-empty' keyword for the "printer- 9302 state-reasons" attribute. 9303 35. Section 4.4.15 - added the enum values to the "operations- 9304 supported" attribute for the new operations. Clarified that the 9305 values of this attribute are encoded as any enum, namely 32-bit 9306 values. 9307 36. Sections 4.4.36 and 4.4.37 - added the OPTIONAL "pages-per- 9308 minute" and "pages-per-minute-color" Printer Description 9309 attributes. 9310 37. Section 4.4.30 - clarified that the dateTime value of 9311 "printer-current-time" is on a "best efforts basis". If a proper 9312 date-time cannot be obtained, the implementation returns the 'no- 9313 value' out-of-band value. Also clarified that the time zone NEED 9314 NOT be the time zone that the people near the device use and that 9315 the client SHOULD display the dateTime attributes in the user's 9316 local time. Issue 17 9317 38. Section 5.1 - clarified that any response MAY contain 9318 additional attribute groups, attributes, or attribute values. 9319 Issues 25 and 26 9320 39. Section 5.1 - clarified that a client SHOULD do its best to 9321 prevent a channel from being closed by a lower layer when the 9322 channel is flow controlled off by the IPP Printer. Issues 4 and 5 9323 40. Section 8.3 - clarified the use of URIs for each Client 9324 Authentication mechanism. 9325 41. Section 8.5 - added the security discussion around the new 9326 operator operations. 9327 42. Section 13.1.4.16 - added client-error-compression-not- 9328 supported (0x040F) Issue 6 9329 43. Section 13.1.4.17 - added client-error-compression-error 9330 (0x0410) Issue 6 9331 44. Section 13.1.4.18 - added client-error-document-format-error 9332 (0x0411) Issue 28 9333 45. Section 13.1.4.19 - added client-error-document-access-error 9334 (0x0412) Issue 35 9335 46. Section 13.1.5.10 - added server-error-multiple-document-jobs- 9336 not-supported (0x0509) Issue 34 9337 47. Section 16 - added the OPTIONAL "pages-per-minute" and "pages- 9338 per-minute-color" Printer attributes to the Directory schema. 9339 48. Section 16 - added OPTIONAL "multiple-document-jobs-supported" 9340 to the Directory schema. Issue 34 9341 49. Section 16 - added RECOMMENDED "uri-security-supported", 9342 "compression-supported", and "ipp-versions-supported" to the 9343 Directory schema. Issues 2, 9345 The following changes in semantics and/or conformance have been 9346 incorporated into this document: 9348 Expires November 10, 1999 9349 1. Section 3.1.8, 5.2.4, and 13.1.5.4 - Clients and IPP objects MUST 9350 support version 1.1 and SHOULD support version 1.0. Issue 33 and 9351 Issue 36 9352 2. Section 3.2.1.1 and section 4.4.32 - changed the "compression" and 9353 "compression-supported" attributes from OPTIONAL to REQUIRED. 9354 Issue 28 9355 3. Sections 3.2.1.2 and 4.3.8 - changed "job-state-reasons" from 9356 RECOMMENDED to REQUIRED, so that "job-state-reasons" MUST be 9357 returned in create operation responses. Issue 30 9358 4. Sections 3.2.4, 3.3.1, 4.4.16, and 16 - changed Create-Job/Send- 9359 Document so that they MAY be implemented while only supporting one 9360 document jobs. Added the "multiple-document-jobs-supported" 9361 boolean Printer Description attribute to indicate whether Create- 9362 Job/Send-Document support multiple document jobs or not. Added to 9363 the Directory schema. Issue 34 9364 5. Section 4.1.9 - deleted 'text/plain; charset=iso-10646-ucs-2', 9365 since binary is not legal with the 'text' type. 9366 6. Section 4.3.8 - changed "job-state-reasons" from RECOMMENDED to 9367 REQUIRED. Issue 30 9368 7. Section 4.3.12 - added OPTIONAL 'dateTime' attribute syntax to 9369 "time-at-creation", "time-at-processing", and "time-at-completed" 9370 Job Description attributes for use in version '1.1' responses. 9371 Issue 17 9372 8. Section 4.3.12 - changed the "time-at-creation", "time-at- 9373 processing", and "time-at-completed" Event Time Job Description 9374 attributes from OPTIONAL to REQUIRED. Issue 17 9375 9. Section 4.3.12.4 - added the REQUIRED "job-printer-up-time 9376 (integer(1:MAX))" Job Description attribute as an alias for 9377 "printer-up-time" to reduce number of operations to get job times. 9378 Issue 17 9379 10. Section 4.4.2 - added the REQUIRED "uri-authentication- 9380 supported (1setOf type2 keyword)" Printer Description attribute to 9381 describe the Client Authentication used by each Printer URI. Issue 9382 2 9383 11. Section 4.4.11 - clarified the "printer-state" to allow a 9384 Printer that can interpret one or more jobs (rip) while marking one 9385 job to have those jobs all in the 'processing' state. Issue 31 9386 12. Section 4.4.12 - changed "printer-state-reasons" Printer 9387 Description attribute from OPTIONAL to REQUIRED. Issue 30 9388 13. Section 4.4.14 - added the REQUIRED "ipp-versions-supported 9389 (1setOf keyword)" Printer Description attribute, since IPP/1.1 9390 Printers do not have to support version '1.0'. 9391 14. Section 4.4.16 - added the REQUIRED "multiple-document-jobs- 9392 supported (boolean)" Printer Description attribute so that a client 9393 can tell whether a Printer that supports Create-Job/Send-Document 9394 supports multiple document jobs or not. Issue 34 9395 15. Section 4.4.24 - changed the "queued-job-count" Printer 9396 Description attribute from RECOMMENDED to REQUIRED. Issue 29 9397 16. Section 4.4.32 - changed "compression-supported (1setOf type3 9398 keyword)" Printer Description attribute from OPTIONAL to REQUIRED. 9399 Issue 28 9400 17. Section 5.1 - changed the client security requirements from 9401 RECOMMENDED non-standards track SSL3 to MUST/SHOULD [which is to be 9402 determined in consultation with the Area Director] support Client 9403 Authentication as defined in the IPP/1.1 Encoding and Transport 9405 Expires November 10, 1999 9406 document [IPP-PRO]. A client SHOULD support Operation Privacy and 9407 Server Authentication as defined in the IPP/1.1 Encoding and 9408 Transport document [IPP-PRO]. 9409 18. Section 5.2.7 - changed the IPP object security requirements 9410 from OPTIONAL non-standards track SSL3 to MUST/SHOULD [which is to 9411 be determined in consultation with the Area Director] contain 9412 support for Client Authentication as defined in the IPP/1.1 9413 Encoding and Transport document [IPP-PRO]. A Printer 9414 implementation MAY allow an administrator to configure the Printer 9415 so that all, some, or none of the users are authenticated. An IPP 9416 Printer implementation SHOULD contain support for Operation Privacy 9417 and Server Authentication as defined in the IPP/1.1 Encoding and 9418 Transport document [IPP-PRO]. A Printer implementation MAY allow 9419 an administrator to configure the degree of support for Operation 9420 Privacy and Server Authentication. 9422 See also the "IPP/1.1 Encoding and Transport" [IPP-PRO] document for 9423 differences between IPP/1.0 [RFC2565] and IPP/1.1 [IPP-PRO]. 9425 18. Full Copyright Statement 9427 Copyright (C) The Internet Society (1999). All Rights Reserved. 9429 This document and translations of it may be copied and furnished to 9430 others, and derivative works that comment on or otherwise explain it or 9431 assist in its implementation may be prepared, copied, published and 9432 distributed, in whole or in part, without restriction of any kind, 9433 provided that the above copyright notice and this paragraph are included 9434 on all such copies and derivative works. However, this document itself 9435 may not be modified in any way, such as by removing the copyright notice 9436 or references to the Internet Society or other Internet organizations, 9437 except as needed for the purpose of developing Internet standards in 9438 which case the procedures for copyrights defined in the Internet 9439 Standards process must be followed, or as required to translate it into 9440 languages other than English. 9442 The limited permissions granted above are perpetual and will not be 9443 revoked by the Internet Society or its successors or assigns. 9445 This document and the information contained herein is provided on an "AS 9446 IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK 9447 FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT 9448 LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT 9449 INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR 9450 FITNESS FOR A PARTICULAR PURPOSE. 9452 Expires November 10, 1999