idnits 2.17.1 draft-ietf-ipp-model-v11-03.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 182 longer pages, the longest (page 9) being 67 lines == It seems as if not all pages are separated by form feeds - found 0 form feeds but 183 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 85 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 219 has weird spacing: '...(1setOf type2...' == Line 697 has weird spacing: '...any indicate...' == Line 937 has weird spacing: '... object which...' == Line 1517 has weird spacing: '...charset clien...' == Line 1673 has weird spacing: '...client to ide...' == (16 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 (June 11, 1998) is 9451 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Looks like a reference, but probably isn't: '52' on line 4001 -- Looks like a reference, but probably isn't: '56' on line 4001 == Unused Reference: 'BCP-11' is defined on line 7448, but no explicit reference was found in the text == Unused Reference: 'ISO10646-1' is defined on line 7486, but no explicit reference was found in the text == Unused Reference: 'PWG' is defined on line 7511, but no explicit reference was found in the text == Unused Reference: 'RFC2068' is defined on line 7555, but no explicit reference was found in the text == Unused Reference: 'RFC2069' is defined on line 7559, but no explicit reference was found in the text == Unused Reference: 'RFC2277' is defined on line 7578, 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' == Outdated reference: A later version (-06) exists of draft-ietf-ipp-protocol-v11-01 -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO10646-1' -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO8859-1' -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO10175' -- Possible downref: Non-RFC (?) normative reference: ref. 'LDPA' -- Possible downref: Non-RFC (?) normative reference: ref. 'PSIS' -- Possible downref: Non-RFC (?) normative reference: ref. 'PWG' ** Downref: Normative reference to an Informational RFC: RFC 1179 ** Obsolete normative reference: RFC 1759 (Obsoleted by RFC 3805) ** Obsolete normative reference: RFC 1766 (Obsoleted by RFC 3066, RFC 3282) ** Downref: Normative reference to an Informational RFC: RFC 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) ** Obsolete normative reference: RFC 2565 (Obsoleted by RFC 2910) ** Obsolete normative reference: RFC 2566 (Obsoleted by RFC 2911) ** Downref: Normative reference to an Experimental draft: draft-ietf-ipp-req (ref. 'RFC2567') ** Downref: Normative reference to an Experimental draft: draft-ietf-ipp-rat (ref. 'RFC2568') ** Downref: Normative reference to an Experimental draft: draft-ietf-ipp-lpd-ipp-map (ref. 'RFC2569') -- Possible downref: Non-RFC (?) normative reference: ref. 'SSL' -- Possible downref: Non-RFC (?) normative reference: ref. 'SWP' Summary: 25 errors (**), 0 flaws (~~), 22 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-03.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 June 11, 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. 53 The full set of IPP documents includes: 54 Design Goals for an Internet Printing Protocol [RFC2567] 56 Expires December 11, 1999 57 Rationale for the Structure and Model and Protocol for the Internet 58 Printing Protocol [RFC2568] 59 Internet Printing Protocol/1.1: Model and Semantics (this document) 60 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 61 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 62 Mapping between LPD and IPP Protocols [RFC2569] 64 The "Design Goals for an Internet Printing Protocol" document takes a 65 broad look at distributed printing functionality, and it enumerates 66 real-life scenarios that help to clarify the features that need to be 67 included in a printing protocol for the Internet. It identifies 68 requirements for three types of users: end users, operators, and 69 administrators. It calls out a subset of end user requirements that are 70 satisfied in IPP/1.0. A few OPTIONAL operator operations have been 71 added to IPP/1.1. 73 The "Rationale for the Structure and Model and Protocol for the Internet 74 Printing Protocol" document describes IPP from a high level view, 75 defines a roadmap for the various documents that form the suite of IPP 76 specification documents, and gives background and rationale for the IETF 77 working group's major decisions. 79 The "Internet Printing Protocol/1.1: Encoding and Transport" document is 80 a formal mapping of the abstract operations and attributes defined in 81 the model document onto HTTP/1.1. It defines the encoding rules for a 82 new Internet MIME media type called "application/ipp". This document 83 also defines the rules for transporting over HTTP a message body whose 84 Content-Type is "application/ipp". This document defines a new scheme 85 named 'ipp' for identifying IPP printers and jobs. Finally, this 86 document defines interoperability rules for supporting IPP/1.0 clients. 88 The "Internet Printing Protocol/1.1: Implementer's Guide" document gives 89 insight and advice to implementers of IPP clients and IPP objects. It 90 is intended to help them understand IPP/1.1 and some of the 91 considerations that may assist them in the design of their client and/or 92 IPP object implementations. For example, a typical order of processing 93 requests is given, including error checking. Motivation for some of the 94 specification decisions is also included. 96 The "Mapping between LPD and IPP Protocols" document gives some advice 97 to implementers of gateways between IPP and LPD (Line Printer Daemon) 98 implementations. 100 Expires December 11, 1999 101 Table of Contents 103 1. Introduction.....................................................9 104 1.1 Simplified Printing Model...................................10 106 2. IPP Objects.....................................................12 107 2.1 Printer Object..............................................13 108 2.2 Job Object..................................................15 109 2.3 Object Relationships........................................16 110 2.4 Object Identity.............................................17 112 3. IPP Operations..................................................20 113 3.1 Common Semantics............................................20 114 3.1.1 Required Parameters......................................21 115 3.1.2 Operation IDs and Request IDs............................21 116 3.1.3 Attributes...............................................21 117 3.1.4 Character Set and Natural Language Operation Attributes..23 118 3.1.4.1 Request Operation Attributes..........................23 119 3.1.4.2 Response Operation Attributes.........................27 120 3.1.5 Operation Targets........................................28 121 3.1.6 Operation Response Status Codes and Status Messages......29 122 3.1.6.1 "status-code" (type2 enum)............................29 123 3.1.6.2 "status-message" (text(255))..........................30 124 3.1.6.3 "detailed-status-message" (text(MAX)) ...............31 125 3.1.6.4 "document-access-error" (text(MAX)) .................31 126 3.1.7 Unsupported Attributes...................................31 127 3.1.8 Versions.................................................33 128 3.1.9 Job Creation Operations..................................35 129 3.2 Printer Operations..........................................37 130 3.2.1 Print-Job Operation......................................37 131 3.2.1.1 Print-Job Request.....................................37 132 3.2.1.2 Print-Job Response....................................41 133 3.2.2 Print-URI Operation......................................43 134 3.2.3 Validate-Job Operation...................................44 135 3.2.4 Create-Job Operation.....................................44 136 3.2.5 Get-Printer-Attributes Operation.........................45 137 3.2.5.1 Get-Printer-Attributes Request........................46 138 3.2.5.2 Get-Printer-Attributes Response.......................47 139 3.2.6 Get-Jobs Operation.......................................48 140 3.2.6.1 Get-Jobs Request......................................49 141 3.2.6.2 Get-Jobs Response.....................................50 142 3.2.7 Pause-Printer Operation..................................51 143 3.2.7.1 Pause-Printer Request.................................53 144 3.2.7.2 Pause-Printer Response................................53 145 3.2.8 Resume-Printer Operation.................................53 146 3.2.9 Purge-Jobs Operation.....................................54 147 3.3 Job Operations..............................................55 148 3.3.1 Send-Document Operation..................................55 149 3.3.1.1 Send-Document Request.................................56 150 3.3.1.2 Send-Document Response................................57 151 3.3.2 Send-URI Operation.......................................58 152 3.3.3 Cancel-Job Operation.....................................58 153 3.3.3.1 Cancel-Job Request....................................59 155 Expires December 11, 1999 156 3.3.3.2 Cancel-Job Response...................................60 157 3.3.4 Get-Job-Attributes Operation.............................60 158 3.3.4.1 Get-Job-Attributes Request............................61 159 3.3.4.2 Get-Job-Attributes Response...........................62 160 3.3.5 Hold-Job Operation.......................................62 161 3.3.5.1 Hold-Job Request......................................63 162 3.3.5.2 Hold-Job Response.....................................64 163 3.3.6 Release-Job Operation....................................64 164 3.3.7 Restart-Job Operation....................................65 165 3.3.7.1 Restart-Job Request...................................66 166 3.3.7.2 Restart-Job Response..................................67 168 4. Object Attributes...............................................68 169 4.1 Attribute Syntaxes..........................................68 170 4.1.1 'text'...................................................69 171 4.1.1.1 'textWithoutLanguage'.................................70 172 4.1.1.2 'textWithLanguage'....................................70 173 4.1.2 'name'...................................................71 174 4.1.2.1 'nameWithoutLanguage'.................................71 175 4.1.2.2 'nameWithLanguage'....................................71 176 4.1.2.3 Matching 'name' attribute values......................72 177 4.1.3 'keyword'................................................72 178 4.1.4 'enum'...................................................73 179 4.1.5 'uri'....................................................73 180 4.1.6 'uriScheme'..............................................74 181 4.1.7 'charset'................................................74 182 4.1.8 'naturalLanguage'........................................75 183 4.1.9 'mimeMediaType'..........................................75 184 4.1.9.1 Application/octet-stream -- Auto-Sensing the document 185 format 76 186 4.1.10 'octetString'............................................77 187 4.1.11 'boolean'................................................77 188 4.1.12 'integer'................................................77 189 4.1.13 'rangeOfInteger'.........................................77 190 4.1.14 'dateTime'...............................................77 191 4.1.15 'resolution'.............................................78 192 4.1.16 '1setOf X'..............................................78 193 4.2 Job Template Attributes.....................................78 194 4.2.1 job-priority (integer(1:100))............................82 195 4.2.2 job-hold-until (type3 keyword | name (MAX))..............83 196 4.2.3 job-sheets (type3 keyword | name(MAX))...................83 197 4.2.4 multiple-document-handling (type2 keyword)...............84 198 4.2.5 copies (integer(1:MAX))..................................85 199 4.2.6 finishings (1setOf type2 enum)...........................85 200 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))..............87 201 4.2.8 sides (type2 keyword)....................................88 202 4.2.9 number-up (integer(1:MAX))...............................89 203 4.2.10 orientation-requested (type2 enum).......................89 204 4.2.11 media (type3 keyword | name(MAX))........................91 205 4.2.12 printer-resolution (resolution)..........................91 206 4.2.13 print-quality (type2 enum)...............................91 207 4.3 Job Description Attributes..................................92 208 4.3.1 job-uri (uri)............................................94 209 4.3.2 job-id (integer(1:MAX))..................................94 211 Expires December 11, 1999 212 4.3.3 job-printer-uri (uri)....................................94 213 4.3.4 job-more-info (uri)......................................95 214 4.3.5 job-name (name(MAX)).....................................95 215 4.3.6 job-originating-user-name (name(MAX))....................95 216 4.3.7 job-state (type1 enum)...................................95 217 4.3.7.1 Forwarding Servers ..................................98 218 4.3.7.2 Partitioning of Job States............................98 219 4.3.8 job-state-reasons (1setOf type2 keyword)................99 220 4.3.9 job-state-message (text(MAX))...........................103 221 4.3.10 job-detailed-status-messages (1setOf text(MAX)) ........103 222 4.3.11 job-document-access-errors (1setOf text(MAX)) ..........103 223 4.3.12 number-of-documents (integer(0:MAX))....................103 224 4.3.13 output-device-assigned (name(127))......................104 225 4.3.14 Event Time Job Description Attributes .................104 226 4.3.14.1 time-at-creation (integer(MIN:MAX))..................105 227 4.3.14.2 time-at-processing (integer(MIN:MAX))................105 228 4.3.14.3 time-at-completed (integer(MIN:MAX)).................105 229 4.3.14.4 job-printer-up-time (integer(1:MAX)) ................105 230 4.3.14.5 date-time-at-creation (dateTime) ...................105 231 4.3.14.6 date-time-at-processing (dateTime) .................105 232 4.3.14.7 date-time-at-completed (dateTime) ..................105 233 4.3.15 number-of-intervening-jobs (integer(0:MAX)).............106 234 4.3.16 job-message-from-operator (text(127))...................106 235 4.3.17 Job Size Attributes.....................................106 236 4.3.17.1 job-k-octets (integer(0:MAX))........................106 237 4.3.17.2 job-impressions (integer(0:MAX)).....................107 238 4.3.17.3 job-media-sheets (integer(0:MAX))....................107 239 4.3.18 Job Progress Attributes.................................107 240 4.3.18.1 job-k-octets-processed (integer(0:MAX))..............107 241 4.3.18.2 job-impressions-completed (integer(0:MAX))...........108 242 4.3.18.3 job-media-sheets-completed (integer(0:MAX))..........108 243 4.3.19 attributes-charset (charset)............................108 244 4.3.20 attributes-natural-language (naturalLanguage)...........108 245 4.4 Printer Description Attributes.............................109 246 4.4.1 printer-uri-supported (1setOf uri)......................111 247 4.4.2 uri-authentication-supported (1setOf type2 keyword) ...111 248 4.4.3 uri-security-supported (1setOf type2 keyword)...........112 249 4.4.4 printer-name (name(127))................................114 250 4.4.5 printer-location (text(127))............................114 251 4.4.6 printer-info (text(127))................................114 252 4.4.7 printer-more-info (uri).................................114 253 4.4.8 printer-driver-installer (uri)..........................114 254 4.4.9 printer-make-and-model (text(127))......................114 255 4.4.10 printer-more-info-manufacturer (uri)....................115 256 4.4.11 printer-state (type1 enum)..............................115 257 4.4.12 printer-state-reasons (1setOf type2 keyword)............115 258 4.4.13 printer-state-message (text(MAX)).......................118 259 4.4.14 ipp-versions-supported (1setOf type2 keyword) .........118 260 4.4.15 operations-supported (1setOf type2 enum)................118 261 4.4.16 multiple-document-jobs-supported (boolean) ............119 262 4.4.17 charset-configured (charset)............................119 263 4.4.18 charset-supported (1setOf charset)......................120 264 4.4.19 natural-language-configured (naturalLanguage)...........120 266 Expires December 11, 1999 267 4.4.20 generated-natural-language-supported (1setOf naturalLanguage) 268 120 269 4.4.21 document-format-default (mimeMediaType).................121 270 4.4.22 document-format-supported (1setOf mimeMediaType)........121 271 4.4.23 printer-is-accepting-jobs (boolean).....................121 272 4.4.24 queued-job-count (integer(0:MAX)).......................121 273 4.4.25 printer-message-from-operator (text(127))...............121 274 4.4.26 color-supported (boolean)...............................122 275 4.4.27 reference-uri-schemes-supported (1setOf uriScheme)......122 276 4.4.28 pdl-override-supported (type2 keyword)..................122 277 4.4.29 printer-up-time (integer(1:MAX))........................122 278 4.4.30 printer-current-time (dateTime).........................123 279 4.4.31 multiple-operation-time-out (integer(1:MAX))............123 280 4.4.32 compression-supported (1setOf type3 keyword)............124 281 4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX))..........124 282 4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)).......124 283 4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX))......124 284 4.4.36 pages-per-minute (integer(0:MAX)).......................125 285 4.4.37 pages-per-minute-color (integer(0:MAX)).................125 287 5. Conformance....................................................125 288 5.1 Client Conformance Requirements............................126 289 5.2 IPP Object Conformance Requirements........................127 290 5.2.1 Objects.................................................127 291 5.2.2 Operations..............................................127 292 5.2.3 IPP Object Attributes...................................128 293 5.2.4 Versions................................................128 294 5.2.5 Extensions..............................................129 295 5.2.6 Attribute Syntaxes......................................129 296 5.2.7 Security ...............................................129 297 5.3 Charset and Natural Language Requirements..................130 299 6. IANA Considerations (registered and private extensions)........130 300 6.1 Typed 'keyword' and 'enum' Extensions......................130 301 6.2 Attribute Extensibility....................................132 302 6.3 Attribute Syntax Extensibility.............................133 303 6.4 Operation Extensibility....................................133 304 6.5 Attribute Groups...........................................134 305 6.6 Status Code Extensibility..................................134 306 6.7 Registration of MIME types/sub-types for document-formats..134 307 6.8 Registration of charsets for use in 'charset' attribute values135 309 7. Internationalization Considerations............................135 311 8. Security Considerations........................................138 312 8.1 Security Scenarios.........................................139 313 8.1.1 Client and Server in the Same Security Domain...........139 314 8.1.2 Client and Server in Different Security Domains.........140 315 8.1.3 Print by Reference......................................140 316 8.2 URIs in Operation, Job, and Printer attributes.............140 317 8.3 URIs for each authentication mechanisms....................140 318 8.4 Restricted Queries.........................................141 319 8.5 Operations performed by operators and system administrators141 320 8.6 Queries on jobs submitted using non-IPP protocols..........142 322 Expires December 11, 1999 324 9. References.....................................................142 326 10.Author's Address..............................................146 328 11.Formats for IPP Registration Proposals........................148 329 11.1 Type2 keyword attribute values registration................148 330 11.2 Type3 keyword attribute values registration................148 331 11.3 Type2 enum attribute values registration...................148 332 11.4 Type3 enum attribute values registration...................149 333 11.5 Attribute registration.....................................149 334 11.6 Attribute Syntax registration..............................150 335 11.7 Operation registration.....................................150 336 11.8 Attribute Group registration...............................150 337 11.9 Status code registration...................................151 339 12.APPENDIX A: Terminology.......................................151 340 12.1 Conformance Terminology....................................151 341 12.1.1 NEED NOT................................................151 342 12.2 Model Terminology..........................................151 343 12.2.1 Keyword.................................................151 344 12.2.2 Attributes..............................................151 345 12.2.2.1 Attribute Name.......................................152 346 12.2.2.2 Attribute Group Name.................................152 347 12.2.2.3 Attribute Value......................................152 348 12.2.2.4 Attribute Syntax.....................................152 349 12.2.3 Supports................................................152 350 12.2.4 print-stream page.......................................154 351 12.2.5 impression..............................................154 353 13.APPENDIX B: Status Codes and Suggested Status Code Messages..154 354 13.1 Status Codes...............................................155 355 13.1.1 Informational...........................................156 356 13.1.2 Successful Status Codes.................................156 357 13.1.2.1 successful-ok (0x0000)...............................156 358 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)156 359 13.1.2.3 successful-ok-conflicting-attributes (0x0002)........156 360 13.1.3 Redirection Status Codes................................157 361 13.1.4 Client Error Status Codes...............................157 362 13.1.4.1 client-error-bad-request (0x0400)....................157 363 13.1.4.2 client-error-forbidden (0x0401)......................157 364 13.1.4.3 client-error-not-authenticated (0x0402)..............157 365 13.1.4.4 client-error-not-authorized (0x0403).................157 366 13.1.4.5 client-error-not-possible (0x0404)...................158 367 13.1.4.6 client-error-timeout (0x0405)........................158 368 13.1.4.7 client-error-not-found (0x0406)......................158 369 13.1.4.8 client-error-gone (0x0407)...........................158 370 13.1.4.9 client-error-request-entity-too-large (0x0408).......159 371 13.1.4.10client-error-request-value-too-long (0x0409).........159 372 13.1.4.11client-error-document-format-not-supported (0x040A)..159 373 13.1.4.12client-error-attributes-or-values-not-supported (0x040B)159 374 13.1.4.13client-error-uri-scheme-not-supported (0x040C).......160 375 13.1.4.14client-error-charset-not-supported (0x040D)..........160 376 13.1.4.15client-error-conflicting-attributes (0x040E).........160 377 13.1.4.16client-error-compression-not-supported (0x040F) .....160 379 Expires December 11, 1999 380 13.1.4.17client-error-compression-error (0x0410) ............161 381 13.1.4.18client-error-document-format-error (0x0411) ........161 382 13.1.4.19client-error-document-access-error (0x0412) ........161 383 13.1.5 Server Error Status Codes...............................161 384 13.1.5.1 server-error-internal-error (0x0500).................161 385 13.1.5.2 server-error-operation-not-supported (0x0501)........162 386 13.1.5.3 server-error-service-unavailable (0x0502)............162 387 13.1.5.4 server-error-version-not-supported (0x0503)..........162 388 13.1.5.5 server-error-device-error (0x0504)...................162 389 13.1.5.6 server-error-temporary-error (0x0505)................163 390 13.1.5.7 server-error-not-accepting-jobs (0x0506).............163 391 13.1.5.8 server-error-busy (0x0507)...........................163 392 13.1.5.9 server-error-job-canceled (0x0508)...................163 393 13.1.5.10server-error-multiple-document-jobs-not-supported (0x0509) 394 163 395 13.2 Status Codes for IPP Operations............................164 397 14.APPENDIX C: "media" keyword values...........................166 399 15.APPENDIX D: Processing IPP Attributes.........................170 400 15.1 Fidelity...................................................170 401 15.2 Page Description Language (PDL) Override...................171 402 15.3 Using Job Template Attributes During Document Processing...173 404 16.APPENDIX E: Generic Directory Schema..........................174 406 17.APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and 407 Semantics" Documents..............................................177 409 18.Full Copyright Statement......................................183 411 Expires December 11, 1999 412 1. Introduction 414 The Internet Printing Protocol (IPP) is an application level protocol 415 that can be used for distributed printing using Internet tools and 416 technologies. IPP version 1.1 (IPP/1.1) focuses only on end user 417 functionality. This document is just one of a suite of documents that 418 fully define IPP. The full set of IPP documents includes: 420 Design Goals for an Internet Printing Protocol [RFC2567] 421 Rationale for the Structure and Model and Protocol for the Internet 422 Printing Protocol [RFC2568] 423 Internet Printing Protocol/1.1: Model and Semantics (this document) 424 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 425 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 426 Mapping between LPD and IPP Protocols [RFC2569] 428 Anyone reading these documents for the first time is strongly encouraged 429 to read the IPP documents in the above order. 431 This document is laid out as follows: 433 - The rest of Section 1 is an introduction to the IPP simplified 434 model for distributed printing. 435 - Section 2 introduces the object types covered in the model with 436 their basic behaviors, attributes, and interactions. 437 - Section 3 defines the operations included in IPP/1.1. IPP 438 operations are synchronous, therefore, for each operation, there is 439 a both request and a response. 440 - Section 4 defines the attributes (and their syntaxes) that are used 441 in the model. 442 - Sections 5 - 6 summarizes the implementation conformance 443 requirements for objects that support the protocol and IANA 444 considerations, respectively. 445 - Sections 7 - 11 cover the Internationalization and Security 446 considerations as well as References, Author contact information, 447 and Formats for Registration Proposals. 448 - Sections 12 - 14 are appendices that cover Terminology, Status 449 Codes and Messages, and "media" keyword values. 451 Note: This document uses terms such as "attributes", 452 "keywords", and "support". These terms have special meaning 453 and are defined in the model terminology section 12.2. 454 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, 455 SHOULD NOT, MAY, NEED NOT, and OPTIONAL, have special meaning 456 relating to conformance. These terms are defined in section 457 12.1 on conformance terminology, most of which is taken from 458 RFC 2119 [RFC2119]. 460 - Section 15 is an appendix that helps to clarify the effects of 461 interactions between related attributes and their values. 462 - Section 16 is an appendix that enumerates the subset of Printer 463 attributes that form a generic directory schema. These attributes 464 are useful when registering a Printer so that a client can find the 465 Printer not just by name, but by filtered searches as well. 467 Expires December 11, 1999 469 - Section 17 is an appendix summarizing the additions and changes 470 from the IPP/1.0 "Model and Semantics" document [RFC2566] to make 471 this IPP/1.1 document. 472 - Section 18 is the full copyright notice. 474 1.1 Simplified Printing Model 476 In order to achieve its goal of realizing a workable printing protocol 477 for the Internet, the Internet Printing Protocol (IPP) is based on a 478 simplified printing model that abstracts the many components of real 479 world printing solutions. The Internet is a distributed computing 480 environment where requesters of print services (clients, applications, 481 printer drivers, etc.) cooperate and interact with print service 482 providers. This model and semantics document describes a simple, 483 abstract model for IPP even though the underlying configurations may be 484 complex "n-tier" client/server systems. An important simplifying step 485 in the IPP model is to expose only the key objects and interfaces 486 required for printing. The model described in this model document does 487 not include features, interfaces, and relationships that are beyond the 488 scope of the first version of IPP (IPP/1.1). IPP/1.1 incorporates many 489 of the relevant ideas and lessons learned from other specification and 490 development efforts [HTPP] [ISO10175] [LDPA] [P1387.4] [PSIS] [RFC1179] 491 [SWP]. IPP is heavily influenced by the printing model introduced in 492 the Document Printing Application (DPA) [ISO10175] standard. Although 493 DPA specifies both end user and administrative features, IPP version 1.1 494 (IPP/1.1) focuses primarily on end user functionality with a few 495 additional OPTIONAL operator operations. 497 The IPP/1.1 model encapsulates the important components of distributed 498 printing into two object types: 500 - Printer (Section 2.1) 501 - Job (Section 2.2) 503 Each object type has an associated set of operations (see section 3) and 504 attributes (see section 4). 506 It is important, however, to understand that in real system 507 implementations (which lie underneath the abstracted IPP/1.1 model), 508 there are other components of a print service which are not explicitly 509 defined in the IPP/1.1 model. The following figure illustrates where 510 IPP/1.1 fits with respect to these other components. 512 Expires December 11, 1999 513 +--------------+ 514 | Application | 515 o +. . . . . . . | 516 \|/ | Spooler | 517 / \ +. . . . . . . | +---------+ 518 End-User | Print Driver |---| File | 519 +-----------+ +-----+ +------+-------+ +----+----+ 520 | Browser | | GUI | | | 521 +-----+-----+ +--+--+ | | 522 | | | | 523 | +---+------------+---+ | 524 N D S | | IPP Client |------------+ 525 O I E | +---------+----------+ 526 T R C | | 527 I E U | 528 F C R -------------- Transport ------------------ 529 I T I 530 C O T | --+ 531 A R Y +--------+--------+ | 532 T Y | IPP Server | | 533 I +--------+--------+ | 534 O | | 535 N +-----------------+ | IPP Printer 536 | Print Service | | 537 +-----------------+ | 538 | --+ 539 +-----------------+ 540 | Output Device(s)| 541 +-----------------+ 543 An IPP Printer object encapsulates the functions normally associated 544 with physical output devices along with the spooling, scheduling and 545 multiple device management functions often associated with a print 546 server. Printer objects are optionally registered as entries in a 547 directory where end users find and select them based on some sort of 548 filtered and context based searching mechanism (see section 16). The 549 directory is used to store relatively static information about the 550 Printer, allowing end users to search for and find Printers that match 551 their search criteria, for example: name, context, printer capabilities, 552 etc. The more dynamic information, such as state, currently loaded and 553 ready media, number of jobs at the Printer, errors, warnings, and so 554 forth, is directly associated with the Printer object itself rather than 555 with the entry in the directory which only represents the Printer 556 object. 558 IPP clients implement the IPP protocol on the client side and give end 559 users (or programs running on behalf of end users) the ability to query 560 Printer objects and submit and manage print jobs. An IPP server is just 561 that part of the Printer object that implements the server-side 562 protocol. The rest of the Printer object implements (or gateways into) 563 the application semantics of the print service itself. The Printer 565 Expires December 11, 1999 566 objects may be embedded in an output device or may be implemented on a 567 host on the network that communicates with an output device. 569 When a job is submitted to the Printer object and the Printer object 570 validates the attributes in the submission request, the Printer object 571 creates a new Job object. The end user then interacts with this new Job 572 object to query its status and monitor the progress of the job. An end 573 user can also cancel their print jobs by using the Job object's Cancel- 574 Job operation. An end-user can also hold, release, and restart their 575 print jobs using the Job object's OPTIONAL Hold-Job, Release-Job, and 576 Restart-Job operations, if implemented. 578 A privileged operator or administrator of a Printer object can cancel, 579 hold, release, and restart any user's job using the REQUIRED Cancel-Job 580 and the OPTIONAL Hold-Job, Release-Job, and Restart-Job operations. In 581 additional privileged operator or administrator of a Printer object can 582 pause, resume, or purge (jobs from) a Printer object using the OPTIONAL 583 Pause-Printer, Resume-Printer, and Purge-Jobs operations, if 584 implemented. 586 The notification service is out of scope for this IPP/1.1 document, but 587 using such a notification service, the end user is able to register for 588 and receive Printer specific and Job specific events. An end user can 589 query the status of Printer objects and can follow the progress of Job 590 objects by polling using the Get-Printer-Attributes, Get-Jobs, and Get- 591 Job-Attributes operations. 593 2. IPP Objects 595 The IPP/1.1 model introduces objects of type Printer and Job. Each type 596 of object models relevant aspects of a real-world entity such as a real 597 printer or real print job. Each object type is defined as a set of 598 possible attributes that may be supported by instances of that object 599 type. For each object (instance), the actual set of supported 600 attributes and values describe a specific implementation. The object's 601 attributes and values describe its state, capabilities, realizable 602 features, job processing functions, and default behaviors and 603 characteristics. For example, the Printer object type is defined as a 604 set of attributes that each Printer object potentially supports. In the 605 same manner, the Job object type is defined as a set of attributes that 606 are potentially supported by each Job object. 608 Each attribute included in the set of attributes defining an object type 609 is labeled as: 611 - "REQUIRED": each object MUST support the attribute. 612 - "RECOMMENDED": each object SHOULD support the attribute. 613 - "OPTIONAL": each object MAY support the attribute. 615 Some definitions of attribute values indicate that an object MUST or 616 SHOULD support the value; otherwise, support of the value is OPTIONAL. 618 Expires December 11, 1999 619 However, if an implementation supports an attribute, it MUST support at 620 least one of the possible values for that attribute. 622 2.1 Printer Object 624 The major component of the IPP/1.1 model is the Printer object. A 625 Printer object implements the server-side of the IPP/1.1 protocol. 626 Using the protocol, end users may query the attributes of the Printer 627 object and submit print jobs to the Printer object. The actual 628 implementation components behind the Printer abstraction may take on 629 different forms and different configurations. However, the model 630 abstraction allows the details of the configuration of real components 631 to remain opaque to the end user. Section 3 describes each of the 632 Printer operations in detail. 634 The capabilities and state of a Printer object are described by its 635 attributes. Printer attributes are divided into two groups: 637 - "job-template" attributes: These attributes describe supported job 638 processing capabilities and defaults for the Printer object. (See 639 section 4.2) 640 - "printer-description" attributes: These attributes describe the 641 Printer object's identification, state, location, references to 642 other sources of information about the Printer object, etc. (see 643 section 4.4) 645 Since a Printer object is an abstraction of a generic document output 646 device and print service provider, a Printer object could be used to 647 represent any real or virtual device with semantics consistent with the 648 Printer object, such as a fax device, an imager, or even a CD writer. 650 Some examples of configurations supporting a Printer object include: 652 1) An output device with no spooling capabilities 653 2) An output device with a built-in spooler 654 3) A print server supporting IPP with one or more associated output 655 devices 656 3a) The associated output devices may or may not be capable of 657 spooling jobs 658 3b) The associated output devices may or may not support IPP 660 The following figures show some examples of how Printer objects can be 661 realized on top of various distributed printing configurations. The 662 embedded case below represents configurations 1 and 2. The hosted and 663 fan-out figures below represent configurations 3a and 3b. 665 In this document the term "client" refers to a software entity that 666 sends IPP operation requests to an IPP Printer object and accepts IPP 667 operation responses. A client MAY be: 669 1. contained within software controlled by an end user, e.g. activated 670 by the "Print" menu item in an application or 672 Expires December 11, 1999 674 2. the print server component that sends IPP requests to either an 675 output device or another "downstream" print server. 677 The term "IPP Printer" is a network entity that accepts IPP operation 678 requests and returns IPP operation responses. As such, an IPP object 679 MAY be: 681 1. an (embedded) device component that accepts IPP requests and 682 controls the device or 684 2. a component of a print server that accepts IPP requests (where the 685 print server controls one or more networked devices using IPP or 686 other protocols). 688 Expires December 11, 1999 690 Legend: 692 ##### indicates a Printer object which is 693 either embedded in an output device or is 694 hosted in a server. The Printer object 695 might or might not be capable of queuing/spooling. 697 any indicates any network protocol or direct 698 connect, including IPP 700 embedded printer: 701 output device 702 +---------------+ 703 O +--------+ | ########### | 704 /|\ | client |------------IPP------------># Printer # | 705 / \ +--------+ | # Object # | 706 | ########### | 707 +---------------+ 709 hosted printer: 710 +---------------+ 711 O +--------+ ########### | | 712 /|\ | client |--IPP--># Printer #-any->| output device | 713 / \ +--------+ # Object # | | 714 ########### +---------------+ 716 +---------------+ 717 fan out: | | 718 +-->| output device | 719 any/ | | 720 O +--------+ ########### / +---------------+ 721 /|\ | client |-IPP-># Printer #--* 722 / \ +--------+ # Object # \ +---------------+ 723 ########### any\ | | 724 +-->| output device | 725 | | 726 +---------------+ 728 2.2 Job Object 730 A Job object is used to model a print job. A Job object contains 731 documents. The information required to create a Job object is sent in a 732 create request from the end user via an IPP Client to the Printer 733 object. The Printer object validates the create request, and if the 734 Printer object accepts the request, the Printer object creates the new 735 Job object. Section 3 describes each of the Job operations in detail. 737 Expires December 11, 1999 738 The characteristics and state of a Job object are described by its 739 attributes. Job attributes are grouped into two groups as follows: 741 - "job-template" attributes: These attributes can be supplied by the 742 client or end user and include job processing instructions which 743 are intended to override any Printer object defaults and/or 744 instructions embedded within the document data. (See section 4.2) 745 - "job-description" attributes: These attributes describe the Job 746 object's identification, state, size, etc. The client supplies some 747 of these attributes, and the Printer object generates others. (See 748 section 4.3) 750 An implementation MUST support at least one document per Job object. An 751 implementation MAY support multiple documents per Job object. A 752 document is either: 754 - a stream of document data in a format supported by the Printer 755 object (typically a Page Description Language - PDL), or 756 - a reference to such a stream of document data 758 In IPP/1.1, a document is not modeled as an IPP object, therefore it has 759 no object identifier or associated attributes. All job processing 760 instructions are modeled as Job object attributes. These attributes are 761 called Job Template attributes and they apply equally to all documents 762 within a Job object. 764 2.3 Object Relationships 766 IPP objects have relationships that are maintained persistently along 767 with the persistent storage of the object attributes. 769 A Printer object can represent either one or more physical output 770 devices or a logical device which "processes" jobs but never actually 771 uses a physical output device to put marks on paper. Examples of 772 logical devices include a Web page publisher or a gateway into an online 773 document archive or repository. A Printer object contains zero or more 774 Job objects. 776 A Job object is contained by exactly one Printer object, however the 777 identical document data associated with a Job object could be sent to 778 either the same or a different Printer object. In this case, a second 779 Job object would be created which would be almost identical to the first 780 Job object, however it would have new (different) Job object identifiers 781 (see section 2.4). 783 A Job object is either empty (before any documents have been added) or 784 contains one or more documents. If the contained document is a stream 785 of document data, that stream can be contained in only one document. 786 However, there can be identical copies of the stream in other documents 787 in the same or different Job objects. If the contained document is just 788 a reference to a stream of document data, other documents (in the same 789 or different Job object(s)) may contain the same reference. 791 Expires December 11, 1999 792 2.4 Object Identity 794 All Printer and Job objects are identified by a Uniform Resource 795 Identifier (URI) [RFC2396] so that they can be persistently and 796 unambiguously referenced. The notion of a URI is a useful concept, 797 however, until the notion of URI is more stable (i.e., defined more 798 completely and deployed more widely), it is expected that the URIs used 799 for IPP objects will actually be URLs [RFC2396]. Since every URL is a 800 specialized form of a URI, even though the more generic term URI is used 801 throughout the rest of this document, its usage is intended to cover the 802 more specific notion of URL as well. 804 An administrator configures Printer objects to either support or not 805 support authentication and/or message privacy using Transport Layer 806 Security (TLS) [RFC2246] (the mechanism for security configuration is 807 outside the scope of this IPP/1.1 document). In some situations, both 808 types of connections (both authenticated and unauthenticated) can be 809 established using a single communication channel that has some sort of 810 negotiation mechanism. In other situations, multiple communication 811 channels are used, one for each type of security configuration. Section 812 8 provides a full description of all security considerations and 813 configurations. 815 If a Printer object supports more than one communication channel, some 816 or all of those channels might support and/or require different security 817 mechanisms. In such cases, an administrator could expose the 818 simultaneous support for these multiple communication channels as 819 multiple URIs for a single Printer object where each URI represents one 820 of the communication channels to the Printer object. To support this 821 flexibility, the IPP Printer object type defines a multi-valued 822 identification attribute called the "printer-uri-supported" attribute. 823 It MUST contain at least one URI. It MAY contain more than one URI. 824 That is, every Printer object will have at least one URI that identifies 825 at least one communication channel to the Printer object, but it may 826 have more than one URI where each URI identifies a different 827 communication channel to the Printer object. The "printer-uri- 828 supported" attribute has two companion attributes, the "uri-security- 829 supported" attribute and the "uri-authentication-supported". Both have 830 the same cardinality as "printer-uri-supported". The purpose of the 831 "uri-security-supported" attribute is to indicate the security 832 mechanisms (if any) used for each URI listed in "printer-uri-supported". 833 The purpose of the "uri-authentication-supported" attribute is to 834 indicate the authentication mechanisms (if any) used for each URI listed 835 in "printer-uri-supported". These three attributes are fully described 836 in sections 4.4.1, 4.4.2, and 4.4.3. 838 When a job is submitted to the Printer object via a create request, the 839 client supplies only a single Printer object URI. The client supplied 840 Printer object URI MUST be one of the values in the "printer-uri- 841 supported" Printer attribute. 843 IPP/1.1 does not specify how the client obtains the client supplied URI, 844 but it is RECOMMENDED that a Printer object be registered as an entry in 846 Expires December 11, 1999 847 a directory service. End-users and programs can then interrogate the 848 directory searching for Printers. Section 16 defines a generic schema 849 for Printer object entries in the directory service and describes how 850 the entry acts as a bridge to the actual IPP Printer object. The entry 851 in the directory that represents the IPP Printer object includes the 852 possibly many URIs for that Printer object as values in one its 853 attributes. 855 When a client submits a create request to the Printer object, the 856 Printer object validates the request and creates a new Job object. The 857 Printer object assigns the new Job object a URI which is stored in the 858 "job-uri" Job attribute. This URI is then used by clients as the target 859 for subsequent Job operations. The Printer object generates a Job URI 860 based on its configured security policy and the URI used by the client 861 in the create request. 863 For example, consider a Printer object that supports both a 864 communication channel secured by the use of SSL3 (using HTTP over SSL3 865 with an "https" schemed URI) and another open communication channel that 866 is not secured with SSL3 (using a simple "http" schemed URI). If a 867 client were to submit a job using the secure URI, the Printer object 868 would assign the new Job object a secure URI as well. If a client were 869 to submit a job using the open-channel URI, the Printer would assign the 870 new Job object an open-channel URI. 872 In addition, the Printer object also populates the Job object's "job- 873 printer-uri" attribute. This is a reference back to the Printer object 874 that created the Job object. If a client only has access to a Job 875 object's "job-uri" identifier, the client can query the Job's "job- 876 printer-uri" attribute in order to determine which Printer object 877 created the Job object. If the Printer object supports more than one 878 URI, the Printer object picks the one URI supplied by the client when 879 creating the job to build the value for and to populate the Job's "job- 880 printer-uri" attribute. 882 Allowing Job objects to have URIs allows for flexibility and 883 scalability. For example, in some implementations, the Printer object 884 might create Jobs that are processed in the same local environment as 885 the Printer object itself. In this case, the Job URI might just be a 886 composition of the Printer's URI and some unique component for the Job 887 object, such as the unique 32-bit positive integer mentioned later in 888 this paragraph. In other implementations, the Printer object might be a 889 central clearing-house for validating all Job object creation requests, 890 but the Job object itself might be created in some environment that is 891 remote from the Printer object. In this case, the Job object's URI may 892 have no physical-location relationship at all to the Printer object's 893 URI. Again, the fact that Job objects have URIs allows for flexibility 894 and scalability, however, many existing printing systems have local 895 models or interface constraints that force print jobs to be identified 896 using only a 32-bit positive integer rather than an independent URI. 897 This numeric Job ID is only unique within the context of the Printer 898 object to which the create request was originally submitted. Therefore, 899 in order to allow both types of client access to IPP Job objects (either 900 by Job URI or by numeric Job ID), when the Printer object successfully 902 Expires December 11, 1999 903 processes a create request and creates a new Job object, the Printer 904 object MUST generate both a Job URI and a Job ID. The Job ID (stored in 905 the "job-id" attribute) only has meaning in the context of the Printer 906 object to which the create request was originally submitted. This 907 requirement to support both Job URIs and Job IDs allows all types of 908 clients to access Printer objects and Job objects no matter the local 909 constraints imposed on the client implementation. 911 In addition to identifiers, Printer objects and Job objects have names 912 ("printer-name" and "job-name"). An object name NEED NOT be unique 913 across all instances of all objects. A Printer object's name is chosen 914 and set by an administrator through some mechanism outside the scope of 915 this IPP/1.1 document. A Job object's name is optionally chosen and 916 supplied by the IPP client submitting the job. If the client does not 917 supply a Job object name, the Printer object generates a name for the 918 new Job object. In all cases, the name only has local meaning. 920 To summarize: 922 - Each Printer object is identified with one or more URIs. The 923 Printer's "printer-uri-supported" attribute contains the URI(s). 924 - The Printer object's "uri-security-supported" attribute identifies 925 the communication channel security protocols that may or may not 926 have been configured for the various Printer object URIs (e.g., 927 'tls' or 'none'). 928 - The Printer object's "uri-authentication-supported" attribute 929 identifies the authentication mechanisms that may or may not have 930 been configured for the various Printer object URIs (e.g., 'digest' 931 or 'none'). 932 - Each Job object is identified with a Job URI. The Job's "job-uri" 933 attribute contains the URI. 934 - Each Job object is also identified with Job ID which is a 32-bit, 935 positive integer. The Job's "job-id" attribute contains the Job 936 ID. The Job ID is only unique within the context of the Printer 937 object which created the Job object. 938 - Each Job object has a "job-printer-uri" attribute which contains 939 the URI of the Printer object that was used to create the Job 940 object. This attribute is used to determine the Printer object 941 that created a Job object when given only the URI for the Job 942 object. This linkage is necessary to determine the languages, 943 charsets, and operations which are supported on that Job (the basis 944 for such support comes from the creating Printer object). 945 - Each Printer object has a name (which is not necessarily unique). 946 The administrator chooses and sets this name through some mechanism 947 outside the scope of this IPP/1.1 document. The Printer object's 948 "printer-name" attribute contains the name. 949 - Each Job object has a name (which is not necessarily unique). The 950 client optionally supplies this name in the create request. If the 951 client does not supply this name, the Printer object generates a 952 name for the Job object. The Job object's "job-name" attribute 953 contains the name. 955 Expires December 11, 1999 957 3. IPP Operations 959 IPP objects support operations. An operation consists of a request and 960 a response. When a client communicates with an IPP object, the client 961 issues an operation request to the URI for that object. Operation 962 requests and responses have parameters that identify the operation. 963 Operations also have attributes that affect the run-time characteristics 964 of the operation (the intended target, localization information, etc.). 965 These operation-specific attributes are called operation attributes (as 966 compared to object attributes such as Printer object attributes or Job 967 object attributes). Each request carries along with it any operation 968 attributes, object attributes, and/or document data required to perform 969 the operation. Each request requires a response from the object. Each 970 response indicates success or failure of the operation with a status 971 code as a response parameter. The response contains any operation 972 attributes, object attributes, and/or status messages generated during 973 the execution of the operation request. 975 This section describes the semantics of the IPP operations, both 976 requests and responses, in terms of the parameters, attributes, and 977 other data associated with each operation. 979 The IPP/1.1 Printer operations are: 981 Print-Job (section 3.2.1) 982 Print-URI (section 3.2.2) 983 Validate-Job (section 3.2.3) 984 Create-Job (section 3.2.4) 985 Get-Printer-Attributes (section 3.2.5) 986 Get-Jobs (section 3.2.6) 987 Pause-Printer (section 3.3.5) 988 Resume-Printer (section 3.3.6) 989 Purge-Jobs (section 3.3.7) 991 The Job operations are: 993 Send-Document (section 3.3.1) 994 Send-URI (section 3.3.2) 995 Cancel-Job (section 3.3.3) 996 Get-Job-Attributes (section 3.3.4) 997 Hold-Job (section 3.3.5) 998 Release-Job (section 3.3.6) 999 Restart-Job (section 3.3.7) 1001 The Send-Document and Send-URI Job operations are used to add a new 1002 document to an existing multi-document Job object created using the 1003 Create-Job operation. 1005 3.1 Common Semantics 1007 All IPP operations require some common parameters and operation 1008 attributes. These common elements and their semantic characteristics 1009 are defined and described in more detail in the following sections. 1011 Expires December 11, 1999 1012 3.1.1 Required Parameters 1014 Every operation request contains the following REQUIRED parameters: 1016 - a "version-number", 1017 - an "operation-id", 1018 - a "request-id", and 1019 - the attributes that are REQUIRED for that type of request. 1021 Every operation response contains the following REQUIRED parameters: 1023 - a "version-number", 1024 - a "status-code", 1025 - the "request-id" that was supplied in the corresponding request, 1026 and 1027 - the attributes that are REQUIRED for that type of response. 1029 The "Encoding and Transport document [IPP-PRO] defines special rules for 1030 the encoding of these parameters. All other operation elements are 1031 represented using the more generic encoding rules for attributes and 1032 groups of attributes. 1034 3.1.2 Operation IDs and Request IDs 1036 Each IPP operation request includes an identifying "operation-id" value. 1037 Valid values are defined in the "operations-supported" Printer attribute 1038 section (see section 4.4.15). The client specifies which operation is 1039 being requested by supplying the correct "operation-id" value. 1041 In addition, every invocation of an operation is identified by a 1042 "request-id" value. For each request, the client chooses the "request- 1043 id" which MUST be an integer (possibly unique depending on client 1044 requirements) in the range from 1 to 2**31 - 1 (inclusive). This 1045 "request-id" allows clients to manage multiple outstanding requests. The 1046 receiving IPP object copies all 32-bits of the client-supplied "request- 1047 id" attribute into the response so that the client can match the 1048 response with the correct outstanding request, even if the "request-id" 1049 is out of range. If the request is terminated before the complete 1050 "request-id" is received, the IPP object rejects the request and returns 1051 a response with a "request-id" of 0. 1053 Note: In some cases, the transport protocol underneath IPP might be a 1054 connection oriented protocol that would make it impossible for a client 1055 to receive responses in any order other than the order in which the 1056 corresponding requests were sent. In such cases, the "request-id" 1057 attribute would not be essential for correct protocol operation. 1058 However, in other mappings, the operation responses can come back in any 1059 order. In these cases, the "request-id" would be essential. 1061 3.1.3 Attributes 1063 Operation requests and responses are both composed of groups of 1064 attributes and/or document data. The attributes groups are: 1066 Expires December 11, 1999 1067 - Operation Attributes: These attributes are passed in the operation 1068 and affect the IPP object's behavior while processing the operation 1069 request and may affect other attributes or groups of attributes. 1070 Some operation attributes describe the document data associated 1071 with the print job and are associated with new Job objects, however 1072 most operation attributes do not persist beyond the life of the 1073 operation. The description of each operation attribute includes 1074 conformance statements indicating which operation attributes are 1075 REQUIRED and which are OPTIONAL for an IPP object to support and 1076 which attributes a client MUST supply in a request and an IPP 1077 object MUST supply in a response. 1078 - Job Template Attributes: These attributes affect the processing of 1079 a job. A client OPTIONALLY supplies Job Template Attributes in a 1080 create request, and the receiving object MUST be prepared to 1081 receive all supported attributes. The Job object can later be 1082 queried to find out what Job Template attributes were originally 1083 requested in the create request, and such attributes are returned 1084 in the response as Job Object Attributes. The Printer object can 1085 be queried about its Job Template attributes to find out what type 1086 of job processing capabilities are supported and/or what the 1087 default job processing behaviors are, though such attributes are 1088 returned in the response as Printer Object Attributes. The "ipp- 1089 attribute-fidelity" operation attribute affects processing of all 1090 client-supplied Job Template attributes (see sections 3.2.1.2 and 1091 15 for a full description of "ipp-attribute-fidelity" and its 1092 relationship to other attributes). 1093 - Job Object Attributes: These attributes are returned in response to 1094 a query operation directed at a Job object. 1095 - Printer Object Attributes: These attributes are returned in 1096 response to a query operation directed at a Printer object. 1097 - Unsupported Attributes: In a create request, the client supplies a 1098 set of Operation and Job Template attributes. If any of these 1099 attributes or their values is unsupported by the Printer object, 1100 the Printer object returns the set of unsupported attributes in the 1101 response. Sections 3.1.7, 3.2.1.2, and 15 give a full description 1102 of how Job Template attributes supplied by the client in a create 1103 request are processed by the Printer object and how unsupported 1104 attributes are returned to the client. Because of extensibility, 1105 any IPP object might receive a request that contains new or unknown 1106 attributes or values for which it has no support. In such cases, 1107 the IPP object processes what it can and returns the unsupported 1108 attributes in the response. The Unsupported Attribute group is 1109 defined for all operation responses for returning unsupported 1110 attributes that the client supplied in the request. 1112 Later in this section, each operation is formally defined by identifying 1113 the allowed and expected groups of attributes for each request and 1114 response. The model identifies a specific order for each group in each 1115 request or response, but the attributes within each group may be in any 1116 order, unless specified otherwise. 1118 Each attribute definition includes the attribute's name followed by the 1119 name of its attribute syntax(es) in parenthesizes. In addition, each 1121 Expires December 11, 1999 1122 'integer' attribute is followed by the allowed range in parentheses, 1123 (m:n), for values of that attribute. Each 'text' or 'name' attribute is 1124 followed by the maximum size in octets in parentheses, (size), for 1125 values of that attribute. For more details on attribute syntax notation, 1126 see the descriptions of these attributes syntaxes in section 4.1. 1128 Note: Document data included in the operation is not strictly an 1129 attribute, but it is treated as a special attribute group for ordering 1130 purposes. The only operations that support supplying the document data 1131 within an operation request are Print-Job and Send-Document. There are 1132 no operation responses that include document data. 1134 Some operations are REQUIRED for IPP objects to support; the others are 1135 OPTIONAL (see section 5.2.2). Therefore, before using an OPTIONAL 1136 operation, a client SHOULD first use the REQUIRED Get-Printer-Attributes 1137 operation to query the Printer's "operations-supported" attribute in 1138 order to determine which OPTIONAL Printer and Job operations are 1139 actually supported. The client SHOULD NOT use an OPTIONAL operation 1140 that is not supported. When an IPP object receives a request to perform 1141 an operation it does not support, it returns the 'server-error- 1142 operation-not-supported' status code (see section 13.1.5.2). An IPP 1143 object is non-conformant if it does not support a REQUIRED operation. 1145 3.1.4 Character Set and Natural Language Operation Attributes 1147 Some Job and Printer attributes have values that are text strings and 1148 names intended for human understanding rather than machine understanding 1149 (see the 'text' and 'name' attribute syntax descriptions in section 1150 4.1). The following sections describe two special Operation Attributes 1151 called "attributes-charset" and "attributes-natural-language". These 1152 attributes are always part of the Operation Attributes group. For most 1153 attribute groups, the order of the attributes within the group is not 1154 important. However, for these two attributes within the Operation 1155 Attributes group, the order is critical. The "attributes-charset" 1156 attribute MUST be the first attribute in the group and the "attributes- 1157 natural-language" attribute MUST be the second attribute in the group. 1158 In other words, these attributes MUST be supplied in every IPP request 1159 and response, they MUST come first in the group, and MUST come in the 1160 specified order. For job creation operations, the IPP Printer 1161 implementation saves these two attributes with the new Job object as Job 1162 Description attributes. For the sake of brevity in this document, these 1163 operation attribute descriptions are not repeated with every operation 1164 request and response, but have a reference back to this section instead. 1166 3.1.4.1 Request Operation Attributes 1168 The client MUST supply and the Printer object MUST support the following 1169 REQUIRED operation attributes in every IPP/1.1 operation request: 1171 "attributes-charset" (charset): 1172 This operation attribute identifies the charset (coded character 1173 set and encoding method) used by any 'text' and 'name' attributes 1174 that the client is supplying in this request. It also identifies 1176 Expires December 11, 1999 1177 the charset that the Printer object MUST use (if supported) for all 1178 'text' and 'name' attributes and status messages that the Printer 1179 object returns in the response to this request. See Sections 4.1.1 1180 and 4.1.2 for the definition of the 'text' and 'name' attribute 1181 syntaxes. 1183 All clients and IPP objects MUST support the 'utf-8' charset 1184 [RFC2279] and MAY support additional charsets provided that they 1185 are registered with IANA [IANA-CS]. If the Printer object does not 1186 support the client supplied charset value, the Printer object MUST 1187 reject the request, set the "attributes-charset" to 'utf-8' in the 1188 response, and return the 'client-error-charset-not-supported' 1189 status code and any 'text' or 'name' attributes using the 'utf-8' 1190 charset. The Printer NEED NOT return any attributes in the 1191 Unsupported Attributes Group (See sections 3.1.7 and 3.2.1.2). The 1192 Printer object MUST indicate the charset(s) supported as the values 1193 of the "charset-supported" Printer attribute (see Section 4.4.18), 1194 so that the client can query to determine which charset(s) are 1195 supported. 1197 Note to client implementers: Since IPP objects are only required to 1198 support the 'utf-8' charset, in order to maximize interoperability 1199 with multiple IPP object implementations, a client may want to 1200 supply 'utf-8' in the "attributes-charset" operation attribute, 1201 even though the client is only passing and able to present a 1202 simpler charset, such as US-ASCII or ISO-8859-1. Then the client 1203 will have to filter out (or charset convert) those characters that 1204 are returned in the response that it cannot present to its user. 1205 On the other hand, if both the client and the IPP objects also 1206 support a charset in common besides utf-8, the client may want to 1207 use that charset in order to avoid charset conversion or data loss. 1209 See the 'charset' attribute syntax description in Section 4.1.7 for 1210 the syntax and semantic interpretation of the values of this 1211 attribute and for example values. 1213 "attributes-natural-language" (naturalLanguage): 1214 This operation attribute identifies the natural language used by 1215 any 'text' and 'name' attributes that the client is supplying in 1216 this request. This attribute also identifies the natural language 1217 that the Printer object SHOULD use for all 'text' and 'name' 1218 attributes and status messages that the Printer object returns in 1219 the response to this request. 1221 There are no REQUIRED natural languages required for the Printer 1222 object to support. However, the Printer object's "generated- 1223 natural-language-supported" attribute identifies the natural 1224 languages supported by the Printer object and any contained Job 1225 objects for all text strings generated by the IPP object. A client 1226 MAY query this attribute to determine which natural language(s) are 1227 supported for generated messages. 1229 For any of the attributes for which the Printer object generates 1230 text, i.e., for the "job-state-message", "printer-state-message", 1232 Expires December 11, 1999 1233 and status messages (see Section 3.1.6), the Printer object MUST be 1234 able to generate these text strings in any of its supported natural 1235 languages. If the client requests a natural language that is not 1236 supported, the Printer object MUST return these generated messages 1237 in the Printer's configured natural language as specified by the 1238 Printer's "natural-language-configured" attribute" (see Section 1239 4.4.19). 1241 For other 'text' and 'name' attributes supplied by the client, 1242 authentication system, operator, system administrator, or 1243 manufacturer (i.e., for "job-originating-user-name", "printer-name" 1244 (name), "printer-location" (text), "printer-info" (text), and 1245 "printer-make-and-model" (text)), the Printer object is only 1246 required to support the configured natural language of the Printer 1247 identified by the Printer object's "natural-language-configured" 1248 attribute, though support of additional natural languages for these 1249 attributes is permitted. 1251 For any 'text' or 'name' attribute in the request that is in a 1252 different natural language than the value supplied in the 1253 "attributes-natural-language" operation attribute, the client MUST 1254 use the Natural Language Override mechanism (see sections 4.1.1.2 1255 and 4.1.2.2) for each such attribute value supplied. The client 1256 MAY use the Natural Language Override mechanism redundantly, i.e., 1257 use it even when the value is in the same natural language as the 1258 value supplied in the "attributes-natural-language" operation 1259 attribute of the request. 1261 The IPP object MUST accept any natural language and any Natural 1262 Language Override, whether the IPP object supports that natural 1263 language or not (and independent of the value of the "ipp- 1264 attribute-fidelity" Operation attribute). That is the IPP object 1265 accepts all client supplied values no matter what the values are in 1266 the Printer object's "generated-natural-language-supported" 1267 attribute. That attribute, "generated-natural-language-supported", 1268 only applies to generated messages, not client supplied messages. 1269 The IPP object MUST remember that natural language for all client- 1270 supplied attributes, and when returning those attributes in 1271 response to a query, the IPP object MUST indicate that natural 1272 language. 1274 Each value whose attribute syntax type is 'text' or 'name' (see 1275 sections 4.1.1 and 4.1.2) has an Associated Natural-Language. This 1276 document does not specify how this association is stored in a 1277 Printer or Job object. When such a value is encoded in a request 1278 or response, the natural language is either implicit or explicit: 1280 @ In the implicit case, the value contains only the text/name 1281 value, and the language is specified by the "attributes- 1282 natural-language" operation attribute in the request or 1283 response (see sections 4.1.1.1 textWithoutLanguage and 4.1.2.1 1284 nameWithoutLanguage). 1286 Expires December 11, 1999 1288 @ In the explicit case (also known as the Natural-Language 1289 Override case), the value contains both the language and the 1290 text/name value (see sections 4.1.1.2 textWithLanguage and 1291 4.1.2.2 nameWithLanguage). 1293 For example, the "job-name" attribute MAY be supplied by the client 1294 in a create request. The text value for this attribute will be in 1295 the natural language identified by the "attribute-natural-language" 1296 attribute, or if different, as identified by the Natural Language 1297 Override mechanism. If supplied, the IPP object will use the value 1298 of the "job-name" attribute to populate the Job object's "job-name" 1299 attribute. Whenever any client queries the Job object's "job-name" 1300 attribute, the IPP object returns the attribute as stored and uses 1301 the Natural Language Override mechanism to specify the natural 1302 language, if it is different from that reported in the "attributes- 1303 natural-language" operation attribute of the response. The IPP 1304 object MAY use the Natural Language Override mechanism redundantly, 1305 i.e., use it even when the value is in the same natural language 1306 as the value supplied in the "attributes-natural-language" 1307 operation attribute of the response. 1309 An IPP object MUST NOT reject a request based on a supplied natural 1310 language in an "attributes-natural-language" Operation attribute or 1311 in any attribute that uses the Natural Language Override. 1313 See the 'naturalLanguage' attribute syntax description in section 1314 4.1.8 for the syntax and semantic interpretation of the values of 1315 this attribute and for example values. 1317 Clients SHOULD NOT supply 'text' or 'name' attributes that use an 1318 illegal combination of natural language and charset. For example, 1319 suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and 1320 'iso-8859-7'. Suppose also, that it supports natural languages 'en' 1321 (English), 'fr' (French), and 'el' (Greek). Although the Printer object 1322 supports the charset 'iso-8859-1' and natural language 'el', it probably 1323 does not support the combination of Greek text strings using the 'iso- 1324 8859-1' charset. The Printer object handles this apparent 1325 incompatibility differently depending on the context in which it occurs: 1327 - In a create request: If the client supplies a text or name 1328 attribute (for example, the "job-name" operation attribute) that 1329 uses an apparently incompatible combination, it is a client choice 1330 that does not affect the Printer object or its correct operation. 1331 Therefore, the Printer object simply accepts the client supplied 1332 value, stores it with the Job object, and responds back with the 1333 same combination whenever the client (or any client) queries for 1334 that attribute. 1335 -In a query-type operation, like Get-Printer-Attributes: If the 1336 client requests an apparently incompatible combination, the Printer 1337 object responds (as described in section 3.1.4.2) using the 1338 Printer's configured natural language rather than the natural 1339 language requested by the client. 1341 Expires December 11, 1999 1343 In either case, the Printer object does not reject the request because 1344 of the apparent incompatibility. The potential incompatible combination 1345 of charset and natural language can occur either at the global operation 1346 level or at the Natural Language Override attribute-by-attribute level. 1347 In addition, since the response always includes explicit charset and 1348 natural language information, there is never any question or ambiguity 1349 in how the client interprets the response. 1351 3.1.4.2 Response Operation Attributes 1353 The Printer object MUST supply and the client MUST support the following 1354 REQUIRED operation attributes in every IPP/1.1 operation response: 1356 "attributes-charset" (charset): 1357 This operation attribute identifies the charset used by any 'text' 1358 and 'name' attributes that the Printer object is returning in this 1359 response. The value in this response MUST be the same value as the 1360 "attributes-charset" operation attribute supplied by the client in 1361 the request. If this is not possible (i.e., the charset requested 1362 is not supported), the request would have been rejected. See 1363 "attributes-charset" described in Section 3.1.4.1 above. 1365 If the Printer object supports more than just the 'utf-8' charset, 1366 the Printer object MUST be able to code convert between each of the 1367 charsets supported on a highest fidelity possible basis in order to 1368 return the 'text' and 'name' attributes in the charset requested by 1369 the client. However, some information loss MAY occur during the 1370 charset conversion depending on the charsets involved. For 1371 example, the Printer object may convert from a UTF-8 'a' to a US- 1372 ASCII 'a' (with no loss of information), from an ISO Latin 1 1373 CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' (losing the 1374 accent), or from a UTF-8 Japanese Kanji character to some ISO Latin 1375 1 error character indication such as '?', decimal code equivalent, 1376 or to the absence of a character, depending on implementation. 1378 Whether an implementation that supports more than one charset 1379 stores the data in the charset supplied by the client or code 1380 converts to one of the other supported charsets, depends on 1381 implementation. The strategy should try to minimize loss of 1382 information during code conversion. On each response, such an 1383 implementation converts from its internal charset to that 1384 requested. 1386 "attributes-natural-language" (naturalLanguage): 1387 This operation attribute identifies the natural language used by 1388 any 'text' and 'name' attributes that the IPP object is returning 1389 in this response. Unlike the "attributes-charset" operation 1390 attribute, the IPP object NEED NOT return the same value as that 1391 supplied by the client in the request. The IPP object MAY return 1392 the natural language of the Job object or the Printer's configured 1393 natural language as identified by the Printer object's "natural- 1394 language-configured" attribute, rather than the natural language 1395 supplied by the client. For any 'text' or 'name' attribute or 1396 status message in the response that is in a different natural 1398 Expires December 11, 1999 1399 language than the value returned in the "attributes-natural- 1400 language" operation attribute, the IPP object MUST use the Natural 1401 Language Override mechanism (see sections 4.1.1.2 and 4.1.2.2) on 1402 each attribute value returned. The IPP object MAY use the Natural 1403 Language Override mechanism redundantly, i.e., use it even when the 1404 value is in the same natural language as the value supplied in the 1405 "attributes-natural-language" operation attribute of the response. 1407 3.1.5 Operation Targets 1409 All IPP operations are directed at IPP objects. For Printer operations, 1410 the operation is always directed at a Printer object using one of its 1411 URIs (i.e., one of the values in the Printer object's "printer-uri- 1412 supported" attribute). Even if the Printer object supports more than 1413 one URI, the client supplies only one URI as the target of the 1414 operation. The client identifies the target object by supplying the 1415 correct URI in the "printer-uri (uri)" operation attribute. 1417 For Job operations, the operation is directed at either: 1419 - The Job object itself using the Job object's URI. In this case, 1420 the client identifies the target object by supplying the correct 1421 URI in the "job-uri (uri)" operation attribute. 1422 - The Printer object that created the Job object using both the 1423 Printer objects URI and the Job object's Job ID. Since the Printer 1424 object that created the Job object generated the Job ID, it MUST be 1425 able to correctly associate the client supplied Job ID with the 1426 correct Job object. The client supplies the Printer object's URI 1427 in the "printer-uri (uri)" operation attribute and the Job object's 1428 Job ID in the "job-id (integer(1:MAX))" operation attribute. 1430 If the operation is directed at the Job object directly using the Job 1431 object's URI, the client MUST NOT include the redundant "job-id" 1432 operation attribute. 1434 The operation target attributes are REQUIRED operation attributes that 1435 MUST be included in every operation request. Like the charset and 1436 natural language attributes (see section 3.1.4), the operation target 1437 attributes are specially ordered operation attributes. In all cases, 1438 the operation target attributes immediately follow the "attributes- 1439 charset" and "attributes-natural-language" attributes within the 1440 operation attribute group, however the specific ordering rules are: 1442 - In the case where there is only one operation target attribute 1443 (i.e., either only the "printer-uri" attribute or only the "job- 1444 uri" attribute), that attribute MUST be the third attribute in the 1445 operation attributes group. 1446 - In the case where Job operations use two operation target 1447 attributes (i.e., the "printer-uri" and "job-id" attributes), the 1448 "printer-uri" attribute MUST be the third attribute and the "job- 1449 id" attribute MUST be the fourth attribute. 1451 In all cases, the target URIs contained within the body of IPP operation 1452 requests and responses must be in absolute format rather than relative 1454 Expires December 11, 1999 1455 format (a relative URL identifies a resource with the scope of the HTTP 1456 server, but does not include scheme, host or port). 1458 The following rules apply to the use of port numbers in URIs that 1459 identify IPP objects: 1461 1. If the URI scheme allows the port number to be explicitly included 1462 in the URI string, and a port number is specified within the URI, 1463 then that port number MUST be used by the client to contact the IPP 1464 object. 1466 2. If the URI scheme allows the port number to be explicitly included 1467 in the URI string, and a port number is not specified within the 1468 URI, then default port number implied by that URI scheme MUST be 1469 used by the client to contact the IPP object. 1471 3. If the URI scheme does not allow an explicit port number to be 1472 specified within the URI, then the default port number implied by 1473 that URI MUST be used by the client to contact the IPP object. 1475 Note: The IPP "Encoding and Transport document [IPP-PRO] shows a mapping 1476 of IPP onto HTTP/1.1 and defines a new default port number for using IPP 1477 over HTTP/1.1. 1479 3.1.6 Operation Response Status Codes and Status Messages 1481 Every operation response includes a REQUIRED "status-code" parameter and 1482 an OPTIONAL "status-message" operation attribute, and an OPTIONAL 1483 "detailed-status-message" operation attribute. The Print-URI and Send- 1484 URI response MAY include an OPTIONAL "document-access-error" operation 1485 attribute. 1487 3.1.6.1 "status-code" (type2 enum) 1489 The REQUIRED "status-code" parameter provides information on the 1490 processing of a request. 1492 The status code is intended for use by automata. A client 1493 implementation of IPP SHOULD convert status code values into any 1494 localized message that has semantic meaning to the end user. 1496 The "status-code" value is a numeric value that has semantic meaning. 1497 The "status-code" syntax is similar to a "type2 enum" (see section 4.1 1498 on "Attribute Syntaxes") except that values can range only from 0x0000 1499 to 0x7FFF. Section 13 describes the status codes, assigns the numeric 1500 values, and suggests a corresponding status message for each status code 1501 for use by the client when the user's natural language is English. 1503 If the Printer performs an operation with no errors and it encounters no 1504 problems, it MUST return the status code 'successful-ok' in the 1505 response. See section 13. 1507 Expires December 11, 1999 1508 If the client supplies unsupported values for the following parameters 1509 or Operation attributes, the Printer object MUST reject the operation, 1510 NEED NOT return the unsupported attribute value in the Unsupported 1511 Attributes group, and MUST return the indicated status code: 1513 Parameter/Attribute Status code 1515 version-number server-error-version-not-supported 1516 operation-id server-error-operation-not-supported 1517 attributes-charset client-error-charset-not-supported 1518 compression client-error-compression-not-supported 1519 document-format client-error-document-format-not-supported 1520 document-uri client-error-uri-scheme-not-supported, 1521 client-error-document-access-error 1523 If the client supplies unsupported values for other attributes, or 1524 unsupported attributes, the Printer returns the status code defined in 1525 section 3.1.7 on Unsupported Attributes. 1527 3.1.6.2 "status-message" (text(255)) 1529 The OPTIONAL "status-message" operation attribute provides a short 1530 textual description of the status of the operation. The "status- 1531 message" attribute's syntax is "text(255)", so the maximum length is 255 1532 octets (see section 4.1.1). The status message is intended for the 1533 human end user. If a response does include a "status-message" 1534 attribute, an IPP client NEED NOT examine or display the messages, 1535 however it SHOULD do so in some implementation specific manner. The 1536 "status-message" is especially useful for a later version of a Printer 1537 object to return as supplemental information for the human user to 1538 accompany a status code that an earlier version of a client might not 1539 understand. 1541 If the Printer object supports the "status-message" operation attribute, 1542 the Printer object MUST be able to generate this message in any of the 1543 natural languages identified by the Printer object's "generated-natural- 1544 language-supported" attribute (see the "attributes-natural-language" 1545 operation attribute specified in section 3.1.4.1. Section 13 suggests 1546 the text for the status message returned by the Printer for use with the 1547 English natural language. 1549 As described in section 3.1.4.1 for any returned 'text' attribute, if 1550 there is a choice for generating this message, the Printer object uses 1551 the natural language indicated by the value of the "attributes-natural- 1552 language" in the client request if supported, otherwise the Printer 1553 object uses the value in the Printer object's own "natural-language- 1554 configured" attribute. 1556 If the Printer object supports the "status-message" operation attribute, 1557 it SHOULD use the REQUIRED 'utf-8' charset to return a status message 1558 for the following error status codes (see section 13): 'client-error- 1559 bad-request', 'client-error-charset-not-supported', 'server-error- 1560 internal-error', 'server-error-operation-not-supported', and 'server- 1562 Expires December 11, 1999 1563 error-version-not-supported'. In this case, it MUST set the value of 1564 the "attributes-charset" operation attribute to 'utf-8' in the error 1565 response. 1567 3.1.6.3 "detailed-status-message" (text(MAX)) 1569 The OPTIONAL "detailed-status-message" operation attribute provides 1570 additional more detailed technical and implementation-specific 1571 information about the operation. The "detailed-status-message" 1572 attribute's syntax is "text(MAX)", so the maximum length is 1023 octets 1573 (see section 4.1.1). If the Printer objects supports the "detailed- 1574 status-message" operation attribute, neither the Printer nor the client 1575 localizes the message, since it is intended for use by the system 1576 administrator or other experienced technical persons. Clients MUST NOT 1577 attempt to parse the value of this attribute. See the "document-access- 1578 error" operation attribute (section 3.1.6.4) for additional errors that 1579 a program can process. 1581 3.1.6.4 "document-access-error" (text(MAX)) 1583 This OPTIONAL operation attribute provides additional information about 1584 any document access errors encountered by the Printer before it returned 1585 a response to the Print-URI (section 3.2.2) or Send-URI (section 3.3.1) 1586 operation. For errors in the protocol identified by the URI scheme in 1587 the "document-uri" operation attribute, such as 'http:' or 'ftp:', the 1588 error code is returned in parentheses, followed by the URI. For 1589 example: 1591 (404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11- 1592 990510.pdf 1594 Most Internet protocols use decimal error codes (unlike IPP), so the 1595 ASCII error code representation is in decimal. 1597 3.1.7 Unsupported Attributes 1599 The Unsupported Attributes group contains attributes that are not 1600 supported by the operation. This group is primarily for the job creation 1601 operations, but all operations can return this group. 1603 A Printer object MUST include an Unsupported Attributes group in a 1604 response if the status code is one of the following: 'successful-ok- 1605 ignored-or-substituted-attributes', 'successful-ok-conflicting- 1606 attributes', 'client-error-attributes-or-values-not-supported' or 1607 'client-error-conflicting-attributes'. 1609 If the status code is one of the four specified in the preceding 1610 paragraph, the Unsupported Attributes group MUST contain all of those 1611 attributes and only those attributes that are: 1613 a. an Operation or Job Template attribute supplied in the request, and 1615 Expires December 11, 1999 1616 b. unsupported by the printer. See below for details on the three 1617 categories .unsupported. attributes. 1619 If the Printer object is not returning any Unsupported Attributes in the 1620 response, the Printer object SHOULD omit Group 2 rather than sending an 1621 empty group. However, a client MUST be able to accept an empty group. 1623 Unsupported attributes fall into three categories: 1625 1. The Printer object does not support the supplied attribute (no 1626 matter what the attribute syntax or value). 1628 2. The Printer object does support the attribute, but does not support 1629 some or all of the particular attribute syntaxes or values supplied 1630 by the client (i.e., the Printer object does not have those 1631 attribute syntaxes or values in its corresponding "xxx-supported" 1632 attribute). 1634 3. The Printer object does support the attributes and values supplied, 1635 but the particular values are in conflict with one another, because 1636 they violate a constraint, such as not being able to staple 1637 transparencies. 1639 In the case of an unsupported attribute name, the Printer object returns 1640 the client-supplied attribute with a substituted value of 'unsupported'. 1641 This value's syntax type is "out-of-band" and its encoding is defined by 1642 special rules for "out-of-band" values in the "Encoding and Transport" 1643 document [IPP-PRO]. Its value indicates no support for the attribute 1644 itself (see the beginning of section 4.1). 1646 In the case of a supported attribute with one or more unsupported 1647 attribute syntaxes or values, the Printer object simply returns the 1648 client-supplied attribute with the unsupported attribute syntaxes or 1649 values as supplied by the client. This indicates support for the 1650 attribute, but no support for that particular attribute syntax or value. 1651 If the client supplies a multi-valued attribute with more than one value 1652 and the Printer object supports the attribute but only supports a subset 1653 of the client-supplied attribute syntaxes or values, the Printer object 1654 MUST return only those attribute syntaxes or values that are 1655 unsupported. 1657 In the case of two (or more) supported attribute values that are in 1658 conflict with one another (although each is supported independently, the 1659 values conflict when requested together within the same job), the 1660 Printer object MUST return all the values that it ignores or substitutes 1661 to resolve the conflict, but not any of the values that it is still 1662 using. The choice for exactly how to resolve the conflict is 1663 implementation dependent. See sections 3.2.1.2 and 15. See The 1664 Implementer's Guide [IPP-IIG] for an example. 1666 Expires December 11, 1999 1667 3.1.8 Versions 1669 Each operation request and response carries with it a "version-number" 1670 parameter. Each value of the "version-number" is in the form "X.Y" 1671 where X is the major version number and Y is the minor version number. 1672 By including a version number in the client request, it allows the 1673 client to identify which version of IPP it is interested in using, 1674 i.e., the version whose conformance requirements the client may be 1675 depending upon the Printer to meet. 1677 If the IPP object does not support that major version number supplied by 1678 the client, i.e., the major version field of the "version-number" 1679 parameter does not match any of the values of the Printer's "ipp- 1680 versions-supported" (see section 4.4.14), the object MUST respond with a 1681 status code of 'server-error-version-not-supported' along with the 1682 closest version number that is supported (see section 13.1.5.4). If the 1683 major version number is supported, but the minor version number is not, 1684 the IPP object SHOULD accept and attempt to perform the request (or 1685 reject the request if the operation is not supported), else it rejects 1686 the request and returns the 'server-error-version-not-supported' status 1687 code. In all cases, the IPP object MUST return the "version-number" 1688 that it supports that is closest to the version number supplied by the 1689 client in the request. 1691 There is no version negotiation per se. However, if after receiving a 1692 'server-error-version-not-supported' status code from an IPP object, a 1693 client SHOULD try again with a different version number. A client MAY 1694 also determine the versions supported either from a directory that 1695 conforms to Appendix E (see section 16) or by querying the Printer 1696 object's "ipp-versions-supported" attribute (see section 4.4.14) to 1697 determine which versions are supported. 1699 An IPP object implementation MUST support version '1.1', i.e., meet the 1700 conformance requirements for IPP/1.1 as specified in this document and 1701 [IPP-PRO]. An IPP object implementation SHOULD support version '1.0', 1702 i.e., meet the conformance requirements for IPP/1.0 [RFC2566 and 1703 RFC2565]. 1705 There is only one notion of "version number" that covers both IPP Model 1706 and IPP Protocol changes. Thus the version number MUST change when 1707 introducing a new version of the Model and Semantics document (this 1708 document) or a new version of the "Encoding and Transport" document 1709 [IPP-PRO]. 1711 Changes to the major version number of the Model and Semantics document 1712 indicate structural or syntactic changes that make it impossible for 1713 older version of IPP clients and Printer objects to correctly parse and 1714 correctly process the new or changed attributes, operations and 1715 responses. If the major version number changes, the minor version 1716 numbers is set to zero. As an example, adding the REQUIRED "ipp- 1717 attribute-fidelity" attribute to version '1.1' (if it had not been part 1718 of version '1.0'), would have required a change to the major version 1719 number, since an IPP/1.0 Printer would not have processed a request with 1720 the correct semantics that contained the "ipp-attribute-fidelity" 1722 Expires December 11, 1999 1723 attribute that it did not know about. Items that might affect the 1724 changing of the major version number include any changes to the Model 1725 and Semantics document (this document) or the "Encoding and Transport" 1726 document [IPP-PRO] itself, such as: 1728 - reordering of ordered attributes or attribute sets 1729 - changes to the syntax of existing attributes 1730 - adding REQUIRED (for an IPP object to support) operation attribute 1731 groups 1732 - adding values to existing REQUIRED operation attributes 1733 - adding REQUIRED operations 1735 Changes to the minor version number indicate the addition of new 1736 features, attributes and attribute values that may not be understood by 1737 all IPP objects, but which can be ignored if not understood. Items that 1738 might affect the changing of the minor version number include any 1739 changes to the model objects and attributes but not the encoding and 1740 transport rules [IPP-PRO] (except adding attribute syntaxes). Examples 1741 of such changes are: 1743 - grouping all extensions not included in a previous version into a 1744 new version 1745 - adding new attribute values 1746 - adding new object attributes 1747 - adding OPTIONAL (for an IPP object to support) operation attributes 1748 (i.e., those attributes that an IPP object can ignore without 1749 confusing clients) 1750 - adding OPTIONAL (for an IPP object to support) operation attribute 1751 groups (i.e., those attributes that an IPP object can ignore 1752 without confusing clients) 1753 - adding new attribute syntaxes 1754 - adding OPTIONAL operations 1755 - changing Job Description attributes or Printer Description 1756 attributes from OPTIONAL to REQUIRED or vice versa. 1757 - adding OPTIONAL attribute syntaxes to an existing attribute. 1759 The encoding of the "version-number" MUST NOT change over any version 1760 number (either major or minor). This rule guarantees that all future 1761 versions will be backwards compatible with all previous versions (at 1762 least for checking the "version-number"). In addition, any protocol 1763 elements (attributes, error codes, tags, etc.) that are not carried 1764 forward from one version to the next are deprecated so that they can 1765 never be reused with new semantics. 1767 Implementations that support a certain version NEED NOT support ALL 1768 previous versions. As each new version is defined (through the release 1769 of a new IPP specification document), that version will specify which 1770 previous versions MUST and which versions SHOULD be supported in 1771 compliant implementations. 1773 Expires December 11, 1999 1774 3.1.9 Job Creation Operations 1776 In order to "submit a print job" and create a new Job object, a client 1777 issues a create request. A create request is any one of following three 1778 operation requests: 1780 - The Print-Job Request: A client that wants to submit a print job 1781 with only a single document uses the Print-Job operation. The 1782 operation allows for the client to "push" the document data to the 1783 Printer object by including the document data in the request 1784 itself. 1786 - The Print-URI Request: A client that wants to submit a print job 1787 with only a single document (where the Printer object "pulls" the 1788 document data instead of the client "pushing" the data to the 1789 Printer object) uses the Print-URI operation. In this case, the 1790 client includes in the request only a URI reference to the document 1791 data (not the document data itself). 1793 - The Create-Job Request: A client that wants to submit a print job 1794 with multiple documents uses the Create-Job operation. This 1795 operation is followed by an arbitrary number of Send-Document 1796 and/or Send-URI operations (each creating another document for the 1797 newly create Job object). The Send-Document operation includes the 1798 document data in the request (the client "pushes" the document data 1799 to the printer), and the Send-URI operation includes only a URI 1800 reference to the document data in the request (the Printer "pulls" 1801 the document data from the referenced location). The last Send- 1802 Document or Send-URI request for a given Job object includes a 1803 "last-document" operation attribute set to 'true' indicating that 1804 this is the last request. 1806 Throughout this model document, the term "create request" is used to 1807 refer to any of these three operation requests. 1809 A Create-Job operation followed by only one Send-Document operation is 1810 semantically equivalent to a Print-Job operation, however, for 1811 performance reasons, the client SHOULD use the Print-Job operation for 1812 all single document jobs. Also, Print-Job is a REQUIRED operation (all 1813 implementations MUST support it) whereas Create-Job is an OPTIONAL 1814 operation, hence some implementations might not support it. 1816 Job submission time is the point in time when a client issues a create 1817 request. The initial state of every Job object is the 'pending', 1818 'pending-held', or 'processing' state (see section 4.3.7). When the 1819 Printer object begins processing the print job, the Job object's state 1820 moves to 'processing'. This is known as job processing time. There are 1821 validation checks that must be done at job submission time and others 1822 that must be performed at job processing time. 1824 At job submission time and at the time a Validate-Job operation is 1825 received, the Printer MUST do the following: 1827 Expires December 11, 1999 1828 1. Process the client supplied attributes and either accept or reject 1829 the request 1830 2. Validate the syntax of and support for the scheme of any client 1831 supplied URI 1833 At job submission time the Printer object MUST validate whether or not 1834 the supplied attributes, attribute syntaxes, and values are supported by 1835 matching them with the Printer object's corresponding "xxx-supported" 1836 attributes. See section 3.1.7 for details. [IPP-IIG] presents 1837 suggested steps for an IPP object to either accept or reject any request 1838 and additional steps for processing create requests. 1840 At job submission time the Printer object NEED NOT perform the 1841 validation checks reserved for job processing time such as: 1843 1. Validating the document data 1844 2. Validating the actual contents of any client supplied URI (resolve 1845 the reference and follow the link to the document data) 1847 At job submission time, these additional job processing time validation 1848 checks are essentially useless, since they require actually parsing and 1849 interpreting the document data, are not guaranteed to be 100% accurate, 1850 and MUST be done, yet again, at job processing time. Also, in the case 1851 of a URI, checking for availability at job submission time does not 1852 guarantee availability at job processing time. In addition, at job 1853 processing time, the Printer object might discover any of the following 1854 conditions that were not detectable at job submission time: 1856 - runtime errors in the document data, 1857 - nested document data that is in an unsupported format, 1858 - the URI reference is no longer valid (i.e., the server hosting the 1859 document might be down), or 1860 - any other job processing error 1862 At job submission time, a Printer object, especially a non-spooling 1863 Printer, MAY accept jobs that it does not have enough space for. In 1864 such a situation, a Printer object MAY stop reading data from a client 1865 for an indefinite period of time. A client MUST be prepared for a write 1866 operation to block for an indefinite period of time (see section 5.1 on 1867 client conformance). 1869 When a Printer object has too little space for starting a new job, it 1870 MAY reject a new create request. In this case, a Printer object MUST 1871 return a response (in reply to the rejected request) with a status-code 1872 of 'server-error-busy' (see section 14.1.5.8) and it MAY close the 1873 connection before receiving all bytes of the operation. A Printer 1874 SHOULD indicate that it is temporarily unable to accept jobs by setting 1875 the 'spool-space-full' value in its "printer-state-reasons" attribute 1876 and removing the value when it can accept another job (see section 1877 4.4.12). 1879 When receiving a 'server-error-busy' status-code in an operation 1880 response, a client MUST be prepared for the Printer object to close the 1882 Expires December 11, 1999 1883 connection before the client has sent all of the data (especially for 1884 the Print-Job operation). A client MUST be prepared to keep submitting a 1885 create request until the IPP Printer object accepts the create request. 1887 At job processing time, since the Printer object has already responded 1888 with a successful status code in the response to the create request, if 1889 the Printer object detects an error, the Printer object is unable to 1890 inform the end user of the error with an operation status code. In 1891 this case, the Printer, depending on the error, can set the job object's 1892 "job-state", "job-state-reasons", or "job-state-message" attributes to 1893 the appropriate value(s) so that later queries can report the correct 1894 job status. 1896 Note: Asynchronous notification of events is outside the scope of this 1897 IPP/1.1 document. 1899 3.2 Printer Operations 1901 All Printer operations are directed at Printer objects. A client MUST 1902 always supply the "printer-uri" operation attribute in order to identify 1903 the correct target of the operation. 1905 3.2.1 Print-Job Operation 1907 This REQUIRED operation allows a client to submit a print job with only 1908 one document and supply the document data (rather than just a reference 1909 to the data). See Section 15 for the suggested steps for processing 1910 create operations and their Operation and Job Template attributes. 1912 3.2.1.1 Print-Job Request 1914 The following groups of attributes are supplied as part of the Print-Job 1915 Request: 1917 Group 1: Operation Attributes 1919 Natural Language and Character Set: 1920 The "attributes-charset" and "attributes-natural-language" 1921 attributes as described in section 3.1.4.1. The Printer object 1922 MUST copy these values to the corresponding Job Description 1923 attributes described in sections 4.3.19 and 4.3.20. 1925 Target: 1926 The "printer-uri" (uri) operation attribute which is the target for 1927 this operation as described in section 3.1.5. 1929 Requesting User Name: 1930 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 1931 by the client as described in section 8.3. 1933 Expires December 11, 1999 1935 "job-name" (name(MAX)): 1936 The client OPTIONALLY supplies this attribute. The Printer object 1937 MUST support this attribute. It contains the client supplied Job 1938 name. If this attribute is supplied by the client, its value is 1939 used for the "job-name" attribute of the newly created Job object. 1940 The client MAY automatically include any information that will help 1941 the end-user distinguish amongst his/her jobs, such as the name of 1942 the application program along with information from the document, 1943 such as the document name, document subject, or source file name. 1944 If this attribute is not supplied by the client, the Printer 1945 generates a name to use in the "job-name" attribute of the newly 1946 created Job object (see Section 4.3.5). 1948 "ipp-attribute-fidelity" (boolean): 1949 The client OPTIONALLY supplies this attribute. The Printer object 1950 MUST support this attribute. The value 'true' indicates that total 1951 fidelity to client supplied Job Template attributes and values is 1952 required, else the Printer object MUST reject the Print-Job 1953 request. The value 'false' indicates that a reasonable attempt to 1954 print the Job object is acceptable and the Printer object MUST 1955 accept the Print-job request. If not supplied, the Printer object 1956 assumes the value is 'false'. All Printer objects MUST support 1957 both types of job processing. See section 15 for a full 1958 description of "ipp-attribute-fidelity" and its relationship to 1959 other attributes, especially the Printer object's "pdl-override- 1960 supported" attribute. 1962 "document-name" (name(MAX)): 1963 The client OPTIONALLY supplies this attribute. The Printer object 1964 MUST support this attribute. It contains the client supplied 1965 document name. The document name MAY be different than the Job 1966 name. Typically, the client software automatically supplies the 1967 document name on behalf of the end user by using a file name or an 1968 application generated name. If this attribute is supplied, its 1969 value can be used in a manner defined by each implementation. 1970 Examples include: printed along with the Job (job start sheet, page 1971 adornments, etc.), used by accounting or resource tracking 1972 management tools, or even stored along with the document as a 1973 document level attribute. IPP/1.1 does not support the concept of 1974 document level attributes. 1976 "compression" (type3 keyword) 1977 The client OPTIONALLY supplies this attribute. The Printer object 1978 MUST support this attribute and the "compression-supported" 1979 attribute (see section 4.4.32). The client supplied "compression" 1980 operation attribute identifies the compression algorithm used on 1981 the document data. The following cases exist: 1982 a)If the client omits this attribute, the Printer object MUST 1983 assume that the data is not compressed (i.e. the Printer 1984 follows the rules below as if the client supplied the 1985 "compression" attribute with a value of 'none'). 1986 b)If the client supplies this attribute, but the value is not 1987 supported by the Printer object, i.e., the value is not one 1988 of the values of the Printer object's "compression- 1990 Expires December 11, 1999 1991 supported" attribute, the Printer object MUST reject the 1992 request, and return the 'client-error-compression-not- 1993 supported' status code. See section 3.1.7 for returning 1994 unsupported attributes and values. 1995 c)If the client supplies the attribute and the Printer object 1996 supports the attribute value, the Printer object uses the 1997 corresponding decompression algorithm on the document data. 1998 d)If the decompression algorithm fails before the Printer 1999 returns an operation response, the Printer object MUST 2000 reject the request and return the 'client-error- 2001 compression-error' status code. 2002 e)If the decompression algorithm fails after the Printer 2003 returns an operation response, the Printer object MUST 2004 abort the job and add the 'compression-error' value to the 2005 job's "job-state-reasons" attribute. 2006 f)If the decompression algorithm succeeds, the document data 2007 MUST then have the format specified by the job's "document- 2008 format" attribute, if supplied (see "document-format" 2009 operation attribute definition below). 2011 "document-format" (mimeMediaType) : 2012 The client OPTIONALLY supplies this attribute. The Printer object 2013 MUST support this attribute. The value of this attribute 2014 identifies the format of the supplied document data. The following 2015 cases exist: 2016 a)If the client does not supply this attribute, the Printer 2017 object assumes that the document data is in the format 2018 defined by the Printer object's "document-format-default" 2019 attribute. (i.e. the Printer follows the rules below as if 2020 the client supplied the "document-format" attribute with a 2021 value equal to the printer's default value). 2022 b)If the client supplies this attribute, but the value is not 2023 supported by the Printer object, i.e., the value is not one 2024 of the values of the Printer object's "document-format- 2025 supported" attribute, the Printer object MUST reject the 2026 request and return the 'client-error-document-format-not- 2027 supported' status code. 2028 c)If the client supplies this attribute and its value is 2029 'application/octet-stream' (i.e. to be auto-sensed, see 2030 Section 4.1.9.1), and the format is not one of the 2031 document-formats that the Printer can auto-sense, and this 2032 check occurs before the Printer returns an operation 2033 response, then the Printer MUST reject the request and 2034 return the 'client-error-document-format-not-supported' 2035 status code. 2036 d)If the client supplies this attribute, and the value is 2037 supported by the Printer object, the document data, the 2038 Printer is capable of interpreting the document data. 2039 e)If interpreting of the document data fails before the 2040 Printer returns an operation response, the Printer object 2041 MUST reject the request and return the 'client-error- 2042 document-format-error' status code. 2043 f)If interpreting of the document data fails after the 2044 Printer returns an operation response, the Printer object 2046 Expires December 11, 1999 2047 MUST abort the job and add the 'document-format-error' 2048 value to the job's "job-state-reasons" attribute. 2050 "document-natural-language" (naturalLanguage): 2051 The client OPTIONALLY supplies this attribute. The Printer object 2052 OPTIONALLY supports this attribute. This attribute specifies the 2053 natural language of the document for those document-formats that 2054 require a specification of the natural language in order to image 2055 the document unambiguously. There are no particular values required 2056 for the Printer object to support. 2058 "job-k-octets" (integer(0:MAX)) 2059 The client OPTIONALLY supplies this attribute. The Printer object 2060 OPTIONALLY supports this attribute and the "job-k-octets-supported" 2061 attribute (see section 4.4.33). The client supplied "job-k-octets" 2062 operation attribute identifies the total size of the document(s) in 2063 K octets being submitted (see section 4.3.17.1 for the complete 2064 semantics). If the client supplies the attribute and the Printer 2065 object supports the attribute, the value of the attribute is used 2066 to populate the Job object's "job-k-octets" Job Description 2067 attribute. 2069 For this attribute and the following two attributes ("job- 2070 impressions", and "job-media-sheets"), if the client supplies the 2071 attribute, but the Printer object does not support the attribute, 2072 the Printer object ignores the client-supplied value. If the 2073 client supplies the attribute and the Printer supports the 2074 attribute, and the value is within the range of the corresponding 2075 Printer object's "xxx-supported" attribute, the Printer object MUST 2076 use the value to populate the Job object's "xxx" attribute. If the 2077 client supplies the attribute and the Printer supports the 2078 attribute, but the value is outside the range of the corresponding 2079 Printer object's "xxx-supported" attribute, the Printer object MUST 2080 copy the attribute and its value to the Unsupported Attributes 2081 response group, reject the request, and return the 'client-error- 2082 attributes-or-values-not-supported' status code. If the client 2083 does not supply the attribute, the Printer object MAY choose to 2084 populate the corresponding Job object attribute depending on 2085 whether the Printer object supports the attribute and is able to 2086 calculate or discern the correct value. 2088 "job-impressions" (integer(0:MAX)) 2089 The client OPTIONALLY supplies this attribute. The Printer object 2090 OPTIONALLY supports this attribute and the "job-impressions- 2091 supported" attribute (see section 4.4.34). The client supplied 2092 "job-impressions" operation attribute identifies the total size in 2093 number of impressions of the document(s) being submitted (see 2094 section 4.3.17.2 for the complete semantics). 2096 See last paragraph under "job-k-octets". 2098 Expires December 11, 1999 2100 "job-media-sheets" (integer(0:MAX)) 2101 The client OPTIONALLY supplies this attribute. The Printer object 2102 OPTIONALLY supports this attribute and the "job-media-sheets- 2103 supported" attribute (see section 4.4.35). The client supplied 2104 "job-media-sheets" operation attribute identifies the total number 2105 of media sheets to be produced for this job (see section 4.3.17.3 2106 for the complete semantics). 2108 See last paragraph under "job-k-octets". 2110 Group 2: Job Template Attributes 2112 The client OPTIONALLY supplies a set of Job Template attributes as 2113 defined in section 4.2. If the client is not supplying any Job 2114 Template attributes in the request, the client SHOULD omit Group 2 2115 rather than sending an empty group. However, a Printer object MUST 2116 be able to accept an empty group. 2118 Group 3: Document Content 2120 The client MUST supply the document data to be processed. 2122 In addition to the MANDATORY parameters required for every operation 2123 request, the simplest Print-Job Request consists of just the 2124 "attributes-charset" and "attributes-natural-language" operation 2125 attributes; the "printer-uri" target operation attribute; the Document 2126 Content and nothing else. In this simple case, the Printer object: 2128 - creates a new Job object (the Job object contains a single 2129 document), 2130 - stores a generated Job name in the "job-name" attribute in the 2131 natural language and charset requested (see Section 3.1.4.1) (if 2132 those are supported, otherwise using the Printer object's default 2133 natural language and charset), and 2134 - at job processing time, uses its corresponding default value 2135 attributes for the supported Job Template attributes that were not 2136 supplied by the client as IPP attribute or embedded instructions in 2137 the document data. 2139 3.2.1.2 Print-Job Response 2141 The Printer object MUST return to the client the following sets of 2142 attributes as part of the Print-Job Response: 2144 Group 1: Operation Attributes 2146 Status Message: 2147 In addition to the REQUIRED status code returned in every response, 2148 the response OPTIONALLY includes a "status-message" (text(255)) 2149 operation attribute as described in sections 13 and 3.1.6. If the 2150 client supplies unsupported or conflicting Job Template attributes 2151 or values, the Printer object MUST reject or accept the Print-Job 2152 request depending on the whether the client supplied a 'true' or 2154 Expires December 11, 1999 2155 'false' value for the "ipp-attribute-fidelity" operation attribute. 2156 See the Implementer's Guide [IPP-IIG] for a complete description of 2157 the suggested steps for processing a create request. 2159 Natural Language and Character Set: 2160 The "attributes-charset" and "attributes-natural-language" 2161 attributes as described in section 3.1.4.2. 2163 Group 2: Unsupported Attributes 2165 See section 3.1.7 for details on returning Unsupported Attributes. 2167 The value of the "ipp-attribute-fidelity" supplied by the client 2168 does not affect what attributes the Printer object returns in this 2169 group. The value of "ipp-attribute-fidelity" only affects whether 2170 the Print-Job operation is accepted or rejected. If the job is 2171 accepted, the client may query the job using the Get-Job-Attributes 2172 operation requesting the unsupported attributes that were returned 2173 in the create response to see which attributes were ignored (not 2174 stored on the Job object) and which attributes were stored with 2175 other (substituted) values. 2177 Group 3: Job Object Attributes 2179 "job-uri" (uri): 2180 The Printer object MUST return the Job object's URI by returning 2181 the contents of the REQUIRED "job-uri" Job object attribute. The 2182 client uses the Job object's URI when directing operations at the 2183 Job object. The Printer object always uses its configured security 2184 policy when creating the new URI. However, if the Printer object 2185 supports more than one URI, the Printer object also uses 2186 information about which URI was used in the Print-Job Request to 2187 generated the new URI so that the new URI references the correct 2188 access channel. In other words, if the Print-Job Request comes in 2189 over a secure channel, the Printer object MUST generate a Job URI 2190 that uses the secure channel as well. 2192 "job-id" (integer(1:MAX)): 2193 The Printer object MUST return the Job object's Job ID by returning 2194 the REQUIRED "job-id" Job object attribute. The client uses this 2195 "job-id" attribute in conjunction with the "printer-uri" attribute 2196 used in the Print-Job Request when directing Job operations at the 2197 Printer object. 2199 "job-state": 2200 The Printer object MUST return the Job object's REQUIRED "job- 2201 state" attribute. The value of this attribute (along with the value 2202 of the next attribute: "job-state-reasons") is taken from a 2203 "snapshot" of the new Job object at some meaningful point in time 2204 (implementation defined) between when the Printer object receives 2205 the Print-Job Request and when the Printer object returns the 2206 response. 2208 Expires December 11, 1999 2210 "job-state-reasons": 2211 The Printer object MUST return the Job object's REQUIRED "job- 2212 state-reasons" attribute. 2214 "job-state-message": 2215 The Printer object OPTIONALLY returns the Job object's OPTIONAL 2216 "job-state-message" attribute. If the Printer object supports this 2217 attribute then it MUST be returned in the response. If this 2218 attribute is not returned in the response, the client can assume 2219 that the "job-state-message" attribute is not supported and will 2220 not be returned in a subsequent Job object query. 2222 "number-of-intervening-jobs": 2223 The Printer object OPTIONALLY returns the Job object's OPTIONAL 2224 "number-of-intervening-jobs" attribute. If the Printer object 2225 supports this attribute then it MUST be returned in the response. 2226 If this attribute is not returned in the response, the client can 2227 assume that the "number-of-intervening-jobs" attribute is not 2228 supported and will not be returned in a subsequent Job object 2229 query. 2231 Note: Since any printer state information which affects a job's 2232 state is reflected in the "job-state" and "job-state-reasons" 2233 attributes, it is sufficient to return only these attributes and no 2234 specific printer status attributes. 2236 Note: In addition to the MANDATORY parameters required for every 2237 operation response, the simplest response consists of the just the 2238 "attributes-charset" and "attributes-natural-language" operation 2239 attributes and the "job-uri", "job-id", and "job-state" Job Object 2240 Attributes. In this simplest case, the status code is 'successful-ok' 2241 and there is no "status-message" operation attribute. 2243 3.2.2 Print-URI Operation 2245 This OPTIONAL operation is identical to the Print-Job operation (section 2246 3.2.1) except that a client supplies a URI reference to the document 2247 data using the "document-uri" (uri) operation attribute (in Group 1) 2248 rather than including the document data itself. Before returning the 2249 response, the Printer MUST validate that the Printer supports the 2250 retrieval method (e.g., http, ftp, etc.) implied by the URI, and MUST 2251 check for valid URI syntax. If the client-supplied URI scheme is not 2252 supported, i.e. the value is not in the Printer object's "referenced- 2253 uri-scheme-supported" attribute, the Printer object MUST reject the 2254 request and return the 'client-error-uri-scheme-not-supported' status 2255 code. 2257 The IPP Printer MAY validate the accessibility of the document as part 2258 of the operation or subsequently. If the Printer determines an 2259 accessibility problem before returning an operation response, it rejects 2260 the request and returns the 'client-error-document-access-error' status 2261 code. The Printer MAY also return a specific document access error code 2263 Expires December 11, 1999 2264 using the "document-access-error" operation attribute (see section 2265 3.1.6.4). 2267 If the Printer determines this document accessibility problem after 2268 accepting the request and returning an operation response with one of 2269 the successful status codes, the Printer adds the 'document-access- 2270 error' value to the job's "job-state-reasons" attribute and MAY populate 2271 the job's "job-document-access-errors" Job Description attribute (see 2272 section 4.3.11). See The Implementer's Guide [IPP-IIG] for suggested 2273 additional checks. 2275 If the Printer object supports this operation, it MUST support the 2276 "reference-uri-schemes-supported" Printer attribute (see section 2277 4.4.27). 2279 It is up to the IPP object to interpret the URI and subsequently "pull" 2280 the document from the source referenced by the URI string. 2282 3.2.3 Validate-Job Operation 2284 This REQUIRED operation is similar to the Print-Job operation (section 2285 3.2.1) except that a client supplies no document data and the Printer 2286 allocates no resources (i.e., it does not create a new Job object). 2287 This operation is used only to verify capabilities of a printer object 2288 against whatever attributes are supplied by the client in the Validate- 2289 Job request. By using the Validate-Job operation a client can validate 2290 that an identical Print-Job operation (with the document data) would be 2291 accepted. The Validate-Job operation also performs the same security 2292 negotiation as the Print-Job operation (see section 8), so that a client 2293 can check that the client and Printer object security requirements can 2294 be met before performing a Print-Job operation. 2296 The Validate-Job operation does not accept a "document-uri" attribute in 2297 order to allow a client to check that the same Print-URI operation will 2298 be accepted, since the client doesn't send the data with the Print-URI 2299 operation. The client SHOULD just issue the Print-URI request. 2301 The Printer object returns the same status codes, Operation Attributes 2302 (Group 1) and Unsupported Attributes (Group 2) as the Print-Job 2303 operation. However, no Job Object Attributes (Group 3) are returned, 2304 since no Job object is created. 2306 3.2.4 Create-Job Operation 2308 This OPTIONAL operation is similar to the Print-Job operation (section 2309 3.2.1) except that in the Create-Job request, a client does not supply 2310 document data or any reference to document data. Also, the client does 2311 not supply any of the "document-name", "document-format", "compression", 2312 or "document-natural-language" operation attributes. This operation is 2313 followed by one or more Send-Document or Send-URI operations. In each 2314 of those operation requests, the client OPTIONALLY supplies the 2315 "document-name", "document-format", and "document-natural-language" 2316 attributes for each document in the multi-document Job object. 2318 Expires December 11, 1999 2319 If a Printer object supports the Create-Job operation, it MUST also 2320 support the Send-Document operation and also MAY support the Send-URI 2321 operation. 2323 If the Printer object supports this operation, it MUST support the 2324 "multiple-operation-time-out" Printer attribute (see section 4.4.31). 2326 If the Printer object supports this operation, then it MUST support the 2327 "multiple-document-jobs-supported" Printer Description attribute (see 2328 section 4.4.16) and indicate whether or not it supports multiple- 2329 document jobs. 2331 If the Printer object supports this operation and supports multiple 2332 documents in a job, then it MUST support the "multiple-document- 2333 handling" Job Template job attribute with at least one value (see 2334 section 4.2.4) and the associated "multiple-document-handling-default" 2335 and "multiple-document-handling-supported" Job Template Printer 2336 attributes (see section 4.2). 2338 After the Create-Job operation has completed, the value of the "job- 2339 state" attribute is similar to the "job-state" after a Print-Job, even 2340 though no document-data has arrived. A Printer MAY set the 'job-data- 2341 insufficient' value of the job's "job-state-reason" attribute to 2342 indicate that processing cannot begin until sufficient data has arrived 2343 and set the "job-state" to either 'pending' or 'pending-held'. A non- 2344 spooling printer that doesn't implement the 'pending' job state may even 2345 set the "job-state" to 'processing', even though there is not yet any 2346 data to process. See sections 4.3.7 and 4.3.8. 2348 3.2.5 Get-Printer-Attributes Operation 2350 This REQUIRED operation allows a client to request the values of the 2351 attributes of a Printer object. In the request, the client supplies 2352 the set of Printer attribute names and/or attribute group names in which 2353 the requester is interested. In the response, the Printer object 2354 returns a corresponding attribute set with the appropriate attribute 2355 values filled in. 2357 For Printer objects, the possible names of attribute groups are: 2359 - 'job-template': the subset of the Job Template attributes that 2360 apply to a Printer object (the last two columns of the table in 2361 Section 4.2) that the implementation supports for Printer objects. 2362 - 'printer-description': the subset of the attributes specified in 2363 Section 4.4 that the implementation supports for Printer objects. 2364 - 'all': the special group 'all' that includes all attributes that 2365 the implementation supports for Printer objects. 2367 Since a client MAY request specific attributes or named groups, there is 2368 a potential that there is some overlap. For example, if a client 2369 requests, 'printer-name' and 'all', the client is actually requesting 2370 the "printer-name" attribute twice: once by naming it explicitly, and 2371 once by inclusion in the 'all' group. In such cases, the Printer object 2373 Expires December 11, 1999 2374 NEED NOT return each attribute only once in the response even if it is 2375 requested multiple times. The client SHOULD NOT request the same 2376 attribute in multiple ways. 2378 It is NOT REQUIRED that a Printer object support all attributes 2379 belonging to a group (since some attributes are OPTIONAL). However, it 2380 is REQUIRED that each Printer object support all group names. 2382 3.2.5.1 Get-Printer-Attributes Request 2384 The following sets of attributes are part of the Get-Printer-Attributes 2385 Request: 2387 Group 1: Operation Attributes 2389 Natural Language and Character Set: 2390 The "attributes-charset" and "attributes-natural-language" 2391 attributes as described in section 3.1.4.1. 2393 Target: 2394 The "printer-uri" (uri) operation attribute which is the target for 2395 this operation as described in section 3.1.5. 2397 Requesting User Name: 2398 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2399 by the client as described in section 8.3. 2401 "requested-attributes" (1setOf keyword) : 2402 The client OPTIONALLY supplies a set of attribute names and/or 2403 attribute group names in whose values the requester is interested. 2404 The Printer object MUST support this attribute. If the client 2405 omits this attribute, the Printer MUST respond as if this attribute 2406 had been supplied with a value of 'all'. 2408 "document-format" (mimeMediaType) : 2409 The client OPTIONALLY supplies this attribute. The Printer object 2410 MUST support this attribute. This attribute is useful for a 2411 Printer object to determine the set of supported attribute values 2412 that relate to the requested document format. The Printer object 2413 MUST return the attributes and values that it uses to validate a 2414 job on a create or Validate-Job operation in which this document 2415 format is supplied. The Printer object SHOULD return only (1) those 2416 attributes that are supported for the specified format and (2) the 2417 attribute values that are supported for the specified document 2418 format. By specifying the document format, the client can get the 2419 Printer object to eliminate the attributes and values that are not 2420 supported for a specific document format. For example, a Printer 2421 object might have multiple interpreters to support both 2422 'application/postscript' (for PostScript) and 'text/plain' (for 2423 text) documents. However, for only one of those interpreters might 2424 the Printer object be able to support "number-up" with values of 2425 '1', '2', and '4'. For the other interpreter it might be able to 2426 only support "number-up" with a value of '1'. Thus a client can use 2428 Expires December 11, 1999 2429 the Get-Printer-Attributes operation to obtain the attributes and 2430 values that will be used to accept/reject a create job operation. 2432 If the Printer object does not distinguish between different sets 2433 of supported values for each different document format when 2434 validating jobs in the create and Validate-Job operations, it MUST 2435 NOT distinguish between different document formats in the Get- 2436 Printer-Attributes operation. If the Printer object does 2437 distinguish between different sets of supported values for each 2438 different document format specified by the client, this 2439 specialization applies only to the following Printer object 2440 attributes: 2442 - Printer attributes that are Job Template attributes ("xxx- 2443 default" "xxx-supported", and "xxx-ready" in the Table in 2444 Section 4.2), 2445 - "pdl-override-supported", 2446 - "compression-supported", 2447 - "job-k-octets-supported", 2448 - "job-impressions-supported, 2449 - "job-media-sheets-supported" 2450 - "printer-driver-installer", 2451 - "color-supported", and 2452 - "reference-uri-schemes-supported" 2454 The values of all other Printer object attributes (including 2455 "document-format-supported") remain invariant with respect to the 2456 client supplied document format (except for new Printer description 2457 attribute as registered according to section 6.2). 2459 If the client omits this "document-format" operation attribute, the 2460 Printer object MUST respond as if the attribute had been supplied 2461 with the value of the Printer object's "document-format-default" 2462 attribute. It is recommended that the client always supply a value 2463 for "document-format", since the Printer object's "document-format- 2464 default" may be 'application/octet-stream', in which case the 2465 returned attributes and values are for the union of the document 2466 formats that the Printer can automatically sense. For more 2467 details, see the description of the 'mimeMediaType' attribute 2468 syntax in section 4.1.9. 2470 If the client supplies a value for the "document-format" Operation 2471 attribute that is not supported by the Printer, i.e., is not among 2472 the values of the Printer object's "document-format-supported" 2473 attribute, the Printer object MUST reject the operation and return 2474 the 'client-error-document-format-not-supported' status code. 2476 3.2.5.2 Get-Printer-Attributes Response 2478 The Printer object returns the following sets of attributes as part of 2479 the Get-Printer-Attributes Response: 2481 Group 1: Operation Attributes 2483 Expires December 11, 1999 2484 Status Message: 2485 In addition to the REQUIRED status code returned in every response, 2486 the response OPTIONALLY includes a "status-message" (text(255)) 2487 operation attribute as described in sections 13 and 3.1.6. 2489 Natural Language and Character Set: 2490 The "attributes-charset" and "attributes-natural-language" 2491 attributes as described in section 3.1.4.2. 2493 Group 2: Unsupported Attributes 2495 See section 3.1.7 for details on returning Unsupported Attributes. 2497 The response NEED NOT contain the "requested-attributes" operation 2498 attribute with any supplied values (attribute keywords) that were 2499 requested by the client but are not supported by the IPP object. If 2500 the Printer object does include unsupported attributes referenced 2501 in "requested-attributes" and such attributes include group names, 2502 such as 'all', the unsupported attributes MUST NOT include 2503 attributes described in the standard but not supported by the 2504 implementation. 2506 Group 3: Printer Object Attributes 2508 This is the set of requested attributes and their current values. 2509 The Printer object ignores (does not respond with) any requested 2510 attribute which is not supported. The Printer object MAY respond 2511 with a subset of the supported attributes and values, depending on 2512 the security policy in force. However, the Printer object MUST 2513 respond with the 'unknown' value for any supported attribute 2514 (including all REQUIRED attributes) for which the Printer object 2515 does not know the value. Also the Printer object MUST respond with 2516 the 'no-value' for any supported attribute (including all REQUIRED 2517 attributes) for which the system administrator has not configured a 2518 value. See the description of the "out-of-band" values in the 2519 beginning of Section 4.1. 2521 3.2.6 Get-Jobs Operation 2523 This REQUIRED operation allows a client to retrieve the list of Job 2524 objects belonging to the target Printer object. The client may also 2525 supply a list of Job attribute names and/or attribute group names. A 2526 group of Job object attributes will be returned for each Job object that 2527 is returned. 2529 This operation is similar to the Get-Job-Attributes operation, except 2530 that this Get-Jobs operation returns attributes from possibly more than 2531 one object (see the description of Job attribute group names in section 2532 3.3.4). 2534 Expires December 11, 1999 2535 3.2.6.1 Get-Jobs Request 2537 The client submits the Get-Jobs request to a Printer object. 2539 The following groups of attributes are part of the Get-Jobs Request: 2541 Group 1: Operation Attributes 2543 Natural Language and Character Set: 2544 The "attributes-charset" and "attributes-natural-language" 2545 attributes as described in section 3.1.4.1. 2547 Target: 2548 The "printer-uri" (uri) operation attribute which is the target for 2549 this operation as described in section 3.1.5. 2551 Requesting User Name: 2552 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2553 by the client as described in section 8.3. 2555 "limit" (integer(1:MAX)): 2556 The client OPTIONALLY supplies this attribute. The Printer object 2557 MUST support this attribute. It is an integer value that determines 2558 the maximum number of jobs that a client will receive from the 2559 Printer even if "which-jobs" or "my-jobs" constrain which jobs are 2560 returned. The limit is a "stateless limit" in that if the value 2561 supplied by the client is 'N', then only the first 'N' jobs are 2562 returned in the Get-Jobs Response. There is no mechanism to allow 2563 for the next 'M' jobs after the first 'N' jobs. If the client does 2564 not supply this attribute, the Printer object responds with all 2565 applicable jobs. 2567 "requested-attributes" (1setOf keyword): 2568 The client OPTIONALLY supplies this attribute. The Printer object 2569 MUST support this attribute. It is a set of Job attribute names 2570 and/or attribute groups names in whose values the requester is 2571 interested. This set of attributes is returned for each Job object 2572 that is returned. The allowed attribute group names are the same 2573 as those defined in the Get-Job-Attributes operation in section 2574 3.3.4. If the client does not supply this attribute, the Printer 2575 MUST respond as if the client had supplied this attribute with two 2576 values: 'job-uri' and 'job-id'. 2578 "which-jobs" (keyword): 2579 The client OPTIONALLY supplies this attribute. The Printer object 2580 MUST support this attribute. It indicates which Job objects MUST 2581 be returned by the Printer object. The values for this attribute 2582 are: 2584 'completed': This includes any Job object whose state is 2585 'completed', 'canceled', or 'aborted'. 2586 'not-completed': This includes any Job object whose state is 2587 'pending', 'processing', 'processing-stopped', or 'pending- 2588 held'. 2590 Expires December 11, 1999 2592 A Printer object MUST support both values. However, if the 2593 implementation does not keep jobs in the 'completed', 'canceled', 2594 and 'aborted' states, then it returns no jobs when the 'completed' 2595 value is supplied. 2597 If a client supplies some other value, the Printer object MUST copy 2598 the attribute and the unsupported value to the Unsupported 2599 Attributes response group, reject the request, and return the 2600 'client-error-attributes-or-values-not-supported' status code. 2602 If the client does not supply this attribute, the Printer object 2603 MUST respond as if the client had supplied the attribute with a 2604 value of 'not-completed'. 2606 "my-jobs" (boolean): 2607 The client OPTIONALLY supplies this attribute. The Printer object 2608 MUST support this attribute. It indicates whether jobs from all 2609 users or just the jobs submitted by the requesting user of this 2610 request MUST be returned by the Printer object. If the client does 2611 not supply this attribute, the Printer object MUST respond as if 2612 the client had supplied the attribute with a value of 'false', 2613 i.e., jobs from all users. The means for authenticating the 2614 requesting user and matching the jobs is described in section 8. 2616 3.2.6.2 Get-Jobs Response 2618 The Printer object returns all of the Job objects up to the number 2619 specified by the "limit" attribute that match the criteria as defined by 2620 the attribute values supplied by the client in the request. It is 2621 possible that no Job objects are returned since there may literally be 2622 no Job objects at the Printer, or there may be no Job objects that match 2623 the criteria supplied by the client. If the client requests any Job 2624 attributes at all, there is a set of Job Object Attributes returned for 2625 each Job object. 2627 It is not an error for the Printer to return 0 jobs. If the response 2628 returns 0 jobs because there are no jobs matching the criteria, and the 2629 request would have returned 1 or more jobs with a status code of 2630 'successful-ok' if there had been jobs matching the criteria, then the 2631 status code for 0 jobs MUST be 'successful-ok'. 2633 Group 1: Operation Attributes 2635 Status Message: 2636 In addition to the REQUIRED status code returned in every response, 2637 the response OPTIONALLY includes a "status-message" (text(255)) 2638 operation attribute as described in sections 13 and 3.1.6. 2640 Natural Language and Character Set: 2641 The "attributes-charset" and "attributes-natural-language" 2642 attributes as described in section 3.1.4.2. 2644 Group 2: Unsupported Attributes 2646 Expires December 11, 1999 2647 See section 3.1.7 for details on returning Unsupported Attributes. 2649 The response NEED NOT contain the "requested-attributes" operation 2650 attribute with any supplied values (attribute keywords) that were 2651 requested by the client but are not supported by the IPP object. If 2652 the Printer object does include unsupported attributes referenced 2653 in "requested-attributes" and such attributes include group names, 2654 such as 'all', the unsupported attributes MUST NOT include 2655 attributes described in the standard but not supported by the 2656 implementation. 2658 Groups 3 to N: Job Object Attributes 2660 The Printer object responds with one set of Job Object Attributes 2661 for each returned Job object. The Printer object ignores (does not 2662 respond with) any requested attribute or value which is not 2663 supported or which is restricted by the security policy in force, 2664 including whether the requesting user is the user that submitted 2665 the job (job originating user) or not (see section 8). However, 2666 the Printer object MUST respond with the 'unknown' value for any 2667 supported attribute (including all REQUIRED attributes) for which 2668 the Printer object does not know the value, unless it would violate 2669 the security policy. See the description of the "out-of-band" 2670 values in the beginning of Section 4.1. 2672 Jobs are returned in the following order: 2674 - If the client requests all 'completed' Jobs (Jobs in the 2675 'completed', 'aborted', or 'canceled' states), then the Jobs 2676 are returned newest to oldest (with respect to actual 2677 completion time) 2678 - If the client requests all 'not-completed' Jobs (Jobs in the 2679 'pending', 'processing', 'pending-held', and 'processing- 2680 stopped' states), then Jobs are returned in relative 2681 chronological order of expected time to complete (based on 2682 whatever scheduling algorithm is configured for the Printer 2683 object). 2685 3.2.7 Pause-Printer Operation 2687 This OPTIONAL operation allows a client to stop the Printer object from 2688 scheduling jobs on all its devices. Depending on implementation, the 2689 Pause-Printer operation MAY also stop the Printer from processing the 2690 current job or jobs. Any job that is currently being printed is either 2691 stopped as soon as the implementation permits or is completed, depending 2692 on implementation. The Printer object MUST still accept create 2693 operations to create new jobs, but MUST prevent any jobs from entering 2694 the 'processing' state. 2696 If the Pause-Printer operation is supported, then the Resume-Printer 2697 operation MUST be supported, and vice-versa. 2699 The IPP Printer stops the current job(s) on its device(s) that were in 2700 the 'processing' or 'processing-stopped' states as soon as the 2702 Expires December 11, 1999 2703 implementation permits. If the implementation will take appreciable 2704 time to stop, the IPP Printer adds the 'moving-to-paused' value to the 2705 Printer object's "printer-state-reasons" attribute (see section 4.4.12). 2706 When the device(s) have all stopped, the IPP Printer transitions the 2707 Printer object to the 'stopped' state, removes the 'moving-to-paused' 2708 value, if present, and adds the 'paused' value to the Printer object's 2709 "printer-state-reasons" attribute. 2711 When the current job(s) complete that were in the 'processing' state, 2712 the IPP Printer transitions them to the 'completed' state. When the 2713 current job(s) stop in mid processing that were in the 'processing' 2714 state, the IPP Printer transitions them to the 'processing-stopped' 2715 state and adds the 'printer-stopped' value to the job's "job-state- 2716 reasons" attribute. 2718 For any jobs that are 'pending' or 'pending-held', the 'printer-stopped' 2719 value of the jobs' "job-state-reasons" attribute also applies. However, 2720 the IPP Printer NEED NOT update those jobs' "job-state-reasons" 2721 attributes and only need return the 'printer-stopped' value when those 2722 jobs are queried (so-called "lazy evaluation"). 2724 Whether the Pause-Printer operation affects jobs that were submitted to 2725 the device from other sources than the IPP Printer object in the same 2726 way that the Pause-Printer operation affects jobs that were submitted to 2727 the IPP Printer object using IPP, depends on implementation, i.e., on 2728 whether the IPP protocol is being used as a universal management 2729 protocol or just to manage IPP jobs, respectively. 2731 The IPP Printer MUST accept the request in any state and transition the 2732 Printer to the indicated new "printer-state" before returning as 2733 follows: 2735 Current New "printer IPP Printer's response status 2736 "printer- "printer- -state- code and action: 2737 state" state" reasons" 2739 'idle' 'stopped' 'paused' 'successful-ok' 2740 'processing' 'processing' 'moving- OPTION 1: 'successful-ok'; 2741 to- Later, when all output has 2742 paused' stopped, the "printer-state" 2743 becomes 'stopped', and the 2744 'paused' value replaces the 2745 'moving-to-paused' value in the 2746 "printer-state-reasons" 2747 attribute 2748 'processing' 'stopped' 'paused' OPTION 2: 'successful-ok'; 2749 all device output stopped 2750 immediately 2751 'stopped' 'stopped' 'paused' 'successful-ok' 2753 Access Rights: The authenticated user (see section 8.3) performing this 2754 operation must be an operator or administrator of the Printer object 2755 (see Sections 1 and 8.5). Otherwise, the IPP Printer MUST reject the 2756 operation and return: 'client-error-forbidden', 'client-error-not- 2757 authenticated', or 'client-error-not-authorized' as appropriate. 2759 Expires December 11, 1999 2760 3.2.7.1 Pause-Printer Request 2762 The following groups of attributes are part of the Pause-Printer 2763 Request: 2765 Group 1: Operation Attributes 2767 Natural Language and Character Set: 2768 The "attributes-charset" and "attributes-natural-language" 2769 attributes as described in section 3.1.4.1. 2771 Target: 2772 The "printer-uri" (uri) operation attribute which is the target for 2773 this operation as described in section 3.1.5. 2775 Requesting User Name: 2776 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2777 by the client as described in section 8.3. 2779 3.2.7.2 Pause-Printer Response 2781 The following groups of attributes are part of the Pause-Printer 2782 Response: 2784 Group 1: Operation Attributes 2786 Status Message: 2787 In addition to the REQUIRED status code returned in every response, 2788 the response OPTIONALLY includes a "status-message" (text(255)) 2789 operation attribute as described in sections 13 and 3.1.6. 2791 Natural Language and Character Set: 2792 The "attributes-charset" and "attributes-natural-language" 2793 attributes as described in section 3.1.4.2. 2795 Group 2: Unsupported Attributes 2797 See section 3.1.7 for details on returning Unsupported Attributes. 2799 3.2.8 Resume-Printer Operation 2801 This operation allows a client to resume the Printer object scheduling 2802 jobs on all its devices. The Printer object MUST remove the 'paused' 2803 and 'moving-to-paused' values from the Printer object's "printer-state- 2804 reasons" attribute, if present. If there are no other reasons to keep a 2805 device paused (such as media-jam), the IPP Printer transitions itself to 2806 the 'processing' or 'idle' states, depending on whether there are jobs 2807 to be processed or not, respectively, and the device(s) resume 2808 processing jobs. 2810 If the Pause-Printer operation is supported, then the Resume-Printer 2811 operation MUST be supported, and vice-versa. 2813 The IPP Printer removes the 'printer-stopped' value from any job's "job- 2814 state-reasons" attributes contained in that Printer. 2816 Expires December 11, 1999 2817 The IPP Printer MUST accept the request in any state, transition the 2818 Printer object to the indicated new state as follows: 2820 Current New "printer- IPP Printer's response status code and 2821 "printer- state" action: 2822 state" 2824 'idle' 'idle' 'successful-ok' 2825 'processing 'processing' 'successful-ok' 2826 ' 2827 'stopped' 'processing' 'successful-ok'; 2828 when there are jobs to be processed 2829 'stopped' 'idle' 'successful-ok'; 2830 when there are no jobs to be processed. 2832 Access Rights: The authenticated user (see section 8.3) performing this 2833 operation must be an operator or administrator of the Printer object 2834 (see Sections 1 and 8.5). Otherwise, the IPP Printer MUST reject the 2835 operation and return: 'client-error-forbidden', 'client-error-not- 2836 authenticated', or 'client-error-not-authorized' as appropriate. 2838 The Resume-Printer Request and Resume-Printer Response have the same 2839 attribute groups and attributes as the Pause-Printer operation (see 2840 sections 3.2.7.1 and 3.2.7.2). 2842 3.2.9 Purge-Jobs Operation 2844 This OPTIONAL operation allows a client to remove all jobs from an IPP 2845 Printer object, regardless of their job states, including jobs in the 2846 Printer object's Job History (see Section 4.3.7.2). After a Purge-Jobs 2847 operation has been performed, a Printer object MUST return no jobs in 2848 subsequent Get-Job-Attributes and Get-Jobs responses (until new jobs are 2849 submitted). 2851 Whether the Purge-Jobs (and Get-Jobs) operation affects jobs that were 2852 submitted to the device from other sources than the IPP Printer object 2853 in the same way that the Purge-Jobs operation affects jobs that were 2854 submitted to the IPP Printer object using IPP, depends on 2855 implementation, i.e., on whether the IPP protocol is being used as a 2856 universal management protocol or just to manage IPP jobs, respectively. 2858 Note: if an operator wants to cancel all jobs without clearing out the 2859 Job History, the operator uses the Cancel-Job operation on each job 2860 instead of using the Purge-Job operation. 2862 The Printer object MUST accept this operation in any state and 2863 transition the Printer object to the 'idle' state. 2865 Access Rights: The authenticated user (see section 8.3) performing this 2866 operation must be an operator or administrator of the Printer object 2867 (see Sections 1 and 8.5). Otherwise, the IPP object MUST reject the 2868 operation and return: client-error-forbidden, client-error-not- 2869 authenticated, and client-error-not-authorized as appropriate. 2871 Expires December 11, 1999 2872 The Purge-Jobs Request and Purge-Jobs Response have the same attribute 2873 groups and attributes as the Pause-Printer operation (see sections 2874 3.2.7.1 and 3.2.7.2). 2876 3.3 Job Operations 2878 All Job operations are directed at Job objects. A client MUST always 2879 supply some means of identifying the Job object in order to identify the 2880 correct target of the operation. That job identification MAY either be 2881 a single Job URI or a combination of a Printer URI with a Job ID. The 2882 IPP object implementation MUST support both forms of identification for 2883 every job. 2885 3.3.1 Send-Document Operation 2887 This OPTIONAL operation allows a client to create a multi-document Job 2888 object that is initially "empty" (contains no documents). In the 2889 Create-Job response, the Printer object returns the Job object's URI 2890 (the "job-uri" attribute) and the Job object's 32-bit identifier (the 2891 "job-id" attribute). For each new document that the client desires to 2892 add, the client uses a Send-Document operation. Each Send-Document 2893 Request contains the entire stream of document data for one document. 2895 If the Printer supports this operation but does not support multiple 2896 documents per job, the Printer MUST reject subsequent Send-Document 2897 operations supplied with data and return the 'server-error-multiple- 2898 document-jobs-not-supported'. However, the Printer MUST accept the 2899 first document with a 'true' or 'false' value for the "last-document" 2900 operation attribute (see below), so that clients MAY always submit one 2901 document jobs with a 'false' value for "last-document" in the first 2902 Send-Document and a 'true' for "last-document" in the second Send- 2903 Document (with no data). 2905 Since the Create-Job and the send operations (Send-Document or Send-URI 2906 operations) that follow could occur over an arbitrarily long period of 2907 time for a particular job, a client MUST send another send operation 2908 within an IPP Printer defined minimum time interval after the receipt of 2909 the previous request for the job. If a Printer object supports multiple 2910 document jobs, the Printer object MUST support the "multiple-operation- 2911 time-out" attribute (see section 4.4.31). This attribute indicates the 2912 minimum number of seconds the Printer object will wait for the next send 2913 operation before taking some recovery action. 2915 An IPP object MUST recover from an errant client that does not supply a 2916 send operation, sometime after the minimum time interval specified by 2917 the Printer object's "multiple-operation-time-out" attribute. Such 2918 recovery MAY include any of the following or other recovery actions: 2920 1. Assume that the Job is an invalid job, start the process of 2921 changing the job state to 'aborted', add the 'aborted-by-system' 2922 value to the job's "job-state-reasons" attribute (see section 2923 4.3.8), and clean up all resources associated with the Job. In 2924 this case, if another send operation is finally received, the 2926 Expires December 11, 1999 2927 Printer responds with an "client-error-not-possible" or "client- 2928 error-not-found" depending on whether or not the Job object is 2929 still around when the send operation finally arrives. 2930 2. Assume that the last send operation received was in fact the last 2931 document (as if the "last-document" flag had been set to 'true'), 2932 close the Job object, and proceed to process it (i.e., move the 2933 Job's state to 'pending'). 2934 3. Assume that the last send operation received was in fact the last 2935 document, close the Job, but move it to the 'pending-held' and add 2936 the 'submission-interrupted' value to the job's "job-state-reasons" 2937 attribute (see section 4.3.8). This action allows the user or an 2938 operator to determine whether to continue processing the Job by 2939 moving it back to the 'pending' state using the Release-Job 2940 operation (see section 3.3.6) or to cancel the job using the 2941 Cancel-Job operation (see section 3.3.3). 2943 Each implementation is free to decide the "best" action to take 2944 depending on local policy, whether any documents have been added, 2945 whether the implementation spools jobs or not, and/or any other piece 2946 of information available to it. If the choice is to abort the Job 2947 object, it is possible that the Job object may already have been 2948 processed to the point that some media sheet pages have been printed. 2950 Access Rights: The authenticated user (see section 8.3) performing this 2951 operation must either be the job owner (as determined in the Create-Job 2952 operation) or an operator or administrator of the Printer object (see 2953 Sections 1 and 8.5). Otherwise, the IPP object MUST reject the 2954 operation and return: 'client-error-forbidden', 'client-error-not- 2955 authenticated', or 'client-error-not-authorized' as appropriate. 2957 3.3.1.1 Send-Document Request 2959 The following attribute sets are part of the Send-Document Request: 2961 Group 1: Operation Attributes 2963 Natural Language and Character Set: 2964 The "attributes-charset" and "attributes-natural-language" 2965 attributes as described in section 3.1.4.1. 2967 Target: 2968 Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX))or 2969 (2) the "job-uri" (uri) operation attribute(s) which define the 2970 target for this operation as described in section 3.1.5. 2972 Requesting User Name: 2973 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2974 by the client as described in section 8.3. 2976 "document-name" (name(MAX)): 2977 The client OPTIONALLY supplies this attribute. The Printer object 2978 MUST support this attribute. It contains the client supplied 2979 document name. The document name MAY be different than the Job 2981 Expires December 11, 1999 2982 name. It might be helpful, but NEED NOT be unique across multiple 2983 documents in the same Job. Typically, the client software 2984 automatically supplies the document name on behalf of the end user 2985 by using a file name or an application generated name. See the 2986 description of the "document-name" operation attribute in the 2987 Print-Job Request (section 3.2.1.1) for more information about this 2988 attribute. 2990 "compression" (type3 keyword) 2991 See the description of "compression" for the Print-Job operation in 2992 Section 3.2.1.1. 2994 "document-format" (mimeMediaType) : 2995 See the description of "document-format" for the Print-Job 2996 operation in Section 3.2.1.1. 2998 "document-natural-language" (naturalLanguage): 2999 The client OPTIONALLY supplies this attribute. The Printer object 3000 OPTIONALLY supports this attribute. This attribute specifies the 3001 natural language of the document for those document-formats that 3002 require a specification of the natural language in order to image 3003 the document unambiguously. There are no particular values 3004 required for the Printer object to support. 3006 "last-document" (boolean): 3007 The client MUST supply this attribute. The Printer object MUST 3008 support this attribute. It is a boolean flag that is set to 'true' 3009 if this is the last document for the Job, 'false' otherwise. 3011 Group 2: Document Content 3013 The client MUST supply the document data if the "last-document" 3014 flag is set to 'false'. However, since a client might not know 3015 that the previous document sent with a Send-Document (or Send-URI) 3016 operation was the last document (i.e., the "last-document" 3017 attribute was set to 'false'), it is legal to send a Send-Document 3018 request with no document data where the "last-document" flag is set 3019 to 'true'. Such a request MUST NOT increment the value of the Job 3020 object's "number-of-documents" attribute, since no real document 3021 was added to the job. 3023 3.3.1.2 Send-Document Response 3025 The following sets of attributes are part of the Send-Document Response: 3027 Group 1: Operation Attributes 3029 Status Message: 3030 In addition to the REQUIRED status code returned in every response, 3031 the response OPTIONALLY includes a "status-message" (text(255)) 3032 operation attribute as described in sections 13 and 3.1.6. 3034 Expires December 11, 1999 3036 Natural Language and Character Set: 3037 The "attributes-charset" and "attributes-natural-language" 3038 attributes as described in section 3.1.4.2. 3040 Group 2: Unsupported Attributes 3042 See section 3.1.7 for details on returning Unsupported Attributes. 3044 Group 3: Job Object Attributes 3046 This is the same set of attributes as described in the Print-Job 3047 response (see section 3.2.1.2). 3049 3.3.2 Send-URI Operation 3051 This OPTIONAL operation is identical to the Send-Document operation (see 3052 section 3.3.1) except that a client MUST supply a URI reference 3053 ("document-uri" operation attribute) rather than the document data 3054 itself. If a Printer object supports this operation, clients can use 3055 both Send-URI or Send-Document operations to add new documents to an 3056 existing multi-document Job object. However, if a client needs to 3057 indicate that the previous Send-URI or Send-Document was the last 3058 document, the client MUST use the Send-Document operation with no 3059 document data and the "last-document" flag set to 'true' (rather than 3060 using a Send-URI operation with no "document-uri" operation attribute). 3062 If a Printer object supports this operation, it MUST also support the 3063 Print-URI operation (see section 3.2.2). 3065 The Printer object MUST validate the syntax and URI scheme of the 3066 supplied URI before returning a response, just as in the Print-URI 3067 operation. The IPP Printer MAY validate the accessibility of the 3068 document as part of the operation or subsequently (see section 3.2.2). 3070 3.3.3 Cancel-Job Operation 3072 This REQUIRED operation allows a client to cancel a Print Job from the 3073 time the job is created up to the time it is completed, canceled, or 3074 aborted. Since a Job might already be printing by the time a Cancel-Job 3075 is received, some media sheet pages might be printed before the job is 3076 actually terminated. 3078 The IPP object MUST accept or reject the request based on the job's 3079 current state and transition the job to the indicated new state as 3080 follows: 3082 Expires December 11, 1999 3083 Current "job- New "job- IPP object's response status 3084 state" state" code and action: 3086 'pending' 'canceled' 'successful-ok' 3087 'pending-held' 'canceled' 'successful-ok' 3088 'processing' 'canceled' 'successful-ok' 3089 'processing' 'processing' 'successful-ok' See Rule 1 3090 'processing' 'processing' 'client-error-not-possible' 3091 See Rule 2 3092 'processing- 'canceled' 'successful-ok' 3093 stopped' 3094 'processing- 'processing- 'successful-ok' See Rule 1 3095 stopped' stopped' 3096 'processing- 'processing- 'client-error-not-possible' 3097 stopped' stopped' See Rule 2 3098 'completed' 'completed' 'client-error-not-possible' 3099 'canceled' 'canceled' 'client-error-not-possible' 3100 'aborted' 'aborted' 'client-error-not-possible' 3102 Rule 1: If the implementation requires some measurable time to cancel 3103 the job in the 'processing' or 'processing-stopped' job states, the IPP 3104 object MUST add the 'processing-to-stop-point' value to the job's "job- 3105 state-reasons" attribute and then transition the job to the 'canceled' 3106 state when the processing ceases (see section 4.3.8). 3108 Rule 2: If the Job object already has the 'processing-to-stop-point' 3109 value in its "job-state-reasons" attribute, then the Printer object MUST 3110 reject a Cancel-Job operation. 3112 Access Rights: The authenticated user (see section 8.3) performing this 3113 operation must either be the job owner or an operator or administrator 3114 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3115 object MUST reject the operation and return: 'client-error-forbidden', 3116 'client-error-not-authenticated', or 'client-error-not-authorized' as 3117 appropriate. 3119 3.3.3.1 Cancel-Job Request 3121 The following groups of attributes are part of the Cancel-Job Request: 3123 Group 1: Operation Attributes 3125 Natural Language and Character Set: 3126 The "attributes-charset" and "attributes-natural-language" 3127 attributes as described in section 3.1.4.1. 3129 Target: 3130 Either (1) the "printer-uri" (uri) plus "job-id" 3131 (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) 3132 which define the target for this operation as described in section 3133 3.1.5. 3135 Expires December 11, 1999 3137 Requesting User Name: 3138 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 3139 by the client as described in section 8.3. 3141 "message" (text(127)): 3142 The client OPTIONALLY supplies this attribute. The Printer object 3143 OPTIONALLY supports this attribute. It is a message to the 3144 operator. This "message" attribute is not the same as the "job- 3145 message-from-operator" attribute. That attribute is used to report 3146 a message from the operator to the end user that queries that 3147 attribute. This "message" operation attribute is used to send a 3148 message from the client to the operator along with the operation 3149 request. It is an implementation decision of how or where to 3150 display this message to the operator (if at all). 3152 3.3.3.2 Cancel-Job Response 3154 The following sets of attributes are part of the Cancel-Job Response: 3156 Group 1: Operation Attributes 3158 Status Message: 3159 In addition to the REQUIRED status code returned in every response, 3160 the response OPTIONALLY includes a "status-message" (text(255)) 3161 operation attribute as described in sections 13 and 3.1.6. 3163 Natural Language and Character Set: 3164 The "attributes-charset" and "attributes-natural-language" 3165 attributes as described in section 3.1.4.2. 3167 Group 2: Unsupported Attributes 3169 See section 3.1.7 for details on returning Unsupported Attributes. 3171 Once a successful response has been sent, the implementation guarantees 3172 that the Job will eventually end up in the 'canceled' state. Between the 3173 time of the Cancel-Job operation is accepted and when the job enters the 3174 'canceled' job-state (see section 4.3.7), the "job-state-reasons" 3175 attribute SHOULD contain the 'processing-to-stop-point' value which 3176 indicates to later queries that although the Job might still be 3177 'processing', it will eventually end up in the 'canceled' state, not the 3178 'completed' state. 3180 3.3.4 Get-Job-Attributes Operation 3182 This REQUIRED operation allows a client to request the values of 3183 attributes of a Job object and it is almost identical to the Get- 3184 Printer-Attributes operation (see section 3.2.5). The only differences 3185 are that the operation is directed at a Job object rather than a Printer 3186 object, there is no "document-format" operation attribute used when 3188 Expires December 11, 1999 3189 querying a Job object, and the returned attribute group is a set of Job 3190 object attributes rather than a set of Printer object attributes. 3192 For Jobs, the possible names of attribute groups are: 3194 - 'job-template': the subset of the Job Template attributes that 3195 apply to a Job object (the first column of the table in Section 3196 4.2) that the implementation supports for Job objects. 3197 - 'job-description': the subset of the Job Description attributes 3198 specified in Section 4.3 that the implementation supports for Job 3199 objects. 3200 - 'all': the special group 'all' that includes all attributes that 3201 the implementation supports for Job objects. 3203 Since a client MAY request specific attributes or named groups, there is 3204 a potential that there is some overlap. For example, if a client 3205 requests, 'job-name' and 'job-description', the client is actually 3206 requesting the "job-name" attribute once by naming it explicitly, and 3207 once by inclusion in the 'job-description' group. In such cases, the 3208 Printer object NEED NOT return the attribute only once in the response 3209 even if it is requested multiple times. The client SHOULD NOT request 3210 the same attribute in multiple ways. 3212 It is NOT REQUIRED that a Job object support all attributes belonging to 3213 a group (since some attributes are OPTIONAL). However it is REQUIRED 3214 that each Job object support all group names. 3216 3.3.4.1 Get-Job-Attributes Request 3218 The following groups of attributes are part of the Get-Job-Attributes 3219 Request when the request is directed at a Job object: 3221 Group 1: Operation Attributes 3223 Natural Language and Character Set: 3224 The "attributes-charset" and "attributes-natural-language" 3225 attributes as described in section 3.1.4.1. 3227 Target: 3228 Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) 3229 or (2) the "job-uri" (uri) operation attribute(s) which define the 3230 target for this operation as described in section 3.1.5. 3232 Requesting User Name: 3233 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 3234 by the client as described in section 8.3. 3236 "requested-attributes" (1setOf keyword) : 3237 The client OPTIONALLY supplies this attribute. The IPP object MUST 3238 support this attribute. It is a set of attribute names and/or 3239 attribute group names in whose values the requester is interested. 3240 If the client omits this attribute, the IPP object MUST respond as 3241 if this attribute had been supplied with a value of 'all'. 3243 Expires December 11, 1999 3245 3.3.4.2 Get-Job-Attributes Response 3247 The Printer object returns the following sets of attributes as part of 3248 the Get-Job-Attributes Response: 3250 Group 1: Operation Attributes 3252 Status Message: 3253 In addition to the REQUIRED status code returned in every response, 3254 the response OPTIONALLY includes a "status-message" (text(255)) 3255 operation attribute as described in sections 13 and 3.1.6. 3257 Natural Language and Character Set: 3258 The "attributes-charset" and "attributes-natural-language" 3259 attributes as described in section 3.1.4.2. The "attributes- 3260 natural-language" MAY be the natural language of the Job object, 3261 rather than the one requested. 3263 Group 2: Unsupported Attributes 3265 See section 3.1.7 for details on returning Unsupported Attributes. 3267 The response NEED NOT contain the "requested-attributes" operation 3268 attribute with any supplied values (attribute keywords) that were 3269 requested by the client but are not supported by the IPP object. If 3270 the Printer object does include unsupported attributes referenced 3271 in "requested-attributes" and such attributes include group names, 3272 such as 'all', the unsupported attributes MUST NOT include 3273 attributes described in the standard but not supported by the 3274 implementation. 3276 Group 3: Job Object Attributes 3278 This is the set of requested attributes and their current values. 3279 The IPP object ignores (does not respond with) any requested 3280 attribute or value which is not supported or which is restricted by 3281 the security policy in force, including whether the requesting user 3282 is the user that submitted the job (job originating user) or not 3283 (see section 8). However, the IPP object MUST respond with the 3284 'unknown' value for any supported attribute (including all REQUIRED 3285 attributes) for which the IPP object does not know the value, 3286 unless it would violate the security policy. See the description 3287 of the "out-of-band" values in the beginning of Section 4.1. 3289 3.3.5 Hold-Job Operation 3291 This OPTIONAL operation allows a client to hold a pending job in the 3292 queue so that it is not eligible for scheduling. If the Hold-Job 3293 operation is supported, then the Release-Job operation MUST be 3294 supported, and vice-versa. The OPTIONAL "job-hold-until" operation 3295 attribute allows a client to specify whether to hold the job 3296 indefinitely or until a specified time period, if supported. 3298 Expires December 11, 1999 3299 The IPP object MUST accept or reject the request based on the job's 3300 current state and transition the job to the indicated new state as 3301 follows: 3303 Current "job- New "job-state" IPP object's response status 3304 state" code and action: 3306 'pending' 'pending-held' 'successful-ok' See Rule 1 3307 'pending' 'pending' 'successful-ok' See Rule 2 3308 'pending-held' 'pending-held' 'successful-ok' See Rule 1 3309 'pending-held' 'pending' 'successful-ok' See Rule 2 3310 'processing' 'processing' 'client-error-not-possible' 3311 'processing- 'processing- 'client-error-not-possible' 3312 stopped' stopped' 3313 'completed' 'completed' 'client-error-not-possible' 3314 'canceled' 'canceled' 'client-error-not-possible' 3315 'aborted' 'aborted' 'client-error-not-possible' 3317 Rule 1: If the implementation supports multiple reasons for a job to be 3318 in the 'pending-held' state, the IPP object MUST add the 'job-hold- 3319 until-specified' value to the job's "job-state-reasons" attribute. 3321 Rule 2: If the IPP object supports the "job-hold-until" operation 3322 attribute, but the specified time period has already started (or is the 3323 'no-hold' value) and there are no other reasons to hold the job, the IPP 3324 object MUST make the job be a candidate for processing immediately (see 3325 Section 4.2.2) by putting the job in the 'pending' state. 3327 Note: In order to keep the Hold-Job operation simple, such a request is 3328 rejected when the job is in the 'processing' or 'processing-stopped' 3329 states. If an operation is needed to hold jobs while in these states, 3330 it will be added as an additional operation, rather than overloading the 3331 Hold-Job operation. Then it is clear to clients by querying the Printer 3332 object's "operations-supported" (see Section 4.4.15) and the Job 3333 object's "job-state" (see Section 4.3.7) attributes which operations are 3334 possible. 3336 Access Rights: The authenticated user (see section 8.3) performing this 3337 operation must either be the job owner or an operator or administrator 3338 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3339 object MUST reject the operation and return: 'client-error-forbidden', 3340 'client-error-not-authenticated', or 'client-error-not-authorized' as 3341 appropriate. 3343 3.3.5.1 Hold-Job Request 3345 The groups and operation attributes are the same as for a Cancel-Job 3346 request (see section 3.3.3.1), with the addition of the following Group 3347 1 Operation attribute: 3349 "job-hold-until" (type3 keyword | name(MAX)): 3350 The client OPTIONALLY supplies this Operation attribute. The IPP 3351 object MUST support this operation attribute in a Hold-Job request, 3352 if it supports the "job-hold-until" Job template attribute in 3353 create operations. See section 4.2.2. The IPP object SHOULD 3355 Expires December 11, 1999 3356 support the "job-hold-until" Job Template attribute for use in job 3357 create operations with at least the 'indefinite' value, if it 3358 supports the Hold-Job operation. Otherwise, a client cannot create 3359 a job and hold it immediately (without picking some supported time 3360 period in the future). 3362 If supplied and supported as specified in the Printer's "job-hold- 3363 until-supported" attribute, the IPP object copies the supplied 3364 operation attribute to the Job object, replacing the job's previous 3365 "job-hold-until" attribute, if present, and makes the job a 3366 candidate for scheduling during the supplied named time period. 3368 If supplied, but either the "job-hold-until" Operation attribute 3369 itself or the value supplied is not supported, the IPP object 3370 accepts the request, returns the unsupported attribute or value in 3371 the Unsupported Attributes Group according to section 3.1.7, 3372 returns the 'successful-ok-ignored-or-substituted-attributes, and 3373 holds the job indefinitely until a client performs a subsequent 3374 Release-Job operation. 3376 If the client (1) supplies a value that specifies a time period 3377 that has already started or the 'no-hold' value (meaning don't hold 3378 the job) and (2) the IPP object supports the "job-hold-until" 3379 operation attribute and there are no other reasons to hold the job, 3380 the IPP object MUST accept the operation and make the job be a 3381 candidate for processing immediately (see Section 4.2.2). 3383 If the client does not supply a "job-hold-until" Operation 3384 attribute in the request, the IPP object MUST populate the job 3385 object with a "job-hold-until" attribute with the 'indefinite' 3386 value (if IPP object supports the "job-hold-until" attribute) and 3387 hold the job indefinitely, until a client performs a Release-Job 3388 operation. 3390 3.3.5.2 Hold-Job Response 3392 The groups and attributes are the same as for a Cancel-Job response (see 3393 section 3.3.3.2). 3395 3.3.6 Release-Job Operation 3397 This OPTIONAL operation allows a client to release a previously held job 3398 so that it is again eligible for scheduling. If the Hold-Job operation 3399 is supported, then the Release-Job operation MUST be supported, and 3400 vice-versa. 3402 This operation removes the "job-hold-until" job attribute, if present, 3403 from the job object that had been supplied in the create or most recent 3404 Hold-Job or Restart-Job operation and remove its effect on the job. The 3405 IPP object MUST remove the 'job-hold-until-specified' value from the 3406 job's "job-state-reasons" attribute, if present. See section 4.3.8. 3408 Expires December 11, 1999 3409 The IPP object MUST accept or reject the request based on the job's 3410 current state and transition the job to the indicated new state as 3411 follows: 3413 Current "job- New "job-state" IPP object's response status 3414 state" code and action: 3416 'pending' 'pending' 'successful-ok' 3417 No effect on the job. 3418 'pending-held' 'pending-held' 'successful-ok' See Rule 1 3419 'pending-held' 'pending' 'successful-ok' 3420 'processing' 'processing' 'successful-ok' 3421 No effect on the job. 3422 'processing- 'processing- 'successful-ok' 3423 stopped' stopped' No effect on the job. 3424 'completed' 'completed' 'client-error-not-possible' 3425 'canceled' 'canceled' 'client-error-not-possible' 3426 'aborted' 'aborted' 'client-error-not-possible' 3428 Rule 1: If there are other reasons to keep the job in the 'pending- 3429 held' state, such as 'resources-are-not-ready', the job remains in the 3430 'pending-held' state. Thus the 'pending-held' state is not just for 3431 jobs that have the 'job-hold-until' applied to them, but are for any 3432 reason to keep the job from being a candidate for scheduling and 3433 processing, such as 'resources-are-not-ready'. See the "job-hold-until" 3434 attribute (section 4.2.2). 3436 Access Rights: The authenticated user (see section 8.3) performing this 3437 operation must either be the job owner or an operator or administrator 3438 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3439 object MUST reject the operation and return: 'client-error-forbidden', 3440 'client-error-not-authenticated', or 'client-error-not-authorized' as 3441 appropriate. 3443 The Release-Job Request and Release-Job Response have the same attribute 3444 groups and attributes as the Cancel-Job operation (see section 3.3.3.1 3445 and 3.3.3.2). 3447 3.3.7 Restart-Job Operation 3449 This OPTIONAL operation allows a client to restart a job that is 3450 retained in the queue after processing has completed (see section 3451 4.3.7.2). 3453 The job is moved to the 'pending' job state and restarts at the 3454 beginning on the same IPP Printer object with the same attribute values. 3455 The Job Description attributes that accumulate job progress, such as 3456 "job-impressions-completed", "job-media-sheets-completed", and "job-k- 3457 octets-processed", MUST be reset to 0 so that they give an accurate 3458 record of the job from its restart point. The job object MUST continue 3459 to use the same "job-uri" and "job-id" attribute values. 3461 Note: If in the future an operation is needed that does not reset the 3462 job progress attributes, then a new operation will be defined which 3464 Expires December 11, 1999 3465 makes a copy of the job, assigns a new "job-uri" and "job-id" to the 3466 copy and resets the job progress attributes in the new copy only. 3468 The IPP object MUST accept or reject the request based on the job's 3469 current state, transition the job to the indicated new state as follows: 3471 Current "job- New "job-state" IPP object's response status 3472 state" code and action: 3474 'pending' 'pending' 'client-error-not-possible' 3475 'pending-held' 'pending-held' 'client-error-not-possible' 3476 'processing' 'processing' 'client-error-not-possible' 3477 'processing- 'processing- 'client-error-not-possible' 3478 stopped' stopped' 3479 'completed' 'pending' 'successful-ok' - job is started 3480 over. 3481 'completed' 'completed' 'client-error-not-possible' - 3482 see Rule 1 3483 'canceled' 'pending' 'successful-ok' - job is started 3484 over. 3485 'canceled' 'canceled' 'client-error-not-possible' - 3486 see Rule 1 3487 'aborted' 'pending' 'successful-ok' - job is started 3488 over. 3489 'aborted' 'aborted' 'client-error-not-possible' - 3490 see Rule 1 3492 Rule 1: If the Job Retention Period has expired for the job in this 3493 state, then the IPP object rejects the operation. See section 4.3.7.2. 3495 Note: In order to prevent a user from inadvertently restarting a job in 3496 the middle, the Restart-Job request is rejected when the job is in the 3497 'processing' or 'processing-stopped' states. If in the future an 3498 operation is needed to hold or restart jobs while in these states, it 3499 will be added as an additional operation, rather than overloading the 3500 Restart-Job operation, so that it is clear that the user intended that 3501 the current job not be completed. 3503 Access Rights: The authenticated user (see section 8.3) performing this 3504 operation must either be the job owner or an operator or administrator 3505 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3506 object MUST reject the operation and return: 'client-error-forbidden', 3507 'client-error-not-authenticated', or 'client-error-not-authorized' as 3508 appropriate. 3510 3.3.7.1 Restart-Job Request 3512 The groups and attributes are the same as for a Cancel-Job request (see 3513 section 3.3.3.1), with the addition of the following Group 1 Operation 3514 attribute: 3516 "job-hold-until" (type3 keyword | name(MAX)): 3517 The client OPTIONALLY supplies this attribute. The IPP object MUST 3518 support this Operation attribute in a Restart-Job request, if it 3520 Expires December 11, 1999 3521 supports the "job-hold-until" Job Template attribute in create 3522 operations. See section 4.2.2. Otherwise, the IPP object NEED NOT 3523 support the "job-hold-until" Operation attribute in a Restart-Job 3524 request. 3526 If supplied and supported as specified in the Printer's "job-hold- 3527 until-supported" attribute, the IPP object copies the supplied 3528 Operation attribute to the Job object, replacing the job's previous 3529 "job-hold-until" attribute, if present, and makes the job a 3530 candidate for scheduling during the supplied named time period. 3531 See section 4.2.2. 3533 If supplied, but the value is not supported, the IPP object accepts 3534 the request, returns the unsupported attribute or value in the 3535 Unsupported Attributes Group according to section 3.1.7, returns 3536 the 'successful-ok-ignored-or-substituted-attributes' status code, 3537 and holds the job indefinitely until a client performs a subsequent 3538 Release-Job operation. 3540 If supplied, but the "job-hold-until" Operation attribute itself is 3541 not supported, the IPP object accepts the request, returns the 3542 unsupported attribute with the out-of-band 'unsupported' value in 3543 the Unsupported Attributes Group according to section 3.1.7, 3544 returns the 'successful-ok-ignored-or-substituted-attributes' 3545 status code, and restarts the job, i.e., ignores the "job-hold- 3546 until" attribute. 3548 If the client (1) supplies a value that specifies a time period 3549 that has already started or the 'no-hold' value (meaning don't hold 3550 the job) and (2) the IPP object supports the "job-hold-until" 3551 operation attribute and there are no other reasons to hold the job, 3552 the IPP object makes the job a candidate for processing immediately 3553 (see Section 4.2.2). 3555 If the client does not supply a "job-hold-until" operation 3556 attribute in the request, the IPP object removes the "job-hold- 3557 until" attribute, if present, from the job. If there are no other 3558 reasons to hold the job, the Restart-Job operation makes the job a 3559 candidate for processing immediately (see Section 4.2.2). 3561 3.3.7.2 Restart-Job Response 3563 The groups and attributes are the same as for a Cancel-Job response (see 3564 section 3.3.3.2). 3566 Note: In the future an OPTIONAL Modify-Job or Set-Job-Attributes 3567 operation may be specified that allows the client to modify other 3568 attributes before releasing the restarted job. 3570 Expires December 11, 1999 3571 4. Object Attributes 3573 This section describes the attributes with their corresponding attribute 3574 syntaxes and values that are part of the IPP model. The sections below 3575 show the objects and their associated attributes which are included 3576 within the scope of this protocol. Many of these attributes are derived 3577 from other relevant documents: 3579 - Document Printing Application (DPA) [ISO10175] 3580 - RFC 1759 Printer MIB [RFC1759] 3582 Each attribute is uniquely identified in this document using a "keyword" 3583 (see section 12.2.1) which is the name of the attribute. The keyword is 3584 included in the section header describing that attribute. 3586 Note: Not only are keywords used to identify attributes, but one of the 3587 attribute syntaxes described below is "keyword" so that some attributes 3588 have keyword values. Therefore, these attributes are defined as having 3589 an attribute syntax that is a set of keywords. 3591 4.1 Attribute Syntaxes 3593 This section defines the basic attribute syntax types that all clients 3594 and IPP objects MUST be able to accept in responses and accept in 3595 requests, respectively. Each attribute description in sections 3 and 4 3596 includes the name of attribute syntax(es) in the heading (in 3597 parentheses). A conforming implementation of an attribute MUST include 3598 the semantics of the attribute syntax(es) so identified. Section 6.3 3599 describes how the protocol can be extended with new attribute syntaxes. 3601 The attribute syntaxes are specified in the following sub-sections, 3602 where the sub-section heading is the keyword name of the attribute 3603 syntax inside the single quotes. In operation requests and responses 3604 each attribute value MUST be represented as one of the attribute 3605 syntaxes specified in the sub-section heading for the attribute. In 3606 addition, the value of an attribute in a response (but not in a request) 3607 MAY be one of the "out-of-band" values whose special encoding rules are 3608 defined in the "Encoding and Transport" document [IPP-PRO]. Standard 3609 "out-of-band" values are: 3611 'unknown': The attribute is supported by the IPP object, but the 3612 value is unknown to the IPP object for some reason. 3613 'unsupported': The attribute is unsupported by the IPP object. This 3614 value MUST be returned only as the value of an attribute in the 3615 Unsupported Attributes Group. 3616 'no-value': The attribute is supported by the Printer object, but the 3617 administrator has not yet configured a value. 3619 All attributes in a request MUST have one or more values as defined in 3620 Sections 4.2 to 4.4. Thus clients MUST NOT supply attributes with "out- 3621 of-band" values. All attributes in a response MUST have one or more 3623 Expires December 11, 1999 3624 values as defined in Sections 4.2 to 4.4 or a single "out-of-band" 3625 value. 3627 Most attributes are defined to have a single attribute syntax. However, 3628 a few attributes (e.g., "job-sheet", "media", "job-hold-until") are 3629 defined to have several attribute syntaxes, depending on the value. 3630 These multiple attribute syntaxes are separated by the "|" character in 3631 the sub-section heading to indicate the choice. Since each value MUST 3632 be tagged as to its attribute syntax in the protocol, a single-valued 3633 attribute instance may have any one of its attribute syntaxes and a 3634 multi-valued attribute instance may have a mixture of its defined 3635 attribute syntaxes. 3637 4.1.1 'text' 3639 A text attribute is an attribute whose value is a sequence of zero or 3640 more characters encoded in a maximum of 1023 ('MAX') octets. MAX is the 3641 maximum length for each value of any text attribute. However, if an 3642 attribute will always contain values whose maximum length is much less 3643 than MAX, the definition of that attribute will include a qualifier that 3644 defines the maximum length for values of that attribute. For example: 3645 the "printer-location" attribute is specified as "printer-location 3646 (text(127))". In this case, text values for "printer-location" MUST NOT 3647 exceed 127 octets; if supplied with a longer text string via some 3648 external interface (other than the protocol), implementations are free 3649 to truncate to this shorter length limitation. 3651 In this document, all text attributes are defined using the 'text' 3652 syntax. However, 'text' is used only for brevity; the formal 3653 interpretation of 'text' is: 'textWithoutLanguage | textWithLanguage'. 3654 That is, for any attribute defined in this document using the 'text' 3655 attribute syntax, all IPP objects and clients MUST support both the 3656 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes. 3657 However, in actual usage and protocol execution, objects and clients 3658 accept and return only one of the two syntax per attribute. The syntax 3659 'text' never appears "on-the-wire". 3661 Both 'textWithoutLanguage' and 'textWithLanguage' are needed to support 3662 the real world needs of interoperability between sites and systems that 3663 use different natural languages as the basis for human communication. 3664 Generally, one natural language applies to all text attributes in a 3665 given request or response. The language is indicated by the "attributes- 3666 natural-language" operation attribute defined in section 3.1.4 or 3667 "attributes-natural-language" job attribute defined in section 4.3.20, 3668 and there is no need to identify the natural language for each text 3669 string on a value-by-value basis. In these cases, the attribute syntax 3670 'textWithoutLanguage' is used for text attributes. In other cases, the 3671 client needs to supply or the Printer object needs to return a text 3672 value in a natural language that is different from the rest of the text 3673 values in the request or response. In these cases, the client or 3674 Printer object uses the attribute syntax 'textWithLanguage' for text 3675 attributes (this is the Natural Language Override mechanism described in 3676 section 3.1.4). 3678 Expires December 11, 1999 3679 The 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes are 3680 described in more detail in the following sections. 3682 4.1.1.1 'textWithoutLanguage' 3684 The 'textWithoutLanguage' syntax indicates a value that is sequence of 3685 zero or more characters. Text strings are encoded using the rules of 3686 some charset. The Printer object MUST support the UTF-8 charset 3687 [RFC2279] and MAY support additional charsets to represent 'text' 3688 values, provided that the charsets are registered with IANA [IANA-CS]. 3689 See Section 4.1.7 for the definition of the 'charset' attribute syntax, 3690 including restricted semantics and examples of charsets. 3692 4.1.1.2 'textWithLanguage' 3694 The 'textWithLanguage' attribute syntax is a compound attribute syntax 3695 consisting of two parts: a 'textWithoutLanguage' part plus an additional 3696 'naturalLanguage' (see section 4.1.8) part that overrides the natural 3697 language in force. The 'naturalLanguage' part explicitly identifies the 3698 natural language that applies to the text part of that value and that 3699 value alone. For any give text attribute, the 'textWithoutLanguage' 3700 part is limited to the maximum length defined for that attribute, but 3701 the 'naturalLanguage' part is always limited to 63 octets. Using the 3702 'textWithLanguage' attribute syntax rather than the normal 3703 'textWithoutLanguage' syntax is the so-called Natural Language Override 3704 mechanism and MUST be supported by all IPP objects and clients. 3706 If the attribute is multi-valued (1setOf text), then the 3707 'textWithLanguage' attribute syntax MUST be used to explicitly specify 3708 each attribute value whose natural language needs to be overridden. 3709 Other values in a multi-valued 'text' attribute in a request or a 3710 response revert to the natural language of the operation attribute. 3712 In a create request, the Printer object MUST accept and store with the 3713 Job object any natural language in the "attributes-natural-language" 3714 operation attribute, whether the Printer object supports that natural 3715 language or not. Furthermore, the Printer object MUST accept and store 3716 any 'textWithLanguage' attribute value, whether the Printer object 3717 supports that natural language or not. These requirements are 3718 independent of the value of the "ipp-attribute-fidelity" operation 3719 attribute that the client MAY supply. 3721 Example: If the client supplies the "attributes-natural-language" 3722 operation attribute with the value: 'en' indicating English, but the 3723 value of the "job-name" attribute is in French, the client MUST use the 3724 'textWithLanguage' attribute syntax with the following two values: 3726 'fr': Natural Language Override indicating French 3727 'Rapport Mensuel': the job name in French 3729 See the "Encoding and Transport" document [IPP-PRO] for a detailed 3730 example of the 'textWithLanguage' attribute syntax. 3732 Expires December 11, 1999 3733 4.1.2 'name' 3735 This syntax type is used for user-friendly strings, such as a Printer 3736 name, that, for humans, are more meaningful than identifiers. Names are 3737 never translated from one natural language to another. The 'name' 3738 attribute syntax is essentially the same as 'text', including the 3739 REQUIRED support of UTF-8 except that the sequence of characters is 3740 limited so that its encoded form MUST NOT exceed 255 (MAX) octets. 3742 Also like 'text', 'name' is really an abbreviated notation for either 3743 'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP objects 3744 and clients MUST support both the 'nameWithoutLanguage' and 3745 'nameWithLanguage' attribute syntaxes. However, in actual usage and 3746 protocol execution, objects and clients accept and return only one of 3747 the two syntax per attribute. The syntax 'name' never appears "on-the- 3748 wire". 3750 Only the 'text' and 'name' attribute syntaxes permit the Natural 3751 Language Override mechanism. 3753 Some attributes are defined as 'type3 keyword | name'. These attributes 3754 support values that are either type3 keywords or names. This dual- 3755 syntax mechanism enables a site administrator to extend these attributes 3756 to legally include values that are locally defined by the site 3757 administrator. Such names are not registered with IANA. 3759 4.1.2.1 'nameWithoutLanguage' 3761 The nameWithoutLanguage' syntax indicates a value that is sequence of 3762 zero or more characters so that its encoded form does not exceed MAX 3763 octets. 3765 4.1.2.2 'nameWithLanguage' 3767 The 'nameWithLanguage' attribute syntax is a compound attribute syntax 3768 consisting of two parts: a 'nameWithoutLanguage' part plus an additional 3769 'naturalLanguage' (see section 4.1.8) part that overrides the natural 3770 language in force. The 'naturalLanguage' part explicitly identifies the 3771 natural language that applies to that name value and that name value 3772 alone. 3774 The 'nameWithLanguage' attribute syntax behaves the same as the 3775 'textWithLanguage' syntax. If a name is in a language that is different 3776 than the rest of the object or operation, then this 'nameWithLanguage' 3777 syntax is used rather than the generic 'nameWithoutLanguage' syntax. 3779 Example: If the client supplies the "attributes-natural-language" 3780 operation attribute with the value: 'en' indicating English, but the 3781 "printer-name" attribute is in German, the client MUST use the 3782 'nameWithLanguage' attribute syntax as follows: 3784 'de': Natural Language Override indicating German 3785 'Farbdrucker': the Printer name in German 3787 Expires December 11, 1999 3789 4.1.2.3 Matching 'name' attribute values 3791 For purposes of matching two 'name' attribute values for equality, such 3792 as in job validation (where a client-supplied value for attribute "xxx" 3793 is checked to see if the value is among the values of the Printer 3794 object's corresponding "xxx-supported" attribute), the following match 3795 rules apply: 3797 1. 'keyword' values never match 'name' values. 3799 2. 'name' (nameWithoutLanguage and nameWithLanguage) values match 3800 if (1) the name parts match and (2) the Associated Natural-Language 3801 parts (see section 3.1.4.1) match. The matching rules are: 3803 a. the name parts match if the two names are identical 3804 character by character, except it is RECOMMENDED that case be 3805 ignored. For example: 'Ajax-letter-head-white' MUST match 3806 'Ajax-letter-head-white' and SHOULD match 'ajax-letter-head- 3807 white' and 'AJAX-LETTER-HEAD-WHITE'. 3809 b. the Associated Natural-Language parts match if the shorter 3810 of the two meets the syntactic requirements of RFC 1766 3811 [RFC1766] and matches byte for byte with the longer. For 3812 example, 'en' matches 'en', 'en-us' and 'en-gb', but matches 3813 neither 'fr' nor 'e'. 3815 4.1.3 'keyword' 3817 The 'keyword' attribute syntax is a sequence of characters, length: 1 to 3818 255, containing only the US-ASCII [ASCII] encoded values for lowercase 3819 letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot ("."), and 3820 underscore ("_"). The first character MUST be a lowercase letter. 3821 Furthermore, keywords MUST be in U.S. English. 3823 This syntax type is used for enumerating semantic identifiers of 3824 entities in the abstract protocol, i.e., entities identified in this 3825 document. Keywords are used as attribute names or values of attributes. 3826 Unlike 'text' and 'name' attribute values, 'keyword' values MUST NOT use 3827 the Natural Language Override mechanism, since they MUST always be US- 3828 ASCII and U.S. English. 3830 Keywords are for use in the protocol. A user interface will likely 3831 provide a mapping between protocol keywords and displayable user- 3832 friendly words and phrases which are localized to the natural language 3833 of the user. While the keywords specified in this document MAY be 3834 displayed to users whose natural language is U.S. English, they MAY be 3835 mapped to other U.S. English words for U.S. English users, since the 3836 user interface is outside the scope of this document. 3838 In the definition for each attribute of this syntax type, the full set 3839 of defined keyword values for that attribute are listed. 3841 Expires December 11, 1999 3842 When a keyword is used to represent an attribute (its name), it MUST be 3843 unique within the full scope of all IPP objects and attributes. When a 3844 keyword is used to represent a value of an attribute, it MUST be unique 3845 just within the scope of that attribute. That is, the same keyword MUST 3846 NOT be used for two different values within the same attribute to mean 3847 two different semantic ideas. However, the same keyword MAY be used 3848 across two or more attributes, representing different semantic ideas for 3849 each attribute. Section 6.1 describes how the protocol can be extended 3850 with new keyword values. Examples of attribute name keywords: 3852 "job-name" 3853 "attributes-charset" 3855 Note: This document uses "type1", "type2", and "type3" prefixes to the 3856 "keyword" basic syntax to indicate different levels of review for 3857 extensions (see section 6.1). 3859 4.1.4 'enum' 3861 The 'enum' attribute syntax is an enumerated integer value that is in 3862 the range from 1 to 2**31 - 1 (MAX). Each value has an associated 3863 'keyword' name. In the definition for each attribute of this syntax 3864 type, the full set of possible values for that attribute are listed. 3865 This syntax type is used for attributes for which there are enum values 3866 assigned by other standards, such as SNMP MIBs. A number of attribute 3867 enum values in this document are also used for corresponding attributes 3868 in other standards [RFC1759]. This syntax type is not used for 3869 attributes to which the administrator may assign values. Section 6.1 3870 describes how the protocol can be extended with new enum values. 3872 Enum values are for use in the protocol. A user interface will provide 3873 a mapping between protocol enum values and displayable user-friendly 3874 words and phrases which are localized to the natural language of the 3875 user. While the enum symbols specified in this document MAY be 3876 displayed to users whose natural language is U.S. English, they MAY be 3877 mapped to other U.S. English words for U.S. English users, since the 3878 user interface is outside the scope of this document. 3880 Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP "out- 3881 of-band" value 'unknown'. See the description of the "out-of-band" 3882 values at the beginning of Section 4.1. Therefore, attributes of type 3883 'enum' start at '3'. 3885 Note: This document uses "type1", "type2", and "type3" prefixes to the 3886 "enum" basic syntax to indicate different levels of review for 3887 extensions (see section 6.1). 3889 4.1.5 'uri' 3891 The 'uri' attribute syntax is any valid Uniform Resource Identifier or 3892 URI [RFC2396]. Most often, URIs are simply Uniform Resource Locators or 3893 URLs. The maximum length of URIs used as values of IPP attributes is 3894 1023 octets. Although most other IPP attribute syntax types allow for 3896 Expires December 11, 1999 3897 only lower-cased values, this attribute syntax type conforms to the 3898 case-sensitive and case-insensitive rules specified in [RFC2396]. See 3899 also [IPP-IIG] for a discussion of case in URIs. 3901 4.1.6 'uriScheme' 3903 The 'uriScheme' attribute syntax is a sequence of characters 3904 representing a URI scheme according to RFC 2396 [RFC2396]. Though RFC 3905 2396 requires that the values be case-insensitive, IPP requires all 3906 lower case values in IPP attributes to simplify comparing by IPP clients 3907 and Printer objects. 3909 Standard values for this syntax type are the following keywords: 3911 'ipp': for IPP schemed URIs (e.g., "ipp:...") 3912 'http': for HTTP schemed URIs (e.g., "http:...") 3913 'https': for use with HTTPS schemed URIs (e.g., "https:...") (not on 3914 IETF standards track) 3915 'ftp': for FTP schemed URIs (e.g., "ftp:...") 3916 'mailto': for SMTP schemed URIs (e.g., "mailto:...") 3917 'file': for file schemed URIs (e.g., "file:...") 3919 A Printer object MAY support any URI 'scheme' that has been registered 3920 with IANA [IANA-MT]. The maximum length of URI 'scheme' values used to 3921 represent IPP attribute values is 63 octets. 3923 4.1.7 'charset' 3925 The 'charset' attribute syntax is a standard identifier for a charset. 3926 A charset is a coded character set and encoding scheme. Charsets are 3927 used for labeling certain document contents and 'text' and 'name' 3928 attribute values. The syntax and semantics of this attribute syntax are 3929 specified in RFC 2046 [RFC2046] and contained in the IANA character-set 3930 Registry [IANA-CS] according to the IANA procedures [RFC2278]. Though 3931 RFC 2046 requires that the values be case-insensitive US-ASCII, IPP 3932 requires all lower case values in IPP attributes to simplify comparing 3933 by IPP clients and Printer objects. When a character-set in the IANA 3934 registry has more than one name (alias), the name labeled as "(preferred 3935 MIME name)", if present, MUST be used. 3937 The maximum length of 'charset' values used to represent IPP attribute 3938 values is 63 octets. 3940 Some examples are: 3942 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set 3943 (UCS) represented as the UTF-8 [RFC2279] transfer encoding scheme 3944 in which US-ASCII is a subset charset. 3945 'us-ascii': 7-bit American Standard Code for Information Interchange 3946 (ASCII), ANSI X3.4-1986 [ASCII]. That standard defines US-ASCII, 3947 but RFC 2045 [RFC2045] eliminates most of the control characters 3948 from conformant usage in MIME and IPP. 3950 Expires December 11, 1999 3952 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet Nr 3953 1 [ISO8859-1]. That standard defines a coded character set that is 3954 used by Latin languages in the Western Hemisphere and Western 3955 Europe. US-ASCII is a subset charset. 3956 'iso-10646-ucs-2': ISO 10646 Universal Multiple-Octet Coded 3957 Character Set (UCS) represented as two octets (UCS-2), with the 3958 high order octet of each pair coming first (so-called Big Endian 3959 integer). 3961 Some attribute descriptions MAY place additional requirements on charset 3962 values that may be used, such as REQUIRED values that MUST be supported 3963 or additional restrictions, such as requiring that the charset have US- 3964 ASCII as a subset charset. 3966 4.1.8 'naturalLanguage' 3968 The 'naturalLanguage' attribute syntax is a standard identifier for a 3969 natural language and optionally a country. The values for this syntax 3970 type are defined by RFC 1766 [RFC1766]. Though RFC 1766 requires that 3971 the values be case-insensitive US-ASCII, IPP requires all lower case to 3972 simplify comparing by IPP clients and Printer objects. Examples 3973 include: 3975 'en': for English 3976 'en-us': for US English 3977 'fr': for French 3978 'de': for German 3980 The maximum length of 'naturalLanguage' values used to represent IPP 3981 attribute values is 63 octets. 3983 4.1.9 'mimeMediaType' 3985 The 'mimeMediaType' attribute syntax is the Internet Media Type 3986 (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and 3987 registered according to the procedures of RFC 2048 [RFC2048] for 3988 identifying a document format. The value MAY include a charset 3989 parameter, depending on the specification of the Media Type in the IANA 3990 Registry [IANA-MT]. Although most other IPP syntax types allow for only 3991 lower-cased values, this syntax type allows for mixed-case values which 3992 are case-insensitive. 3994 Examples are: 3996 'text/html': An HTML document 3997 'text/plain': A plain text document in US-ASCII (RFC 2046 indicates 3998 that in the absence of the charset parameter MUST mean US-ASCII 3999 rather than simply unspecified) [RFC2046]. 4000 'text/plain; charset=US-ASCII': A plain text document in US-ASCII 4001 [52, 56]. 4002 'text/plain; charset=ISO-8859-1': A plain text document in ISO 8859- 4003 1 (Latin 1) [ISO8859-1]. 4005 Expires December 11, 1999 4007 'text/plain; charset=utf-8': A plain text document in ISO 10646 4008 represented as UTF-8 [RFC2279] 4009 'application/postscript': A PostScript document [RFC2046] 4010 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape 4011 sequence embedded in the document data) 4012 'application/pdf': Portable Document Format - see IANA MIME Media 4013 Type registry 4014 'application/octet-stream': Auto-sense - see section 4.1.9.1 4016 4.1.9.1 Application/octet-stream -- Auto-Sensing the document format 4018 One special type is 'application/octet-stream'. If the Printer object 4019 supports this value, the Printer object MUST be capable of auto-sensing 4020 the format of the document data, either as part of the create operation 4021 and/or at document processing time. During auto-sensing, a Printer may 4022 determine that the document-data has a format that the Printer doesn't 4023 recognize. If the Printer determines this problem before returning an 4024 operation response, it rejects the request and returns the 'client- 4025 error-document-format-not-supported' status code. If the Printer 4026 determines this problem after accepting the request and returning an 4027 operation response with one of the successful status codes, the Printer 4028 adds the 'unsupported-document-format' value to the job's "job-state- 4029 reasons" attribute. 4031 If the Printer object's default value attribute "document-format- 4032 default" is set to 'application/octet-stream', the Printer object not 4033 only supports auto-sensing of the document format, but will depend on 4034 the result of applying its auto-sensing when the client does not supply 4035 the "document-format" attribute. If the client supplies a document 4036 format value, the Printer MUST rely on the supplied attribute, rather 4037 than trust its auto-sensing algorithm. To summarize: 4039 1. If the client does not supply a document format value, the Printer 4040 MUST rely on its default value setting (which may be 4041 'application/octet-stream' indicating an auto-sensing mechanism). 4042 2. If the client supplies a value other than 'application/octet- 4043 stream', the client is supplying valid information about the format 4044 of the document data and the Printer object MUST trust the client 4045 supplied value more than the outcome of applying an automatic 4046 format detection mechanism. For example, the client may be 4047 requesting the printing of a PostScript file as a 'text/plain' 4048 document. The Printer object MUST print a text representation of 4049 the PostScript commands rather than interpret the stream of 4050 PostScript commands and print the result. 4051 3. If the client supplies a value of 'application/octet-stream', the 4052 client is indicating that the Printer object MUST use its auto- 4053 sensing mechanism on the client supplied document data whether 4054 auto-sensing is the Printer object's default or not. 4056 Note: Since the auto-sensing algorithm is probabilistic, if the client 4057 requests both auto-sensing ("document-format" set to 'application/octet- 4058 stream') and true fidelity ("ipp-attribute-fidelity" set to 'true'), the 4059 Printer object might not be able to guarantee exactly what the end user 4061 Expires December 11, 1999 4062 intended (the auto-sensing algorithm might mistake one document format 4063 for another), but it is able to guarantee that its auto-sensing 4064 mechanism be used. 4066 The maximum length of a 'mimeMediaType' value to represent IPP attribute 4067 values is 255 octets. 4069 4.1.10 'octetString' 4071 The 'octetString' attribute syntax is a sequence of octets encoded in a 4072 maximum of 1023 octets which is indicated in sub-section headers using 4073 the notation: octetString(MAX). This syntax type is used for opaque 4074 data. 4076 4.1.11 'boolean' 4078 The 'boolean' attribute syntax has only two values: 'true' and 'false'. 4080 4.1.12 'integer' 4082 The 'integer' attribute syntax is an integer value that is in the range 4083 from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual attribute may 4084 specify the range constraint explicitly in sub-section headers if the 4085 range is different from the full range of possible integer values. For 4086 example: job-priority (integer(1:100)) for the "job-priority" 4087 attribute. However, the enforcement of that additional constraint is up 4088 to the IPP objects, not the protocol. 4090 4.1.13 'rangeOfInteger' 4092 The 'rangeOfInteger' attribute syntax is an ordered pair of integers 4093 that defines an inclusive range of integer values. The first integer 4094 specifies the lower bound and the second specifies the upper bound. If 4095 a range constraint is specified in the header description for an 4096 attribute in this document whose attribute syntax is 'rangeOfInteger' 4097 (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum value), 4098 then the constraint applies to both integers. 4100 4.1.14 'dateTime' 4102 The 'dateTime' attribute syntax is a standard, fixed length, 11 octet 4103 representation of the "DateAndTime" syntax as defined in RFC 2579 4104 [RFC2579]. RFC 2579 also identifies an 8 octet representation of a 4105 "DateAndTime" value, but IPP objects MUST use the 11 octet 4106 representation. A user interface will provide a mapping between 4107 protocol dateTime values and displayable user-friendly words or 4108 presentation values and phrases which are localized to the natural 4109 language and date format of the user, including time zone. 4111 Expires December 11, 1999 4112 4.1.15 'resolution' 4114 The 'resolution' attribute syntax specifies a two-dimensional resolution 4115 in the indicated units. It consists of 3 values: a cross feed direction 4116 resolution (positive integer value), a feed direction resolution 4117 (positive integer value), and a units value. The semantics of these 4118 three components are taken from the Printer MIB [RFC1759] suggested 4119 values. That is, the cross feed direction component resolution 4120 component is the same as the prtMarkerAddressabilityXFeedDir object in 4121 the Printer MIB, the feed direction component resolution component is 4122 the same as the prtMarkerAddressabilityFeedDir in the Printer MIB, and 4123 the units component is the same as the prtMarkerAddressabilityUnit 4124 object in the Printer MIB (namely, '3' indicates dots per inch and '4' 4125 indicates dots per centimeter). All three values MUST be present even 4126 if the first two values are the same. Example: '300', '600', '3' 4127 indicates a 300 dpi cross-feed direction resolution, a 600 dpi feed 4128 direction resolution, since a '3' indicates dots per inch (dpi). 4130 4.1.16 '1setOf X' 4132 The '1setOf X' attribute syntax is 1 or more values of attribute syntax 4133 type X. This syntax type is used for multi-valued attributes. The 4134 syntax type is called '1setOf' rather than just 'setOf' as a reminder 4135 that the set of values MUST NOT be empty (i.e., a set of size 0). Sets 4136 are normally unordered. However each attribute description of this type 4137 may specify that the values MUST be in a certain order for that 4138 attribute. 4140 4.2 Job Template Attributes 4142 Job Template attributes describe job processing behavior. Support for 4143 Job Template attributes by a Printer object is OPTIONAL (see section 4144 12.2.3 for a description of support for OPTIONAL attributes). Also, 4145 clients OPTIONALLY supply Job Template attributes in create requests. 4147 Job Template attributes conform to the following rules. For each Job 4148 Template attribute called "xxx": 4150 1. If the Printer object supports "xxx" then it MUST support both a 4151 "xxx-default" attribute (unless there is a "No" in the table below) 4152 and a "xxx-supported" attribute. If the Printer object doesn't 4153 support "xxx", then it MUST support neither an "xxx-default" 4154 attribute nor an "xxx-supported" attribute, and it MUST treat an 4155 attribute "xxx" supplied by a client as unsupported. An attribute 4156 "xxx" may be supported for some document formats and not supported 4157 for other document formats. For example, it is expected that a 4158 Printer object would only support "orientation-requested" for some 4159 document formats (such as 'text/plain' or 'text/html') but not 4160 others (such as 'application/postscript'). 4162 2. "xxx" is OPTIONALLY supplied by the client in a create request. 4163 If "xxx" is supplied, the client is indicating a desired job 4164 processing behavior for this Job. When "xxx" is not supplied, the 4166 Expires December 11, 1999 4167 client is indicating that the Printer object apply its default job 4168 processing behavior at job processing time if the document content 4169 does not contain an embedded instruction indicating an xxx-related 4170 behavior. 4172 Since an administrator MAY change the default value attribute after 4173 a Job object has been submitted but before it has been processed, 4174 the default value used by the Printer object at job processing time 4175 may be different that the default value in effect at job submission 4176 time. 4178 3. The "xxx-supported" attribute is a Printer object attribute that 4179 describes which job processing behaviors are supported by that 4180 Printer object. A client can query the Printer object to find out 4181 what xxx-related behaviors are supported by inspecting the returned 4182 values of the "xxx-supported" attribute. 4184 Note: The "xxx" in each "xxx-supported" attribute name is singular, 4185 even though an "xxx-supported" attribute usually has more than one 4186 value, such as "job-sheet-supported", unless the "xxx" Job Template 4187 attribute is plural, such as "finishings" or "sides". In such 4188 cases the "xxx-supported" attribute names are: "finishings- 4189 supported" and "sides-supported". 4191 4. The "xxx-default" default value attribute describes what will be 4192 done at job processing time when no other job processing 4193 information is supplied by the client (either explicitly as an IPP 4194 attribute in the create request or implicitly as an embedded 4195 instruction within the document data). 4197 If an application wishes to present an end user with a list of supported 4198 values from which to choose, the application SHOULD query the Printer 4199 object for its supported value attributes. The application SHOULD also 4200 query the default value attributes. If the application then limits 4201 selectable values to only those value that are supported, the 4202 application can guarantee that the values supplied by the client in the 4203 create request all fall within the set of supported values at the 4204 Printer. When querying the Printer, the client MAY enumerate each 4205 attribute by name in the Get-Printer-Attributes Request, or the client 4206 MAY just name the "job-template" group in order to get the complete set 4207 of supported attributes (both supported and default attributes). 4209 The "finishings" attribute is an example of a Job Template attribute. 4210 It can take on a set of values such as 'staple', 'punch', and/or 4211 'cover'. A client can query the Printer object for the "finishings- 4212 supported" attribute and the "finishings-default" attribute. The 4213 supported attribute contains a set of supported values. The default 4214 value attribute contains the finishing value(s) that will be used for a 4215 new Job if the client does not supply a "finishings" attribute in the 4216 create request and the document data does not contain any corresponding 4217 finishing instructions. If the client does supply the "finishings" 4218 attribute in the create request, the IPP object validates the value or 4219 values to make sure that they are a subset of the supported values 4221 Expires December 11, 1999 4222 identified in the Printer object's "finishings-supported" attribute. 4223 See section 3.1.7. 4225 The table below summarizes the names and relationships for all Job 4226 Template attributes. The first column of the table (labeled "Job 4227 Attribute") shows the name and syntax for each Job Template attribute in 4228 the Job object. These are the attributes that can optionally be supplied 4229 by the client in a create request. The last two columns (labeled 4230 "Printer: Default Value Attribute" and "Printer: Supported Values 4231 Attribute") shows the name and syntax for each Job Template attribute in 4232 the Printer object (the default value attribute and the supported values 4233 attribute). A "No" in the table means the Printer MUST NOT support the 4234 attribute (that is, the attribute is simply not applicable). For 4235 brevity in the table, the 'text' and 'name' entries do not show the 4236 maximum length for each attribute. 4238 Expires December 11, 1999 4239 +===================+======================+======================+ 4240 | Job Attribute |Printer: Default Value| Printer: Supported | 4241 | | Attribute | Values Attribute | 4242 +===================+======================+======================+ 4243 | job-priority | job-priority-default |job-priority-supported| 4244 | (integer 1:100) | (integer 1:100) |(integer 1:100) | 4245 +-------------------+----------------------+----------------------+ 4246 | job-hold-until | job-hold-until- |job-hold-until- | 4247 | (type3 keyword | | default | supported | 4248 | name) | (type3 keyword | |(1setOf ( | 4249 | | name) |type3 keyword | name))| 4250 +-------------------+----------------------+----------------------+ 4251 | job-sheets | job-sheets-default |job-sheets-supported | 4252 | (type3 keyword | | (type3 keyword | |(1setOf ( | 4253 | name) | name) |type3 keyword | name))| 4254 +-------------------+----------------------+----------------------+ 4255 |multiple-document- |multiple-document- |multiple-document- | 4256 | handling | handling-default |handling-supported | 4257 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 4258 +-------------------+----------------------+----------------------+ 4259 | copies | copies-default | copies-supported | 4260 | (integer (1:MAX)) | (integer (1:MAX)) | (rangeOfInteger | 4261 | | | (1:MAX)) | 4262 +-------------------+----------------------+----------------------+ 4263 | finishings | finishings-default | finishings-supported | 4264 |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | 4265 +-------------------+----------------------+----------------------+ 4266 | page-ranges | No | page-ranges- | 4267 | (1setOf | | supported (boolean) | 4268 | rangeOfInteger | | | 4269 | (1:MAX)) | | | 4270 +-------------------+----------------------+----------------------+ 4271 | sides | sides-default | sides-supported | 4272 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 4273 +-------------------+----------------------+----------------------+ 4274 | number-up | number-up-default | number-up-supported | 4275 | (integer (1:MAX)) | (integer (1:MAX)) |(1setOf integer | 4276 | | | (1:MAX) | | 4277 | | | rangeOfInteger | 4278 | | | (1:MAX)) | 4279 +-------------------+----------------------+----------------------+ 4280 | orientation- |orientation-requested-|orientation-requested-| 4281 | requested | default | supported | 4282 | (type2 enum) | (type2 enum) | (1setOf type2 enum) | 4283 +-------------------+----------------------+----------------------+ 4284 | media | media-default | media-supported | 4285 | (type3 keyword | | (type3 keyword | |(1setOf ( | 4286 | name) | name) |type3 keyword | name))| 4287 | | | | 4288 | | | media-ready | 4289 | | |(1setOf ( | 4290 | | |type3 keyword | name))| 4291 +-------------------+----------------------+----------------------+ 4292 | printer-resolution| printer-resolution- | printer-resolution- | 4294 Expires December 11, 1999 4295 | (resolution) | default | supported | 4296 | | (resolution) |(1setOf resolution) | 4297 +-------------------+----------------------+----------------------+ 4298 | print-quality | print-quality-default| print-quality- | 4299 | (type2 enum) | (type2 enum) | supported | 4300 | | |(1setOf type2 enum) | 4301 +-------------------+----------------------+----------------------+ 4303 4.2.1 job-priority (integer(1:100)) 4305 This attribute specifies a priority for scheduling the Job. A higher 4306 value specifies a higher priority. The value 1 indicates the lowest 4307 possible priority. The value 100 indicates the highest possible 4308 priority. Among those jobs that are ready to print, a Printer MUST 4309 print all jobs with a priority value of n before printing those with a 4310 priority value of n-1 for all n. 4312 If the Printer object supports this attribute, it MUST always support 4313 the full range from 1 to 100. No administrative restrictions are 4314 permitted. This way an end-user can always make full use of the entire 4315 range with any Printer object. If privileged jobs are implemented 4316 outside IPP/1.1, they MUST have priorities higher than 100, rather than 4317 restricting the range available to end-users. 4319 If the client does not supply this attribute and this attribute is 4320 supported by the Printer object, the Printer object MUST use the value 4321 of the Printer object's "job-priority-default" at job submission time 4322 (unlike most Job Template attributes that are used if necessary at job 4323 processing time). 4325 The syntax for the "job-priority-supported" is also integer(1:100). 4326 This single integer value indicates the number of priority levels 4327 supported. The Printer object MUST take the value supplied by the 4328 client and map it to the closest integer in a sequence of n integers 4329 values that are evenly distributed over the range from 1 to 100 using 4330 the formula: 4332 roundToNearestInt((100x+50)/n) 4334 where n is the value of "job-priority-supported" and x ranges from 0 4335 through n-1. 4337 For example, if n=1 the sequence of values is 50; if n=2, the sequence 4338 of values is: 25 and 75; if n = 3, the sequence of values is: 17, 50 4339 and 83; if n = 10, the sequence of values is: 5, 15, 25, 35, 45, 55, 4340 65, 75, 85, and 95; if n = 100, the sequence of values is: 1, 2, 3, . 4341 100. 4343 If the value of the Printer object's "job-priority-supported" is 10 and 4344 the client supplies values in the range 1 to 10, the Printer object maps 4345 them to 5, in the range 11 to 20, the Printer object maps them to 15, 4346 etc. 4348 Expires December 11, 1999 4349 4.2.2 job-hold-until (type3 keyword | name (MAX)) 4351 This attribute specifies the named time period during which the Job MUST 4352 become a candidate for printing. 4354 Standard keyword values for named time periods are: 4356 'no-hold': immediately, if there are not other reasons to hold the 4357 job 4358 'indefinite': - the job is held indefinitely, until a client 4359 performs a Release-Job (section 3.3.6) 4360 'day-time': during the day 4361 'evening': evening 4362 'night': night 4363 'weekend': weekend 4364 'second-shift': second-shift (after close of business) 4365 'third-shift': third-shift (after midnight) 4367 An administrator MUST associate allowable print times with a named time 4368 period (by means outside the scope of this IPP/1.1 document). An 4369 administrator is encouraged to pick names that suggest the type of time 4370 period. An administrator MAY define additional values using the 'name' 4371 or 'keyword' attribute syntax, depending on implementation. 4373 If the value of this attribute specifies a time period that is in the 4374 future, the Printer SHOULD add the 'job-hold-until-specified' value to 4375 the job's "job-state-reasons" attribute, MUST move the job to the 4376 'pending-held' state, and MUST NOT schedule the job for printing until 4377 the specified time-period arrives. 4379 When the specified time period arrives, the Printer MUST remove the 4380 'job-hold-until-specified' value from the job's "job-state-reason" 4381 attribute, if present. If there are no other job state reasons that 4382 keep the job in the 'pending-held' state, the Printer MUST consider the 4383 job as a candidate for processing by moving the job to the 'pending' 4384 state. 4386 If this job attribute value is the named value 'no-hold', or the 4387 specified time period has already started, the job MUST be a candidate 4388 for processing immediately. 4390 If the client does not supply this attribute and this attribute is 4391 supported by the Printer object, the Printer object MUST use the value 4392 of the Printer object's "job-hold-until-default" at job submission time 4393 (unlike most Job Template attributes that are used if necessary at job 4394 processing time). 4396 4.2.3 job-sheets (type3 keyword | name(MAX)) 4398 This attribute determines which job start/end sheet(s), if any, MUST be 4399 printed with a job. 4401 Standard keyword values are: 4403 Expires December 11, 1999 4404 'none': no job sheet is printed 4405 'standard': one or more site specific standard job sheets are 4406 printed, e.g. a single start sheet or both start and end sheet is 4407 printed 4409 An administrator MAY define additional values using the 'name' or 4410 'keyword' attribute syntax, depending on implementation. 4412 The effect of this attribute on jobs with multiple documents MAY be 4413 affected by the "multiple-document-handling" job attribute (section 4414 4.2.4), depending on the job sheet semantics. 4416 4.2.4 multiple-document-handling (type2 keyword) 4418 This attribute is relevant only if a job consists of two or more 4419 documents. This attribute MUST be supported if the Printer supports 4420 multiple documents per job (see sections 3.2.4 and 3.3.1). The 4421 attribute controls finishing operations and the placement of one or more 4422 print-stream pages into impressions and onto media sheets. When the 4423 value of the "copies" attribute exceeds 1, it also controls the order in 4424 which the copies that result from processing the documents are produced. 4425 For the purposes of this explanations, if "a" represents an instance of 4426 document data, then the result of processing the data in document "a" is 4427 a sequence of media sheets represented by "a(*)". 4429 Standard keyword values are: 4431 'single-document': If a Job object has multiple documents, say, the 4432 document data is called a and b, then the result of processing all 4433 the document data (a and then b) MUST be treated as a single 4434 sequence of media sheets for finishing operations; that is, 4435 finishing would be performed on the concatenation of the sequences 4436 a(*),b(*). The Printer object MUST NOT force the data in each 4437 document instance to be formatted onto a new print-stream page, nor 4438 to start a new impression on a new media sheet. If more than one 4439 copy is made, the ordering of the sets of media sheets resulting 4440 from processing the document data MUST be a(*), b(*), a(*), b(*), 4441 ..., and the Printer object MUST force each copy (a(*),b(*)) to 4442 start on a new media sheet. 4443 'separate-documents-uncollated-copies': If a Job object has multiple 4444 documents, say, the document data is called a and b, then the 4445 result of processing the data in each document instance MUST be 4446 treated as a single sequence of media sheets for finishing 4447 operations; that is, the sets a(*) and b(*) would each be finished 4448 separately. The Printer object MUST force each copy of the result 4449 of processing the data in a single document to start on a new media 4450 sheet. If more than one copy is made, the ordering of the sets of 4451 media sheets resulting from processing the document data MUST be 4452 a(*), a(*), ..., b(*), b(*) ... . 4453 'separate-documents-collated-copies': If a Job object has multiple 4454 documents, say, the document data is called a and b, then the 4455 result of processing the data in each document instance MUST be 4456 treated as a single sequence of media sheets for finishing 4458 Expires December 11, 1999 4459 operations; that is, the sets a(*) and b(*) would each be finished 4460 separately. The Printer object MUST force each copy of the result 4461 of processing the data in a single document to start on a new media 4462 sheet. If more than one copy is made, the ordering of the sets of 4463 media sheets resulting from processing the document data MUST be 4464 a(*), b(*), a(*), b(*), ... . 4465 'single-document-new-sheet': Same as 'single-document', except that 4466 the Printer object MUST ensure that the first impression of each 4467 document instance in the job is placed on a new media sheet. This 4468 value allows multiple documents to be stapled together with a 4469 single staple where each document starts on a new sheet. 4471 The 'single-document' value is the same as 'separate-documents-collated- 4472 copies' with respect to ordering of print-stream pages, but not media 4473 sheet generation, since 'single-document' will put the first page of the 4474 next document on the back side of a sheet if an odd number of pages have 4475 been produced so far for the job, while 'separate-documents-collated- 4476 copies' always forces the next document or document copy on to a new 4477 sheet. In addition, if the "finishings" attribute specifies 'staple', 4478 then with 'single-document', documents a and b are stapled together as a 4479 single document with no regard to new sheets, with 'single-document-new- 4480 sheet', documents a and b are stapled together as a single document, but 4481 document b starts on a new sheet, but with 'separate-documents- 4482 uncollated-copies' and 'separate-documents-collated-copies', documents a 4483 and b are stapled separately. 4485 Note: None of these values provide means to produce uncollated sheets 4486 within a document, i.e., where multiple copies of sheet n are produced 4487 before sheet n+1 of the same document. 4489 The relationship of this attribute and the other attributes that control 4490 document processing is described in section 15.3. 4492 4.2.5 copies (integer(1:MAX)) 4494 This attribute specifies the number of copies to be printed. 4496 On many devices the supported number of collated copies will be limited 4497 by the number of physical output bins on the device, and may be 4498 different from the number of uncollated copies which can be supported. 4500 Note: The effect of this attribute on jobs with multiple documents is 4501 controlled by the "multiple-document-handling" job attribute (section 4502 4.2.4) and the relationship of this attribute and the other attributes 4503 that control document processing is described in section 15.3. 4505 4.2.6 finishings (1setOf type2 enum) 4507 This attribute identifies the finishing operations that the Printer uses 4508 for each copy of each printed document in the Job. For Jobs with 4509 multiple documents, the "multiple-document-handling" attribute 4510 determines what constitutes a "copy" for purposes of finishing. 4512 Expires December 11, 1999 4513 Standard enum values are: 4515 Value Symbolic Name and Description 4517 '3' 'none': Perform no finishing 4518 '4' 'staple': Bind the document(s) with one or more staples. The 4519 exact number and placement of the staples is site- 4520 defined. 4521 '5' 'punch': This value indicates that holes are required in the 4522 finished document. The exact number and placement of the 4523 holes is site-defined The punch specification MAY be 4524 satisfied (in a site- and implementation-specific manner) 4525 either by drilling/punching, or by substituting pre- 4526 drilled media. 4527 '6' 'cover': This value is specified when it is desired to select 4528 a non-printed (or pre-printed) cover for the document. 4529 This does not supplant the specification of a printed 4530 cover (on cover stock medium) by the document itself. 4531 '7' 'bind': This value indicates that a binding is to be applied 4532 to the document; the type and placement of the binding is 4533 site-defined. 4535 '8' 'saddle-stitch': Bind the document(s) with one or more 4536 staples (wire stitches) along the middle fold. The exact 4537 number and placement of the staples and the middle fold 4538 is implementation and/or site-defined. 4539 '9' 'edge-stitch': Bind the document(s) with one or more staples 4540 (wire stitches) along one edge. The exact number and 4541 placement of the staples is implementation and/or site- 4542 defined. 4543 '10'-'19' reserved for future generic finishing enum values. 4545 The following values are more specific; they indicate a corner or an 4546 edge as if the document were a portrait document (see below): 4548 '20' 'staple-top-left': Bind the document(s) with one or more 4549 staples in the top left corner. 4550 '21' 'staple-bottom-left': Bind the document(s) with one or more 4551 staples in the bottom left corner. 4552 '22' 'staple-top-right': Bind the document(s) with one or more 4553 staples in the top right corner. 4554 '23' 'staple-bottom-right': Bind the document(s) with one or more 4555 staples in the bottom right corner. 4556 '24' 'edge-stitch-left': Bind the document(s) with one or more 4557 staples (wire stitches) along the left edge. The exact 4558 number and placement of the staples is implementation 4559 and/or site-defined. 4560 '25' 'edge-stitch-top': Bind the document(s) with one or more 4561 staples (wire stitches) along the top edge. The exact 4562 number and placement of the staples is implementation 4563 and/or site-defined. 4564 '26' 'edge-stitch-right': Bind the document(s) with one or more 4565 staples (wire stitches) along the right edge. The exact 4566 number and placement of the staples is implementation 4567 and/or site-defined. 4569 Expires December 11, 1999 4571 '27' 'edge-stitch-bottom': Bind the document(s) with one or more 4572 staples (wire stitches) along the bottom edge. The exact 4573 number and placement of the staples is implementation 4574 and/or site-defined. 4575 '28' 'staple-dual-left': Bind the document(s) with two staples 4576 (wire stitches) along the left edge assuming a portrait 4577 document (see above). 4578 '29' 'staple-dual-top': Bind the document(s) with two staples 4579 (wire stitches) along the top edge assuming a portrait 4580 document (see above). 4581 '30' 'staple-dual-right': Bind the document(s) with two staples 4582 (wire stitches) along the right edge assuming a portrait 4583 document (see above). 4584 '31' 'staple-dual-bottom': Bind the document(s) with two staples 4585 (wire stitches) along the bottom edge assuming a portrait 4586 document (see above). 4588 The 'staple-xxx' values are specified with respect to the document as if 4589 the document were a portrait document. If the document is actually a 4590 landscape or a reverse-landscape document, the client supplies the 4591 appropriate transformed value. For example, to position a staple in the 4592 upper left hand corner of a landscape document when held for reading, 4593 the client supplies the 'staple-bottom-left' value (since landscape is 4594 defined as a +90 degree rotation from portrait, i.e., anti-clockwise). 4595 On the other hand, to position a staple in the upper left hand corner of 4596 a reverse-landscape document when held for reading, the client supplies 4597 the 'staple-top-right' value (since reverse-landscape is defined as a - 4598 90 degree rotation from portrait, i.e., clockwise). 4600 The angle (vertical, horizontal, angled) of each staple with respect to 4601 the document depends on the implementation which may in turn depend on 4602 the value of the attribute. 4604 Note: The effect of this attribute on jobs with multiple documents is 4605 controlled by the "multiple-document-handling" job attribute (section 4606 4.2.4) and the relationship of this attribute and the other attributes 4607 that control document processing is described in section 15.3. 4609 If the client supplies a value of 'none' along with any other 4610 combination of values, it is the same as if only that other combination 4611 of values had been supplied (that is the 'none' value has no effect). 4613 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 4615 This attribute identifies the range(s) of print-stream pages that the 4616 Printer object uses for each copy of each document which are to be 4617 printed. Nothing is printed for any pages identified that do not exist 4618 in the document(s). Ranges MUST be in ascending order, for example: 1- 4619 3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling Printer 4620 object can process the job in a single pass. If the ranges are not 4621 ascending or are overlapping, the IPP object MUST reject the request and 4622 return the 'client-error-bad-request' status code. The attribute is 4623 associated with print-stream pages not application-numbered pages (for 4625 Expires December 11, 1999 4626 example, the page numbers found in the headers and or footers for 4627 certain word processing applications). 4629 For Jobs with multiple documents, the "multiple-document-handling" 4630 attribute determines what constitutes a "copy" for purposes of the 4631 specified page range(s). When "multiple-document-handling" is 'single- 4632 document', the Printer object MUST apply each supplied page range once 4633 to the concatenation of the print-stream pages. For example, if there 4634 are 8 documents of 10 pages each, the page-range '41:60' prints the 4635 pages in the 5th and 6th documents as a single document and none of the 4636 pages of the other documents are printed. When "multiple-document- 4637 handling" is 'separate-documents-uncollated-copies' or 'separate- 4638 documents-collated-copies', the Printer object MUST apply each supplied 4639 page range repeatedly to each document copy. For the same job, the 4640 page-range '1:3, 10:10' would print the first 3 pages and the 10th page 4641 of each of the 8 documents in the Job, as 8 separate documents. 4643 In most cases, the exact pages to be printed will be generated by a 4644 device driver and this attribute would not be required. However, when 4645 printing an archived document which has already been formatted, the end 4646 user may elect to print just a subset of the pages contained in the 4647 document. In this case, if page-range = n.m is specified, the first 4648 page to be printed will be page n. All subsequent pages of the document 4649 will be printed through and including page m. 4651 "page-ranges-supported" is a boolean value indicating whether or not the 4652 printer is capable of supporting the printing of page ranges. This 4653 capability may differ from one PDL to another. There is no "page-ranges- 4654 default" attribute. If the "page-ranges" attribute is not supplied by 4655 the client, all pages of the document will be printed. 4657 Note: The effect of this attribute on jobs with multiple documents is 4658 controlled by the "multiple-document-handling" job attribute (section 4659 4.2.4) and the relationship of this attribute and the other attributes 4660 that control document processing is described in section 15.3. 4662 4.2.8 sides (type2 keyword) 4664 This attribute specifies how print-stream pages are to be imposed upon 4665 the sides of an instance of a selected medium, i.e., an impression. 4667 The standard keyword values are: 4669 'one-sided': imposes each consecutive print-stream page upon the same 4670 side of consecutive media sheets. 4671 'two-sided-long-edge': imposes each consecutive pair of print-stream 4672 pages upon front and back sides of consecutive media sheets, such 4673 that the orientation of each pair of print-stream pages on the 4674 medium would be correct for the reader as if for binding on the 4675 long edge. This imposition is sometimes called 'duplex' or 'head- 4676 to-head'. 4677 'two-sided-short-edge': imposes each consecutive pair of print-stream 4678 pages upon front and back sides of consecutive media sheets, such 4679 that the orientation of each pair of print-stream pages on the 4681 Expires December 11, 1999 4682 medium would be correct for the reader as if for binding on the 4683 short edge. This imposition is sometimes called 'tumble' or 'head- 4684 to-toe'. 4686 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 4687 all work the same for portrait or landscape. However 'head-to-toe' is 4688 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 4689 switches between 'duplex' and 'tumble' when using portrait and landscape 4690 modes. 4692 Note: The effect of this attribute on jobs with multiple documents is 4693 controlled by the "multiple-document-handling" job attribute (section 4694 4.2.4) and the relationship of this attribute and the other attributes 4695 that control document processing is described in section 15.3. 4697 4.2.9 number-up (integer(1:MAX)) 4699 This attribute specifies the number of print-stream pages to impose upon 4700 a single side of an instance of a selected medium. For example, if the 4701 value is: 4703 Value Description 4705 '1' the Printer MUST place one print-stream page on a single side 4706 of an instance of the selected medium (MAY add some sort 4707 of translation, scaling, or rotation). 4708 '2' the Printer MUST place two print-stream pages on a single side 4709 of an instance of the selected medium (MAY add some sort 4710 of translation, scaling, or rotation). 4711 '4' the Printer MUST place four print-stream pages on a single 4712 side of an instance of the selected medium (MAY add some 4713 sort of translation, scaling, or rotation). 4715 This attribute primarily controls the translation, scaling and rotation 4716 of print-stream pages. 4718 Note: The effect of this attribute on jobs with multiple documents is 4719 controlled by the "multiple-document-handling" job attribute (section 4720 4.2.4) and the relationship of this attribute and the other attributes 4721 that control document processing is described in section 15.3. 4723 4.2.10 orientation-requested (type2 enum) 4725 This attribute indicates the desired orientation for printed print- 4726 stream pages; it does not describe the orientation of the client- 4727 supplied print-stream pages. 4729 For some document formats (such as 'application/postscript'), the 4730 desired orientation of the print-stream pages is specified within the 4731 document data. This information is generated by a device driver prior 4732 to the submission of the print job. Other document formats (such as 4733 'text/plain') do not include the notion of desired orientation within 4735 Expires December 11, 1999 4736 the document data. In the latter case it is possible for the Printer 4737 object to bind the desired orientation to the document data after it has 4738 been submitted. It is expected that a Printer object would only support 4739 "orientations-requested" for some document formats (e.g., 'text/plain' 4740 or 'text/html') but not others (e.g., 'application/postscript'). This 4741 is no different than any other Job Template attribute since section 4.2, 4742 item 1, points out that a Printer object may support or not support any 4743 Job Template attribute based on the document format supplied by the 4744 client. However, a special mention is made here since it is very likely 4745 that a Printer object will support "orientation-requested" for only a 4746 subset of the supported document formats. 4748 Standard enum values are: 4750 Value Symbolic Name and Description 4752 '3' 'portrait': The content will be imaged across the short edge 4753 of the medium. 4754 '4' 'landscape': The content will be imaged across the long edge 4755 of the medium. Landscape is defined to be a rotation of 4756 the print-stream page to be imaged by +90 degrees with 4757 respect to the medium (i.e. anti-clockwise) from the 4758 portrait orientation. Note: The +90 direction was 4759 chosen because simple finishing on the long edge is the 4760 same edge whether portrait or landscape 4761 '5' 'reverse-landscape': The content will be imaged across the 4762 long edge of the medium. Reverse-landscape is defined to 4763 be a rotation of the print-stream page to be imaged by - 4764 90 degrees with respect to the medium (i.e. clockwise) 4765 from the portrait orientation. Note: The 'reverse- 4766 landscape' value was added because some applications 4767 rotate landscape -90 degrees from portrait, rather than 4768 +90 degrees. 4769 '6' 'reverse-portrait': The content will be imaged across the 4770 short edge of the medium. Reverse-portrait is defined to 4771 be a rotation of the print-stream page to be imaged by 4772 180 degrees with respect to the medium from the portrait 4773 orientation. Note: The 'reverse-portrait' value was 4774 added for use with the "finishings" attribute in cases 4775 where the opposite edge is desired for finishing a 4776 portrait document on simple finishing devices that have 4777 only one finishing position. Thus a 'text'/plain' 4778 portrait document can be stapled "on the right" by a 4779 simple finishing device as is common use with some middle 4780 eastern languages such as Hebrew. 4782 Note: The effect of this attribute on jobs with multiple documents is 4783 controlled by the "multiple-document-handling" job attribute (section 4784 4.2.4) and the relationship of this attribute and the other attributes 4785 that control document processing is described in section 15.3. 4787 Expires December 11, 1999 4788 4.2.11 media (type3 keyword | name(MAX)) 4790 This attribute identifies the medium that the Printer uses for all 4791 impressions of the Job. 4793 The values for "media" include medium-names, medium-sizes, input-trays 4794 and electronic forms so that one attribute specifies the media. If a 4795 Printer object supports a medium name as a value of this attribute, such 4796 a medium name implicitly selects an input-tray that contains the 4797 specified medium. If a Printer object supports a medium size as a value 4798 of this attribute, such a medium size implicitly selects a medium name 4799 that in turn implicitly selects an input-tray that contains the medium 4800 with the specified size. If a Printer object supports an input-tray as 4801 the value of this attribute, such an input-tray implicitly selects the 4802 medium that is in that input-tray at the time the job prints. This case 4803 includes manual-feed input-trays. If a Printer object supports an 4804 electronic form as the value of this attribute, such an electronic form 4805 implicitly selects a medium-name that in turn implicitly selects an 4806 input-tray that contains the medium specified by the electronic form. 4807 The electronic form also implicitly selects an image that the Printer 4808 MUST merge with the document data as its prints each page. 4810 Standard keyword values are (taken from ISO DPA and the Printer MIB) and 4811 are listed in section 14. An administrator MAY define additional values 4812 using the 'name' or 'keyword' attribute syntax, depending on 4813 implementation. 4815 There is also an additional Printer attribute named "media-ready" which 4816 differs from "media-supported" in that legal values only include the 4817 subset of "media-supported" values that are physically loaded and ready 4818 for printing with no operator intervention required. If an IPP object 4819 supports "media-supported", it NEED NOT support "media-ready". 4821 The relationship of this attribute and the other attributes that control 4822 document processing is described in section 15.3. 4824 4.2.12 printer-resolution (resolution) 4826 This attribute identifies the resolution that Printer uses for the Job. 4828 4.2.13 print-quality (type2 enum) 4830 This attribute specifies the print quality that the Printer uses for the 4831 Job. 4833 The standard enum values are: 4835 Value Symbolic Name and Description 4837 '3' 'draft': lowest quality available on the printer 4838 '4' 'normal': normal or intermediate quality on the printer 4839 '5' 'high': highest quality available on the printer 4841 Expires December 11, 1999 4843 4.3 Job Description Attributes 4845 The attributes in this section form the attribute group called "job- 4846 description". The following table summarizes these attributes. The 4847 third column indicates whether the attribute is a REQUIRED attribute 4848 that MUST be supported by Printer objects. If it is not indicated as 4849 REQUIRED, then it is OPTIONAL. The maximum size in octets for 'text' 4850 and 'name' attributes is indicated in parenthesizes. 4852 Expires December 11, 1999 4853 +----------------------------+----------------------+----------------+ 4854 | Attribute | Syntax | REQUIRED? | 4855 +----------------------------+----------------------+----------------+ 4856 | job-uri | uri | REQUIRED | 4857 +----------------------------+----------------------+----------------+ 4858 | job-id | integer(1:MAX) | REQUIRED | 4859 +----------------------------+----------------------+----------------+ 4860 | job-printer-uri | uri | REQUIRED | 4861 +----------------------------+----------------------+----------------+ 4862 | job-more-info | uri | | 4863 +----------------------------+----------------------+----------------+ 4864 | job-name | name (MAX) | REQUIRED | 4865 +----------------------------+----------------------+----------------+ 4866 | job-originating-user-name | name (MAX) | REQUIRED | 4867 +----------------------------+----------------------+----------------+ 4868 | job-state | type1 enum | REQUIRED | 4869 +----------------------------+----------------------+----------------+ 4870 | job-state-reasons | 1setOf type2 keyword | REQUIRED | 4871 +----------------------------+----------------------+----------------+ 4872 | job-state-message | text (MAX) | | 4873 +----------------------------+----------------------+----------------+ 4874 | number-of-documents | integer (0:MAX) | | 4875 +----------------------------+----------------------+----------------+ 4876 | output-device-assigned | name (127) | | 4877 +----------------------------+----------------------+----------------+ 4878 | time-at-creation | integer (MIN:MAX) | REQUIRED | 4879 +----------------------------+----------------------+----------------+ 4880 | time-at-processing | integer (MIN:MAX) | REQUIRED | 4881 +----------------------------+----------------------+----------------+ 4882 | time-at-completed | integer (MIN:MAX) | REQUIRED | 4883 +----------------------------+----------------------+----------------+ 4884 | job-printer-up-time | integer (1:MAX) | REQUIRED | 4885 +----------------------------+----------------------+----------------+ 4886 | date-time-at-creation | dateTime | OPTIONAL | 4887 +----------------------------+----------------------+----------------+ 4888 | date-time-at-processing | dateTime | OPTIONAL | 4889 +----------------------------+----------------------+----------------+ 4890 | date-time-at-completed | dateTime | OPTIONAL | 4891 +----------------------------+----------------------+----------------+ 4892 | number-of-intervening-jobs | integer (0:MAX) | | 4893 +----------------------------+----------------------+----------------+ 4894 | job-message-from-operator | text (127) | | 4895 +----------------------------+----------------------+----------------+ 4896 | job-k-octets | integer (0:MAX) | | 4897 +----------------------------+----------------------+----------------+ 4898 | job-impressions | integer (0:MAX) | | 4899 +----------------------------+----------------------+----------------+ 4900 | job-media-sheets | integer (0:MAX) | | 4901 +----------------------------+----------------------+----------------+ 4902 | job-k-octets-processed | integer (0:MAX) | | 4903 +----------------------------+----------------------+----------------+ 4904 | job-impressions-completed | integer (0:MAX) | | 4905 +----------------------------+----------------------+----------------+ 4906 | job-media-sheets-completed | integer (0:MAX) | | 4908 Expires December 11, 1999 4909 +----------------------------+----------------------+----------------+ 4910 | attributes-charset | charset | REQUIRED | 4911 +----------------------------+----------------------+----------------+ 4912 | attributes-natural-language| naturalLanguage | REQUIRED | 4913 +----------------------------+----------------------+----------------+ 4915 4.3.1 job-uri (uri) 4917 This REQUIRED attribute contains the URI for the job. The Printer 4918 object, on receipt of a new job, generates a URI which identifies the 4919 new Job. The Printer object returns the value of the "job-uri" 4920 attribute as part of the response to a create request. The precise 4921 format of a Job URI is implementation dependent. If the Printer object 4922 supports more than one URI and there is some relationship between the 4923 newly formed Job URI and the Printer object's URI, the Printer object 4924 uses the Printer URI supplied by the client in the create request. For 4925 example, if the create request comes in over a secure channel, the new 4926 Job URI MUST use the same secure channel. This can be guaranteed 4927 because the Printer object is responsible for generating the Job URI and 4928 the Printer object is aware of its security configuration and policy as 4929 well as the Printer URI used in the create request. 4931 For a description of this attribute and its relationship to "job-id" and 4932 "job-printer-uri" attribute, see the discussion in section 2.4 on 4933 "Object Identity". 4935 4.3.2 job-id (integer(1:MAX)) 4937 This REQUIRED attribute contains the ID of the job. The Printer, on 4938 receipt of a new job, generates an ID which identifies the new Job on 4939 that Printer. The Printer returns the value of the "job-id" attribute 4940 as part of the response to a create request. The 0 value is not 4941 included to allow for compatibility with SNMP index values which also 4942 cannot be 0. 4944 For a description of this attribute and its relationship to "job-uri" 4945 and "job-printer-uri" attribute, see the discussion in section 2.4 on 4946 "Object Identity". 4948 4.3.3 job-printer-uri (uri) 4950 This REQUIRED attribute identifies the Printer object that created this 4951 Job object. When a Printer object creates a Job object, it populates 4952 this attribute with the Printer object URI that was used in the create 4953 request. This attribute permits a client to identify the Printer object 4954 that created this Job object when only the Job object's URI is available 4955 to the client. The client queries the creating Printer object to 4956 determine which languages, charsets, operations, are supported for this 4957 Job. 4959 Expires December 11, 1999 4960 For a description of this attribute and its relationship to "job-uri" 4961 and "job-id" attribute, see the discussion in section 2.4 on "Object 4962 Identity". 4964 4.3.4 job-more-info (uri) 4966 Similar to "printer-more-info", this attribute contains the URI 4967 referencing some resource with more information about this Job object, 4968 perhaps an HTML page containing information about the Job. 4970 4.3.5 job-name (name(MAX)) 4972 This REQUIRED attribute is the name of the job. It is a name that is 4973 more user friendly than the "job-uri" attribute value. It does not need 4974 to be unique between Jobs. The Job's "job-name" attribute is set to the 4975 value supplied by the client in the "job-name" operation attribute in 4976 the create request (see Section 3.2.1.1). If, however, the "job-name" 4977 operation attribute is not supplied by the client in the create request, 4978 the Printer object, on creation of the Job, MUST generate a name. The 4979 printer SHOULD generate the value of the Job's "job-name" attribute from 4980 the first of the following sources that produces a value: 1) the 4981 "document-name" operation attribute of the first (or only) document, 2) 4982 the "document-URI" attribute of the first (or only) document, or 3) any 4983 other piece of Job specific and/or Document Content information. 4985 4.3.6 job-originating-user-name (name(MAX)) 4987 This REQUIRED attribute contains the name of the end user that submitted 4988 the print job. The Printer object sets this attribute to the most 4989 authenticated printable name that it can obtain from the authentication 4990 service over which the IPP operation was received. Only if such is not 4991 available, does the Printer object use the value supplied by the client 4992 in the "requesting-user-name" operation attribute of the create 4993 operation (see Section 8). 4995 Note: The Printer object needs to keep an internal originating user id 4996 of some form, typically as a credential of a principal, with the Job 4997 object. Since such an internal attribute is implementation-dependent 4998 and not of interest to clients, it is not specified as a Job Description 4999 attribute. This originating user id is used for authorization checks 5000 (if any) on all subsequent operation. 5002 4.3.7 job-state (type1 enum) 5004 This REQUIRED attribute identifies the current state of the job. Even 5005 though the IPP protocol defines seven values for job states (plus the 5006 out-of-band 'unknown' value - see Section 4.1), implementations only 5007 need to support those states which are appropriate for the particular 5008 implementation. In other words, a Printer supports only those job 5009 states implemented by the output device and available to the Printer 5010 object implementation. 5012 Expires December 11, 1999 5013 Standard enum values are: 5015 Values Symbolic Name and Description 5017 '3' 'pending': The job is a candidate to start processing, but is 5018 not yet processing. 5020 '4' 'pending-held': The job is not a candidate for processing for 5021 any number of reasons but will return to the 'pending' 5022 state as soon as the reasons are no longer present. The 5023 job's "job-state-reason" attribute MUST indicate why the 5024 job is no longer a candidate for processing. 5026 '5' 'processing': One or more of: 5028 1. the job is using, or is attempting to use, one or 5029 more purely software processes that are analyzing, 5030 creating, or interpreting a PDL, etc., 5031 2. the job is using, or is attempting to use, one or 5032 more hardware devices that are interpreting a PDL, making 5033 marks on a medium, and/or performing finishing, such as 5034 stapling, etc., 5035 3. the Printer object has made the job ready for 5036 printing, but the output device is not yet printing it, 5037 either because the job hasn't reached the output device 5038 or because the job is queued in the output device or some 5039 other spooler, awaiting the output device to print it. 5041 When the job is in the 'processing' state, the entire job 5042 state includes the detailed status represented in the 5043 Printer object's "printer-state", "printer-state- 5044 reasons", and "printer-state-message" attributes. 5046 Implementations MAY, though they NEED NOT, include 5047 additional values in the job's "job-state-reasons" 5048 attribute to indicate the progress of the job, such as 5049 adding the 'job-printing' value to indicate when the 5050 output device is actually making marks on paper and/or 5051 the 'processing-to-stop-point' value to indicate that the 5052 IPP object is in the process of canceling or aborting the 5053 job. Most implementations won't bother with this nuance. 5055 '6' 'processing-stopped': The job has stopped while processing 5056 for any number of reasons and will return to the 5057 'processing' state as soon as the reasons are no longer 5058 present. 5060 The job's "job-state-reason" attribute MAY indicate why 5061 the job has stopped processing. For example, if the 5062 output device is stopped, the 'printer-stopped' value MAY 5063 be included in the job's "job-state-reasons" attribute. 5065 Expires December 11, 1999 5066 Note: When an output device is stopped, the device 5067 usually indicates its condition in human readable form 5068 locally at the device. A client can obtain more complete 5069 device status remotely by querying the Printer object's 5070 "printer-state", "printer-state-reasons" and "printer- 5071 state-message" attributes. 5073 '7' 'canceled': The job has been canceled by a Cancel-Job 5074 operation and the Printer object has completed canceling 5075 the job and all job status attributes have reached their 5076 final values for the job. While the Printer object is 5077 canceling the job, the job remains in its current state, 5078 but the job's "job-state-reasons" attribute SHOULD 5079 contain the 'processing-to-stop-point' value and one of 5080 the 'canceled-by-user', 'canceled-by-operator', or 5081 'canceled-at-device' value. When the job moves to the 5082 'canceled' state, the 'processing-to-stop-point' value, 5083 if present, MUST be removed, but the 'canceled-by-xxx', 5084 if present, MUST remain. 5086 '8' 'aborted': The job has been aborted by the system, usually 5087 while the job was in the 'processing' or 'processing- 5088 stopped' state and the Printer has completed aborting the 5089 job and all job status attributes have reached their 5090 final values for the job. While the Printer object is 5091 aborting the job, the job remains in its current state, 5092 but the job's "job-state-reasons" attribute SHOULD 5093 contain the 'processing-to-stop-point' and 'aborted-by- 5094 system' values. When the job moves to the 'aborted' 5095 state, the 'processing-to-stop-point' value, if present, 5096 MUST be removed, but the 'aborted-by-system' value, if 5097 present, MUST remain. 5099 '9' 'completed': The job has completed successfully or with 5100 warnings or errors after processing and all of the job 5101 media sheets have been successfully stacked in the 5102 appropriate output bin(s) and all job status attributes 5103 have reached their final values for the job. The job's 5104 "job-state-reasons" attribute SHOULD contain one of: 5105 'completed-successfully', 'completed-with-warnings', or 5106 'completed-with-errors' values. 5108 The final value for this attribute MUST be one of: 'completed', 5109 'canceled', or 'aborted' before the Printer removes the job altogether. 5110 The length of time that jobs remain in the 'canceled', 'aborted', and 5111 'completed' states depends on implementation. See section 4.3.7.2. 5113 The following figure shows the normal job state transitions. 5115 Expires December 11, 1999 5116 +----> canceled 5117 / 5118 +----> pending --------> processing ---------+------> completed 5119 | ^ ^ \ 5120 --->+ | | +----> aborted 5121 | v v / 5122 +----> pending-held processing-stopped ---+ 5124 Normally a job progresses from left to right. Other state transitions 5125 are unlikely, but are not forbidden. Not shown are the transitions to 5126 the 'canceled' state from the 'pending', 'pending-held', and 5127 'processing-stopped' states. 5129 Jobs reach one of the three terminal states: 'completed', 'canceled', or 5130 'aborted', after the jobs have completed all activity, including 5131 stacking output media, after the jobs have completed all activity, and 5132 all job status attributes have reached their final values for the job. 5134 4.3.7.1 Forwarding Servers 5136 As with all other IPP attributes, if the implementation cannot determine 5137 the correct value for this attribute, it SHOULD respond with the out-of- 5138 band value 'unknown' (see section 4.1) rather than try to guess at some 5139 possibly incorrect value and give the end user the wrong impression 5140 about the state of the Job object. For example, if the implementation 5141 is just a gateway into some printing system from which it can normally 5142 get status, but temporarily is unable, then the implementation should 5143 return the 'unknown' value. However, if the implementation is a gateway 5144 to a printing system that never provides detailed status about the print 5145 job, the implementation MAY set the IPP Job object's state to 5146 'completed', provided that it also sets the 'queued-in-device' value in 5147 the job's "job-state-reasons" attribute (see section 4.3.8). 5149 4.3.7.2 Partitioning of Job States 5151 This section partitions the 7 job states into phases: Job Not 5152 Completed, Job Retention, Job History, and Job Removal. This section 5153 also explains the 'job-restartable' value of the "job-state-reasons" Job 5154 Description attribute for use with the Restart-Job operation. 5156 Job Not Completed: When a job is in the 'pending', 'pending-held', 5157 'processing', or 'processing-stopped' states, the job is not completed. 5159 Job Retention: When a job enters one of the three terminal job states: 5160 'completed', 'canceled', or 'aborted', the IPP Printer object MAY 5161 "retain" the job in a restartable condition for an implementation- 5162 defined time period. This time period MAY be zero seconds and MAY 5163 depend on the terminal job state. This phase is called Job Retention. 5164 While in the Job Retention phase, the job's document data is retained 5165 and a client may restart the job using the Restart-Job operation. If 5166 the IPP object supports the Restart-Job operation, then it SHOULD 5167 indicate that the job is restartable by adding the 'job-restartable' 5169 Expires December 11, 1999 5170 value to the job's "job-state-reasons" attribute (see Section 4.3.8) 5171 during the Job Retention phase. 5173 Job History: After the Job Retention phase expires for a job, the 5174 Printer object deletes the document data for the job and the job becomes 5175 part of the Job History. The Printer object MAY also delete any number 5176 of the job attributes. Since the job is no longer restartable, the 5177 Printer object MUST remove the 'job-restartable' value from the job's 5178 "job-state-reasons" attribute, if present. 5180 Job Removal: After the job has remained in the Job History for an 5181 implementation-defined time, such as when the number of jobs exceeds a 5182 fixed number or after a fixed time period (which MAY be zero seconds), 5183 the IPP Printer removes the job from the system. 5185 Using the Get-Jobs operation and supplying the 'not-completed' value for 5186 the "which-jobs" operation attribute, a client is requesting jobs in the 5187 Job Not Completed phase. Using the Get-Jobs operation and supplying the 5188 'completed' value for the "which-jobs" operation attribute, a client is 5189 requesting jobs in the Job Retention and Job History phases. Using the 5190 Get-Job-Attributes operation, a client is requesting a job in any phase 5191 except Job Removal. After Job Removal, the Get-Job-Attributes and Get- 5192 Jobs operations no longer are capable of returning any information about 5193 a job. 5195 4.3.8 job-state-reasons (1setOf type2 keyword) 5197 This REQUIRED attribute provides additional information about the job's 5198 current state, i.e., information that augments the value of the job's 5199 "job-state" attribute. 5201 These values MAY be used with any job state or states for which the 5202 reason makes sense. Some of these value definitions indicate 5203 conformance requirements; the rest are OPTIONAL. Furthermore, when 5204 implemented, the Printer MUST return these values when the reason 5205 applies and MUST NOT return them when the reason no longer applies 5206 whether the value of the Job's "job-state" attribute changed or not. 5207 When the Job does not have any reasons for being in its current state, 5208 the value of the Job's "job-state-reasons" attribute MUST be 'none'. 5210 Note: While values cannot be added to the 'job-state' attribute without 5211 impacting deployed clients that take actions upon receiving "job-state" 5212 values, it is the intent that additional "job-state-reasons" values can 5213 be defined and registered without impacting such deployed clients. In 5214 other words, the "job-state-reasons" attribute is intended to be 5215 extensible. 5217 The following standard keyword values are defined. For ease of 5218 understanding, the values are presented in the order in which the 5219 reasons are likely to occur (if implemented), starting with the 'job- 5220 incoming' value: 5222 'none': There are no reasons for the job's current state. This 5223 state reason is semantically equivalent to "job-state-reasons" 5225 Expires December 11, 1999 5226 without any value and MUST be used when there is no other value, 5227 since the 1setOf attribute syntax requires at least one value. 5228 'job-incoming': The Create-Job operation has been accepted by the 5229 Printer, but the Printer is expecting additional Send-Document 5230 and/or Send-URI operations and/or is accessing/accepting document 5231 data. 5232 'job-data-insufficient': The Create-Job operation has been accepted 5233 by the Printer, but the Printer is expecting additional document 5234 data before it can move the job into the 'processing' state. If a 5235 Printer starts processing before it has received all data, the 5236 Printer removes the 'job-data-insufficient' reason, but the 'job- 5237 incoming' remains. If a Printer starts processing after it has 5238 received all data, the Printer removes the 'job-data-insufficient' 5239 reason and the 'job-incoming' at the same time. 5240 'document-access-error': After accepting a Print-URI or Send-URI 5241 request, the Printer could not access one or more documents passed 5242 by reference. This reason is intended to cover any file access 5243 problem, including file does not exist and access denied because of 5244 an access control problem. The Printer MAY also indicate the 5245 document access error using the "job-document-access-errors" Job 5246 Description attribute (see section 4.3.11). Whether the Printer 5247 aborts the job and moves the job to the 'aborted' job state or 5248 prints all documents that are accessible and moves the job to the 5249 'completed' job state and adds the 'completed-with-errors' value in 5250 the job's "job-state-reasons" attribute depends on implementation 5251 and/or site policy. This value SHOULD be supported if the Print- 5252 URI or Send-URI operations are supported. 5253 'submission-interrupted': The job was not completely submitted for 5254 some unforeseen reason, such as: (1) the Printer has crashed before 5255 the job was closed by the client, (2) the Printer or the document 5256 transfer method has crashed in some non-recoverable way before the 5257 document data was entirely transferred to the Printer, (3) the 5258 client crashed or failed to close the job before the time-out 5259 period. See section 4.4.31. 5260 'job-outgoing': The Printer is transmitting the job to the output 5261 device. 5262 'job-hold-until-specified': The value of the job's "job-hold-until" 5263 attribute was specified with a time period that is still in the 5264 future. The job MUST NOT be a candidate for processing until this 5265 reason is removed and there are no other reasons to hold the job. 5266 This value SHOULD be supported if the "job-hold-until" Job Template 5267 attribute is supported. 5268 'resources-are-not-ready': At least one of the resources needed by 5269 the job, such as media, fonts, resource objects, etc., is not ready 5270 on any of the physical printer's for which the job is a candidate. 5271 This condition MAY be detected when the job is accepted, or 5272 subsequently while the job is pending or processing, depending on 5273 implementation. The job may remain in its current state or be 5274 moved to the 'pending-held' state, depending on implementation 5275 and/or job scheduling policy. 5276 'printer-stopped-partly': The value of the Printer's "printer-state- 5277 reasons" attribute contains the value 'stopped-partly'. 5278 'printer-stopped': The value of the Printer's "printer-state" 5279 attribute is 'stopped'. 5281 Expires December 11, 1999 5283 'job-interpreting': Job is in the 'processing' state, but more 5284 specifically, the Printer is interpreting the document data. 5285 'job-queued': Job is in the 'processing' state, but more 5286 specifically, the Printer has queued the document data. 5287 'job-transforming': Job is in the 'processing' state, but more 5288 specifically, the Printer is interpreting document data and 5289 producing another electronic representation. 5290 'job-queued-for-marker': Job is in any of the 'pending-held', 5291 'pending', or 'processing' states, but more specifically, the 5292 Printer has completed enough processing of the document to be able 5293 to start marking and the job is waiting for the marker. Systems 5294 that require human intervention to release jobs using the Release- 5295 Job operation, put the job into the 'pending-held' job state. 5296 Systems that automatically select a job to use the marker put the 5297 job into the 'pending' job state or keep the job in the 5298 'processing' job state while waiting for the marker, depending on 5299 implementation. All implementations put the job into (or back 5300 into) the 'processing' state when marking does begin. 5301 'job-printing': The output device is marking media. This value is 5302 useful for Printers which spend a great deal of time processing (1) 5303 when no marking is happening and then want to show that marking is 5304 now happening or (2) when the job is in the process of being 5305 canceled or aborted while the job remains in the 'processing' 5306 state, but the marking has not yet stopped so that impression or 5307 sheet counts are still increasing for the job. 5308 'job-canceled-by-user': The job was canceled by the owner of the job 5309 using the Cancel-Job request, i.e., by a user whose authenticated 5310 identity is the same as the value of the originating user that 5311 created the Job object, or by some other authorized end-user, such 5312 as a member of the job owner's security group. This value SHOULD 5313 be supported. 5314 'job-canceled-by-operator': The job was canceled by the operator 5315 using the Cancel-Job request, i.e., by a user who has been 5316 authenticated as having operator privileges (whether local or 5317 remote). If the security policy is to allow anyone to cancel 5318 anyone's job, then this value may be used when the job is canceled 5319 by other than the owner of the job. For such a security policy, in 5320 effect, everyone is an operator as far as canceling jobs with IPP 5321 is concerned. This value SHOULD be supported if the implementation 5322 permits canceling by other than the owner of the job. 5323 'job-canceled-at-device': The job was canceled by an unidentified 5324 local user, i.e., a user at a console at the device. This value 5325 SHOULD be supported if the implementation supports canceling jobs 5326 at the console. 5327 'aborted-by-system': The job (1) is in the process of being aborted, 5328 (2) has been aborted by the system and placed in the 'aborted' 5329 state, or (3) has been aborted by the system and placed in the 5330 'pending-held' state, so that a user or operator can manually try 5331 the job again. This value SHOULD be supported. 5332 'unsupported-compression': The job was aborted by the system because 5333 the Printer determined while attempting to decompress the document- 5334 data's that the compression is actually not among those supported 5335 by the Printer. This value MUST be supported, since "compressions 5336 is a REQUIRED operation attribute. 5338 Expires December 11, 1999 5340 'compression-error': The job was aborted by the system because the 5341 Printer encountered an error in the document-data while 5342 decompressing it. If the Printer posts this reason, the document- 5343 data has already passed any tests that would have led to the 5344 'unsupported-compression' job-state-reason. 5345 'unsupported-document-format': The job was aborted by the system 5346 because the document-data's document-format is not among those 5347 supported by the Printer. If the client specifies the document- 5348 format as 'application/octet-stream', the printer MAY abort the job 5349 and post this reason even though the format is a member of the 5350 "document-format-supported" printer attribute, but not among the 5351 auto-sensed document-formats. This value MUST be supported, since 5352 "document-format" is a REQUIRED operation attribute. 5353 'document-format-error': The job was aborted by the system because 5354 the Printer encountered an error in the document-data while 5355 processing it. If the Printer posts this reason, the document-data 5356 has already passed any tests that would have led to the 5357 'unsupported-document-format' job-state-reason. 5358 'processing-to-stop-point': The requester has issued a Cancel-Job 5359 operation or the Printer object has aborted the job, but is still 5360 performing some actions on the job until a specified stop point 5361 occurs or job termination/cleanup is completed. 5363 If the implementation requires some measurable time to cancel the 5364 job in the 'processing' or 'processing-stopped' job states, the IPP 5365 object MUST use this value to indicate that the Printer object is 5366 still performing some actions on the job while the job remains in 5367 the 'processing' or 'processing-stopped' state. After all the 5368 job's job description attributes have stopped incrementing, the 5369 Printer object moves the job from the 'processing' state to the 5370 'canceled' or 'aborted' job states. 5372 'service-off-line': The Printer is off-line and accepting no jobs. 5373 All 'pending' jobs are put into the 'pending-held' state. This 5374 situation could be true if the service's or document transform's 5375 input is impaired or broken. 5376 'job-completed-successfully': The job completed successfully. This 5377 value SHOULD be supported. 5378 'job-completed-with-warnings': The job completed with warnings. 5379 This value SHOULD be supported if the implementation detects 5380 warnings. 5381 'job-completed-with-errors': The job completed with errors (and 5382 possibly warnings too). This value SHOULD be supported if the 5383 implementation detects errors. 5384 'job-restartable' - This job is retained (see section 4.3.7.2) and is 5385 currently able to be restarted using the Restart-Job operation (see 5386 section 3.3.7). If 'job-restartable' is a value of the job's 'job- 5387 state-reasons' attribute, then the IPP object MUST accept a 5388 Restart-Job operation for that job. This value SHOULD be supported 5389 if the Restart-Job operation is supported. 5390 'queued-in-device': The job has been forwarded to a device or print 5391 system that is unable to send back status. The Printer sets the 5392 job's "job-state " attribute to 'completed' and adds the 'queued- 5393 in-device' value to the job's "job-state-reasons" attribute to 5394 indicate that the Printer has no additional information about the 5396 Expires December 11, 1999 5397 job and never will have any better information. See section 5398 4.3.7.1. 5400 4.3.9 job-state-message (text(MAX)) 5402 This attribute specifies information about the "job-state" and "job- 5403 state-reasons" attributes in human readable text. If the Printer object 5404 supports this attribute, the Printer object MUST be able to generate 5405 this message in any of the natural languages identified by the Printer's 5406 "generated-natural-language-supported" attribute (see the "attributes- 5407 natural-language" operation attribute specified in Section 3.1.4.1). 5409 The value SHOULD NOT contain additional information not contained in the 5410 values of the "job-state" and "job-states-reasons" attributes, such as 5411 interpreter error information. Otherwise, application programs might 5412 attempt to parse the (localized text). For such additional information 5413 such as interpreter errors for application program consumption or 5414 specific document access errors, new attributes with keyword values, 5415 needs to be developed and registered. 5417 4.3.10 job-detailed-status-messages (1setOf text(MAX)) 5419 This attribute specifies additional detailed and technical information 5420 about the job. Neither the Printer nor the client localizes the 5421 message(s), since they are intended for use by the system administrator 5422 or other experienced technical persons. Clients MUST NOT attempt to 5423 parse the value of this attribute. See "job-document-access-errors" 5424 (section 4.3.11) for additional errors that a program can process. 5426 4.3.11 job-document-access-errors (1setOf text(MAX)) 5428 This attribute provides additional information about each document 5429 access error for this job encountered by the Printer after it returned a 5430 response to the Print-URI or Send-URI operation and subsequently 5431 attempted to access document(s) supplied in the Print-URI or Send-URI 5432 operation. For errors in the protocol that is identified by the URI 5433 scheme in the "document-uri" operation attribute, such as 'http:' or 5434 'ftp:', the error code is returned in parentheses, followed by the URI. 5435 For example: 5437 (404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11- 5438 990510.pdf 5440 Most Internet protocols use decimal error codes (unlike IPP), so the 5441 ASCII error code representation is in decimal. 5443 4.3.12 number-of-documents (integer(0:MAX)) 5445 This attribute indicates the number of documents in the job, i.e., the 5446 number of Send-Document, Send-URI, Print-Job, or Print-URI operations 5447 that the Printer has accepted for this job, regardless of whether the 5448 document data has reached the Printer object or not. 5450 Expires December 11, 1999 5451 Implementations supporting the OPTIONAL Create-Job/Send-Document/Send- 5452 URI operations SHOULD support this attribute so that clients can query 5453 the number of documents in each job. 5455 4.3.13 output-device-assigned (name(127)) 5457 This attribute identifies the output device to which the Printer object 5458 has assigned this job. If an output device implements an embedded 5459 Printer object, the Printer object NEED NOT set this attribute. If a 5460 print server implements a Printer object, the value MAY be empty (zero- 5461 length string) or not returned until the Printer object assigns an 5462 output device to the job. This attribute is particularly useful when a 5463 single Printer object support multiple devices (so called "fan-out"). 5465 4.3.14 Event Time Job Description Attributes 5467 This section defines the Job Description attributes that indicate the 5468 time at which certain events occur for a job. If the job event has not 5469 yet occurred, then the IPP object MUST return the 'no-value' out-of-band 5470 value (see the beginning of Section 4.1). The "time-at-xxx(integer)" 5471 attributes represent time as an 'integer' representing the number of 5472 seconds since the device was powered up (informally called "time 5473 ticks"). The "date-time-at-xxx(dateTime)" attributes represent time as 5474 'dateTime' representing date and time (including an offset from UTC). 5476 In order to populate these attributes, the Printer object copies the 5477 value(s) of the following Printer Description attributes at the time the 5478 event occurs: 5480 1. the value in the Printer's "printer-up-time" attribute for the 5481 "time-at-xxx(integer)" attributes 5483 2. the value in the Printer's "printer-current-time" attribute for the 5484 "date-time-at-xxx(dateTime)" attributes. 5486 If the Printer resets its "printer-up-time" attribute to 1 on power-up 5487 (see section 4.4.29) and has persistent jobs, then it MUST change all of 5488 jobs' "time-at-xxx(integer)" (time tick) job attributes whose events 5489 have occurred either to: 5491 1. 0 to indicate that the event happened before the most recent power 5492 up OR 5494 2. the negative of the number of seconds before the most recent power- 5495 up that the event took place, though the negative number NEED NOT 5496 reflect the exact number of seconds. 5498 If a client queries a "time-at-xxx(integer)" time tick Job attribute and 5499 finds the value to be 0 or negative, the client MUST assume that the 5500 event occurred in some life other than the Printer's current life. 5502 Note: A Printer does not change the values of any "date-time-at- 5503 xxx(dateTime)" job attributes on power-up. 5505 Expires December 11, 1999 5506 4.3.14.1 time-at-creation (integer(MIN:MAX)) 5508 This REQUIRED attribute indicates the time at which the Job object was 5509 created. 5511 4.3.14.2 time-at-processing (integer(MIN:MAX)) 5513 This REQUIRED attribute indicates the time at which the Job object first 5514 began processing after the create operation or the most recent Restart- 5515 Job operation. The out-of-band 'no-value' value is returned if the job 5516 has not yet been in the 'processing' state (see the beginning of Section 5517 4.1). 5519 4.3.14.3 time-at-completed (integer(MIN:MAX)) 5521 This REQUIRED attribute indicates the time at which the Job object 5522 completed (or was cancelled or aborted). The out-of-band 'no-value' 5523 value is returned if the job has not yet completed, been canceled, or 5524 aborted (see the beginning of Section 4.1). 5526 4.3.14.4 job-printer-up-time (integer(1:MAX)) 5528 This REQUIRED Job Description attribute indicates the amount of time (in 5529 seconds) that the Printer implementation has been up and running. This 5530 attribute is an alias for the "printer-up-time" Printer Description 5531 attribute (see Section 4.4.29). 5533 A client MAY request this attribute in a Get-Job-Attributes or Get-Jobs 5534 request and use the value returned in combination with other requested 5535 Event Time Job Description Attributes in order to display time 5536 attributes to a user. The difference between this attribute and the 5537 'integer' value of a "time-at-xxx" attribute is the number of seconds 5538 ago that the "time-at-xxx" event occurred. A client can compute the 5539 wall-clock time at which the "time-at-xxx" event occurred by subtracting 5540 this difference from the client.s wall-clock time. 5542 4.3.14.5 date-time-at-creation (dateTime) 5544 This attribute indicates the date and time at which the Job object was 5545 created. 5547 4.3.14.6 date-time-at-processing (dateTime) 5549 This attribute indicates the date and time at which the Job object first 5550 began processing after the create operation or the most recent Restart- 5551 Job operation. 5553 4.3.14.7 date-time-at-completed (dateTime) 5555 This attribute indicates the date and time at which the Job object 5556 completed (or was cancelled or aborted). 5558 Expires December 11, 1999 5559 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 5561 This attribute indicates the number of jobs that are "ahead" of this job 5562 in the relative chronological order of expected time to complete (i.e., 5563 the current scheduled order). For efficiency, it is only necessary to 5564 calculate this value when an operation is performed that requests this 5565 attribute. 5567 4.3.16 job-message-from-operator (text(127)) 5569 This attribute provides a message from an operator, system administrator 5570 or "intelligent" process to indicate to the end user the reasons for 5571 modification or other management action taken on a job. 5573 4.3.17 Job Size Attributes 5575 This sub-section defines job attributes that describe the size of the 5576 job. These attributes are not intended to be counters; they are 5577 intended to be useful routing and scheduling information if known. For 5578 these attributes, the Printer object may try to compute the value if it 5579 is not supplied in the create request. Even if the client does supply a 5580 value for these three attributes in the create request, the Printer 5581 object MAY choose to change the value if the Printer object is able to 5582 compute a value which is more accurate than the client supplied value. 5583 The Printer object may be able to determine the correct value for these 5584 attributes either right at job submission time or at any later point in 5585 time. 5587 4.3.17.1 job-k-octets (integer(0:MAX)) 5589 This attribute specifies the total size of the document(s) in K octets, 5590 i.e., in units of 1024 octets requested to be processed in the job. The 5591 value MUST be rounded up, so that a job between 1 and 1024 octets MUST 5592 be indicated as being 1, 1025 to 2048 MUST be 2, etc. 5594 This value MUST NOT include the multiplicative factors contributed by 5595 the number of copies specified by the "copies" attribute, independent of 5596 whether the device can process multiple copies without making multiple 5597 passes over the job or document data and independent of whether the 5598 output is collated or not. Thus the value is independent of the 5599 implementation and indicates the size of the document(s) measured in K 5600 octets independent of the number of copies. 5602 This value MUST also not include the multiplicative factor due to a 5603 copies instruction embedded in the document data. If the document data 5604 actually includes replications of the document data, this value will 5605 include such replication. In other words, this value is always the size 5606 of the source document data, rather than a measure of the hardcopy 5607 output to be produced. 5609 Expires December 11, 1999 5610 4.3.17.2 job-impressions (integer(0:MAX)) 5612 This attribute specifies the total size in number of impressions of the 5613 document(s) being submitted (see the definition of impression in section 5614 12.2.5). 5616 As with "job-k-octets", this value MUST NOT include the multiplicative 5617 factors contributed by the number of copies specified by the "copies" 5618 attribute, independent of whether the device can process multiple copies 5619 without making multiple passes over the job or document data and 5620 independent of whether the output is collated or not. Thus the value is 5621 independent of the implementation and reflects the size of the 5622 document(s) measured in impressions independent of the number of copies. 5624 As with "job-k-octets", this value MUST also not include the 5625 multiplicative factor due to a copies instruction embedded in the 5626 document data. If the document data actually includes replications of 5627 the document data, this value will include such replication. In other 5628 words, this value is always the number of impressions in the source 5629 document data, rather than a measure of the number of impressions to be 5630 produced by the job. 5632 4.3.17.3 job-media-sheets (integer(0:MAX)) 5634 This attribute specifies the total number of media sheets to be produced 5635 for this job. 5637 Unlike the "job-k-octets" and the "job-impressions" attributes, this 5638 value MUST include the multiplicative factors contributed by the number 5639 of copies specified by the "copies" attribute and a 'number of copies' 5640 instruction embedded in the document data, if any. This difference 5641 allows the system administrator to control the lower and upper bounds of 5642 both (1) the size of the document(s) with "job-k-octets-supported" and 5643 "job-impressions-supported" and (2) the size of the job with "job-media- 5644 sheets-supported". 5646 4.3.18 Job Progress Attributes 5648 This sub-section defines job attributes that describe the progress of 5649 the job. These attributes are intended to be counters. That is, the 5650 value for a job that has not started processing MUST be 0. When the 5651 job's "job-state" is 'processing' or 'processing-stopped', this value is 5652 intended to contain the amount of the job that has been processed to the 5653 time at which the attributes are requested. When the job enters the 5654 'completed', 'canceled', or 'aborted' states, these values are the final 5655 values for the job. 5657 4.3.18.1 job-k-octets-processed (integer(0:MAX)) 5659 This attribute specifies the total number of octets processed in K 5660 octets, i.e., in units of 1024 octets so far. The value MUST be rounded 5662 Expires December 11, 1999 5663 up, so that a job between 1 and 1024 octets inclusive MUST be indicated 5664 as being 1, 1025 to 2048 inclusive MUST be 2, etc. 5666 For implementations where multiple copies are produced by the 5667 interpreter with only a single pass over the data, the final value MUST 5668 be equal to the value of the "job-k-octets" attribute. For 5669 implementations where multiple copies are produced by the interpreter by 5670 processing the data for each copy, the final value MUST be a multiple of 5671 the value of the "job-k-octets" attribute. 5673 4.3.18.2 job-impressions-completed (integer(0:MAX)) 5675 This job attribute specifies the number of impressions completed for the 5676 job so far. For printing devices, the impressions completed includes 5677 interpreting, marking, and stacking the output. 5679 4.3.18.3 job-media-sheets-completed (integer(0:MAX)) 5681 This job attribute specifies the media-sheets completed marking and 5682 stacking for the entire job so far whether those sheets have been 5683 processed on one side or on both. 5685 4.3.19 attributes-charset (charset) 5687 This REQUIRED attribute is populated using the value in the client 5688 supplied "attributes-charset" attribute in the create request. It 5689 identifies the charset (coded character set and encoding method) used by 5690 any Job attributes with attribute syntax 'text' and 'name' that were 5691 supplied by the client in the create request. See Section 3.1.4 for a 5692 complete description of the "attributes-charset" operation attribute. 5694 This attribute does not indicate the charset in which the 'text' and 5695 'name' values are stored internally in the Job object. The internal 5696 charset is implementation-defined. The IPP object MUST convert from 5697 whatever the internal charset is to that being requested in an operation 5698 as specified in Section 3.1.4. 5700 4.3.20 attributes-natural-language (naturalLanguage) 5702 This REQUIRED attribute is populated using the value in the client 5703 supplied "attributes-natural-language" attribute in the create request. 5704 It identifies the natural language used for any Job attributes with 5705 attribute syntax 'text' and 'name' that were supplied by the client in 5706 the create request. See Section 3.1.4 for a complete description of the 5707 "attributes-natural-language" operation attribute. See Sections 4.1.1.2 5708 and 4.1.2.2 for how a Natural Language Override may be supplied 5709 explicitly for each 'text' and 'name' attribute value that differs from 5710 the value identified by the "attributes-natural-language" attribute. 5712 Expires December 11, 1999 5713 4.4 Printer Description Attributes 5715 These attributes form the attribute group called "printer-description". 5716 The following table summarizes these attributes, their syntax, and 5717 whether or not they are REQUIRED for a Printer object to support. If 5718 they are not indicated as REQUIRED, they are OPTIONAL. The maximum size 5719 in octets for 'text' and 'name' attributes is indicated in 5720 parenthesizes. 5722 Note: How these attributes are set by an Administrator is outside the 5723 scope of this IPP/1.1 document. 5725 Expires December 11, 1999 5726 +----------------------------+---------------------------+-----------+ 5727 | Attribute | Syntax | REQUIRED? | 5728 +----------------------------+---------------------------+-----------+ 5729 | printer-uri-supported | 1setOf uri | REQUIRED | 5730 +----------------------------+---------------------------+-----------+ 5731 | uri-security-supported | 1setOf type2 keyword | REQUIRED | 5732 +----------------------------+---------------------------+-----------+ 5733 | uri-authentication- | 1setOf type2 keyword | REQUIRED | 5734 | supported | | | 5735 +----------------------------+---------------------------+-----------+ 5736 | printer-name | name (127) | REQUIRED | 5737 +----------------------------+---------------------------+-----------+ 5738 | printer-location | text (127) | | 5739 +----------------------------+---------------------------+-----------+ 5740 | printer-info | text (127) | | 5741 +----------------------------+---------------------------+-----------+ 5742 | printer-more-info | uri | | 5743 +----------------------------+---------------------------+-----------+ 5744 | printer-driver-installer | uri | | 5745 +----------------------------+---------------------------+-----------+ 5746 | printer-make-and-model | text (127) | | 5747 +----------------------------+---------------------------+-----------+ 5748 | printer-more-info- | uri | | 5749 | manufacturer | | | 5750 +----------------------------+---------------------------+-----------+ 5751 | printer-state | type1 enum | REQUIRED | 5752 +----------------------------+---------------------------+-----------+ 5753 | printer-state-reasons | 1setOf type2 keyword | REQUIRED | 5754 +----------------------------+---------------------------+-----------+ 5755 | printer-state-message | text (MAX) | | 5756 +----------------------------+---------------------------+-----------+ 5757 | ipp-versions-supported | 1setOf type2 keyword | REQUIRED | 5758 +----------------------------+---------------------------+-----------+ 5759 | operations-supported | 1setOf type2 enum | REQUIRED | 5760 +----------------------------+---------------------------+-----------+ 5761 | ipp-multiple-document-jobs-| boolean | | 5762 | supported | | | 5763 +----------------------------+---------------------------+-----------+ 5764 | charset-configured | charset | REQUIRED | 5765 +----------------------------+---------------------------+-----------+ 5766 | charset-supported | 1setOf charset | REQUIRED | 5767 +----------------------------+---------------------------+-----------+ 5768 | natural-language-configured| naturalLanguage | REQUIRED | 5769 +----------------------------+---------------------------+-----------+ 5770 | generated-natural-language-| 1setOf naturalLanguage | REQUIRED | 5771 | supported | | | 5772 +----------------------------+---------------------------+-----------+ 5773 | document-format-default | mimeMediaType | REQUIRED | 5774 +----------------------------+---------------------------+-----------+ 5775 | document-format-supported | 1setOf mimeMediaType | REQUIRED | 5776 +----------------------------+---------------------------+-----------+ 5777 | printer-is-accepting-jobs | boolean | REQUIRED | 5778 +----------------------------+---------------------------+-----------+ 5779 | queued-job-count | integer (0:MAX) | REQUIRED | 5781 Expires December 11, 1999 5782 +----------------------------+---------------------------+-----------+ 5783 | printer-message-from- | text (127) | | 5784 | operator | | | 5785 +----------------------------+---------------------------+-----------+ 5786 | color-supported | boolean | | 5787 +----------------------------+---------------------------+-----------+ 5788 | reference-uri-schemes- | 1setOf uriScheme | | 5789 | supported | | | 5790 +----------------------------+---------------------------+-----------+ 5791 | pdl-override-supported | type2 keyword | REQUIRED | 5792 +----------------------------+---------------------------+-----------+ 5793 | printer-up-time | integer (1:MAX) | REQUIRED | 5794 +----------------------------+---------------------------+-----------+ 5795 | printer-current-time | dateTime | | 5796 +----------------------------+---------------------------+-----------+ 5797 | multiple-operation-time-out| integer (1:MAX) | | 5798 +----------------------------+---------------------------+-----------+ 5799 | compression-supported | 1setOf type3 keyword | REQUIRED | 5800 +----------------------------+---------------------------+-----------+ 5801 | job-k-octets-supported | rangeOfInteger (0:MAX) | | 5802 +----------------------------+---------------------------+-----------+ 5803 | job-impressions-supported | rangeOfInteger (0:MAX) | | 5804 +----------------------------+---------------------------+-----------+ 5805 | job-media-sheets-supported | rangeOfInteger (0:MAX) | | 5806 +----------------------------+---------------------------+-----------+ 5807 | pages-per-minute | integer(0:MAX) | | 5808 +----------------------------+---------------------------+-----------+ 5809 | pages-per-minute-color | integer(0:MAX) | | 5810 +----------------------------+---------------------------+-----------+ 5812 4.4.1 printer-uri-supported (1setOf uri) 5814 This REQUIRED Printer attribute contains at least one URI for the 5815 Printer object. It OPTIONALLY contains more than one URI for the 5816 Printer object. An administrator determines a Printer object's URI(s) 5817 and configures this attribute to contain those URIs by some means 5818 outside the scope of this IPP/1.1 document. The precise format of this 5819 URI is implementation dependent and depends on the protocol. See the 5820 next two sections for a description of the "uri-security-supported" and 5821 "uri-authentication-supported" attributes, both of which are the 5822 REQUIRED companion attributes to this "printer-uri-supported" attribute. 5823 See section 2.4 on Printer object identity and section 8.2 on security 5824 and URIs for more information. 5826 4.4.2 uri-authentication-supported (1setOf type2 keyword) 5828 This REQUIRED Printer attribute MUST have the same cardinality (contain 5829 the same number of values) as the "printer-uri-supported" attribute. 5830 This attribute identifies the Client Authentication mechanism associated 5831 with each URI listed in the "printer-uri-supported" attribute. The 5832 Printer object uses the specified mechanism to identify the 5833 authenticated user (see section 8.3) . The "i th" value in "uri- 5835 Expires December 11, 1999 5836 authentication-supported" corresponds to the "i th" value in "printer- 5837 uri-supported" and it describes the authentication mechanisms used by 5838 the Printer when accessed via that URI. See [IPP-PRO] for more details 5839 on Client Authentication. 5841 The following standard keyword values are defined: 5843 'none': There is no authentication mechanism associated with the URI. 5844 The Printer object assumes that the authenticated user is 5845 "anonymous". 5846 'requesting-user-name': When a client performs an operation whose 5847 target is the associated URI, the Printer object assumes that the 5848 authenticated user is specified by the "requesting-user-name" 5849 Operation attribute (see section 8.3). If the "requesting-user- 5850 name" attribute is absent in a request, the Printer object assumes 5851 that the authenticated user is "anonymous". 5852 'basic': When a client performs an operation whose target is the 5853 associated URI, the Printer object challenges the client with HTTP 5854 basic authentication. The Printer object assumes that the 5855 authenticated user is the name received via the basic 5856 authentication mechanism. 5857 'digest': When a client performs an operation whose target is the 5858 associated URI, the Printer object challenges the client with HTTP 5859 digest authentication. The Printer object assumes that the 5860 authenticated user is the name received via the digest 5861 authentication mechanism. 5862 'certificate': When a client performs an operation whose target is 5863 the associated URI, the Printer object expects the client to 5864 provide a certificate. The Printer object assumes that the 5865 authenticated user is the textual name contained within the 5866 certificate. 5868 4.4.3 uri-security-supported (1setOf type2 keyword) 5870 This REQUIRED Printer attribute MUST have the same cardinality (contain 5871 the same number of values) as the "printer-uri-supported" attribute. 5872 This attribute identifies the security mechanisms used for each URI 5873 listed in the "printer-uri-supported" attribute. The "i th" value in 5874 "uri-security-supported" corresponds to the "i th" value in "printer- 5875 uri-supported" and it describes the security mechanisms used for 5876 accessing the Printer object via that URI. See [IPP-PRO] for more 5877 details on security mechanisms. 5879 The following standard keyword values are defined: 5881 'none': There are no secure communication channel protocols in use 5882 for the given URI. 5883 'ssl3': SSL3 [SSL] is the secure communications channel protocol in 5884 use for the given URI. 5885 'tls': TLS [RFC2246] is the secure communications channel protocol 5886 in use for the given URI. 5888 Expires December 11, 1999 5890 This attribute is orthogonal to the definition of a Client 5891 Authentication mechanism. Specifically, 'none' does not exclude Client 5892 Authentication. See section 4.4.2. 5894 Consider the following example. For a single Printer object, an 5895 administrator configures the "printer-uri-supported", "uri- 5896 authentication-supported" and "uri-security-supported" attributes as 5897 follows: 5899 "printer-uri-supported": 'xxx://acme.com/open-use-printer', 5900 'xxx://acme.com/restricted-use-printer', 'xxx://acme.com/private- 5901 printer' 5902 "uri-authentication-supported": 'none', 'digest', 'basic' 5903 "uri-security-supported": 'none', 'none', 'tls' 5905 Note: 'xxx' is not a valid scheme. See the IPP/1.1 "Transport and 5906 Encoding" document [IPP-PRO] for the actual URI schemes to be used in 5907 object target attributes. 5909 In this case, one Printer object has three URIs. 5911 - For the first URI, 'xxx://acme.com/open-use-printer', the value 5912 'none' in "uri-security-supported" indicates that there is no 5913 secure channel protocol configured to run under HTTP. The value of 5914 'none' in "uri-authentication-supported" indicates that all users 5915 are 'anonymous'. There will be no challenge and the Printer will 5916 ignore "requesting-user-name". 5917 - For the second URI, 'xxx://acme.com/restricted-use-printer', the 5918 value 'none' in "uri-security-supported" indicates that there is no 5919 secure channel protocol configured to run under HTTP. The value of 5920 'digest' in "uri-authentication-supported" indicates that the 5921 Printer will issue a challenge and that the Printer will use the 5922 name supplied by the digest mechanism to determine the 5923 authenticated user (see section 8.3). 5924 - For the third URI, 'xxx://acme.com/private-printer', the value 5925 'tls' in "uri-security-supported" indicates that TLS is being used 5926 to secure the channel. The client SHOULD be prepared to use TLS 5927 framing to negotiate an acceptable ciphersuite to use while 5928 communicating with the Printer object. In this case, the name 5929 implies the use of a secure communications channel, but the fact is 5930 made explicit by the presence of the 'tls' value in "uri-security- 5931 supported". The client does not need to resort to understanding 5932 which security it must use by following naming conventions or by 5933 parsing the URI to determine which security mechanisms are implied. 5934 The value of 'basic' in "uri-authentication-supported" indicates 5935 that the Printer will issue a challenge and that the Printer will 5936 use the name supplied by the digest mechanism to determine the 5937 authenticated user (see section 8.3) . Because this challenge 5938 occurs in a tls session, the channel is secure. 5940 It is expected that many IPP Printer objects will be configured to 5941 support only one channel (either configured to use TLS access or not) 5942 and only one authentication mechanism. Such Printer objects only have 5943 one URI listed in the "printer-uri-supported" attribute. No matter the 5945 Expires December 11, 1999 5946 configuration of the Printer object (whether it has only one URI or more 5947 than one URI), a client MUST supply only one URI in the target "printer- 5948 uri" operation attribute. 5950 4.4.4 printer-name (name(127)) 5952 This REQUIRED Printer attribute contains the name of the Printer object. 5953 It is a name that is more end-user friendly than a URI. An administrator 5954 determines a printer's name and sets this attribute to that name. This 5955 name may be the last part of the printer's URI or it may be unrelated. 5956 In non-US-English locales, a name may contain characters that are not 5957 allowed in a URI. 5959 4.4.5 printer-location (text(127)) 5961 This Printer attribute identifies the location of the device. This could 5962 include things like: "in Room 123A, second floor of building XYZ". 5964 4.4.6 printer-info (text(127)) 5966 This Printer attribute identifies the descriptive information about this 5967 Printer object. This could include things like: "This printer can be 5968 used for printing color transparencies for HR presentations", or "Out of 5969 courtesy for others, please print only small (1-5 page) jobs at this 5970 printer", or even "This printer is going away on July 1, 1997, please 5971 find a new printer". 5973 4.4.7 printer-more-info (uri) 5975 This Printer attribute contains a URI used to obtain more information 5976 about this specific Printer object. For example, this could be an HTTP 5977 type URI referencing an HTML page accessible to a Web Browser. The 5978 information obtained from this URI is intended for end user consumption. 5979 Features outside the scope of IPP can be accessed from this URI. The 5980 information is intended to be specific to this printer instance and site 5981 specific services (e.g. job pricing, services offered, end user 5982 assistance). The device manufacturer may initially populate this 5983 attribute. 5985 4.4.8 printer-driver-installer (uri) 5987 This Printer attribute contains a URI to use to locate the driver 5988 installer for this Printer object. This attribute is intended for 5989 consumption by automata. The mechanics of print driver installation is 5990 outside the scope of this IPP/1.1 document. The device manufacturer may 5991 initially populate this attribute. 5993 4.4.9 printer-make-and-model (text(127)) 5995 This Printer attribute identifies the make and model of the device. The 5996 device manufacturer may initially populate this attribute. 5998 Expires December 11, 1999 5999 4.4.10 printer-more-info-manufacturer (uri) 6001 This Printer attribute contains a URI used to obtain more information 6002 about this type of device. The information obtained from this URI is 6003 intended for end user consumption. Features outside the scope of IPP 6004 can be accessed from this URI (e.g., latest firmware, upgrades, print 6005 drivers, optional features available, details on color support). The 6006 information is intended to be germane to this printer without regard to 6007 site specific modifications or services. The device manufacturer may 6008 initially populate this attribute. 6010 4.4.11 printer-state (type1 enum) 6012 This REQUIRED Printer attribute identifies the current state of the 6013 device. The "printer-state reasons" attribute augments the "printer- 6014 state" attribute to give more detailed information about the Printer in 6015 the given printer state. 6017 A Printer object need only update this attribute before responding to an 6018 operation which requests the attribute; the Printer object NEED NOT 6019 update this attribute continually, since asynchronous event notification 6020 is not part of IPP/1.1. A Printer NEED NOT implement all values if they 6021 are not applicable to a given implementation. 6023 The following standard enum values are defined: 6025 Value Symbolic Name and Description 6027 '3' 'idle': Indicates that new jobs can start processing without 6028 waiting. 6029 '4' 'processing': Indicates that jobs are processing; new jobs 6030 will wait before processing. 6031 '5' 'stopped': Indicates that no jobs can be processed and 6032 intervention is required. 6034 Values of "printer-state-reasons", such as 'spool-area-full' and 6035 'stopped-partly', MAY be used to provide further information. 6037 4.4.12 printer-state-reasons (1setOf type2 keyword) 6039 This REQUIRED Printer attribute supplies additional detail about the 6040 device's state. Some of the these value definitions indicate 6041 conformance requirements; the rest are OPTIONAL. 6043 Each keyword value MAY have a suffix to indicate its level of severity. 6044 The three levels are: report (least severe), warning, and error (most 6045 severe). 6047 - '-report': This suffix indicates that the reason is a "report". An 6048 implementation may choose to omit some or all reports. Some reports 6049 specify finer granularity about the printer state; others serve as 6050 a precursor to a warning. A report MUST contain nothing that could 6051 affect the printed output. 6053 Expires December 11, 1999 6055 - '-warning': This suffix indicates that the reason is a "warning". 6056 An implementation may choose to omit some or all warnings. Warnings 6057 serve as a precursor to an error. A warning MUST contain nothing 6058 that prevents a job from completing, though in some cases the 6059 output may be of lower quality. 6060 - '-error': This suffix indicates that the reason is an "error". An 6061 implementation MUST include all errors. If this attribute contains 6062 one or more errors, printer MUST be in the stopped state. 6064 If the implementation does not add any one of the three suffixes, all 6065 parties MUST assume that the reason is an "error". 6067 If a Printer object controls more than one output device, each value of 6068 this attribute MAY apply to one or more of the output devices. An error 6069 on one output device that does not stop the Printer object as a whole 6070 MAY appear as a warning in the Printer's "printer-state-reasons 6071 attribute". If the "printer-state" for such a Printer has a value of 6072 'stopped', then there MUST be an error reason among the values in the 6073 "printer-state-reasons" attribute. 6075 The following standard keyword values are defined: 6077 'other': The device has detected an error other than one listed in 6078 this document. 6079 'none': There are not reasons. This state reason is semantically 6080 equivalent to "printer-state-reasons" without any value and MUST be 6081 used, since the 1setOf attribute syntax requires at least one 6082 value. 6083 'media-needed': A tray has run out of media. 6084 'media-jam': The device has a media jam. 6085 'moving-to-paused': Someone has paused the Printer object using the 6086 Pause-Printer operation (see section 3.2.7) or other means, but the 6087 device(s) are taking an appreciable time to stop. Later, when all 6088 output has stopped, the "printer-state" becomes 'stopped', and the 6089 'paused' value replaces the 'moving-to-paused' value in the 6090 "printer-state-reasons" attribute. This value MUST be supported, 6091 if the Pause-Printer operation is supported and the implementation 6092 takes significant time to pause a device in certain circumstances. 6093 'paused': Someone has paused the Printer object using the Pause- 6094 Printer operation (see section 3.2.7) or other means and the 6095 Printer object's "printer-state" is 'stopped'. In this state, a 6096 Printer MUST NOT produce printed output, but it MUST perform other 6097 operations requested by a client. If a Printer had been printing a 6098 job when the Printer was paused, the Printer MUST resume printing 6099 that job when the Printer is no longer paused and leave no evidence 6100 in the printed output of such a pause. This value MUST be 6101 supported, if the Pause-Printer operation is supported. 6102 'shutdown': Someone has removed a Printer object from service, and 6103 the device may be powered down or physically removed. In this 6104 state, a Printer object MUST NOT produce printed output, and unless 6105 the Printer object is realized by a print server that is still 6106 active, the Printer object MUST perform no other operations 6107 requested by a client, including returning this value. If a Printer 6108 object had been printing a job when it was shutdown, the Printer 6110 Expires December 11, 1999 6111 NEED NOT resume printing that job when the Printer is no longer 6112 shutdown. If the Printer resumes printing such a job, it may leave 6113 evidence in the printed output of such a shutdown, e.g. the part 6114 printed before the shutdown may be printed a second time after the 6115 shutdown. 6116 'connecting-to-device': The Printer object has scheduled a job on the 6117 output device and is in the process of connecting to a shared 6118 network output device (and might not be able to actually start 6119 printing the job for an arbitrarily long time depending on the 6120 usage of the output device by other servers on the network). 6121 'timed-out': The server was able to connect to the output device (or 6122 is always connected), but was unable to get a response from the 6123 output device. 6124 'stopping': The Printer object is in the process of stopping the 6125 device and will be stopped in a while. When the device is stopped, 6126 the Printer object will change the Printer object's state to 6127 'stopped'. The 'stopping-warning' reason is never an error, even 6128 for a Printer with a single output device. When an output-device 6129 ceases accepting jobs, the Printer will have this reason while the 6130 output device completes printing. 6131 'stopped-partly': When a Printer object controls more than one output 6132 device, this reason indicates that one or more output devices are 6133 stopped. If the reason is a report, fewer than half of the output 6134 devices are stopped. If the reason is a warning, fewer than all of 6135 the output devices are stopped. 6136 'toner-low': The device is low on toner. 6137 'toner-empty': The device is out of toner. 6138 'spool-area-full': The limit of persistent storage allocated for 6139 spooling has been reached. The Printer is temporarily unable to 6140 accept more jobs. The Printer will remove this value when it is 6141 able to accept more jobs. This value SHOULD be used by a non- 6142 spooling Printer that only accepts one or a small number jobs at a 6143 time or a spooling Printer that has filled the spool space. 6144 'cover-open': One or more covers on the device are open. 6145 'interlock-open': One or more interlock devices on the printer are 6146 unlocked. 6147 'door-open': One or more doors on the device are open. 6148 'input-tray-missing': One or more input trays are not in the device. 6149 'media-low': At least one input tray is low on media. 6150 'media-empty': At least one input tray is empty. 6151 'output-tray-missing': One or more output trays are not in the device 6152 'output-area-almost-full': One or more output area is almost full 6153 (e.g. tray, stacker, collator). 6154 'output-area-full': One or more output area is full. (e.g. tray, 6155 stacker, collator) 6156 'marker-supply-low': The device is low on at least one marker supply. 6157 (e.g. toner, ink, ribbon) 6158 'marker-supply-empty: The device is out of at least one marker 6159 supply. (e.g. toner, ink, ribbon) 6160 'marker-waste-almost-full': The device marker supply waste receptacle 6161 is almost full. 6162 'marker-waste-full': The device marker supply waste receptacle is 6163 full. 6164 'fuser-over-temp': The fuser temperature is above normal. 6166 Expires December 11, 1999 6167 'fuser-under-temp': The fuser temperature is below normal. 6168 'opc-near-eol': The optical photo conductor is near end of life. 6169 'opc-life-over': The optical photo conductor is no longer 6170 functioning. 6171 'developer-low': The device is low on developer. 6172 'developer-empty: The device is out of developer. 6173 'interpreter-resource-unavailable': An interpreter resource is 6174 unavailable (i.e. font, form) 6176 4.4.13 printer-state-message (text(MAX)) 6178 This Printer attribute specifies the additional information about the 6179 printer state and printer state reasons in human readable text. If the 6180 Printer object supports this attribute, the Printer object MUST be able 6181 to generate this message in any of the natural languages identified by 6182 the Printer's "generated-natural-language-supported" attribute (see the 6183 "attributes-natural-language" operation attribute specified in Section 6184 3.1.4.1). 6186 4.4.14 ipp-versions-supported (1setOf type2 keyword) 6188 This REQUIRED attribute identifies the IPP protocol version(s) that this 6189 Printer supports, including major and minor versions, i.e., the version 6190 numbers for which this Printer implementation meets the conformance 6191 requirements. For version number validation, the Printer matches the 6192 (two-octet binary) "version-number" parameter supplied by the client in 6193 each request (see sections 3.1.1 and 3.1.8) with the (US-ASCII) keyword 6194 values of this attribute. 6196 The following standard keyword values are defined: 6198 '1.0': Meets the conformance requirement of IPP version 1.0 as 6199 specified in RFC 2566 [RFC2566] and RFC 2565 [RFC2565] including 6200 any extensions registered according to Section 6 and any extension 6201 defined in this version or any future version of the IPP "Model and 6202 Semantics" document or the IPP "Encoding and Transport" document 6203 following the rules, if any, when the "version-number" parameter is 6204 '1.0'. 6205 '1.1': Meets the conformance requirement of IPP version 1.1 as 6206 specified in this document and [IPP-PRO] including any extensions 6207 registered according to Section 6 and any extension defined in any 6208 future versions of the IPP "Model and Semantics" document or the 6209 IPP Encoding and Transport document following the rules, if any, 6210 when the "version-number" parameter is '1.1'. 6212 4.4.15 operations-supported (1setOf type2 enum) 6214 This REQUIRED Printer attribute specifies the set of supported 6215 operations for this Printer object and contained Job objects. 6217 This attribute is encoded as any other enum attribute syntax according 6218 to [IPP-PRO] as 32-bits. However, all 32-bit enum values for this 6219 attribute MUST NOT exceed 0x00008FFF, since these same values are also 6221 Expires December 11, 1999 6222 passed in two octets in the "operation-id" parameter (see section 3.1.1) 6223 in each Protocol request with the two high order octets omitted in order 6224 to indicate the operation being performed [IPP-PRO]. 6226 The following standard enum and "operation-id" (see section 3.1.2) 6227 values are defined: 6229 Value Operation Name 6230 ----------------- ------------------------------------- 6232 0x0000 reserved, not used 6233 0x0001 reserved, not used 6234 0x0002 Print-Job 6235 0x0003 Print-URI 6236 0x0004 Validate-Job 6237 0x0005 Create-Job 6238 0x0006 Send-Document 6239 0x0007 Send-URI 6240 0x0008 Cancel-Job 6241 0x0009 Get-Job-Attributes 6242 0x000A Get-Jobs 6243 0x000B Get-Printer-Attributes 6244 0x000C Hold-Job 6245 0x000D Release-Job 6246 0x000E Restart-Job 6247 0x000F reserved for a future operation 6248 0x0010 Pause-Printer 6249 0x0011 Resume-Printer 6250 0x0012 Purge-Jobs 6251 0x0013-0x3FFF reserved for future operations 6252 0x4000-0x8FFF reserved for private extensions 6254 The reserved block for private extensions allows for vendors to 6255 implement private extensions that are guaranteed to not conflict with 6256 future registered extensions. However, there is no guarantee that two 6257 or more private extensions will not conflict. 6259 4.4.16 multiple-document-jobs-supported (boolean) 6261 This Printer attribute indicates whether or not the Printer supports 6262 more than one document per job, i.e., more than one Send-Document or 6263 Send-Data operation with document data. If the Printer supports the 6264 Create-Job and Send-Document operations (see section 3.2.4 and 3.3.1), 6265 it MUST support this attribute. 6267 4.4.17 charset-configured (charset) 6269 This REQUIRED Printer attribute identifies the charset that the Printer 6270 object has been configured to represent 'text' and 'name' Printer 6271 attributes that are set by the operator, system administrator, or 6272 manufacturer, i.e., for "printer-name" (name), "printer-location" 6273 (text), "printer-info" (text), and "printer-make-and-model" (text). 6274 Therefore, the value of the Printer object's "charset-configured" 6276 Expires December 11, 1999 6277 attribute MUST also be among the values of the Printer object's 6278 "charset-supported" attribute. 6280 4.4.18 charset-supported (1setOf charset) 6282 This REQUIRED Printer attribute identifies the set of charsets that the 6283 Printer and contained Job objects support in attributes with attribute 6284 syntax 'text' and 'name'. At least the value 'utf-8' MUST be present, 6285 since IPP objects MUST support the UTF-8 [RFC2279] charset. If a 6286 Printer object supports a charset, it means that for all attributes of 6287 syntax 'text' and 'name' the IPP object MUST (1) accept the charset in 6288 requests and return the charset in responses as needed. 6290 If more charsets than UTF-8 are supported, the IPP object MUST perform 6291 charset conversion between the charsets as described in Section 3.1.4.2. 6293 4.4.19 natural-language-configured (naturalLanguage) 6295 This REQUIRED Printer attribute identifies the natural language that the 6296 Printer object has been configured to represent 'text' and 'name' 6297 Printer attributes that are set by the operator, system administrator, 6298 or manufacturer, i.e., for "printer-name" (name), "printer-location" 6299 (text), "printer-info" (text), and "printer-make-and-model" (text). 6300 When returning these Printer attributes, the Printer object MAY return 6301 them in the configured natural language specified by this attribute, 6302 instead of the natural language requested by the client in the 6303 "attributes-natural-language" operation attribute. See Section 3.1.4.1 6304 for the specification of the OPTIONAL multiple natural language support. 6305 Therefore, the value of the Printer object's "natural-language- 6306 configured" attribute MUST also be among the values of the Printer 6307 object's "generated-natural-language-supported" attribute. 6309 4.4.20 generated-natural-language-supported (1setOf naturalLanguage) 6311 This REQUIRED Printer attribute identifies the natural language(s) that 6312 the Printer object and contained Job objects support in attributes with 6313 attribute syntax 'text' and 'name'. The natural language(s) supported 6314 depends on implementation and/or configuration. Unlike charsets, IPP 6315 objects MUST accept requests with any natural language or any Natural 6316 Language Override whether the natural language is supported or not. 6318 If a Printer object supports a natural language, it means that for any 6319 of the attributes for which the Printer or Job object generates 6320 messages, i.e., for the "job-state-message" and "printer-state-message" 6321 attributes and Operation Messages (see Section 3.1.5) in operation 6322 responses, the Printer and Job objects MUST be able to generate messages 6323 in any of the Printer's supported natural languages. See section 3.1.4 6324 for the definition of 'text' and 'name' attributes in operation requests 6325 and responses. 6327 Expires December 11, 1999 6328 Note: A Printer object that supports multiple natural languages, often 6329 has separate catalogs of messages, one for each natural language 6330 supported. 6332 4.4.21 document-format-default (mimeMediaType) 6334 This REQUIRED Printer attribute identifies the document format that the 6335 Printer object has been configured to assume if the client does not 6336 supply a "document-format" operation attribute in any of the operation 6337 requests that supply document data. The standard values for this 6338 attribute are Internet Media types (sometimes called MIME types). For 6339 further details see the description of the 'mimeMediaType' attribute 6340 syntax in Section 4.1.9. 6342 4.4.22 document-format-supported (1setOf mimeMediaType) 6344 This REQUIRED Printer attribute identifies the set of document formats 6345 that the Printer object and contained Job objects can support. For 6346 further details see the description of the 'mimeMediaType' attribute 6347 syntax in Section 4.1.9. 6349 4.4.23 printer-is-accepting-jobs (boolean) 6351 This REQUIRED Printer attribute indicates whether the printer is 6352 currently able to accept jobs, i.e., is accepting Print-Job, Print-URI, 6353 and Create-Job requests. If the value is 'true', the printer is 6354 accepting jobs. If the value is 'false', the Printer object is 6355 currently rejecting any jobs submitted to it. In this case, the Printer 6356 object returns the 'server-error-not-accepting-jobs' status code. 6358 This value is independent of the "printer-state" and "printer-state- 6359 reasons" attributes because its value does not affect the current job; 6360 rather it affects future jobs. This attribute, when 'false', causes the 6361 Printer to reject jobs even when the "printer-state" is 'idle' or, when 6362 'true', causes the Printer object to accepts jobs even when the 6363 "printer-state" is 'stopped'. 6365 4.4.24 queued-job-count (integer(0:MAX)) 6367 This REQUIRED Printer attribute contains a count of the number of jobs 6368 that are either 'pending', 'processing', 'pending-held', or 'processing- 6369 stopped' and is set by the Printer object. 6371 4.4.25 printer-message-from-operator (text(127)) 6373 This Printer attribute provides a message from an operator, system 6374 administrator or "intelligent" process to indicate to the end user 6375 information or status of the printer, such as why it is unavailable or 6376 when it is expected to be available. 6378 Expires December 11, 1999 6379 4.4.26 color-supported (boolean) 6381 This Printer attribute identifies whether the device is capable of any 6382 type of color printing at all, including highlight color. All document 6383 instructions having to do with color are embedded within the document 6384 PDL (none are external IPP attributes in IPP/1.1). 6386 Note: end-users are able to determine the nature and details of the 6387 color support by querying the "printer-more-info-manufacturer" Printer 6388 attribute. 6390 4.4.27 reference-uri-schemes-supported (1setOf uriScheme) 6392 This Printer attribute specifies which URI schemes are supported for use 6393 in the "document-uri" operation attribute of the Print-URI or Send-URI 6394 operation. If a Printer object supports these optional operations, it 6395 MUST support the "reference-uri-schemes-supported" Printer attribute 6396 with at least the following schemed URI value: 6398 'ftp': The Printer object will use an FTP 'get' operation as defined 6399 in RFC 2228 [RFC2228] using FTP URLs as defined by [RFC2396] 6400 and[RFC2316]. 6402 The Printer object MAY OPTIONALLY support other URI schemes (see section 6403 4.1.6). 6405 4.4.28 pdl-override-supported (type2 keyword) 6407 This REQUIRED Printer attribute expresses the ability for a particular 6408 Printer implementation to either attempt to override document data 6409 instructions with IPP attributes or not. 6411 This attribute takes on the following values: 6413 - 'attempted': This value indicates that the Printer object attempts 6414 to make the IPP attribute values take precedence over embedded 6415 instructions in the document data, however there is no guarantee. 6416 - 'not-attempted': This value indicates that the Printer object makes 6417 no attempt to make the IPP attribute values take precedence over 6418 embedded instructions in the document data. 6420 Section 15 contains a full description of how this attribute interacts 6421 with and affects other IPP attributes, especially the "ipp-attribute- 6422 fidelity" attribute. 6424 4.4.29 printer-up-time (integer(1:MAX)) 6426 This REQUIRED Printer attribute indicates the amount of time (in 6427 seconds) that this Printer instance has been up and running. The value 6428 is a monotonically increasing value starting from 1 when the Printer 6429 object is started-up (initialized, booted, etc.). This value is used to 6430 populate the Event Time Job Description Job attributes "time-at- 6432 Expires December 11, 1999 6433 creation", "time-at-processing", and "time-at-completed" (see section 6434 4.3.14). 6436 If the Printer object goes down at some value 'n', and comes back up, 6437 the implementation MAY: 6439 1. Know how long it has been down, and resume at some value greater 6440 than 'n', or 6441 2. Restart from 1. 6443 In other words, if the device or devices that the Printer object is 6444 representing are restarted or power cycled, the Printer object MAY 6445 continue counting this value or MAY reset this value to 1 depending on 6446 implementation. However, if the Printer object software ceases running, 6447 and restarts without knowing the last value for "printer-up-time", the 6448 implementation MUST reset this value to 1. If this value is reset and 6449 the Printer has persistent jobs, the Printer MUST reset the "time-at- 6450 xxx(integer) Event Time Job Description attributes according to Section 6451 4.3.14. An implementation MAY use both implementation alternatives, 6452 depending on warm versus cold start, respectively. 6454 4.4.30 printer-current-time (dateTime) 6456 This Printer attribute indicates the current date and time. This value 6457 is used to populate the Event Time Job Description attributes: "time- 6458 at-creation", "time-at-processing", and "time-at-completed" (see Section 6459 4.3.14). 6461 The date and time is obtained on a "best efforts basis" and does not 6462 have to be that precise in order to work in practice. A Printer 6463 implementation sets the value of this attribute by obtaining the date 6464 and time via some implementation-dependent means, such as getting the 6465 value from a network time server, initialization at time of manufacture, 6466 or setting by an administrator. See [IPP-IIG] for examples. If an 6467 implementation supports this attribute and the implementation knows that 6468 it has not yet been set, then the implementation MUST return the value 6469 of this attribute using the out-of-band 'no-value' meaning not 6470 configured. See the beginning of section 4.1. 6472 The time zone of this attribute NEED NOT be the time zone used by people 6473 located near the Printer object or device. The client MUST NOT expect 6474 that the time zone of any received 'dateTime' value to be in the time 6475 zone of the client or in the time zone of the people located near the 6476 printer. 6478 The client SHOULD display any dateTime attributes to the user in client 6479 local time by converting the 'dateTime' value returned by the server to 6480 the time zone of the client, rather than using the time zone returned by 6481 the Printer in attributes that use the 'dateTime' attribute syntax. 6483 4.4.31 multiple-operation-time-out (integer(1:MAX)) 6485 This Printer attributes identifies the minimum time (in seconds) that 6486 the Printer object waits for additional Send-Document or Send-URI 6488 Expires December 11, 1999 6489 operations to follow a still-open multi-document Job object before 6490 taking any recovery actions, such as the ones indicated in section 6491 3.3.1. If the Printer object supports the Create-Job and Send-Document 6492 operations (see section 3.2.4 and 3.3.1), it MUST support this 6493 attribute. 6495 It is RECOMMENDED that vendors supply a value for this attribute that is 6496 between 60 and 240 seconds. An implementation MAY allow a system 6497 administrator to set this attribute (by means outside this IPP/1.1 6498 document). If so, the system administrator MAY be able to set values 6499 outside this range. 6501 4.4.32 compression-supported (1setOf type3 keyword) 6503 This REQUIRED Printer attribute identifies the set of supported 6504 compression algorithms for document data. Compression only applies to 6505 the document data; compression does not apply to the encoding of the IPP 6506 operation itself. The supported values are used to validate the client 6507 supplied "compression" operation attributes in Print-Job, Send-Document, 6508 and Send-URI requests. 6510 Standard values are : 6512 'none': no compression is used. 6513 'deflate': ZIP public domain inflate/deflate) compression technology 6514 'gzip' GNU zip compression technology described in RFC 1952 6515 [RFC1952]. 6516 'compress': UNIX compression technology 6518 4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX)) 6520 This Printer attribute specifies the upper and lower bounds of total 6521 sizes of jobs in K octets, i.e., in units of 1024 octets. The supported 6522 values are used to validate the client supplied "job-k-octets" operation 6523 attributes in create requests. The corresponding job description 6524 attribute "job-k-octets" is defined in section 4.3.17.1. 6526 4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)) 6528 This Printer attribute specifies the upper and lower bounds for the 6529 number of impressions per job. The supported values are used to validate 6530 the client supplied "job-impressions" operation attributes in create 6531 requests. The corresponding job description attribute "job-impressions" 6532 is defined in section 4.3.17.2. 6534 4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX)) 6536 This Printer attribute specifies the upper and lower bounds for the 6537 number of media sheets per job. The supported values are used to 6538 validate the client supplied "job-media-sheets" operation attributes in 6539 create requests. The corresponding Job attribute "job-media-sheets" is 6540 defined in section 4.3.17.3. 6542 Expires December 11, 1999 6543 4.4.36 pages-per-minute (integer(0:MAX)) 6545 This Printer attributes specifies the nominal number of pages per minute 6546 to the nearest whole number which may be generated by this printer 6547 (e.g., simplex, black-and-white). This attribute is informative, not a 6548 service guarantee. Generally, it is the value used in the marketing 6549 literature to describe the device. 6551 A value of 0 indicates a device that takes more than two minutes to 6552 process a page. 6554 4.4.37 pages-per-minute-color (integer(0:MAX)) 6556 This Printer attributes specifies the nominal number of pages per minute 6557 to the nearest whole number which may be generated by this printer when 6558 printing color (e.g., simplex, color). For purposes of this attribute, 6559 "color" means the same as for the "color-supported" attribute, namely, 6560 the device is capable of any type of color printing at all, including 6561 highlight color. This attribute is informative, not a service 6562 guarantee. Generally, it is the value used in the marketing literature 6563 to describe the color capabilities of this device. 6565 A value of 0 indicates a device that takes more than two minutes to 6566 process a page. 6568 If a color device has several color modes, it MAY use the pages-per- 6569 minute value for this attribute that corresponds to the mode that 6570 produces the highest number. 6572 Black and white only printers MUST NOT support this attribute. If this 6573 attribute is present, then the "color-supported" Printer description 6574 attribute MUST be present and have a 'true' value. 6576 The values of these two attributes returned by the Get-Printer- 6577 Attributes operation MAY be affected by the "document-format" attribute 6578 supplied by the client in the Get-Printer-Attributes request. In other 6579 words, the implementation MAY have different speeds depending on the 6580 document format being processed. See section 3.2.5.1 Get-Printer- 6581 Attributes. 6583 5. Conformance 6585 This section describes conformance issues and requirements. This 6586 document introduces model entities such as objects, operations, 6587 attributes, attribute syntaxes, and attribute values. These conformance 6588 sections describe the conformance requirements which apply to these 6589 model entities. 6591 Expires December 11, 1999 6592 5.1 Client Conformance Requirements 6594 This section describes the conformance requirements for a client (see 6595 section 2.1), whether it be: 6597 1. contained within software controlled by an end user, e.g. activated 6598 by the "Print" menu item in an application that sends IPP requests 6599 or 6601 2. the print server component that sends IPP requests to either an 6602 output device or another "downstream" print server. 6604 A conforming client MUST support all REQUIRED operations as defined in 6605 this document. For each attribute included in an operation request, a 6606 conforming client MUST supply a value whose type and value syntax 6607 conforms to the requirements of the Model document as specified in 6608 Sections 3 and 4. A conforming client MAY supply any registered 6609 extensions and/or private extensions in an operation request, as long as 6610 they meet the requirements in Section 6. 6612 Otherwise, there are no conformance requirements placed on the user 6613 interfaces provided by IPP clients or their applications. For example, 6614 one application might not allow an end user to submit multiple documents 6615 per job, while another does. One application might first query a 6616 Printer object in order to supply a graphical user interface (GUI) 6617 dialogue box with supported and default values whereas a different 6618 implementation might not. 6620 When sending a request, an IPP client NEED NOT supply any attributes 6621 that are indicated as OPTIONALLY supplied by the client. 6623 A client MUST be able to accept any of the attribute syntaxes defined in 6624 Section 4.1, including their full range, that may be returned to it in a 6625 response from a Printer object. In particular for each attribute that 6626 the client supports whose attribute syntax is 'text', the client MUST 6627 accept and process both the 'textWithoutLanguage' and 'textWithLanguage' 6628 forms. Similarly, for each attribute that the client supports whose 6629 attribute syntax is 'name', the client MUST accept and process both the 6630 'nameWithoutLanguage' and 'nameWithLanguage' forms. For presentation 6631 purposes, truncation of long attribute values is not recommended. A 6632 recommended approach would be for the client implementation to allow the 6633 user to scroll through long attribute values. 6635 A response MAY contain attribute groups, attributes, attribute syntaxes, 6636 values, and status codes that the client does not expect. Therefore, a 6637 client implementation MUST gracefully handle such responses and not 6638 refuse to inter-operate with a conforming Printer that is returning 6639 registered or private extensions, including attribute groups, 6640 attributes, attribute syntaxes, attribute values, and status codes that 6641 conform to Section 6. Clients may choose to ignore any parameters, 6642 attributes, attribute syntaxes, or values that they do not understand. 6644 Expires December 11, 1999 6645 While a client is sending data to a printer, it SHOULD do its best to 6646 prevent a channel from being closed by a lower layer when the channel is 6647 blocked (i.e. flow-controlled off) for whatever reason, e.g. 'out of 6648 paper' or 'job ahead hasn't freed up enough memory'. However, the layer 6649 that launched the print submission (e.g. an end user) MAY close the 6650 channel in order to cancel the job. When a client closes a channel, a 6651 Printer MAY print all or part of the received portion of the document. 6652 See the "Encoding and Transport" document [IPP-PRO] for more details. 6654 A client MUST support Client Authentication as defined in the IPP/1.1 6655 Encoding and Transport document [IPP-PRO]. A client SHOULD support 6656 Operation Privacy and Server Authentication as defined in the IPP/1.1 6657 Encoding and Transport document [IPP-PRO]. See also section 8 of this 6658 document. 6660 5.2 IPP Object Conformance Requirements 6662 This section specifies the conformance requirements for conforming 6663 implementations of IPP objects (see section 2). These requirements 6664 apply to an IPP object whether it is: 6666 (1) an (embedded) device component that accepts IPP requests and 6667 controls the device or 6669 (2) a component of a print server that accepts IPP requests (where 6670 the print server control one or more networked devices using IPP or 6671 other protocols). 6673 5.2.1 Objects 6675 Conforming implementations MUST implement all of the model objects as 6676 defined in this document in the indicated sections: 6678 Section 2.1 - Printer Object 6679 Section 2.2 - Job Object 6681 5.2.2 Operations 6683 Conforming IPP object implementations MUST implement all of the REQUIRED 6684 model operations, including REQUIRED responses, as defined in this 6685 document in the indicated sections: 6687 For a Printer object: 6688 Print-Job (section 3.2.1) REQUIRED 6689 Print-URI (section 3.2.2) OPTIONAL 6690 Validate-Job (section 3.2.3) REQUIRED 6691 Create-Job (section 3.2.4) OPTIONAL 6692 Get-Printer-Attributes (section 3.2.5) REQUIRED 6693 Get-Jobs (section 3.2.6) REQUIRED 6694 Pause-Printer (section 3.2.7) OPTIONAL 6695 Resume-Printer (section 3.2.8) OPTIONAL 6696 Purge-Jobs (section 3.2.9) OPTIONAL 6698 Expires December 11, 1999 6700 For a Job object: 6701 Send-Document (section 3.3.1) OPTIONAL 6702 Send-URI (section 3.3.2) OPTIONAL 6703 Cancel-Job (section 3.3.3) REQUIRED 6704 Get-Job-Attributes (section 3.3.4) REQUIRED 6705 Hold-Job (section 3.3.5) OPTIONAL 6706 Release-Job (section 3.3.6) OPTIONAL 6707 Restart-Job (section 3.3.7) OPTIONAL 6709 Conforming IPP objects MUST support all REQUIRED operation attributes 6710 and all values of such attributes if so indicated in the description. 6711 Conforming IPP objects MUST ignore all unsupported or unknown operation 6712 attributes or operation attribute groups received in a request, but MUST 6713 reject a request that contains a supported operation attribute that 6714 contains an unsupported value. 6716 Conforming IPP objects MAY return operation responses that contain 6717 attributes groups, attributes names, attribute syntaxes, attribute 6718 values, and status codes that are extensions to this standard. The 6719 additional attribute groups MAY occur in any order. 6721 The following section on object attributes specifies the support 6722 required for object attributes. 6724 5.2.3 IPP Object Attributes 6726 Conforming IPP objects MUST support all of the REQUIRED object 6727 attributes, as defined in this document in the indicated sections. 6729 If an object supports an attribute, it MUST support only those values 6730 specified in this document or through the extension mechanism described 6731 in section 5.2.4. It MAY support any non-empty subset of these values. 6732 That is, it MUST support at least one of the specified values and at 6733 most all of them. 6735 5.2.4 Versions 6737 Clients MUST meet the conformance requirements for clients specified in 6738 this document and [IPP-PRO] and SHOULD also support version 1.0, i.e., 6739 SHOULD meet the conformance requirements for clients as specified in 6740 [RFC2566] and [RFC2565]. 6742 IPP Printer and Job objects MUST meet the conformance requirements for 6743 IPP objects specified in this document and [IPP-PRO]. For 6744 interoperability with IPP/1.0 clients, IPP/1.1 objects SHOULD also meet 6745 the conformance requirements for IPP objects as specified in [RFC2566] 6746 and [RFC2565]. 6748 Clients MUST send requests containing a "version-number" parameter with 6749 a '1.1' value and SHOULD try supplying alternate version numbers if they 6750 receive a 'server-error-version-not-supported' error return in a 6751 response. 6753 Expires December 11, 1999 6754 IPP objects MUST accept requests containing a "version-number" parameter 6755 with a '1.1' value (or reject the request if the operation is not 6756 supported). IPP objects SHOULD accept any request with the major 6757 version '1' (or reject the request if the operation is not supported). 6758 See section 3.1.8. 6760 5.2.5 Extensions 6762 A conforming IPP object MAY support registered extensions and private 6763 extensions, as long as they meet the requirements specified in Section 6764 6. 6766 For each attribute included in an operation response, a conforming IPP 6767 object MUST return a value whose type and value syntax conforms to the 6768 requirement of the Model document as specified in Sections 3 and 4. 6770 5.2.6 Attribute Syntaxes 6772 An IPP object MUST be able to accept any of the attribute syntaxes 6773 defined in Section 4.1, including their full range, in any operation in 6774 which a client may supply attributes or the system administrator may 6775 configure attributes (by means outside the scope of this IPP/1.1 6776 document). In particular for each attribute that the IPP object 6777 supports whose attribute syntax is 'text', the IPP object MUST accept 6778 and process both the 'textWithoutLanguage' and 'textWithLanguage' forms. 6779 Similarly, for each attribute that the IPP object supports whose 6780 attribute syntax is 'name', the IPP object MUST accept and process both 6781 the 'nameWithoutLanguage' and 'nameWithLanguage' forms. Furthermore, an 6782 IPP object MUST return attributes to the client in operation responses 6783 that conform to the syntax specified in Section 4.1, including their 6784 full range if supplied previously by a client. 6786 5.2.7 Security 6788 An IPP Printer implementation SHOULD contain support for Client 6789 Authentication as defined in the IPP/1.1 Encoding and Transport document 6790 [IPP-PRO]. A Printer implementation MAY allow an administrator to 6791 configure the Printer so that all, some, or none of the users are 6792 authenticated. See also section 8 of this document. 6794 An IPP Printer implementation SHOULD contain support for Operation 6795 Privacy and Server Authentication as defined in the IPP/1.1 Encoding and 6796 Transport document [IPP-PRO]. A Printer implementation MAY allow an 6797 administrator to configure the degree of support for Operation Privacy 6798 and Server Authentication. See also section 8 of this document. 6800 Security MUST NOT be compromised when a client supplies a lower 6801 "version-number" parameter in a request. For example, if an IPP/1.1 6802 conforming Printer object accepts version '1.0' requests and is 6803 configured to enforce Digest Authentication, it MUST do the same for a 6804 version '1.0' request. 6806 Expires December 11, 1999 6807 5.3 Charset and Natural Language Requirements 6809 All clients and IPP objects MUST support the 'utf-8' charset as defined 6810 in section 4.1.7. 6812 IPP objects MUST be able to accept any client request which correctly 6813 uses the "attributes-natural-language" operation attribute or the 6814 Natural Language Override mechanism on any individual attribute whether 6815 or not the natural language is supported by the IPP object. If an IPP 6816 object supports a natural language, then it MUST be able to translate 6817 (perhaps by table lookup) all generated 'text' or 'name' attribute 6818 values into one of the supported languages (see section 3.1.4). That 6819 is, the IPP object that supports a natural language NEED NOT be a 6820 general purpose translator of any arbitrary 'text' or 'name' value 6821 supplied by the client into that natural language. However, the object 6822 MUST be able to translate (automatically generate) any of its own 6823 attribute values and messages into that natural language. 6825 6. IANA Considerations (registered and private extensions) 6827 This section describes how IPP can be extended to allow the following 6828 registered and private extensions to IPP: 6830 1. keyword attribute values 6831 2. enum attribute values 6832 3. attributes 6833 4. attribute syntaxes 6834 5. operations 6835 6. attribute groups 6836 7. status codes 6838 Extensions registered for use with IPP/1.1 are OPTIONAL for client and 6839 IPP object conformance to the IPP/1.1 Model document. 6841 These extension procedures are aligned with the guidelines as set forth 6842 by the IESG [IANA-CON]. Section 11 describes how to propose new 6843 registrations for consideration. IANA will reject registration 6844 proposals that leave out required information or do not follow the 6845 appropriate format described in Section 11. IPP/1.1 may also be 6846 extended by an appropriate RFC that specifies any of the above 6847 extensions. 6849 6.1 Typed 'keyword' and 'enum' Extensions 6851 IPP allows for 'keyword' and 'enum' extensions (see sections 4.1.2.3 and 6852 4.1.4). This document uses prefixes to the 'keyword' and 'enum' basic 6853 attribute syntax type in order to communicate extra information to the 6854 reader through its name. This extra information is not represented in 6855 the protocol because it is unimportant to a client or Printer object. 6856 The list below describes the prefixes and their meaning. 6858 Expires December 11, 1999 6859 "type1": This IPP specification document must be revised to add a 6860 new keyword or a new enum. No private keywords or enums are 6861 allowed. 6863 "type2": Implementers can, at any time, add new keyword or enum 6864 values by proposing the complete specification to IANA: 6866 iana@iana.org 6868 IANA will forward the registration proposal to the IPP Designated 6869 Expert who will review the proposal with a mailing list that the 6870 Designated Expert keeps for this purpose. Initially, that list 6871 will be the mailing list used by the IPP WG: 6873 ipp@pwg.org 6875 even after the IPP WG is disbanded as permitted by [IANA-CON]. The 6876 IPP Designated Expert is appointed by the IESG Area Director 6877 responsible for IPP, according to [IANA-CON]. 6879 When a type2 keyword or enum is approved, the IPP Designated Expert 6880 becomes the point of contact for any future maintenance that might 6881 be required for that registration. 6883 "type3": Implementers can, at any time, add new keyword and enum 6884 values by submitting the complete specification to IANA as for 6885 type2 who will forward the proposal to the IPP Designated Expert. 6886 While no additional technical review is required, the IPP 6887 Designated Expert may, at his/her discretion, forward the proposal 6888 to the same mailing list as for type2 registrations for advice and 6889 comment. 6891 When a type3 keyword or enum is approved by the IPP Designated 6892 Expert, the original proposer becomes the point of contact for any 6893 future maintenance that might be required for that registration. 6895 For type2 and type3 keywords, the proposer includes the name of the 6896 keyword in the registration proposal and the name is part of the 6897 technical review. 6899 After type2 and type3 enums specifications are approved, the IPP 6900 Designated Expert in consultation with IANA assigns the next available 6901 enum number for each enum value. 6903 IANA will publish approved type2 and type3 keyword and enum attributes 6904 value registration specifications in: 6906 ftp.isi.edu/iana/assignments/ipp/attribute-values/xxx/yyy.txt 6908 where xxx is the attribute name that specifies the initial values and 6909 yyy.txt is a descriptive file name that contains one or more enums or 6910 keywords approved at the same time. For example, if several additional 6911 enums for stapling are approved for use with the "finishings" attribute 6913 Expires December 11, 1999 6914 (and "finishings-default" and "finishings-supported" attributes), IANA 6915 will publish the additional values in the file: 6917 ftp.isi.edu/iana/assignments/ipp/attribute- 6918 values/finishings/stapling.txt 6920 Note: Some attributes are defined to be: 'type3 keywords' | 'name' which 6921 allows for attribute values to be extended by a site administrator with 6922 administrator defined names. Such names are not registered with IANA. 6924 By definition, each of the three types above assert some sort of 6925 registry or review process in order for extensions to be considered 6926 valid. Each higher numbered level (1, 2, 3) tends to be decreasingly 6927 less stringent than the previous level. Therefore, any typeN value MAY 6928 be registered using a process for some typeM where M is less than N, 6929 however such registration is NOT REQUIRED. For example, a type3 value 6930 MAY be registered in a type 1 manner (by being included in a future 6931 version of an IPP specification), however, it is NOT REQUIRED. 6933 This document defines keyword and enum values for all of the above 6934 types, including type3 keywords. 6936 For private (unregistered) keyword extensions, implementers SHOULD use 6937 keywords with a suitable distinguishing prefix, such as "xxx-" where xxx 6938 is the (lowercase) fully qualified company name registered with IANA for 6939 use in domain names [RFC1035]. For example, if the company XYZ Corp. 6940 had obtained the domain name "XYZ.com", then a private keyword 'abc' 6941 would be: 'xyz.com-abc'. 6943 Note: RFC 1035 [RFC1035] indicates that while upper and lower case 6944 letters are allowed in domain names, no significance is attached to the 6945 case. That is, two names with the same spelling but different case are 6946 to be treated as if identical. Also, the labels in a domain name must 6947 follow the rules for ARPANET host names: They must start with a letter, 6948 end with a letter or digit, and have as interior characters only 6949 letters, digits, and hyphen. Labels must be 63 characters or less. 6950 Labels are separated by the "." character. 6952 For private (unregistered) enum extension, implementers MUST use values 6953 in the reserved integer range which is 2**30 to 2**31-1. 6955 6.2 Attribute Extensibility 6957 Attribute names are type2 keywords. Therefore, new attributes may be 6958 registered and have the same status as attributes in this document by 6959 following the type2 extension rules. For private (unregistered) 6960 attribute extensions, implementers SHOULD use keywords with a suitable 6961 distinguishing prefix as described in Section 6.1. 6963 IANA will publish approved attribute registration specifications as 6964 separate files: 6966 ftp.isi.edu/iana/assignments/ipp/attributes/xxx-yyy.txt 6968 Expires December 11, 1999 6970 where "xxx-yyy" is the new attribute name. 6972 If a new Printer object attribute is defined and its values can be 6973 affected by a specific document format, its specification needs to 6974 contain the following sentence: 6976 "The value of this attribute returned in a Get-Printer- 6977 Attributes response MAY depend on the "document-format" 6978 attribute supplied (see Section 3.2.5.1)." 6980 If the specification does not, then its value in the Get-Printer- 6981 Attributes response MUST NOT depend on the "document-format" supplied in 6982 the request. When a new Job Template attribute is registered, the value 6983 of the Printer attributes MAY vary with "document-format" supplied in 6984 the request without the specification having to indicate so. 6986 6.3 Attribute Syntax Extensibility 6988 Attribute syntaxes are like type2 enums. Therefore, new attribute 6989 syntaxes may be registered and have the same status as attribute 6990 syntaxes in this document by following the type2 extension rules 6991 described in Section 6.1. The value codes that identify each of the 6992 attribute syntaxes are assigned in the "Encoding and Transport" document 6993 [IPP-PRO], including a designated range for private, experimental use. 6995 For attribute syntaxes, the IPP Designated Expert in consultation with 6996 IANA assigns the next attribute syntax code in the appropriate range as 6997 specified in [IPP-PRO]. IANA will publish approved attribute syntax 6998 registration specifications as separate files: 7000 ftp.isi.edu/iana/assignments/ipp/attribute-syntaxes/xxx-yyy.txt 7002 where 'xxx-yyy' is the new attribute syntax name. 7004 6.4 Operation Extensibility 7006 Operations may also be registered following the type2 procedures 7007 described in Section 6.1, though major new operations will usually be 7008 done by a new standards track RFC that augments this document. For 7009 private (unregistered) operation extensions, implementers MUST use the 7010 range for the "operation-id" in requests specified in Section 4.4.15 7011 "operations-supported" Printer attribute. 7013 For operations, the IPP Designated Expert in consultation with IANA 7014 assigns the next operation-id code as specified in Section 4.4.15. IANA 7015 will publish approved operation registration specifications as separate 7016 files: 7018 ftp.isi.edu/iana/assignments/ipp/operations/Xxx-Yyy.txt 7020 where "Xxx-Yyy" is the new operation name. 7022 Expires December 11, 1999 7023 6.5 Attribute Groups 7025 Attribute groups passed in requests and responses may be registered 7026 following the type2 procedures described in Section 6.1. The tags that 7027 identify each of the attribute groups are assigned in [IPP-PRO]. 7029 For attribute groups, the IPP Designated Expert in consultation with 7030 IANA assigns the next attribute group tag code in the appropriate range 7031 as specified in [IPP-PRO]. IANA will publish approved attribute group 7032 registration specifications as separate files: 7034 ftp.isi.edu/iana/assignments/ipp/attribute-group-tags/xxx-yyy- 7035 tag.txt 7037 where 'xxx-yyy-tag' is the new attribute group tag name. 7039 6.6 Status Code Extensibility 7041 Operation status codes may also be registered following the type2 7042 procedures described in Section 6.1. The values for status codes are 7043 allocated in ranges as specified in Section 14 for each status code 7044 class: 7046 "informational" - Request received, continuing process 7047 "successful" - The action was successfully received, understood, and 7048 accepted 7049 "redirection" - Further action must be taken in order to complete the 7050 request 7051 "client-error" - The request contains bad syntax or cannot be 7052 fulfilled 7053 "server-error" - The IPP object failed to fulfill an apparently 7054 valid request 7056 For private (unregistered) operation status code extensions, 7057 implementers MUST use the top of each range as specified in Section 13. 7059 For operation status codes, the IPP Designated Expert in consultation 7060 with IANA assigns the next status code in the appropriate class range as 7061 specified in Section 13. IANA will publish approved status code 7062 registration specifications as separate files: 7064 ftp.isi.edu/iana/assignments/ipp/status-codes/xxx-yyy.txt 7066 where "xxx-yyy" is the new operation status code keyword. 7068 6.7 Registration of MIME types/sub-types for document-formats 7070 The "document-format" attribute's syntax is 'mimeMediaType'. This means 7071 that valid values are Internet Media Types (see Section 4.1.9). RFC 7072 2045 [RFC2045] defines the syntax for valid Internet media types. IANA 7073 is the registry for all Internet media types. 7075 Expires December 11, 1999 7076 6.8 Registration of charsets for use in 'charset' attribute values 7078 The "attributes-charset" attribute's syntax is 'charset'. This means 7079 that valid values are charsets names. When a charset in the IANA 7080 registry has more than one name (alias), the name labeled as "(preferred 7081 MIME name)", if present, MUST be used (see Section 4.1.7). IANA is the 7082 registry for charsets following the procedures of [RFC2278]. 7084 7. Internationalization Considerations 7086 Some of the attributes have values that are text strings and names which 7087 are intended for human understanding rather than machine understanding 7088 (see the 'text' and 'name' attribute syntaxes in Sections 4.1.1 and 7089 4.1.2). 7091 In each operation request, the client 7093 - identifies the charset and natural language of the request which 7094 affects each supplied 'text' and 'name' attribute value, and 7095 - requests the charset and natural language for attributes returned 7096 by the IPP object in operation responses (as described in Section 7097 3.1.4.1). 7099 In addition, the client MAY separately and individually identify the 7100 Natural Language Override of a supplied 'text' or 'name' attribute using 7101 the 'textWithLanguage' and 'nameWithLanguage' technique described 7102 section 4.1.1.2 and 4.1.2.2 respectively. 7104 All IPP objects MUST support the UTF-8 [RFC2279] charset in all 'text' 7105 and 'name' attributes supported. If an IPP object supports more than 7106 the UTF-8 charset, the object MUST convert between them in order to 7107 return the requested charset to the client according to Section 3.1.4.2. 7108 If an IPP object supports more than one natural language, the object 7109 SHOULD return 'text' and 'name' values in the natural language requested 7110 where those values are generated by the Printer (see Section 3.1.4.1). 7112 For Printers that support multiple charsets and/or multiple natural 7113 languages in 'text' and 'name' attributes, different jobs may have been 7114 submitted in differing charsets and/or natural languages. All responses 7115 MUST be returned in the charset requested by the client. However, the 7116 Get-Jobs operation uses the 'textWithLanguage' and 'nameWithLanguage' 7117 mechanism to identify the differing natural languages with each job 7118 attribute returned. 7120 The Printer object also has configured charset and natural language 7121 attributes. The client can query the Printer object to determine the 7122 list of charsets and natural languages supported by the Printer object 7123 and what the Printer object's configured values are. See the "charset- 7124 configured", "charset-supported", "natural-language-configured", and 7125 "generated-natural-language-supported" Printer description attributes 7126 for more details. 7128 Expires December 11, 1999 7129 The "charset-supported" attributed identifies the supported charsets. 7130 If a charset is supported, the IPP object MUST be capable of converting 7131 to and from that charset into any other supported charset. In many 7132 cases, an IPP object will support only one charset and it MUST be the 7133 UTF-8 charset. 7135 The "charset-configured" attribute identifies the one supported charset 7136 which is the native charset given the current configuration of the IPP 7137 object (administrator defined). 7139 The "generated-natural-language-supported" attribute identifies the set 7140 of supported natural languages for generated messages; it is not related 7141 to the set of natural languages that must be accepted for client 7142 supplied 'text' and 'name' attributes. For client supplied 'text' and 7143 'name' attributes, an IPP object MUST accept ALL supplied natural 7144 languages. Just because a Printer object is currently configured to 7145 support 'en-us' natural language does not mean that the Printer object 7146 should reject a job if the client supplies a job name that is in 'fr- 7147 ca'. 7149 The "natural-language-configured" attribute identifies the one supported 7150 natural language for generated messages which is the native natural 7151 language given the current configuration of the IPP object 7152 (administrator defined). 7154 Attributes of type 'text' and 'name' are populated from different 7155 sources. These attributes can be categorized into following groups 7156 (depending on the source of the attribute): 7158 1. Some attributes are supplied by the client (e.g., the client 7159 supplied "job-name", "document-name", and "requesting-user-name" 7160 operation attributes along with the corresponding Job object's 7161 "job-name" and "job-originating-user-name" attributes). The IPP 7162 object MUST accept these attributes in any natural language no 7163 matter what the set of supported languages for generated messages 7164 2. Some attributes are supplied by the system administrator (e.g., 7165 the Printer object's "printer-name" and "printer-location" 7166 attributes). These too can be in any natural language. If the 7167 natural language for these attributes is different than what a 7168 client requests, then they must be reported using the Natural 7169 Language Override mechanism. 7170 3. Some attributes are supplied by the device manufacturer (e.g., the 7171 Printer object's "printer-make-and-model" attribute). These too 7172 can be in any natural language. If the natural language for these 7173 attributes is different than what a client requests, then they must 7174 be reported using the Natural Language Override mechanism. 7175 4. Some attributes are supplied by the operator (e.g., the Job 7176 object's "job-message-from-operator" attribute). These too can be 7177 in any natural language. If the natural language for these 7178 attributes is different than what a client requests, then they must 7179 be reported using the Natural Language Override mechanism. 7180 5. Some attributes are generated by the IPP object (e.g., the Job 7181 object's "job-state-message" attribute, the Printer object's 7182 "printer-state-message" attribute, and the "status-message" 7184 Expires December 11, 1999 7185 operation attribute). These attributes can only be in one of the 7186 "generated-natural-language-supported" natural languages. If a 7187 client requests some natural language for these attributes other 7188 than one of the supported values, the IPP object SHOULD respond 7189 using the value of the "natural-language-configured" attribute 7190 (using the Natural Language Override mechanism if needed). 7192 The 'text' and 'name' attributes specified in this version of this 7193 document (additional ones will be registered according to the procedures 7194 in Section 6) are: 7196 Expires December 11, 1999 7197 Attributes Source 7199 Operation Attributes: 7200 job-name (name) client 7201 document-name (name) client 7202 requesting-user-name (name) client 7203 status-message Job or Printer object 7205 Job Template Attributes: 7206 job-hold-until (keyword | name) client matches 7207 administrator-configured 7208 job-hold-until-default (keyword | name) client matches 7209 administrator-configured 7210 job-hold-until-supported (keyword | client matches 7211 name) administrator-configured 7212 job-sheets (keyword | name) client matches 7213 administrator-configured 7214 job-sheets-default (keyword | name) client matches 7215 administrator-configured 7216 job-sheets-supported (keyword | name) client matches 7217 administrator-configured 7218 media (keyword | name) client matches 7219 administrator-configured 7220 media-default (keyword | name) client matches 7221 administrator-configured 7222 media-supported (keyword | name) client matches 7223 administrator-configured 7224 media-ready (keyword | name) client matches 7225 administrator-configured 7227 Job Description Attributes: 7228 job-name (name) client or Printer object 7229 job-originating-user-name (name) Printer object 7230 job-state-message (text) Job or Printer object 7231 output-device-assigned (name(127)) administrator 7232 job-message-from-operator (text(127)) operator 7234 Printer Description Attributes: 7235 printer-name (name(127)) administrator 7236 printer-location (text(127)) administrator 7237 printer-info (text(127)) administrator 7238 printer-make-and-model (text(127)) administrator or 7239 manufacturer 7240 printer-state-message (text) Printer object 7241 printer-message-from-operator operator 7242 (text(127)) 7244 8. Security Considerations 7246 It is difficult to anticipate the security risks that might exist in any 7247 given IPP environment. For example, if IPP is used within a given 7249 Expires December 11, 1999 7250 corporation over a private network, the risks of exposing document data 7251 may be low enough that the corporation will choose not to use encryption 7252 on that data. However, if the connection between the client and the IPP 7253 object is over a public network, the client may wish to protect the 7254 content of the information during transmission through the network with 7255 encryption. 7257 Furthermore, the value of the information being printed may vary from 7258 one IPP environment to the next. Printing payroll checks, for example, 7259 would have a different value than printing public information from a 7260 file. There is also the possibly of denial-of-service attacks, but 7261 denial-of-service attacks against printing resources are not well 7262 understood and there is no published precedents regarding this scenario. 7264 Once the authenticated identity of the requester has been supplied to 7265 the IPP object, the object uses that identity to enforce any 7266 authorization policy that might be in place. For example, one site's 7267 policy might be that only the job owner is allowed to cancel a job. The 7268 details and mechanisms to set up a particular access control policy are 7269 not part of IPP/1.1, and must be established via some other type of 7270 administrative or access control framework. However, there are 7271 operation status codes that allow an IPP server to return information 7272 back to a client about any potential access control violations for an 7273 IPP object. 7275 During a create operation, the client's identity is recorded in the Job 7276 object in an implementation-defined attribute. This information can be 7277 used to verify a client's identity for subsequent operations on that Job 7278 object in order to enforce any access control policy that might be in 7279 effect. See section 8.3 below for more details. 7281 Since the security levels or the specific threats that any given IPP 7282 system administrator may be concerned with cannot be anticipated, IPP 7283 MUST be capable of operating with different security mechanisms and 7284 security policies as required by the individual installation. Security 7285 policies might vary from very strong, to very weak, to none at all, and 7286 corresponding security mechanisms will be required. 7288 8.1 Security Scenarios 7290 The following sections describe specific security attacks for IPP 7291 environments. Where examples are provided they should be considered 7292 illustrative of the environment and not an exhaustive set. Not all of 7293 these environments will necessarily be addressed in initial 7294 implementations of IPP. 7296 8.1.1 Client and Server in the Same Security Domain 7298 This environment is typical of internal networks where traditional 7299 office workers print the output of personal productivity applications on 7300 shared work-group printers, or where batch applications print their 7301 output on large production printers. Although the identity of the user 7303 Expires December 11, 1999 7304 may be trusted in this environment, a user might want to protect the 7305 content of a document against such attacks as eavesdropping, replaying 7306 or tampering. 7308 8.1.2 Client and Server in Different Security Domains 7310 Examples of this environment include printing a document created by the 7311 client on a publicly available printer, such as at a commercial print 7312 shop; or printing a document remotely on a business associate's printer. 7313 This latter operation is functionally equivalent to sending the document 7314 to the business associate as a facsimile. Printing sensitive information 7315 on a Printer in a different security domain requires strong security 7316 measures. In this environment authentication of the printer is required 7317 as well as protection against unauthorized use of print resources. Since 7318 the document crosses security domains, protection against eavesdropping 7319 and document tampering are also required. It will also be important in 7320 this environment to protect Printers against "spamming" and malicious 7321 document content. 7323 8.1.3 Print by Reference 7325 When the document is not stored on the client, printing can be done by 7326 reference. That is, the print request can contain a reference, or 7327 pointer, to the document instead of the actual document itself (see 7328 sections 3.2.2 and 3.3.2). Standard methods currently do not exist for 7329 remote entities to "assume" the credentials of a client for forwarding 7330 requests to a 3rd party. It is anticipated that Print-By-Reference will 7331 be used to access "public" documents and that sophisticated methods for 7332 authenticating "proxies" is not specified in this document. 7334 8.2 URIs in Operation, Job, and Printer attributes 7336 The "printer-uri-supported" attribute contains the Printer object's 7337 URI(s). Its companion attribute, "uri-security-supported", identifies 7338 the security mechanism used for each URI listed in the "printer-uri- 7339 supported" attribute. For each Printer operation request, a client MUST 7340 supply only one URI in the "printer-uri" operation attribute. In other 7341 words, even though the Printer supports more than one URI, the client 7342 only interacts with the Printer object using one if its URIs. This 7343 duality is not needed for Job objects, since the Printer objects is the 7344 factory for Job objects, and the Printer object will generate the 7345 correct URI for new Job objects depending on the Printer object's 7346 security configuration. 7348 8.3 URIs for each authentication mechanisms 7350 Each URI has an authentication mechanism associated with it. If the URI 7351 is the i'th element of "printer-uri-supported", then authentication 7352 mechanism is the "i th" element of "uri-authentication-supported". For a 7353 list of possible authentication mechanisms, see section 4.4.2. 7355 Expires December 11, 1999 7356 The Printer object uses an authentication mechanism to determine the 7357 name of the user performing an operation. This user is called the 7358 "authenticated user". The credibility of authentication depends on the 7359 mechanism that the Printer uses to obtain the user.s name. When the 7360 authentication mechanism is @none@, all authenticated users are 7361 "anonymous". 7363 During job creation operations, the Printer initializes the value of the 7364 "job-originating-user-name" attribute (see section 4.3.6) to be the 7365 authenticated user. The authenticated user is this case is called the 7366 "job-owner". 7368 If an implementation can be configured to support more than one 7369 authentication mechanism, then it MUST implement rules for determining 7370 equality of authenticated user names which have been authenticated via 7371 different authentication mechanisms. One possible policy is that 7372 identical names that are authenticated via different mechanism are 7373 different. For example, a user can cancel his job only if he uses the 7374 same authentication mechanism for both Cancel-Job and Print-Job. 7375 Another policy is that identical names that are authenticated via 7376 different mechanism are the same if the authentication mechanism for the 7377 later operation is not less strong than the authentication mechanism for 7378 the earlier job creation operation. For example, a user can cancel his 7379 job only if he uses the same or stronger authentication mechanism for 7380 Cancel-Job and Print-Job. With this second policy a job submitted via 7381 'requesting-user-name' authentication could be cancelled via 'digest' 7382 authentication. With the first policy, the job could not be cancelled in 7383 this way. 7385 A client is able to determine the authentication mechanism used to 7386 create a job. It is the i'th value of the Printer.s "uri-authentication- 7387 supported" attribute (see section 4.4.2), where i is the index of the 7388 element of the Printer.s "printer-uri-supported" attribute (see section 7389 4.4.1) equal to the job.s "job-printer-uri" attribute (see section 7390 4.3.3). 7392 8.4 Restricted Queries 7394 In many IPP operations, a client supplies a list of attributes to be 7395 returned in the response. For security reasons, an IPP object may be 7396 configured not to return all attributes (or all values) that a client 7397 requests. The job attributes returned MAY depend on whether the 7398 requesting user is the same as the user that submitted the job. The IPP 7399 object MAY even return none of the requested attributes. In such cases, 7400 the status returned is the same as if the object had returned all 7401 requested attributes. The client cannot tell by such a response whether 7402 the requested attribute was present or absent on the object. 7404 8.5 Operations performed by operators and system administrators 7406 For the three printer operations Pause-Printer, Resume-Printer, and 7407 Purge-Jobs (see sections 3.2.7, 3.2.8 and 3.2.9), the requesting user is 7409 Expires December 11, 1999 7410 intended to be an operator or administrator of the Printer object (see 7411 section 1). For operations on jobs, the requesting user is intended to 7412 be the job owner or may be an operator or administrator of the Printer 7413 object. The means for authorizing an operator or administrator of the 7414 Printer object are not specified in this document. 7416 8.6 Queries on jobs submitted using non-IPP protocols 7418 If the device that an IPP Printer is representing is able to accept jobs 7419 using other job submission protocols in addition to IPP, it is 7420 RECOMMENDED that such an implementation at least allow such "foreign" 7421 jobs to be queried using Get-Jobs returning "job-id" and "job-uri" as 7422 'unknown'. Such an implementation NEED NOT support all of the same IPP 7423 job attributes as for IPP jobs. The IPP object returns the 'unknown' 7424 out-of-band value for any requested attribute of a foreign job that is 7425 supported for IPP jobs, but not for foreign jobs. 7427 It is further RECOMMENDED, that the IPP Printer generate "job-id" and 7428 "job-uri" values for such "foreign jobs", if possible, so that they may 7429 be targets of other IPP operations, such as Get-Job-Attributes and 7430 Cancel-Job. Such an implementation also needs to deal with the problem 7431 of authentication of such foreign jobs. One approach would be to treat 7432 all such foreign jobs as belonging to users other than the user of the 7433 IPP client. Another approach would be for the foreign job to belong to 7434 'anonymous'. Only if the IPP client has been authenticated as an 7435 operator or administrator of the IPP Printer object, could the foreign 7436 jobs be queried by an IPP request. Alternatively, if the security 7437 policy is to allow users to query other users' jobs, then the foreign 7438 jobs would also be visible to an end-user IPP client using Get-Jobs and 7439 Get-Job-Attributes. 7441 9. References 7443 [ASCII] 7444 Coded Character Set - 7-bit American Standard Code for Information 7445 Interchange (ASCII), ANSI X3.4-1986. This standard is the 7446 specification of the US-ASCII charset. 7448 [BCP-11] 7449 Bradner S., Hovey R., "The Organizations Involved in the IETF 7450 Standards Process", 1996/10/29 (RFC 2028) 7452 [HTPP] 7453 J. Barnett, K. Carter, R. DeBry, "Initial Draft - Hypertext 7454 Printing Protocol - HTPP/1.0", October 1996, 7455 ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/overview.ps.gz 7457 [IANA-CON] 7458 Narte, T. and Alvestrand, H.T.: Guidelines for Writing an IANA 7459 Considerations Section in RFCs, Work in Progress, draft-iesg-iana- 7460 considerations-04.txt, May 21, 1998. 7462 Expires December 11, 1999 7464 [IANA-CS] 7465 IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- 7466 notes/iana/assignments/character-sets 7468 [IANA-MT] 7469 IANA Registry of Media Types: ftp://ftp.isi.edu/in- 7470 notes/iana/assignments/media-types/ 7472 [IPP-IIG] 7473 Hastings, T., Manros, C., "Internet Printing Protocol/1.1: draft- 7474 ietf-ipp-implementers-guide-v11-??.txt, ?? 1999, work in progress. 7476 [IPP-IIG1.0] 7477 Hastings, T., Manros, C., "Internet Printing Protocol/1.0: 7478 Implementer's Guide", draft-ietf-ipp-implementers-guide-01.txt, 7479 February 1999, work in progress. 7481 [IPP-PRO] 7482 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 7483 Protocol/1.1: Encoding and Transport", draft-ietf-ipp-protocol-v11- 7484 01.txt, May, 1999. 7486 [ISO10646-1] 7487 ISO/IEC 10646-1:1993, "Information technology -- Universal 7488 Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture and 7489 Basic Multilingual Plane, JTC1/SC2." 7491 [ISO8859-1] 7492 ISO/IEC 8859-1:1987, "Information technology -- 8-bit One-Byte 7493 Coded Character Set - Part 1: Latin Alphabet Nr 1", 1987, JTC1/SC2. 7495 [ISO10175] 7496 ISO/IEC 10175 Document Printing Application (DPA), June 1996. 7498 [LDPA] 7499 T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. Taylor, P. 7500 Zehler, "LDPA - Lightweight Document Printing Application", 7501 October 1996, 7502 ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz 7504 [P1387.4] 7505 Kirk, M. (editor), POSIX System Administration - Part 4: Printing 7506 Interfaces, POSIX 1387.4 D8, 1994. 7508 [PSIS] Herriot, R. (editor), X/Open A Printing System 7509 Interoperability Specification (PSIS), August 1995. 7511 [PWG] 7512 Printer Working Group, http://www.pwg.org. 7514 [RFC1035] 7515 P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION", 7516 RFC 1035, November 1987. 7518 Expires December 11, 1999 7520 [RFC1179] 7521 McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 7522 1179, August 1990. 7524 [RFC1759] 7525 Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 7526 J., "Printer MIB", RFC 1759, March 1995. 7528 [RFC1766] 7529 H. Alvestrand, "Tags for the Identification of Languages", RFC 7530 1766, March 1995. 7532 [RFC1952] 7533 P. Deutsch, "GZIP file format specification version 4.3", RFC 1952, 7534 May 1996. 7536 [RFC2026] 7537 S. Bradner, "The Internet Standards Process -- Revision 3", RFC 7538 2026, October 1996. 7540 [RFC2045] 7541 N. Fried, N. Borenstein, ", Multipurpose Internet Mail Extensions 7542 (MIME) Part One: Format of Internet Message Bodies " RFC 2045, 7543 November 1996. 7545 [RFC2046] 7546 Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. 7547 N. Freed & N. Borenstein. November 1996. (Obsoletes RFC1521, 7548 RFC1522, RFC1590), RFC 2046. 7550 [RFC2048] 7551 N. Freed, J. Klensin & J. Postel, "Multipurpose Internet Mail 7552 Extension (MIME) Part Four: Registration Procedures". RFC 2048, 7553 November 1996. 7555 [RFC2068] 7556 R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee, 7557 "Hypertext Transfer Protocol - HTTP/1.1", RFC 2068, January 1997 7559 [RFC2069] 7560 J. Franks, P. Hallam-Baker, J. Hostetler, P. Leach, A. Luotonen, E. 7561 Sink, L. Stewart, "An Extension to HTTP: Digest Access 7562 Authentication", RFC-2069, Jan 1997. 7564 [RFC2119] 7565 S. Bradner, "Key words for use in RFCs to Indicate Requirement 7566 Levels", RFC 2119 , March 1997 7568 [RFC2228] 7569 M. Horowitz, S. Lunt, "FTP Security Extensions", RFC 2228, October 7570 1997. 7572 Expires December 11, 1999 7574 [RFC2246] 7575 T. Dierks, C. Allen, "The TLS Protocol Version 1.0", RFC 2246, 7576 January 1999. 7578 [RFC2277] 7579 H. Alvestrand, "IETF Policy on Character Sets and Languages" RFC 7580 2277, January 1998. 7582 [RFC2278] 7583 N. Freed, J. Postel: "IANA CharSet Registration Procedures", RFC 7584 2278, January 1998. 7586 [RFC2279] 7587 F. Yergeau , "UTF-8, a transformation format of ISO 10646", RFC 7588 2279. January 1998. 7590 [RFC2316] 7591 S. Bellovin , "Report of the IAB Security Architecture Workshop", 7592 RFC 2316, April 1998. 7594 [RFC2396] 7595 Berners-Lee, T., Fielding, R., Masinter, L., "Uniform Resource 7596 Identifiers (URI): Generic Syntax", RFC 2396, August 1998. 7598 [RFC2565] 7599 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 7600 Protocol/1.0: Encoding and Transport", RFC 2565, April 1999. 7602 [RFC2566] 7603 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 7604 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, 7605 April 1999. 7607 [RFC2567] 7608 Wright, D., "Design Goals for an Internet Printing Protocol", 7609 draft-ietf-ipp-req-03.txt, November, 1998. 7611 [RFC2568] 7612 Zilles, S., "Rationale for the Structure and Model and Protocol for 7613 the Internet Printing Protocol", draft-ietf-ipp-rat-04.txt, 7614 November, 1998. 7616 [RFC2569] 7617 Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping between 7618 LPD and IPP Protocols", draft-ietf-ipp-lpd-ipp-map-05.txt, November 7619 1998. 7621 [RFC2579] 7622 K. McCloghrie, D. Perkins, J. Schoenwaelder, "Textual Conventions 7623 for SMIv2" RFC 2579 (Also STD0058), April 1999, . 7625 [SSL] 7626 Netscape, The SSL Protocol, Version 3, (Text version 3.02), 7627 November 1996. 7629 Expires December 11, 1999 7631 [SWP] 7632 P. Moore, B. Jahromi, S. Butler, "Simple Web Printing SWP/1.0", May 7633 7, 1997, ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf 7635 10. Author's Address 7637 Scott A. Isaacson (Editor) 7638 Novell, Inc. 7639 122 E 1700 S 7640 Provo, UT 84606 7642 Phone: 801-861-7366 7643 Fax: 801-861-2517 7644 e-mail: sisaacson@novell.com 7646 Tom Hastings 7647 Xerox Corporation 7648 737 Hawaii St. ESAE 231 7649 El Segundo, CA 90245 7651 Phone: 310-333-6413 7652 Fax: 310-333-5514 7653 e-mail: hastings@cp10.es.xerox.com 7655 Robert Herriot 7656 Xerox Corp. 7657 3400 Hill View Ave, Building 1 7658 Palo Alto, CA 94304 7660 Phone: 650-813-7696 7661 Fax: 650-813-6860 7662 e-mail: robert.herriot@pahv.xerox.com 7664 Roger deBry 7665 Utah Valley State College 7666 Orem, UT 84058 7668 Phone: (801) 222-8000 7669 EMail: debryro@uvsc.edu 7671 Patrick Powell 7672 Astart Technologies 7673 9475 Chesapeake Dr., Suite D 7674 San Diego, CA 95123 7676 Phone: (619) 874-6543 7677 Fax: (619) 279-8424 7678 e-mail: papowell@astart.com 7680 IPP Mailing List: ipp@pwg.org 7681 IPP Mailing List Subscription: ipp-request@pwg.org 7682 IPP Web Page: http://www.pwg.org/ipp/ 7684 Expires December 11, 1999 7686 Implementers of this specification document are encouraged to join IPP 7687 Mailing List in order to participate in any discussions of clarification 7688 issues and review of registration proposals for additional attributes 7689 and values. 7691 Other Participants: 7693 Chuck Adams - Tektronix Shivaun Albright - HP 7694 Jeff Barnett - IBM Ron Bergman - Dataproducts Corp. 7695 Sylvan Butler - HP Keith Carter - IBM Corporation 7696 Angelo Caruso - Xerox Rajesh Chawla - TR Computing 7697 Solutions 7698 Josh Cohen - Microsoft Jeff Copeland - QMS 7699 Andy Davidson - Tektronix Mabry Dozier - QMS 7700 Lee Farrell - Canon Information Steve Gebert - IBM 7701 Systems 7702 Sue Gleeson - Digital Charles Gordon - Osicom 7703 Brian Grimshaw - Apple Jerry Hadsell - IBM 7704 Richard Hart - Digital Stephen Holmstead 7705 Zhi-Hong Huang - Zenographics Babek Jahromi - Microsoft 7706 Swen Johnson - Xerox David Kellerman - Northlake 7707 Software 7708 Carl Kugler - IBM Dave Kuntz - Hewlett-Packard 7709 Takami Kurono - Brother Rick Landau - Digital 7710 Scott Lawrence - Agranot Systems Greg LeClair - Epson 7711 Harry Lewis - IBM Tony Liao - Vivid Image 7712 Roy Lomicka - Digital Pete Loya - HP 7713 Ray Lutz - Cognisys Mike MacKay - Novell, Inc. 7714 Daniel Manchala - Xerox Carl-Uno Manros - Xerox 7715 Jay Martin - Underscore Larry Masinter - Xerox 7716 Stan McConnell - Xerox Ira McDonald - High North Inc. 7717 Peter Michalek - Shinesoft Paul Moore - Microsoft 7718 Tetsuya Morita - Ricoh Yuichi Niwa - Ricoh 7719 Pat Nogay - IBM Ron Norton - Printronics 7720 Bob Pentecost - HP Rob Rhoads - Intel 7721 Xavier Riley - Xerox David Roach - Unisys 7722 Gary Roberts - Ricoh Stuart Rowley - Kyocera 7723 Hiroyuki Sato - Canon Richard Schneider - Epson 7724 Kris Schoff - HP Bob Setterbo - Adobe 7725 Devon Taylor - Novell, Inc. Mike Timperman - Lexmark 7726 Randy Turner - Sharp Bill Wagner - Osicom 7727 Jim Walker - DAZEL Chris Wellens - Interworking Labs 7728 Rob Whittle - Novell, Inc. Jasper Wong - Xionics 7729 Don Wright - Lexmark Rick Yardumian - Xerox 7730 Lloyd Young - Lexmark Atsushi Yuki - Kyocera 7731 Peter Zehler - Xerox Frank Zhao - Panasonic 7732 Steve Zilles - Adobe 7734 Expires December 11, 1999 7735 11. Formats for IPP Registration Proposals 7737 In order to propose an IPP extension for registration, the proposer must 7738 submit an application to IANA by email to "iana@iana.org" or by filling 7739 out the appropriate form on the IANA web pages (http://www.iana.org). 7740 This section specifies the required information and the formats for 7741 proposing registrations of extensions to IPP as provided in Section 6 7742 for: 7744 1. type2 'keyword' attribute values 7745 2. type3 'keyword' attribute values 7746 3. type2 'enum' attribute values 7747 4. type3 'enum' attribute values 7748 5. attributes 7749 6. attribute syntaxes 7750 7. operations 7751 8. status codes 7753 11.1 Type2 keyword attribute values registration 7755 Type of registration: type2 keyword attribute value 7756 Name of attribute to which this keyword specification is to be added: 7757 Proposed keyword name of this keyword value: 7758 Specification of this keyword value (follow the style of IPP Model 7759 Section 4.1.2.3): 7760 Name of proposer: 7761 Address of proposer: 7762 Email address of proposer: 7764 Note: For type2 keywords, the Designated Expert will be the point of 7765 contact for the approved registration specification, if any maintenance 7766 of the registration specification is needed. 7768 11.2 Type3 keyword attribute values registration 7770 Type of registration: type3 keyword attribute value 7771 Name of attribute to which this keyword specification is to be added: 7772 Proposed keyword name of this keyword value: 7773 Specification of this keyword value (follow the style of IPP Model 7774 Section 4.1.2.3): 7775 Name of proposer: 7776 Address of proposer: 7777 Email address of proposer: 7779 Note: For type3 keywords, the proposer will be the point of contact for 7780 the approved registration specification, if any maintenance of the 7781 registration specification is needed. 7783 11.3 Type2 enum attribute values registration 7785 Type of registration: type2 enum attribute value 7786 Name of attribute to which this enum specification is to be added: 7787 Keyword symbolic name of this enum value: 7789 Expires December 11, 1999 7790 Numeric value (to be assigned by the IPP Designated Expert in 7791 consultation with IANA): 7792 Specification of this enum value (follow the style of IPP Model Section 7793 4.1.4): 7794 Name of proposer: 7795 Address of proposer: 7796 Email address of proposer: 7798 Note: For type2 enums, the Designated Expert will be the point of 7799 contact for the approved registration specification, if any maintenance 7800 of the registration specification is needed. 7802 11.4 Type3 enum attribute values registration 7804 Type of registration: type3 enum attribute value 7805 Name of attribute to which this enum specification is to be added: 7806 Keyword symbolic name of this enum value: 7807 Numeric value (to be assigned by the IPP Designated Expert in 7808 consultation with IANA): 7809 Specification of this enum value (follow the style of IPP Model Section 7810 4.1.4): 7811 Name of proposer: 7812 Address of proposer: 7813 Email address of proposer: 7815 Note: For type3 enums, the proposer will be the point of contact for 7816 the approved registration specification, if any maintenance of the 7817 registration specification is needed. 7819 11.5 Attribute registration 7821 Type of registration: attribute 7822 Proposed keyword name of this attribute: 7823 Types of attribute (Operation, Job Template, Job Description, Printer 7824 Description): 7825 Operations to be used with if the attribute is an operation attribute: 7826 Object (Job, Printer, etc. if bound to an object): 7827 Attribute syntax(es) (include 1setOf and range as in Section 4.2): 7828 If attribute syntax is 'keyword' or 'enum', is it type2 or type3: 7829 If this is a Printer attribute, MAY the value returned depend on 7830 "document-format" (See Section 6.2): 7831 If this is a Job Template attribute, how does its specification depend 7832 on the value of the "multiple-document-handling" attribute: 7833 Specification of this attribute (follow the style of IPP Model Section 7834 4.2): 7835 Name of proposer: 7836 Address of proposer: 7837 Email address of proposer: 7839 Note: For attributes, 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 Expires December 11, 1999 7844 11.6 Attribute Syntax registration 7846 Type of registration: attribute syntax 7847 Proposed name of this attribute syntax: 7848 Type of attribute syntax (integer, octetString, character-string, see 7849 [IPP-PRO]): 7850 Numeric value (to be assigned by the IPP Designated Expert in 7851 consultation with IANA): 7852 Specification of this attribute (follow the style of IPP Model Section 7853 4.1): 7854 Name of proposer: 7855 Address of proposer: 7856 Email address of proposer: 7858 Note: For attribute syntaxes, the IPP Designated Expert will be the 7859 point of contact for the approved registration specification, if any 7860 maintenance of the registration specification is needed. 7862 11.7 Operation registration 7864 Type of registration: operation 7865 Proposed name of this operation: 7866 Numeric operation-id value (to be assigned by the IPP Designated Expert 7867 in consultation with IANA): 7868 Object Target (Job, Printer, etc. that operation is upon): 7869 Specification of this attribute (follow the style of IPP Model Section 7870 3): 7871 Name of proposer: 7872 Address of proposer: 7873 Email address of proposer: 7875 Note: For operations, the IPP Designated Expert will be the point of 7876 contact for the approved registration specification, if any maintenance 7877 of the registration specification is needed. 7879 11.8 Attribute Group registration 7881 Type of registration: attribute group 7882 Proposed name of this attribute group: 7883 Numeric tag according to [IPP-PRO] (to be assigned by the IPP Designated 7884 Expert in consultation with IANA): 7885 Operation requests and group number for each operation in which the 7886 attribute group occurs: 7887 Operation responses and group number for each operation in which the 7888 attribute group occurs: 7889 Specification of this attribute group (follow the style of IPP Model 7890 Section 3): 7891 Name of proposer: 7892 Address of proposer: 7893 Email address of proposer: 7895 Note: For attribute groups, the IPP Designated Expert will be the point 7896 of contact for the approved registration specification, if any 7897 maintenance of the registration specification is needed. 7899 Expires December 11, 1999 7900 11.9 Status code registration 7902 Type of registration: status code 7903 Keyword symbolic name of this status code value: 7904 Numeric value (to be assigned by the IPP Designated Expert in 7905 consultation with IANA): 7906 Operations that this status code may be used with: 7907 Specification of this status code (follow the style of IPP Model Section 7908 13 APPENDIX B: Status Codes and Suggested Status Code Messages): 7909 Name of proposer: 7910 Address of proposer: 7911 Email address of proposer: 7913 Note: For status codes, the Designated Expert will be the point of 7914 contact for the approved registration specification, if any maintenance 7915 of the registration specification is needed. 7917 12. APPENDIX A: Terminology 7919 This specification document uses the terminology defined in this 7920 section. 7922 12.1 Conformance Terminology 7924 The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", 7925 "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be 7926 interpreted as described in RFC 2119 [RFC2119]. 7928 12.1.1 NEED NOT 7930 This term is not included in RFC 2119. The verb "NEED NOT" indicates an 7931 action that the subject of the sentence does not have to implement in 7932 order to claim conformance to the standard. The verb "NEED NOT" is used 7933 instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. 7935 12.2 Model Terminology 7937 12.2.1 Keyword 7939 Keywords are used within this document as identifiers of semantic 7940 entities within the abstract model (see section 4.1.2.3). Attribute 7941 names, some attribute values, attribute syntaxes, and attribute group 7942 names are represented as keywords. 7944 12.2.2 Attributes 7946 An attribute is an item of information that is associated with an 7947 instance of an IPP object. An attribute consists of an attribute name 7948 and one or more attribute values. Each attribute has a specific 7950 Expires December 11, 1999 7951 attribute syntax. All object attributes are defined in section 4 and 7952 all operation attributes are defined in section 3. 7954 Job Template Attributes are described in section 4.2. The client 7955 optionally supplies Job Template attributes in a create request 7956 (operation requests that create Job objects). The Printer object has 7957 associated attributes which define supported and default values for the 7958 Printer. 7960 12.2.2.1 Attribute Name 7962 Each attribute is uniquely identified in this document by its attribute 7963 name. An attribute name is a keyword. The keyword attribute name is 7964 given in the section header describing that attribute. In running text 7965 in this document, attribute names are indicated inside double quotation 7966 marks (") where the quotation marks are not part of the keyword itself. 7968 12.2.2.2 Attribute Group Name 7970 Related attributes are grouped into named groups. The name of the group 7971 is a keyword. The group name may be used in place of naming all the 7972 attributes in the group explicitly. Attribute groups are defined in 7973 section 3. 7975 12.2.2.3 Attribute Value 7977 Each attribute has one or more values. Attribute values are represented 7978 in the syntax type specified for that attribute. In running text in this 7979 document, attribute values are indicated inside single quotation marks 7980 ('), whether their attribute syntax is keyword, integer, text, etc. 7981 where the quotation marks are not part of the value itself. 7983 12.2.2.4 Attribute Syntax 7985 Each attribute is defined using an explicit syntax type. In this 7986 document, each syntax type is defined as a keyword with specific 7987 meaning. The "Encoding and Transport" document [IPP-PRO] indicates the 7988 actual "on-the-wire" encoding rules for each syntax type. Attribute 7989 syntax types are defined in section 4.1. 7991 12.2.3 Supports 7993 By definition, a Printer object supports an attribute only if that 7994 Printer object responds with the corresponding attribute populated with 7995 some value(s) in a response to a query for that attribute. A Printer 7996 object supports an attribute value if the value is one of the Printer 7997 object's "supported values" attributes. The device behind a Printer 7998 object may exhibit a behavior that corresponds to some IPP attribute, 7999 but if the Printer object, when queried for that attribute, doesn't 8000 respond with the attribute, then as far as IPP is concerned, that 8001 implementation does not support that feature. If the Printer object's 8003 Expires December 11, 1999 8004 "xxx-supported" attribute is not populated with a particular value (even 8005 if that value is a legal value for that attribute), then that Printer 8006 object does not support that particular value. 8008 A conforming implementation MUST support all REQUIRED attributes. 8009 However, even for REQUIRED attributes, conformance to IPP does not 8010 mandate that all implementations support all possible values 8011 representing all possible job processing behaviors and features. For 8012 example, if a given instance of a Printer supports only certain document 8013 formats, then that Printer responds with the "document-format-supported" 8014 attribute populated with a set of values, possibly only one, taken from 8015 the entire set of possible values defined for that attribute. This 8016 limited set of values represents the Printer's set of supported document 8017 formats. Supporting an attribute and some set of values for that 8018 attribute enables IPP end users to be aware of and make use of those 8019 features associated with that attribute and those values. If an 8020 implementation chooses to not support an attribute or some specific 8021 value, then IPP end users would have no ability to make use of that 8022 feature within the context of IPP itself. However, due to existing 8023 practice and legacy systems which are not IPP aware, there might be some 8024 other mechanism outside the scope of IPP to control or request the 8025 "unsupported" feature (such as embedded instructions within the document 8026 data itself). 8028 For example, consider the "finishings-supported" attribute. 8030 1) If a Printer object is not physically capable of stapling, the 8031 "finishings-supported" attribute MUST NOT be populated with the 8032 value of 'staple'. 8033 2) A Printer object is physically capable of stapling, however an 8034 implementation chooses not to support stapling in the IPP 8035 "finishings" attribute. In this case, 'staple' MUST NOT be a value 8036 in the "finishings-supported" Printer object attribute. Without 8037 support for the value 'staple', an IPP end user would have no means 8038 within the protocol itself to request that a Job be stapled. 8039 However, an existing document data formatter might be able to 8040 request that the document be stapled directly with an embedded 8041 instruction within the document data. In this case, the IPP 8042 implementation does not "support" stapling, however the end user is 8043 still able to have some control over the stapling of the completed 8044 job. 8045 3) A Printer object is physically capable of stapling, and an 8046 implementation chooses to support stapling in the IPP "finishings" 8047 attribute. In this case, 'staple' MUST be a value in the 8048 "finishings-supported" Printer object attribute. Doing so, would 8049 enable end users to be aware of and make use of the stapling 8050 feature using IPP attributes. 8052 Even though support for Job Template attributes by a Printer object is 8053 OPTIONAL, it is RECOMMENDED that if the device behind a Printer object 8054 is capable of realizing any feature or function that corresponds to an 8055 IPP attribute and some associated value, then that implementation SHOULD 8056 support that IPP attribute and value. 8058 Expires December 11, 1999 8059 The set of values in any of the supported value attributes is set 8060 (populated) by some administrative process or automatic sensing 8061 mechanism that is outside the scope of this IPP/1.1 document. For 8062 administrative policy and control reasons, an administrator may choose 8063 to make only a subset of possible values visible to the end user. In 8064 this case, the real output device behind the IPP Printer abstraction may 8065 be capable of a certain feature, however an administrator is specifying 8066 that access to that feature not be exposed to the end user through the 8067 IPP protocol. Also, since a Printer object may represent a logical 8068 print device (not just a physical device) the actual process for 8069 supporting a value is undefined and left up to the implementation. 8070 However, if a Printer object supports a value, some manual human action 8071 may be needed to realize the semantic action associated with the value, 8072 but no end user action is required. 8074 For example, if one of the values in the "finishings-supported" 8075 attribute is 'staple', the actual process might be an automatic staple 8076 action by a physical device controlled by some command sent to the 8077 device. Or, the actual process of stapling might be a manual action by 8078 an operator at an operator attended Printer object. 8080 For another example of how supported attributes function, consider a 8081 system administrator who desires to control all print jobs so that no 8082 job sheets are printed in order to conserve paper. To force no job 8083 sheets, the system administrator sets the only supported value for the 8084 "job-sheets-supported" attribute to 'none'. In this case, if a client 8085 requests anything except 'none', the create request is rejected or the 8086 "job-sheets" value is ignored (depending on the value of "ipp-attribute- 8087 fidelity"). To force the use of job start/end sheets on all jobs, the 8088 administrator does not include the value 'none' in the "job-sheets- 8089 supported" attribute. In this case, if a client requests 'none', the 8090 create request is rejected or the "job-sheets" value is ignored (again 8091 depending on the value of "ipp-attribute-fidelity"). 8093 12.2.4 print-stream page 8095 A "print-stream page" is a page according to the definition of pages in 8096 the language used to express the document data. 8098 12.2.5 impression 8100 An "impression" is the image (possibly many print-stream pages in 8101 different configurations) imposed onto a single media page. 8103 13. APPENDIX B: Status Codes and Suggested Status Code Messages 8105 This section defines status code enum keywords and values that are used 8106 to provide semantic information on the results of an operation request. 8107 Each operation response MUST include a status code. The response MAY 8108 also contain a status message that provides a short textual description 8109 of the status. The status code is intended for use by automata, and the 8111 Expires December 11, 1999 8112 status message is intended for the human end user. Since the status 8113 message is an OPTIONAL component of the operation response, an IPP 8114 application (i.e., a browser, GUI, print driver or gateway) is NOT 8115 REQUIRED to examine or display the status message, since it MAY not be 8116 returned to the application. 8118 The prefix of the status keyword defines the class of response as 8119 follows: 8121 "informational" - Request received, continuing process 8122 "successful" - The action was successfully received, understood, and 8123 accepted 8124 "redirection" - Further action must be taken in order to complete the 8125 request 8126 "client-error" - The request contains bad syntax or cannot be 8127 fulfilled 8128 "server-error" - The IPP object failed to fulfill an apparently 8129 valid request 8131 As with type2 enums, IPP status codes are extensible. IPP clients are 8132 NOT REQUIRED to understand the meaning of all registered status codes, 8133 though such understanding is obviously desirable. However, IPP clients 8134 MUST understand the class of any status code, as indicated by the 8135 prefix, and treat any unrecognized response as being equivalent to the 8136 first status code of that class, with the exception that an unrecognized 8137 response MUST NOT be cached. For example, if an unrecognized status 8138 code of "client-error-xxx-yyy" is received by the client, it can safely 8139 assume that there was something wrong with its request and treat the 8140 response as if it had received a "client-error-bad-request" status code. 8141 In such cases, IPP applications SHOULD present the OPTIONAL message (if 8142 present) to the end user since the message is likely to contain human 8143 readable information which will help to explain the unusual status. The 8144 name of the enum is the suggested status message for US English. 8146 The status code values range from 0x0000 to 0x7FFF. The value ranges 8147 for each status code class are as follows: 8149 "successful" - 0x0000 to 0x00FF 8150 "informational" - 0x0100 to 0x01FF 8151 "redirection" - 0x0200 to 0x02FF 8152 "client-error" - 0x0400 to 0x04FF 8153 "server-error" - 0x0500 to 0x05FF 8155 The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 to 8156 5) is reserved for private use within each status code class. Values 8157 0x0600 to 0x7FFF are reserved for future assignment and MUST NOT be 8158 used. 8160 13.1 Status Codes 8162 Each status code is described below. Section 13.1.5.9 contains a table 8163 that indicates which status codes apply to which operations. The 8164 Implementer's Guide [IPP-IIG] describe the suggested steps for 8166 Expires December 11, 1999 8167 processing IPP attributes for all operations, including returning status 8168 codes. 8170 13.1.1 Informational 8172 This class of status code indicates a provisional response and is to be 8173 used for informational purposes only. 8175 There are no status codes defined in IPP/1.1 for this class of status 8176 code. 8178 13.1.2 Successful Status Codes 8180 This class of status code indicates that the client's request was 8181 successfully received, understood, and accepted. 8183 13.1.2.1 successful-ok (0x0000) 8185 The request has succeeded and no request attributes were substituted or 8186 ignored. In the case of a response to a create request, the 8187 'successful-ok' status code indicates that the request was successfully 8188 received and validated, and that the Job object has been created; it 8189 does not indicate that the job has been processed. The transition of 8190 the Job object into the 'completed' state is the only indicator that the 8191 job has been printed. 8193 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) 8195 The request has succeeded, but some supplied (1) attributes were ignored 8196 or (2) unsupported values were substituted with supported values or were 8197 ignored in order to perform the operation without rejecting it. 8198 Unsupported attributes, attribute syntaxes, or values MUST be returned 8199 in the Unsupported Attributes group of the response for all operations. 8200 There is an exception to this rule for the query operations: Get- 8201 Printer-Attributes, Get-Jobs, and Get-Job-Attributes for the "requested- 8202 attributes" operation attribute only. When the supplied values of the 8203 "requested-attributes" operation attribute are requesting attributes 8204 that are not supported, the IPP object MAY, but is NOT REQUIRED to, 8205 return the "requested-attributes" attribute in the Unsupported Attribute 8206 response group (with the unsupported values only). See sections 3.1.7 8207 and 3.2.1.2. 8209 13.1.2.3 successful-ok-conflicting-attributes (0x0002) 8211 The request has succeeded, but some supplied attribute values conflicted 8212 with the values of other supplied attributes. These conflicting values 8213 were either (1) substituted with (supported) values or (2) the 8214 attributes were removed in order to process the job without rejecting 8215 it. Attributes or values which conflict with other attributes and have 8216 been substituted or ignored MUST be returned in the Unsupported 8218 Expires December 11, 1999 8219 Attributes group of the response for all operations as supplied by the 8220 client. See sections 3.1.7 and 3.2.1.2. 8222 13.1.3 Redirection Status Codes 8224 This class of status code indicates that further action needs to be 8225 taken to fulfill the request. 8227 There are no status codes defined in IPP/1.1 for this class of status 8228 code. 8230 13.1.4 Client Error Status Codes 8232 This class of status code is intended for cases in which the client 8233 seems to have erred. The IPP object SHOULD return a message containing 8234 an explanation of the error situation and whether it is a temporary or 8235 permanent condition. 8237 13.1.4.1 client-error-bad-request (0x0400) 8239 The request could not be understood by the IPP object due to malformed 8240 syntax (such as the value of a fixed length attribute whose length does 8241 not match the prescribed length for that attribute - see the 8242 Implementer's Guide [IPP-IIG] ). The IPP application SHOULD NOT repeat 8243 the request without modifications. 8245 13.1.4.2 client-error-forbidden (0x0401) 8247 The IPP object understood the request, but is refusing to fulfill it. 8248 Additional authentication information or authorization credentials will 8249 not help and the request SHOULD NOT be repeated. This status code is 8250 commonly used when the IPP object does not wish to reveal exactly why 8251 the request has been refused or when no other response is applicable. 8253 13.1.4.3 client-error-not-authenticated (0x0402) 8255 The request requires user authentication. The IPP client may repeat the 8256 request with suitable authentication information. If the request already 8257 included authentication information, then this status code indicates 8258 that authorization has been refused for those credentials. If this 8259 response contains the same challenge as the prior response, and the user 8260 agent has already attempted authentication at least once, then the 8261 response message may contain relevant diagnostic information. This 8262 status codes reveals more information than "client-error-forbidden". 8264 13.1.4.4 client-error-not-authorized (0x0403) 8266 The requester is not authorized to perform the request. Additional 8267 authentication information or authorization credentials will not help 8268 and the request SHOULD NOT be repeated. This status code is used when 8269 the IPP object wishes to reveal that the authentication information is 8271 Expires December 11, 1999 8272 understandable, however, the requester is explicitly not authorized to 8273 perform the request. This status codes reveals more information than 8274 "client-error-forbidden" and "client-error-not-authenticated". 8276 13.1.4.5 client-error-not-possible (0x0404) 8278 This status code is used when the request is for something that can not 8279 happen. For example, there might be a request to cancel a job that has 8280 already been canceled or aborted by the system. The IPP client SHOULD 8281 NOT repeat the request. 8283 13.1.4.6 client-error-timeout (0x0405) 8285 The client did not produce a request within the time that the IPP object 8286 was prepared to wait. For example, a client issued a Create-Job 8287 operation and then, after a long period of time, issued a Send-Document 8288 operation and this error status code was returned in response to the 8289 Send-Document request (see section 3.3.1). The IPP object might have 8290 been forced to clean up resources that had been held for the waiting 8291 additional Documents. The IPP object was forced to close the Job since 8292 the client took too long. The client SHOULD NOT repeat the request 8293 without modifications. 8295 13.1.4.7 client-error-not-found (0x0406) 8297 The IPP object has not found anything matching the request URI. No 8298 indication is given of whether the condition is temporary or permanent. 8299 For example, a client with an old reference to a Job (a URI) tries to 8300 cancel the Job, however in the mean time the Job might have been 8301 completed and all record of it at the Printer has been deleted. This 8302 status code, 'client-error-not-found' is returned indicating that the 8303 referenced Job can not be found. This error status code is also used 8304 when a client supplies a URI as a reference to the document data in 8305 either a Print-URI or Send-URI operation, but the document can not be 8306 found. 8308 In practice, an IPP application should avoid a not found situation by 8309 first querying and presenting a list of valid Printer URIs and Job URIs 8310 to the end-user. 8312 13.1.4.8 client-error-gone (0x0407) 8314 The requested object is no longer available and no forwarding address is 8315 known. This condition should be considered permanent. Clients with 8316 link editing capabilities should delete references to the request URI 8317 after user approval. If the IPP object does not know or has no facility 8318 to determine, whether or not the condition is permanent, the status code 8319 "client-error-not-found" should be used instead. 8321 This response is primarily intended to assist the task of maintenance by 8322 notifying the recipient that the resource is intentionally unavailable 8323 and that the IPP object administrator desires that remote links to that 8325 Expires December 11, 1999 8326 resource be removed. It is not necessary to mark all permanently 8327 unavailable resources as "gone" or to keep the mark for any length of 8328 time -- that is left to the discretion of the IPP object administrator. 8330 13.1.4.9 client-error-request-entity-too-large (0x0408) 8332 The IPP object is refusing to process a request because the request 8333 entity is larger than the IPP object is willing or able to process. An 8334 IPP Printer returns this status code when it limits the size of print 8335 jobs and it receives a print job that exceeds that limit or when the 8336 attributes are so many that their encoding causes the request entity to 8337 exceed IPP object capacity. 8339 13.1.4.10 client-error-request-value-too-long (0x0409) 8341 The IPP object is refusing to service the request because one or more of 8342 the client-supplied attributes has a variable length value that is 8343 longer than the maximum length specified for that attribute. The IPP 8344 object might not have sufficient resources (memory, buffers, etc.) to 8345 process (even temporarily), interpret, and/or ignore a value larger than 8346 the maximum length. Another use of this error code is when the IPP 8347 object supports the processing of a large value that is less than the 8348 maximum length, but during the processing of the request as a whole, the 8349 object may pass the value onto some other system component which is not 8350 able to accept the large value. For more details, see the Implementer's 8351 Guide [IPP-IIG] . 8353 Note: For attribute values that are URIs, this rare condition is only 8354 likely to occur when a client has improperly submitted a request with 8355 long query information (e.g. an IPP application allows an end-user to 8356 enter an invalid URI), when the client has descended into a URI "black 8357 hole" of redirection (e.g., a redirected URI prefix that points to a 8358 suffix of itself), or when the IPP object is under attack by a client 8359 attempting to exploit security holes present in some IPP objects using 8360 fixed-length buffers for reading or manipulating the Request-URI. 8362 13.1.4.11 client-error-document-format-not-supported (0x040A) 8364 The IPP object is refusing to service the request because the document 8365 data is in a format, as specified in the "document-format" operation 8366 attribute, that is not supported by the Printer object. This error is 8367 returned independent of the client-supplied "ipp-attribute-fidelity". 8368 The Printer object MUST return this status code, even if there are other 8369 Job Template attributes that are not supported as well, since this error 8370 is a bigger problem than with Job Template attributes. See sections 8371 3.1.7 and 3.2.1.1. 8373 13.1.4.12 client-error-attributes-or-values-not-supported (0x040B) 8375 In a create request, if the Printer object does not support one or more 8376 attributes, attribute syntaxes, or attribute values supplied in the 8377 request and the client supplied the "ipp-attributes-fidelity" operation 8379 Expires December 11, 1999 8380 attribute with the 'true' value, the Printer object MUST return this 8381 status code. The Printer object MUST also return in the Unsupported 8382 Attributes Group all the attributes and/or values supplied by the client 8383 that are not supported. See section 3.1.7. For example, if the request 8384 indicates 'iso-a4' media, but that media type is not supported by the 8385 Printer object. Or, if the client supplies a Job Template attribute and 8386 the attribute itself is not even supported by the Printer. If the "ipp- 8387 attribute-fidelity" attribute is 'false', the Printer MUST ignore or 8388 substitute values for unsupported Job Template attributes and values 8389 rather than reject the request and return this status code. 8391 For any operation where a client requests attributes (such as a Get- 8392 Jobs, Get-Printer-Attributes, or Get-Job-Attributes operation), if the 8393 IPP object does not support one or more of the requested attributes, the 8394 IPP object simply ignores the unsupported requested attributes and 8395 processes the request as if they had not been supplied, rather than 8396 returning this status code. In this case, the IPP object MUST return 8397 the 'successful-ok-ignored-or-substituted-attributes' status code and 8398 MAY return the unsupported attributes as values of the "requested- 8399 attributes" in the Unsupported Attributes Group (see section 13.1.2.2). 8401 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) 8403 The scheme of the client-supplied URI in a Print-URI or a Send-URI 8404 operation is not supported. See section 3.1.7. 8406 13.1.4.14 client-error-charset-not-supported (0x040D) 8408 For any operation, if the IPP Printer does not support the charset 8409 supplied by the client in the "attributes-charset" operation attribute, 8410 the Printer MUST reject the operation and return this status and any 8411 'text' or 'name' attributes using the 'utf-8' charset (see Section 8412 3.1.4.1). See section 3.1.7. 8414 13.1.4.15 client-error-conflicting-attributes (0x040E) 8416 The request is rejected because some attribute values conflicted with 8417 the values of other attributes which this document does not permit to be 8418 substituted or ignored. The Printer object MUST also return in the 8419 Unsupported Attributes Group the conflicting attributes supplied by the 8420 client. See sections 3.1.7 and 3.2.1.2. 8422 13.1.4.16 client-error-compression-not-supported (0x040F) 8424 The IPP object is refusing to service the request because the document 8425 data, as specified in the "compression" operation attribute, is 8426 compressed in a way that is not supported by the Printer object. This 8427 error is returned independent of the client-supplied "ipp-attribute- 8428 fidelity". The Printer object MUST return this status code, even if 8429 there are other Job Template attributes that are not supported as well, 8430 since this error is a bigger problem than with Job Template attributes. 8431 See sections 3.1.7 and 3.2.1.1. 8433 Expires December 11, 1999 8434 13.1.4.17 client-error-compression-error (0x0410) 8436 The IPP object is refusing to service the request because the document 8437 data cannot be decompressed when using the algorithm specified by the 8438 "compression" operation attribute. This error is returned independent 8439 of the client-supplied "ipp-attribute-fidelity". The Printer object 8440 MUST return this status code, even if there are Job Template attributes 8441 that are not supported as well, since this error is a bigger problem 8442 than with Job Template attributes. See sections 3.1.7 and 3.2.1.1. 8444 13.1.4.18 client-error-document-format-error (0x0411) 8446 The IPP object is refusing to service the request because Printer 8447 encountered an error in the document data while interpreting it. This 8448 error is returned independent of the client-supplied "ipp-attribute- 8449 fidelity". The Printer object MUST return this status code, even if 8450 there are Job Template attributes that are not supported as well, since 8451 this error is a bigger problem than with Job Template attributes. See 8452 sections 3.1.7 and 3.2.1.1. 8454 13.1.4.19 client-error-document-access-error (0x0412) 8456 The IPP object is refusing to service the Print-URI or Send-URI request 8457 because Printer encountered an access error while attempting to validate 8458 the accessibility or access the document data specified in the 8459 "document-uri" operation attribute. The Printer MAY also return a 8460 specific document access error code using the "document-access-error" 8461 operation attribute (see section 3.1.6.4). This error is returned 8462 independent of the client-supplied "ipp-attribute-fidelity". The 8463 Printer object MUST return this status code, even if there are Job 8464 Template attributes that are not supported as well, since this error is 8465 a bigger problem than with Job Template attributes. See section 3.1.7. 8467 13.1.5 Server Error Status Codes 8469 This class of status codes indicates cases in which the IPP object is 8470 aware that it has erred or is incapable of performing the request. The 8471 IPP object SHOULD include a message containing an explanation of the 8472 error situation, and whether it is a temporary or permanent condition. 8474 13.1.5.1 server-error-internal-error (0x0500) 8476 The IPP object encountered an unexpected condition that prevented it 8477 from fulfilling the request. This error status code differs from 8478 "server-error-temporary-error" in that it implies a more permanent type 8479 of internal error. It also differs from "server-error-device-error" in 8480 that it implies an unexpected condition (unlike a paper-jam or out-of- 8481 toner problem which is undesirable but expected). This error status 8482 code indicates that probably some knowledgeable human intervention is 8483 required. 8485 Expires December 11, 1999 8486 13.1.5.2 server-error-operation-not-supported (0x0501) 8488 The IPP object does not support the functionality required to fulfill 8489 the request. This is the appropriate response when the IPP object does 8490 not recognize an operation or is not capable of supporting it. See 8491 section 3.1.7. 8493 13.1.5.3 server-error-service-unavailable (0x0502) 8495 The IPP object is currently unable to handle the request due to a 8496 temporary overloading or maintenance of the IPP object. The implication 8497 is that this is a temporary condition which will be alleviated after 8498 some delay. If known, the length of the delay may be indicated in the 8499 message. If no delay is given, the IPP application should handle the 8500 response as it would for a "server-error-temporary-error" response. If 8501 the condition is more permanent, the error status codes "client-error- 8502 gone" or "client-error-not-found" could be used. 8504 13.1.5.4 server-error-version-not-supported (0x0503) 8506 The IPP object does not support, or refuses to support, the IPP protocol 8507 version that was supplied as the value of the "version-number" operation 8508 parameter in the request. The IPP object is indicating that it is 8509 unable or unwilling to complete the request using the same major and 8510 minor version number as supplied in the request other than with this 8511 error message. The error response SHOULD contain a "status-message" 8512 attribute (see section 3.1.6.2) describing why that version is not 8513 supported and what other versions are supported by that IPP object. See 8514 section 3.1.8. 8516 The error response MUST identify in the "version-number" operation 8517 parameter the closest version number that the IPP object does support. 8518 For example, if a client supplies version '1.0' and an IPP/1.1 object 8519 supports version '1.0', then it MUST respond with version '1.0' in all 8520 responses to such a request. If the IPP/1.1 object does not support 8521 version '1.0', then it SHOULD accept the request and respond with 8522 version '1.1' or MAY reject the request and respond with this error code 8523 and version '1.1'. If a client supplies a version '1.2' the IPP/1.1 8524 object SHOULD accept the request and return version '1.1' or MAY reject 8525 the request and respond with this error code and version '1.1'. See 8526 sections 3.1.8 and 4.4.14. 8528 13.1.5.5 server-error-device-error (0x0504) 8530 A printer error, such as a paper jam, occurs while the IPP object 8531 processes a Print or Send operation. The response contains the true Job 8532 Status (the values of the "job-state" and "job-state-reasons" 8533 attributes). Additional information can be returned in the OPTIONAL 8534 "job-state-message" attribute value or in the OPTIONAL status message 8535 that describes the error in more detail. This error status code is only 8536 returned in situations where the Printer is unable to accept the create 8537 request because of such a device error. For example, if the Printer is 8539 Expires December 11, 1999 8540 unable to spool, and can only accept one job at a time, the reason it 8541 might reject a create request is that the printer currently has a paper 8542 jam. In many cases however, where the Printer object can accept the 8543 request even though the Printer has some error condition, the 8544 'successful-ok' status code will be returned. In such a case, the 8545 client would look at the returned Job Object Attributes or later query 8546 the Printer to determine its state and state reasons. 8548 13.1.5.6 server-error-temporary-error (0x0505) 8550 A temporary error such as a buffer full write error, a memory overflow 8551 (i.e. the document data exceeds the memory of the Printer), or a disk 8552 full condition, occurs while the IPP Printer processes an operation. 8553 The client MAY try the unmodified request again at some later point in 8554 time with an expectation that the temporary internal error condition may 8555 have been cleared. Alternatively, as an implementation option, a 8556 Printer object MAY delay the response until the temporary condition is 8557 cleared so that no error is returned. 8559 13.1.5.7 server-error-not-accepting-jobs (0x0506) 8561 A temporary error indicating that the Printer is not currently accepting 8562 jobs, because the administrator has set the value of the Printer's 8563 "printer-is-not-accepting-jobs" attribute to 'false' (by means outside 8564 the scope of this IPP/1.1 document). 8566 13.1.5.8 server-error-busy (0x0507) 8568 A temporary error indicating that the Printer is too busy processing 8569 jobs and/or other requests. The client SHOULD try the unmodified request 8570 again at some later point in time with an expectation that the temporary 8571 busy condition will have been cleared. 8573 13.1.5.9 server-error-job-canceled (0x0508) 8575 An error indicating that the job has been canceled by an operator or the 8576 system while the client was transmitting the data to the IPP Printer. 8577 If a job-id and job-uri had been created, then they are returned in the 8578 Print-Job, Send-Document, or Send-URI response as usual; otherwise, no 8579 job-id and job-uri are returned in the response. 8581 13.1.5.10 server-error-multiple-document-jobs-not-supported (0x0509) 8583 The IPP object does not support multiple documents per job and a client 8584 attempted to supply document data with a second Send-Document or Send- 8585 URI operation. 8587 Expires December 11, 1999 8588 13.2 Status Codes for IPP Operations 8590 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 8591 SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and 8592 Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job 8594 IPP Operations 8595 IPP Status Keyword PJ PU CJ SD SU V GA GJ C 8596 ------------------ -- -- -- -- -- - -- -- - 8597 successful-ok x x x x x x x x x 8598 successful-ok-ignored-or-substituted- x x x x x x x x x 8599 attributes 8600 successful-ok-conflicting-attributes x x x x x x x x x 8601 client-error-bad-request x x x x x x x x x 8602 client-error-forbidden x x x x x x x x x 8603 client-error-not-authenticated x x x x x x x x x 8604 client-error-not-authorized x x x x x x x x x 8605 client-error-not-possible x x x x x x x x x 8606 client-error-timeout x x 8607 client-error-not-found x x x x x x x x x 8608 client-error-gone x x x x x x x x x 8609 client-error-request-entity-too-large x x x x x x x x x 8610 client-error-request-value-too-long x x x x x x x x x 8611 client-error-document-format-not- x x x x x x 8612 supported 8613 client-error-attributes-or-values-not- x x x x x x x x x 8614 supported 8615 client-error-uri-scheme-not-supported x x 8616 client-error-charset-not-supported x x x x x x x x x 8617 client-error-conflicting-attributes x x x x x x x x x 8618 client-error-compression-not-supported x x x x x 8619 client-error-compression-error x x x x 8620 client-error-document-format-error x x x x 8621 client-error-document-access-error x x 8622 server-error-internal-error x x x x x x x x x 8623 server-error-operation-not-supported x x x x 8624 server-error-service-unavailable x x x x x x x x x 8625 server-error-version-not-supported x x x x x x x x x 8626 server-error-device-error x x x x x 8627 server-error-temporary-error x x x x x 8628 server-error-not-accepting-jobs x x x x 8629 server-error-busy x x x x x x x x x 8630 server-error-job-canceled x x x 8631 server-error-multiple-document-jobs- x x 8632 not-supported 8634 Expires December 11, 1999 8636 HJ = Hold-Job, RJ = Release-Job, RS = Restart-Job 8637 PP = Pause-Printer, RP = Resume-Printer, PJ = Purge-Jobs 8639 IPP Operations (cont.) 8640 IPP Status Keyword HJ RJ RS PP RP PJ 8641 ------------------ -- -- -- -- -- -- 8642 successful-ok x x x x x x 8643 successful-ok-ignored-or-substituted- x x x x x x 8644 attributes 8645 successful-ok-conflicting-attributes x x x x x x 8646 client-error-bad-request x x x x x x 8647 client-error-forbidden x x x x x x 8648 client-error-not-authenticated x x x x x x 8649 client-error-not-authorized x x x x x x 8650 client-error-not-possible x x x x x x 8651 client-error-timeout 8652 client-error-not-found x x x x x x 8653 client-error-gone x x x x x x 8654 client-error-request-entity-too-large x x x x x x 8655 client-error-request-value-too-long x x x x x x 8656 client-error-document-format-not- 8657 supported 8658 client-error-attributes-or-values-not- x x x x x x 8659 supported 8660 client-error-uri-scheme-not-supported 8661 client-error-charset-not-supported x x x x x x 8662 client-error-conflicting-attributes x x x x x x 8663 client-error-compression-not-supported 8664 client-error-compression-error 8665 client-error-document-format-error 8666 client-error-document-access-error 8667 server-error-internal-error x x x x x x 8668 server-error-operation-not-supported x x x x x x 8669 server-error-service-unavailable x x x x x x 8670 server-error-version-not-supported x x x x x x 8671 server-error-device-error 8672 server-error-temporary-error x x x x x x 8673 server-error-not-accepting-jobs 8674 server-error-busy x x x x x x 8675 server-error-job-canceled 8676 server-error-multiple-document-jobs- 8677 not-supported 8679 Expires December 11, 1999 8681 14. APPENDIX C: "media" keyword values 8683 Standard keyword values are taken from several sources. 8685 Standard values are defined (taken from DPA[ISO10175] and the Printer 8686 MIB[RFC1759]): 8688 'default': The default medium for the output device 8689 'iso-a4-white': Specifies the ISO A4 white medium 8690 'iso-a4-colored': Specifies the ISO A4 colored medium 8691 'iso-a4-transparent' Specifies the ISO A4 transparent medium 8692 'iso-a3-white': Specifies the ISO A3 white medium 8693 'iso-a3-colored': Specifies the ISO A3 colored medium 8694 'iso-a5-white': Specifies the ISO A5 white medium 8695 'iso-a5-colored': Specifies the ISO A5 colored medium 8696 'iso-b4-white': Specifies the ISO B4 white medium 8697 'iso-b4-colored': Specifies the ISO B4 colored medium 8698 'iso-b5-white': Specifies the ISO B5 white medium 8699 'iso-b5-colored': Specifies the ISO B5 colored medium 8700 'jis-b4-white': Specifies the JIS B4 white medium 8701 'jis-b4-colored': Specifies the JIS B4 colored medium 8702 'jis-b5-white': Specifies the JIS B5 white medium 8703 'jis-b5-colored': Specifies the JIS B5 colored medium 8705 The following standard values are defined for North American media: 8707 'na-letter-white': Specifies the North American letter white medium 8708 'na-letter-colored': Specifies the North American letter colored 8709 medium 8710 'na-letter-transparent': Specifies the North American letter 8711 transparent medium 8712 'na-legal-white': Specifies the North American legal white medium 8713 'na-legal-colored': Specifies the North American legal colored medium 8715 The following standard values are defined for envelopes: 8717 'iso-b4-envelope': Specifies the ISO B4 envelope medium 8718 'iso-b5-envelope': Specifies the ISO B5 envelope medium 8719 'iso-c3-envelope': Specifies the ISO C3 envelope medium 8720 'iso-c4-envelope': Specifies the ISO C4 envelope medium 8721 'iso-c5-envelope': Specifies the ISO C5 envelope medium 8722 'iso-c6-envelope': Specifies the ISO C6 envelope medium 8723 'iso-designated-long-envelope': Specifies the ISO Designated Long 8724 envelope medium 8725 'na-10x13-envelope': Specifies the North American 10x13 envelope 8726 medium 8727 'na-9x12-envelope': Specifies the North American 9x12 envelope medium 8728 'monarch-envelope': Specifies the Monarch envelope 8729 'na-number-10-envelope': Specifies the North American number 10 8730 business envelope medium 8732 Expires December 11, 1999 8734 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 8735 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 8736 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 8737 'na-number-9-envelope': Specifies the North American number 9 8738 business envelope 8739 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 8740 'na-10x15-envelope': Specifies the North American 10x15 inch envelope 8742 The following standard values are defined for the less commonly used 8743 media (white-only): 8745 'executive-white': Specifies the white executive medium 8746 'folio-white': Specifies the folio white medium 8747 'invoice-white': Specifies the white invoice medium 8748 'ledger-white': Specifies the white ledger medium 8749 'quarto-white': Specified the white quarto medium 8750 'iso-a0-white': Specifies the ISO A0 white medium 8751 'iso-a1-white': Specifies the ISO A1 white medium 8752 'iso-a2-white': Specifies the ISO A2 white medium 8753 'iso-a6-white': Specifies the ISO A6 white medium 8754 'iso-a7-white': Specifies the ISO A7 white medium 8755 'iso-a8-white': Specifies the ISO A8 white medium 8756 'iso-a9-white': Specifies the ISO A9 white medium 8757 'iso-10-white': Specifies the ISO A10 white medium 8758 'iso-b0-white': Specifies the ISO B0 white medium 8759 'iso-b1-white': Specifies the ISO B1 white medium 8760 'iso-b2-white': Specifies the ISO B2 white medium 8761 'iso-b3-white': Specifies the ISO B3 white medium 8762 'iso-b6-white': Specifies the ISO B6 white medium 8763 'iso-b7-white': Specifies the ISO B7 white medium 8764 'iso-b8-white': Specifies the ISO B8 white medium 8765 'iso-b9-white': Specifies the ISO B9 white medium 8766 'iso-b10-white': Specifies the ISO B10 white medium 8767 'jis-b0-white': Specifies the JIS B0 white medium 8768 'jis-b1-white': Specifies the JIS B1 white medium 8769 'jis-b2-white': Specifies the JIS B2 white medium 8770 'jis-b3-white': Specifies the JIS B3 white medium 8771 'jis-b6-white': Specifies the JIS B6 white medium 8772 'jis-b7-white': Specifies the JIS B7 white medium 8773 'jis-b8-white': Specifies the JIS B8 white medium 8774 'jis-b9-white': Specifies the JIS B9 white medium 8775 'jis-b10-white': Specifies the JIS B10 white medium 8777 The following standard values are defined for engineering media (white 8778 only): 8780 'a-white': Specifies the engineering A size medium 8781 'b-white': Specifies the engineering B size medium 8782 'c-white': Specifies the engineering C size medium 8783 'd-white': Specifies the engineering D size medium 8784 'e-white': Specifies the engineering E size medium 8786 Expires December 11, 1999 8788 The following standard values are defined for input-trays (from ISO DPA 8789 and the Printer MIB): 8791 'top': The top input tray in the printer. 8792 'middle': The middle input tray in the printer. 8793 'bottom': The bottom input tray in the printer. 8794 'envelope': The envelope input tray in the printer. 8795 'manual': The manual feed input tray in the printer. 8796 'large-capacity': The large capacity input tray in the printer. 8797 'main': The main input tray 8798 'side': The side input tray 8800 The following standard values are defined for media sizes (from ISO 8801 DPA): 8803 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined in 8804 ISO 216 8805 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 8806 ISO 216 8807 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 8808 ISO 216 8809 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 8810 ISO 216 8811 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 8812 ISO 216 8813 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 8814 ISO 216 8815 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 8816 ISO 216 8817 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 8818 ISO 216 8819 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in ISO 8820 216 8821 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in ISO 8822 216 8823 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 8824 ISO 216 8825 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined in 8826 ISO 216 8827 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined in 8828 ISO 216 8829 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 8830 ISO 216 8831 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 8832 ISO 216 8833 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 8834 ISO 216 8835 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 8836 ISO 216 8837 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 8838 ISO 216 8839 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 8840 ISO 216 8842 Expires December 11, 1999 8844 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in ISO 8845 216 8846 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in ISO 8847 216 8848 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 8849 ISO 216 8850 'na-letter': Specifies the North American letter size: 8.5 inches by 8851 11 inches 8852 'na-legal': Specifies the North American legal size: 8.5 inches by 14 8853 inches 8854 'executive': Specifies the executive size (7.25 X 10.5 in) 8855 'folio': Specifies the folio size (8.5 X 13 in) 8856 'invoice': Specifies the invoice size (5.5 X 8.5 in) 8857 'ledger': Specifies the ledger size (11 X 17 in) 8858 'quarto': Specifies the quarto size (8.5 X 10.83 in) 8859 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 8860 ISO 269 8861 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 8862 ISO 269 8863 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 8864 ISO 269 8865 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 8866 ISO 269 8867 'iso-designated-long': Specifies the ISO Designated Long size: 110 mm 8868 by 220 mm as defined in ISO 269 8869 'na-10x13-envelope': Specifies the North American 10x13 size: 10 8870 inches by 13 inches 8871 'na-9x12-envelope': Specifies the North American 9x12 size: 9 inches 8872 by 12 inches 8873 'na-number-10-envelope': Specifies the North American number 10 8874 business envelope size: 4.125 inches by 9.5 inches 8875 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 8876 size 8877 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 8878 size 8879 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 8880 size 8881 'na-number-9-envelope': Specifies the North American number 9 8882 business envelope size 8883 'na-6x9-envelope': Specifies the North American 6x9 envelope size 8884 'na-10x15-envelope': Specifies the North American 10x15 envelope size 8885 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 8886 in) 8887 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 8888 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 8889 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 8890 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 8891 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 8892 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 8893 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 8894 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 8895 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 8896 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 8897 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 8899 Expires December 11, 1999 8901 The following standard values are defined for engineering media sizes: 8903 'a': Specifies the engineering A size: 8.5 inches x 11 inches 8904 'b': Specifies the engineering B size: 11 inches x 17 inches 8905 'c': Specifies the engineering C size: 17 inches x 22 inches 8906 'd': Specifies the engineering D size: 22 inches x 34 inches 8907 'e': Specifies the engineering E size: 34 inches x 44 inches 8909 15. APPENDIX D: Processing IPP Attributes 8911 When submitting a print job to a Printer object, the IPP model allows a 8912 client to supply operation and Job Template attributes along with the 8913 document data. These Job Template attributes in the create request 8914 affect the rendering, production and finishing of the documents in the 8915 job. Similar types of instructions may also be contained in the 8916 document to be printed, that is, embedded within the print data itself. 8917 In addition, the Printer has a set of attributes that describe what 8918 rendering and finishing options which are supported by that Printer. 8919 This model, which allows for flexibility and power, also introduces the 8920 potential that at job submission time, these client-supplied attributes 8921 may conflict with either: 8923 - what the implementation is capable of realizing (i.e., what the 8924 Printer supports), as well as 8925 - the instructions embedded within the print data itself. 8927 The following sections describe how these two types of conflicts are 8928 handled in the IPP model. 8930 15.1 Fidelity 8932 If there is a conflict between what the client requests and what a 8933 Printer object supports, the client may request one of two possible 8934 conflict handling mechanisms: 8936 1) either reject the job since the job can not be processed exactly 8937 as specified, or 8938 2) allow the Printer to make any changes necessary to proceed with 8939 processing the Job the best it can. 8941 In the first case the client is indicating to the Printer object: "Print 8942 the job exactly as specified with no exceptions, and if that can't be 8943 done, don't even bother printing the job at all." In the second case, 8944 the client is indicating to the Printer object: "It is more important to 8945 make sure the job is printed rather than be processed exactly as 8946 specified; just make sure the job is printed even if client supplied 8947 attributes need to be changed or ignored." 8949 The IPP model accounts for this situation by introducing an "ipp- 8950 attribute-fidelity" attribute. 8952 Expires December 11, 1999 8953 In a create request, "ipp-attribute-fidelity" is a boolean operation 8954 attribute that is OPTIONALLY supplied by the client. The value 'true' 8955 indicates that total fidelity to client supplied Job Template attributes 8956 and values is required. The client is requesting that the Job be 8957 printed exactly as specified, and if that is not possible then the job 8958 MUST be rejected rather than processed incorrectly. The value 'false' 8959 indicates that a reasonable attempt to print the Job is acceptable. If 8960 a Printer does not support some of the client supplied Job Template 8961 attributes or values, the Printer MUST ignore them or substitute any 8962 supported value for unsupported values, respectively. The Printer may 8963 choose to substitute the default value associated with that attribute, 8964 or use some other supported value that is similar to the unsupported 8965 requested value. For example, if a client supplies a "media" value of 8966 'na-letter', the Printer may choose to substitute 'iso-a4' rather than a 8967 default value of 'envelope'. If the client does not supply the "ipp- 8968 attribute-fidelity" attribute, the Printer assumes a value of 'false'. 8970 Each Printer implementation MUST support both types of "fidelity" 8971 printing (that is whether the client supplies a value of 'true' or 8972 'false'): 8974 - If the client supplies 'false' or does not supply the attribute, 8975 the Printer object MUST always accept the request by ignoring 8976 unsupported Job Template attributes and by substituting unsupported 8977 values of supported Job Template attributes with supported values. 8978 - If the client supplies 'true', the Printer object MUST reject the 8979 request if the client supplies unsupported Job Template attributes. 8981 Since a client can always query a Printer to find out exactly what is 8982 and is not supported, "ipp-attribute-fidelity" set to 'false' is useful 8983 when: 8985 1) The End-User uses a command line interface to request attributes 8986 that might not be supported. 8987 2) In a GUI context, if the End User expects the job might be moved 8988 to another printer and prefers a sub-optimal result to nothing at 8989 all. 8990 3) The End User just wants something reasonable in lieu of nothing at 8991 all. 8993 15.2 Page Description Language (PDL) Override 8995 If there is a conflict between the value of an IPP Job Template 8996 attribute and a corresponding instruction in the document data, the 8997 value of the IPP attribute SHOULD take precedence over the document 8998 instruction. Consider the case where a previously formatted file of 8999 document data is sent to an IPP Printer. In this case, if the client 9000 supplies any attributes at job submission time, the client desires that 9001 those attributes override the embedded instructions. Consider the case 9002 were a previously formatted document has embedded in it commands to load 9003 'iso-a4' media. However, the document is passed to an end user that 9004 only has access to a printer with 'na-letter' media loaded. That end 9005 user most likely wants to submit that document to an IPP Printer with 9007 Expires December 11, 1999 9008 the "media" Job Template attribute set to 'na-letter'. The job 9009 submission attribute should take precedence over the embedded PDL 9010 instruction. However, until companies that supply document data 9011 interpreters allow a way for external IPP attributes to take precedence 9012 over embedded job production instructions, a Printer might not be able 9013 to support the semantics that IPP attributes override the embedded 9014 instructions. 9016 The IPP model accounts for this situation by introducing a "pdl- 9017 override-supported" attribute that describes the Printer objects 9018 capabilities to override instructions embedded in the PDL data stream. 9019 The value of the "pdl-override-supported" attribute is configured by 9020 means outside the scope of this IPP/1.1 document. 9022 This REQUIRED Printer attribute takes on the following values: 9024 - 'attempted': This value indicates that the Printer object attempts 9025 to make the IPP attribute values take precedence over embedded 9026 instructions in the document data, however there is no guarantee. 9027 - 'not-attempted': This value indicates that the Printer object makes 9028 no attempt to make the IPP attribute values take precedence over 9029 embedded instructions in the document data. 9031 At job processing time, an implementation that supports the value of 9032 'attempted' might do one of several different actions: 9034 1) Generate an output device specific command sequence to realize the 9035 feature represented by the IPP attribute value. 9036 2) Parse the document data itself and replace the conflicting 9037 embedded instruction with a new embedded instruction that matches 9038 the intent of the IPP attribute value. 9039 3) Indicate to the Printer that external supplied attributes take 9040 precedence over embedded instructions and then pass the external 9041 IPP attribute values to the document data interpreter. 9042 4) Anything else that allows for the semantics that IPP attributes 9043 override embedded document data instructions. 9045 Since 'attempted' does not offer any type of guarantee, even though a 9046 given Printer object might not do a very "good" job of attempting to 9047 ensure that IPP attributes take a higher precedence over instructions 9048 embedded in the document data, it would still be a conforming 9049 implementation. 9051 At job processing time, an implementation that supports the value of 9052 'not-attempted' might do one of the following actions: 9054 1) Simply pre-pend the document data with the PDL instruction that 9055 corresponds to the client-supplied PDL attribute, such that if the 9056 document data also has the same PDL instruction, it will override 9057 what the Printer object pre-pended. In other words, this 9058 implementation is using the same implementation semantics for the 9059 client-supplied IPP attributes as for the Printer object defaults. 9061 Expires December 11, 1999 9063 2) Parse the document data and replace the conflicting embedded 9064 instruction with a new embedded instruction that approximates, but 9065 does not match, the semantic intent of the IPP attribute value. 9067 Note: The "ipp-attribute-fidelity" attribute applies to the Printer's 9068 ability to either accept or reject other unsupported Job Template 9069 attributes. In other words, if "ipp-attribute-fidelity" is set to 9070 'true', a Job is accepted if and only if the client supplied Job 9071 Template attributes and values are supported by the Printer. Whether 9072 these attributes actually affect the processing of the Job when the 9073 document data contains embedded instructions depends on the ability of 9074 the Printer to override the instructions embedded in the document data 9075 with the semantics of the IPP attributes. If the document data 9076 attributes can be overridden ("pdl-override-supported" set to 9077 'attempted'), the Printer makes an attempt to use the IPP attributes 9078 when processing the Job. If the document data attributes can not be 9079 overridden ("pdl-override-supported" set to 'not-attempted'), the 9080 Printer makes no attempt to override the embedded document data 9081 instructions with the IPP attributes when processing the Job, and hence, 9082 the IPP attributes may fail to affect the Job processing and output when 9083 the corresponding instruction is embedded in the document data. 9085 15.3 Using Job Template Attributes During Document Processing. 9087 The Printer object uses some of the Job object's Job Template attributes 9088 during the processing of the document data associated with that job. 9089 These include, but are not limited to, "orientation-requested", "number- 9090 up", "sides", "media", and "copies". The processing of each document in 9091 a Job Object MUST follow the steps below. These steps are intended only 9092 to identify when and how attributes are to be used in processing 9093 document data and any alternative steps that accomplishes the same 9094 effect can be used to implement this specification document. 9096 1. Using the client supplied "document-format" attribute or some form 9097 of document format detection algorithm (if the value of "document- 9098 format" is not specific enough), determine whether or not the 9099 document data has already been formatted for printing. If the 9100 document data has been formatted, then go to step 2. Otherwise, the 9101 document data MUST be formatted. The formatting detection algorithm 9102 is implementation defined and is not specified by this document. 9103 The formatting of the document data uses the "orientation- 9104 requested" attribute to determine how the formatted print data 9105 should be placed on a print-stream page, see section 4.2.10 for the 9106 details. 9108 2. The document data is in the form of a print-stream in a known 9109 media type. The "page-ranges" attribute is used to select, as 9110 specified in section 4.2.7, a sub-sequence of the pages in the 9111 print-stream that are to be processed and images. 9113 3. The input to this step is a sequence of print-stream pages. This 9114 step is controlled by the "number-up" attribute. If the value of 9115 "number-up" is N, then during the processing of the print-stream 9117 Expires December 11, 1999 9118 pages, each N print-stream pages are positioned, as specified in 9119 section 4.2.9, to create a single impression. If a given document 9120 does not have N more print-stream pages, then the completion of the 9121 impression is controlled by the "multiple-document-handling" 9122 attribute as described in section 4.2.4; when the value of this 9123 attribute is 'single-document' or 'single-document-new-sheet', the 9124 print-stream pages of document data from subsequent documents is 9125 used to complete the impression. 9127 The size(scaling), position(translation) and rotation of the print- 9128 stream pages on the impression is implementation defined. Note 9129 that during this process the print-stream pages may be rendered to 9130 a form suitable for placing on the impression; this rendering is 9131 controlled by the values of the "printer-resolution" and "print- 9132 quality" attributes as described in sections 4.2.12 and 4.2.13. In 9133 the case N=1, the impression is nearly the same as the print-stream 9134 page; the differences would only be in the size, position and 9135 rotation of the print-stream page and/or any decoration, such as a 9136 frame to the page, that is added by the implementation. 9138 4. The collection of impressions is placed, in sequence, onto sides 9139 of the media sheets. This placement is controlled by the "sides" 9140 attribute and the orientation of the print-stream page, as 9141 described in section 4.2.8. The orientation of the print-stream 9142 pages affects the orientation of the impression; for example, if 9143 "number-up" equals 2, then, typically, two portrait print-stream 9144 pages become one landscape impression. Note that the placement of 9145 impressions onto media sheets is also controlled by the "multiple- 9146 document-handling" attribute as described in section 4.2.4. 9148 5. The "copies" and "multiple-document-handling" attributes are used 9149 to determine how many copies of each media instance are created and 9150 in what order. See sections 4.2.5 and 4.2.4 for the details. 9152 6. When the correct number of copies are created, the media instances 9153 are finished according to the values of the "finishings" attribute 9154 as described in 4.2.6. Note that sometimes finishing operations may 9155 require manual intervention to perform the finishing operations on 9156 the copies, especially uncollated copies. This document allows any 9157 or all of the processing steps to be performed automatically or 9158 manually at the discretion of the Printer object. 9160 16. APPENDIX E: Generic Directory Schema 9162 This section defines a generic schema for an entry in a directory 9163 service. A directory service is a means by which service users can 9164 locate service providers. In IPP environments, this means that IPP 9165 Printers can be registered (either automatically or with the help of an 9166 administrator) as entries of type printer in the directory using an 9167 implementation specific mechanism such as entry attributes, entry type 9168 fields, specific branches, etc. IPP clients can search or browse for 9169 entries of type printer. Clients use the directory service to find 9171 Expires December 11, 1999 9172 entries based on naming, organizational contexts, or filtered searches 9173 on attribute values of entries. For example, a client can find all 9174 printers in the "Local Department" context. Authentication and 9175 authorization are also often part of a directory service so that an 9176 administrator can place limits on end users so that they are only 9177 allowed to find entries to which they have certain access rights. IPP 9178 itself does not require any specific directory service protocol or 9179 provider. 9181 Note: Some directory implementations allow for the notion of "aliasing". 9182 That is, one directory entry object can appear as multiple directory 9183 entry object with different names for each object. In each case, each 9184 alias refers to the same directory entry object which refers to a single 9185 IPP Printer object. 9187 The generic schema is a subset of IPP Printer Job Template and Printer 9188 Description attributes (sections 4.2 and 4.4). These attributes are 9189 identified as either RECOMMENDED or OPTIONAL for the directory entry 9190 itself. This conformance labeling is NOT the same conformance labeling 9191 applied to the attributes of IPP Printers objects. The conformance 9192 labeling in this Appendix is intended to apply to directory templates 9193 and to IPP Printer implementations that subscribe by adding one or more 9194 entries to a directory. RECOMMENDED attributes SHOULD be associated 9195 with each directory entry. OPTIONAL attributes MAY be associated with 9196 the directory entry (if known or supported). In addition, all directory 9197 entry attributes SHOULD reflect the current attribute values for the 9198 corresponding Printer object. 9200 The names of attributes in directory schema and entries SHOULD be the 9201 same as the IPP Printer attribute names as shown. 9203 In order to bridge between the directory service and the IPP Printer 9204 object, one of the RECOMMENDED directory entry attributes is the Printer 9205 object's "printer-uri-supported" attribute. The IPP client queries the 9206 "printer-uri-supported" attribute in the directory entry and then 9207 addresses the IPP Printer object using one of its URIs. The "uri- 9208 security-supported" attribute identifies the protocol (if any) used to 9209 secure a channel. 9211 The following attributes define the generic schema for directory entries 9212 of type PRINTER: 9214 printer-uri-supported RECOMMENDED Section 4.4.1 9215 uri-authentication-supported RECOMMENDED Section 4.4.2 9216 uri-security-supported RECOMMENDED Section 4.4.3 9217 printer-name RECOMMENDED Section 4.4.4 9218 printer-location RECOMMENDED Section 4.4.5 9219 printer-info OPTIONAL Section 4.4.6 9220 printer-more-info OPTIONAL Section 4.4.7 9221 printer-make-and-model RECOMMENDED Section 4.4.9 9222 ipp-versions-supported RECOMMENDED Section 4.4.14 9223 multiple-document-jobs-supported OPTIONAL Section 4.4.16 9224 charset-supported OPTIONAL Section 4.4.18 9225 generated-natural-language- 9227 Expires December 11, 1999 9228 supported OPTIONAL Section 4.4.20 9229 document-format-supported RECOMMENDED Section 4.4.22 9230 color-supported RECOMMENDED Section 4.4.26 9231 compression-supported RECOMMENDED Section 4.4.32 9232 pages-per-minute OPTIONAL Section 4.4.36 9233 pages-per-minute-color OPTIONAL Section 4.4.37 9235 finishings-supported OPTIONAL Section 4.2.6 9236 number-up-supported OPTIONAL Section 4.2.7 9237 sides-supported RECOMMENDED Section 4.2.8 9238 media-supported RECOMMENDED Section 4.2.11 9239 printer-resolution-supported OPTIONAL Section 4.2.12 9240 print-quality-supported OPTIONAL Section 4.2.13 9242 Expires December 11, 1999 9244 17. APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and 9245 Semantics" Documents 9247 This Appendix is divided into two lists that summarize the differences 9248 between IPP/1.1 (this document) and IPP/1.0 [RFC2566]. The section 9249 numbers refer to the numbers in this document which in some cases have 9250 changed from RFC 2566. When a change affects multiple sections, the 9251 item is listed once in the order of the first section affected and the 9252 remaining affected section numbers are indicated. 9254 The first list contains extensions and clarifications and the second 9255 list contains changes in semantics or conformance. However, client and 9256 IPP object implementations of IPP/1.0 MAY implement any of the 9257 extensions and clarifications in this document. 9259 The following extensions and clarifications have been incorporated into 9260 this document: 9262 1. Section 2.1 - clarified that the term "client" can be either 9263 contained in software controlled by an end user or a part of a 9264 print server that controls devices. 9265 2. Section 2 - clarified that the term "IPP object" and "Printer 9266 object" can either be embedded in a device object or part of a 9267 print server that accepts IPP requests. 9268 3. Section 2.4 - added the description of the new "uri-authentication- 9269 supported" Printer Description attribute. 9270 4. Section 3.1.3, 3.1.6, 3.2.5.2, and 3.2.6.2 - clarified the error 9271 handling for operation attributes that have their own status code. 9272 5. Section 3.1.6 - reorganized this section into sub-sections to 9273 separately describe "status-code", "status-message", "detailed- 9274 status-message", and "document-access-error" attributes. 9275 6. Section 3.1.6.1 - clarified the error status codes and their 9276 relationship to operation attributes. 9277 7. Section 3.1.6.3 - Added the OPTIONAL "detailed-status-message 9278 (text(MAX))" operation attribute to provide additional more 9279 detailed information about a response. 9280 8. Section 3.1.6.4 and 3.2.2 - Added the OPTIONAL "document-access- 9281 error (text(MAX))" operation attribute for use with Print-URI and 9282 Send-URI responses. 9283 9. Sections 3.1.7 - Added this new section to clarify returning 9284 Unsupported Attributes for all operations, including only returning 9285 attributes that were in the request. Moved the text from section 9286 3.2.1.2 Unsupported Attributes to this section. 9287 10. Sections 3.1.7 and 4.1 - clarified the encoding of the "out- 9288 of-band" 'unsupported' and 'unknown' values. 9289 11. Section 3.1.8 - clarified that only the version number 9290 parameter will be carried forward into future major or minor 9291 versions of the protocol. 9292 12. Section 3.1.8 - relaxed the requirements to increment the 9293 major version number in future versions of the Model and Semantics 9294 document. 9296 Expires December 11, 1999 9298 13. Section 3.1.9, and 3.2.5 - added the 'processing' state to the 9299 list of job states that a job can be in after a Create-Job 9300 operation. 9301 14. Section 3.1.9 - clarified that a non-spooling Printer MAY 9302 accept zero or more subsequent jobs while processing a job and flow 9303 control them down. Subsequent create requests are rejected with 9304 the 'server-error-busy' error status. 9305 15. Section 3.2.1.1 - clarified the validation of the 9306 "compression" operation attribute and its relationship to the 9307 validation of the "document-format" attribute and returning 9308 Unsupported Attributes. 9309 16. Sections 3.2.1.1, 4.3.8, 13.1.4.16, and 13.1.4.17 - added the 9310 'client-error-compression-not-supported', 'client-error- 9311 compression-error' status codes and the 'unsupported-compression' 9312 and 'compression-error' job-state-reasons. 9313 17. Sections 3.2.1.1 and 4.3.8 - added 'unsupported-document- 9314 format' and 'document-format-error' job-state-reasons. 9315 18. Sections 3.2.2, 4.3.8 and 13.1.4.19 - added 'client-error- 9316 document-access-error' status code and 'document-access-error' job 9317 state reason. 9318 19. Section 3.2.5.2 and 3.2.6.2 - clarified that the Unsupported 9319 Attributes group MUST NOT include attributes not requested in the 9320 Get-Printer-Attributes request. 9321 20. Section 3.2.6 - clarified that "limit" takes precedence over 9322 "which-jobs" and "my-jobs'. 9323 21. Section 3.2.6.2 - clarified that Get-Jobs returns 'successful- 9324 ok' when no jobs to return. 9325 22. Sections 3.2.7, 3.2.8, and 3.2.9 - added the OPTIONAL Pause- 9326 Printer, Resume-Printer, and Purge-Jobs operations 9327 23. Section 3.3.1 - clarified that the authorization required for 9328 a Send-Document request MUST be the same user as the Create-Job or 9329 an operator. 9330 24. Sections 3.3.5, 3.3.6, and 3.3.7 - added the OPTIONAL Hold- 9331 Job, Release-Job, and Restart-Job operations. 9332 25. Section 4.1 - clarified that the encoding of the out-of-band 9333 values are specified in the Encoding and Transport" document. 9334 26. Section 4.1.9.1 - clarified that 'application/octet-stream' 9335 auto-sensing can happen at create request time and/or job/document 9336 processing time. 9337 27. Section 4.1.14 - clarified that the localization of dateTime 9338 by the client includes the time zone. 9339 28. Section 4.2 - clarified that xxx-supported have multiple 9340 keywords and/or names by adding parentheses to the table to give: 9341 (1setOf (type3 keyword | name)) 9342 29. Section 4.2.2 - added the 'indefinite' keyword value to the 9343 "job-hold-until" attribute for use with the create operations and 9344 Hold-Job and Restart-Job operations. 9345 30. Section 4.2.6 - added more enum values to the "finishings" Job 9346 Template attribute. 9347 31. Section 4.3.7 - added that a forwarding server that cannot get 9348 any job state MAY return the job's state as 'completed', provided 9349 that it also return the new 'queued-in-device' job state reason. 9351 Expires December 11, 1999 9353 32. Section 4.3.7.2 - added the Partitioning of Job States section 9354 to clarify the concepts of Job Retention, Job History, and Job 9355 Removal. 9356 33. Section 4.3.8 - added 'job-data-insufficient' job state reason 9357 to indicate whether sufficient data has arrived for the document to 9358 start to be processed. 9359 34. Section 4.3.8 - added 'document-access-error' job state reason 9360 to indicate an access error of any kind. 9361 35. Section 4.3.8 - added 'job-queued-for-marker' job state reason 9362 to indicate whether the job has completed some processing and is 9363 waiting for the marker. 9364 36. Section 4.3.8 - added 'unsupported-compression' and 9365 'compression-error' job state reasons to indicate compression not 9366 supported or compression processing error after the create has been 9367 accepted. 9368 37. Section 4.3.8 - added 'unsupported-document-format' and 9369 'document-format-error' job state reasons to indicate document not 9370 supported or document format processing error after the create has 9371 been accepted. 9372 38. Section 4.3.8 - added 'queued-in-device' job state reason to 9373 indicate that a job as been forwarded to a print system or device 9374 that does not provide any job status. 9375 39. Section 4.3.10 - added "job-detailed-status-messages (1setOf 9376 text(MAX)) for returning detailed error messages. 9377 40. Section 4.3.11 - added the "job-document-access-errors (1setOf 9378 text(MAX)) 9379 41. Section 4.3.14.2 - clarified that the time recorded is the 9380 first time processing since the create operation or the Restart-Job 9381 operation. 9382 42. Section 4.3.14.2 and 4.3.14.3 - clarified that the out-of-band 9383 value 'no-value' is returned if the job has not started processing 9384 or has not completed, respectively. 9385 43. Section 4.3.14 - Added the OPTIONAL "date-time-at-creation", 9386 "date-time-at-processing", and "date-time-at-completed" Event Time 9387 Job Description attributes 9388 44. Section 4.4.3 - added the 'tls' value to "uri-security- 9389 supported" attribute. 9390 45. Section 4.4.3 - clarified "uri-security-supported" is 9391 orthogonal to Client Authentication so that 'none' does not exclude 9392 Client Authentication. 9393 46. Section 4.4.11 - simplified the "printer-state" descriptions 9394 while generalizing to allow high end devices that interpret one or 9395 more jobs while marking another. Indicated that 'spool-area-full' 9396 and 'stopped-partly' "printer-state-reasons" may be used to provide 9397 further state information. 9398 47. Section 4.4.12 - added the 'moving-to-paused' keyword value to 9399 the "printer-state-reasons" attribute for use with the Pause-Job 9400 operation. 9401 48. Section 4.4.12 - replaced the duplicate 'marker-supply-low' 9402 keyword with the missing 'toner-empty' keyword for the "printer- 9403 state-reasons" attribute. (This correction was also made before 9404 RFC 2566 was published). 9406 Expires December 11, 1999 9408 49. Section 4.4.12 - clarified 'spool-area-full' "printer-state- 9409 reasons" to include non-spooling printers to indicate when it can 9410 and cannot accept another job. 9411 50. Section 4.4.15 - added the enum values to the "operations- 9412 supported" attribute for the new operations. Clarified that the 9413 values of this attribute are encoded as any enum, namely 32-bit 9414 values. 9415 51. Section 4.4.30 - clarified that the dateTime value of 9416 "printer-current-time" is on a "best efforts basis". If a proper 9417 date-time cannot be obtained, the implementation returns the 'no- 9418 value' out-of-band value. Also clarified that the time zone NEED 9419 NOT be the time zone that the people near the device use and that 9420 the client SHOULD display the dateTime attributes in the user's 9421 local time. 9422 52. Sections 4.4.36 and 4.4.37 - added the OPTIONAL "pages-per- 9423 minute" and "pages-per-minute-color" Printer Description 9424 attributes. 9425 53. Section 5.1 - clarified that the client conformance 9426 requirements apply to clients controlled by an end user and clients 9427 in servers. 9428 54. Section 5.1 - clarified that any response MAY contain 9429 additional attribute groups, attributes, attribute syntaxes, or 9430 attribute values. 9431 55. Section 5.1 - clarified that a client SHOULD do its best to 9432 prevent a channel from being closed by a lower layer when the 9433 channel is flow controlled off by the IPP Printer. 9434 56. Section 5.2 - clarified that the IPP object requirements apply 9435 to objects embedded in devices or that are parts of servers. 9436 57. Section 5.2.2 - clarified that IPP objects MAY return 9437 operation responses that contain attribute groups, attribute names, 9438 attribute syntaxes, attribute values, and status codes that are 9439 extensions to this standard. 9440 58. Section 8.3 - clarified the use of URIs for each Client 9441 Authentication mechanism. 9442 59. Section 8.5 - added the security discussion around the new 9443 operator/administrator operations. 9444 60. Section 13.1.4.16 - added client-error-compression-not- 9445 supported (0x040F) 9446 61. Section 13.1.4.17 - added client-error-compression-error 9447 (0x0410) 9448 62. Section 13.1.4.18 - added client-error-document-format-error 9449 (0x0411) 9450 63. Section 13.1.4.19 - added client-error-document-access-error 9451 (0x0412) 9452 64. Section 13.1.5.10 - added server-error-multiple-document-jobs- 9453 not-supported (0x0509) 9454 65. Section 14 - added 'a-white', 'b-white', 'c-white', 'd-white', 9455 and 'e-white' and clarified that the existing 'a', 'b', 'c', 'd', 9456 and 'e' values are size values. 9457 66. Section 16 - added the OPTIONAL "pages-per-minute" and "pages- 9458 per-minute-color" Printer attributes to the Directory schema. 9459 67. Section 16 - added OPTIONAL "multiple-document-jobs-supported" 9460 to the Directory schema. 9462 Expires December 11, 1999 9464 68. Section 16 - added RECOMMENDED "uri-authentication-supported", 9465 "ipp-versions-supported", and "compression-supported" to the 9466 Directory schema. 9468 The following changes in semantics and/or conformance have been 9469 incorporated into this document: 9471 1. Section 3.1.8, 5.2.4, and 13.1.5.4 - Clients and IPP objects MUST 9472 support version 1.1 conformance requirements and SHOULD support 9473 version 1.0 conformance requirements. Also clarified that IPP 9474 Printers MUST accept '1.1' requests and SHOULD accept '1.x' 9475 requests. 9476 2. Section 3.2.1.1 and section 4.4.32 - changed the "compression" 9477 operation and the "compression-supported" Printer Description 9478 attribute from OPTIONAL to REQUIRED. 9479 3. Sections 3.2.1.2 and 4.3.8 - changed "job-state-reasons" from 9480 RECOMMENDED to REQUIRED, so that "job-state-reasons" MUST be 9481 returned in create operation responses. 9482 4. Sections 3.2.4, 3.3.1, 4.4.16, and 16 - changed Create-Job/Send- 9483 Document so that they MAY be implemented while only supporting 9484 one document jobs. Added the "multiple-document-jobs-supported" 9485 boolean Printer Description attribute to indicate whether 9486 Create-Job/Send-Document support multiple document jobs or not. 9487 Added to the Directory schema. 9488 5. Section 4.1.9 - deleted 'text/plain; charset=iso-10646-ucs-2', 9489 since binary is not legal with the 'text' type. 9490 6. Section 4.2.4 - indicated that the "multiple-document-handling" 9491 Job Template attribute MUST be supported with at least one value 9492 if the Printer supports multiple documents per job 9493 7. Section 4.3.7.2 - indicated that the 'job-restartable' job state 9494 reason SHOULD be supported if the Restart-Job operation is 9495 supported. 9496 8. Section 4.3.8 - changed "job-state-reasons" from RECOMMENDED to 9497 REQUIRED. 9498 9. Section 4.3.8 - clarified the conformance of the values of the 9499 "job-state-reasons" attribute by copying conformance 9500 requirements from other sections of the document so that it is 9501 clear from reading the definition of "job-state-reasons" which 9502 values MUST or SHOULD be supported. The 'none', 'unsupported- 9503 compression', and 'unsupported-document-format' values MUST be 9504 supported. The ''job-hold-until-specified' SHOULD be specified 9505 if the "job-hold-until" Job Template is supported. The 9506 following values SHOULD be supported: 'job-canceled-by-user', 9507 'aborted-by-system', and 'job-completed-successfully'. The 9508 'job-canceled-by-operator' SHOULD be supported if the 9509 implementation permits canceling by other than the job owner. 9510 The 'job-canceled-at-device' SHOULD be supported if the device 9511 supports canceling jobs at the console. The 'job-completed- 9512 with-warnings' SHOULD be supported, if the implementation 9513 detects warnings. The 'job-completed-with-errors' SHOULD be 9514 supported if the implementation detects errors. The 'job- 9515 restartable' SHOULD be supported if the Restart-Job operation is 9516 supported. 9518 Expires December 11, 1999 9520 10. Section 4.3.14 - changed the "time-at-creation", "time-at- 9521 processing", and "time-at-completed" Event Time Job Description 9522 attributes from OPTIONAL to REQUIRED. 9523 11. Section 4.3.14.4 - added the REQUIRED "job-printer-up-time 9524 (integer(1:MAX))" Job Description attribute as an alias for 9525 "printer-up-time" to reduce number of operations to get job 9526 times. 9527 12. Section 4.4.2 - added the REQUIRED "uri-authentication-supported 9528 (1setOf type2 keyword)" Printer Description attribute to 9529 describe the Client Authentication used by each Printer URI. 9530 13. Section 4.4.12 - changed "printer-state-reasons" Printer 9531 Description attribute from OPTIONAL to REQUIRED. 9532 14. Section 4.4.12 - changed 'paused' value of "printer-state- 9533 reasons" to MUST if Pause-Printer operation is supported. 9534 15. Section 4.4.14 - added the REQUIRED "ipp-versions-supported 9535 (1setOf keyword)" Printer Description attribute, since IPP/1.1 9536 Printers do not have to support version '1.0' conformance 9537 requirements. Section 4.4.16 - added the "multiple-document- 9538 jobs-supported (boolean)" Printer Description attribute so that 9539 a client can tell whether a Printer that supports Create- 9540 Job/Send-Document supports multiple document jobs or not. This 9541 attribute is REQUIRED if the Create-Job operation is supported. 9542 16. Section 4.4.24 - changed the "queued-job-count" Printer 9543 Description attribute from RECOMMENDED to REQUIRED. 9544 17. Section 4.4.32 - changed "compression-supported (1setOf type3 9545 keyword)" Printer Description attribute from OPTIONAL to 9546 REQUIRED. 9547 18. Section 5.1 - changed the client security requirements from 9548 RECOMMENDED non-standards track SSL3 to MUST support Client 9549 Authentication as defined in the IPP/1.1 Encoding and Transport 9550 document [IPP-PRO]. A client SHOULD support Operation Privacy 9551 and Server Authentication as defined in the IPP/1.1 Encoding and 9552 Transport document [IPP-PRO]. 9553 19. Section 5.2.7 - changed the IPP object security requirements from 9554 OPTIONAL non-standards track SSL3 to SHOULD contain support for 9555 Client Authentication as defined in the IPP/1.1 Encoding and 9556 Transport document [IPP-PRO]. A Printer implementation MAY 9557 allow an administrator to configure the Printer so that all, 9558 some, or none of the users are authenticated. An IPP Printer 9559 implementation SHOULD contain support for Operation Privacy and 9560 Server Authentication as defined in the IPP/1.1 Encoding and 9561 Transport document [IPP-PRO]. A Printer implementation MAY 9562 allow an administrator to configure the degree of support for 9563 Operation Privacy and Server Authentication. Security MUST NOT 9564 be compromised when the client supplies a lower version-number 9565 in a request. 9567 See also the "IPP/1.1 Encoding and Transport" [IPP-PRO] document for 9568 differences between IPP/1.0 [RFC2565] and IPP/1.1 [IPP-PRO]. 9570 Expires December 11, 1999 9571 18. Full Copyright Statement 9573 Copyright (C) The Internet Society (1999). All Rights Reserved. 9575 This document and translations of it may be copied and furnished to 9576 others, and derivative works that comment on or otherwise explain it or 9577 assist in its implementation may be prepared, copied, published and 9578 distributed, in whole or in part, without restriction of any kind, 9579 provided that the above copyright notice and this paragraph are included 9580 on all such copies and derivative works. However, this document itself 9581 may not be modified in any way, such as by removing the copyright notice 9582 or references to the Internet Society or other Internet organizations, 9583 except as needed for the purpose of developing Internet standards in 9584 which case the procedures for copyrights defined in the Internet 9585 Standards process must be followed, or as required to translate it into 9586 languages other than English. 9588 The limited permissions granted above are perpetual and will not be 9589 revoked by the Internet Society or its successors or assigns. 9591 This document and the information contained herein is provided on an "AS 9592 IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK 9593 FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT 9594 LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT 9595 INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR 9596 FITNESS FOR A PARTICULAR PURPOSE. 9598 Expires December 11, 1999