idnits 2.17.1 draft-ietf-ipp-model-10.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** Missing expiration date. The document expiration date should appear on the first and last page. ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about the list of current Internet-Drafts. ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories. == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 2 longer pages, the longest (page 170) being 60 lines Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** The abstract seems to contain references ([IPP-PRO], [IPP-RAT], [ISO10175], [IPP-REQ], [IPPLPD]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 6 instances of lines with non-RFC2606-compliant FQDNs in the document. == There are 1 instance of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 177 has weird spacing: '...(1setOf type2...' == Line 636 has weird spacing: '...any indicate...' == Line 873 has weird spacing: '... object which...' == Line 1425 has weird spacing: '...client to ide...' == Line 2942 has weird spacing: '...same as the...' == (11 more instances...) -- The exact meaning of the all-uppercase expression 'NOT REQUIRED' is not defined in RFC 2119. If it is intended as a requirements expression, it should be rewritten using one of the combinations defined in RFC 2119; otherwise it should not be all-uppercase. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHOULD not' in this paragraph: In the first case, the Printer SHOULD not tweak any existing related Job attributes ("time-at-creation", "time-at-processing", and "time-at-completed"). In the second case, the Printer object SHOULD reset those attributes to 0. If a client queries a time-related Job attribute and finds the value to be 0, the client MUST assume that the Job was submitted in some life other than the Printer's current life. == The expression 'MAY NOT', while looking like RFC 2119 requirements text, is not defined in RFC 2119, and should not be used. Consider using 'MUST NOT' instead (if that is what you mean). Found 'MAY NOT' in this paragraph: This term is not included in RFC 2119. The verb "NEED NOT" indicates an action that the subject of the sentence does not have to implement in order to claim conformance to the standard. The verb "NEED NOT" is used instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. == The 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: OPTIONAL Operation attributes are those that an IPP object MAY or MAY NOT support. An IPP object validates the values of the OPTIONAL attributes supplied by the client. The IPP object performs the same -- 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 30, 1998) is 9431 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'IPP-LPD' is mentioned on line 376, but not defined == Missing Reference: 'TLS' is mentioned on line 6037, but not defined -- Looks like a reference, but probably isn't: '46' on line 3090 -- Looks like a reference, but probably isn't: '52' on line 3142 -- Looks like a reference, but probably isn't: '56' on line 3142 == Unused Reference: 'PWG' is defined on line 6129, but no explicit reference was found in the text == Unused Reference: 'RFC2068' is defined on line 6176, but no explicit reference was found in the text == Unused Reference: 'RFC2069' is defined on line 6182, but no explicit reference was found in the text == Unused Reference: 'RFC2277' is defined on line 6210, but no explicit reference was found in the text -- Possible downref: Non-RFC (?) normative reference: ref. 'ASCII' -- Possible downref: Non-RFC (?) normative reference: ref. 'HTPP' == Outdated reference: A later version (-05) exists of draft-iesg-iana-considerations-04 -- Possible downref: Non-RFC (?) normative reference: ref. 'IANA-CS' -- Possible downref: Non-RFC (?) normative reference: ref. 'IANA-MT' == Outdated reference: A later version (-05) exists of draft-ietf-ipp-lpd-ipp-map-04 ** Downref: Normative reference to an Experimental draft: draft-ietf-ipp-lpd-ipp-map (ref. 'IPP LPD') -- No information found for draft-ietf-ipp-pro - is the name correct? -- Possible downref: Normative reference to a draft: ref. 'IPP-PRO' == Outdated reference: A later version (-04) exists of draft-ietf-ipp-rat-03 ** Downref: Normative reference to an Experimental draft: draft-ietf-ipp-rat (ref. 'IPP-RAT') == Outdated reference: A later version (-03) exists of draft-ietf-ipp-req-02 ** Downref: Normative reference to an Experimental draft: draft-ietf-ipp-req (ref. 'IPP-REQ') -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO10646-1' -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO8859-1' -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO10175' -- Possible downref: Non-RFC (?) normative reference: ref. 'LDPA' -- Possible downref: Non-RFC (?) normative reference: ref. 'PSIS' -- Possible downref: Non-RFC (?) normative reference: ref. 'PWG' ** Downref: Normative reference to an Informational RFC: RFC 1179 ** Downref: Normative reference to an Informational RFC: RFC 1630 ** Obsolete normative reference: RFC 1738 (Obsoleted by RFC 4248, RFC 4266) ** Obsolete normative reference: RFC 1759 (Obsoleted by RFC 3805) ** Obsolete normative reference: RFC 1766 (Obsoleted by RFC 3066, RFC 3282) ** Obsolete normative reference: RFC 1808 (Obsoleted by RFC 3986) ** Obsolete normative reference: RFC 1903 (Obsoleted by RFC 2579) ** Downref: Normative reference to an Informational RFC: RFC 1952 ** Obsolete normative reference: RFC 2044 (Obsoleted by RFC 2279) ** Obsolete normative reference: RFC 2068 (Obsoleted by RFC 2616) ** Obsolete normative reference: RFC 2069 (Obsoleted by RFC 2617) ** Obsolete normative reference: RFC 2048 (Obsoleted by RFC 4288, RFC 4289) ** Obsolete normative reference: RFC 2278 (Obsoleted by RFC 2978) ** Obsolete normative reference: RFC 2279 (Obsoleted by RFC 3629) ** Downref: Normative reference to an Informational RFC: RFC 2316 -- Possible downref: Non-RFC (?) normative reference: ref. 'SWP' Summary: 25 errors (**), 0 flaws (~~), 23 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-10.txt 3 R. deBry 4 IBM Corporation 5 T. Hastings 6 Xerox Corporation 7 R. Herriot 8 Sun Microsystems 9 S. Isaacson 10 Novell, Inc. 11 P. Powell 12 Astart Technologies 13 June 30, 1998 15 Internet Printing Protocol/1.0: Model and Semantics 16 Copyright (C) The Internet Society (date). All Rights Reserved. 18 Status of this Memo 20 This document is an Internet-Draft. Internet-Drafts are working 21 documents of the Internet Engineering Task Force (IETF), its areas, 22 and its working groups. Note that other groups may also distribute 23 working documents as Internet-Drafts. 25 Internet-Drafts are draft documents valid for a maximum of six months 26 and may be updated, replaced, or obsoleted by other documents at any 27 time. It is inappropriate to use Internet-Drafts as reference 28 material or to cite them other than as "work in progress". 30 To learn the current status of any Internet-Draft, please check the 31 "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow 32 Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), 33 munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or 34 ftp.isi.edu (US West Coast). 36 Abstract 38 This document is one of a set of documents, which together describe 39 all aspects of a new Internet Printing Protocol (IPP). IPP is an 40 application level protocol that can be used for distributed printing 41 using Internet tools and technologies. The protocol is heavily 42 influenced by the printing model introduced in the Document Printing 43 Application (DPA) [ISO10175] standard. Although DPA specifies both 44 end user and administrative features, IPP version 1.0 (IPP/1.0) 45 focuses only on end user functionality. 47 Expires December 30, 1998 48 The full set of IPP documents includes: 50 Design Goals for an Internet Printing Protocol [IPP-REQ] 51 (informational) 52 Rationale for the Structure and Model and Protocol for the Internet 53 Printing Protocol [IPP-RAT] (informational) 54 Internet Printing Protocol/1.0: Model and Semantics (this document) 55 Internet Printing Protocol/1.0: Encoding and Transport [IPP-PRO] 56 Mapping between LPD and IPP Protocols [IPP LPD] (informational) 58 The design goals document, "Design Goals for an Internet Printing 59 Protocol", takes a broad look at distributed printing functionality, 60 and it enumerates real-life scenarios that help to clarify the 61 features that need to be included in a printing protocol for the 62 Internet. It identifies requirements for three types of users: end 63 users, operators, and administrators. The design goals document calls 64 out a subset of end user requirements that are satisfied in IPP/1.0. 65 Operator and administrator requirements are out of scope for version 66 1.0. The rationale document, "Rationale for the Structure and Model 67 and Protocol for the Internet Printing Protocol", describes IPP from a 68 high level view, defines a roadmap for the various documents that form 69 the suite of IPP specifications, and gives background and rationale 70 for the IETF working group's major decisions. The model and semantics 71 document, "Internet Printing Protocol/1.0: Model and Semantics", 72 describes a simplified model with abstract objects, their attributes, 73 and their operations. The model introduces a Printer and a Job. The 74 Job supports multiple documents per Job. The model document also 75 addresses how security, internationalization, and directory issues are 76 addressed. The protocol specification, "Internet Printing 77 Protocol/1.0: Encoding and Transport", is a formal mapping of the 78 abstract operations and attributes defined in the model document onto 79 HTTP/1.1. The protocol specification defines the encoding rules for a 80 new Internet media type called "application/ipp". The LPD mapping 81 document, "Mapping between LPD and IPP Protocols", gives some advice 82 to implementers of gateways between IPP and LPD (Line Printer Daemon) 83 implementations. 85 Expires December 30, 1998 86 Table of Contents 88 1. Introduction ....................................................9 89 1.1 Simplified Printing Model ...................................10 90 2. IPP Objects ....................................................13 91 2.1 Printer Object ..............................................14 92 2.2 Job Object ..................................................15 93 2.3 Object Relationships ........................................16 94 2.4 Object Identity .............................................17 95 3. IPP Operations .................................................20 96 3.1 Common Semantics ............................................21 97 3.1.1 Required Parameters .......................................21 98 3.1.2 Operation IDs and Request IDs .............................22 99 3.1.3 Attributes ................................................22 100 3.1.4 Character Set and Natural Language Operation Attributes ...24 101 3.1.4.1 Request Operation Attributes ...........................24 102 3.1.4.2 Response Operation Attributes ..........................28 103 3.1.5 Operation Targets .........................................29 104 3.1.6 Operation Status Codes and Messages .......................30 105 3.1.7 Versions ..................................................31 106 3.1.8 Job Creation Operations ...................................33 107 3.2 Printer Operations ..........................................35 108 3.2.1 Print-Job Operation .......................................35 109 3.2.1.1 Print-Job Request ......................................35 110 3.2.1.2 Print-Job Response .....................................39 111 3.2.2 Print-URI Operation .......................................42 112 3.2.3 Validate-Job Operation ....................................42 113 3.2.4 Create-Job Operation ......................................43 114 3.2.5 Get-Printer-Attributes Operation ..........................43 115 3.2.5.1 Get-Printer-Attributes Request .........................44 116 3.2.5.2 Get-Printer-Attributes Response ........................46 117 3.2.6 Get-Jobs Operation ........................................47 118 3.2.6.1 Get-Jobs Request .......................................47 119 3.2.6.2 Get-Jobs Response ......................................49 120 3.3 Job Operations ..............................................50 121 3.3.1 Send-Document Operation ...................................50 122 3.3.1.1 Send-Document Request ..................................51 123 3.3.1.2 Send-Document Response .................................53 124 3.3.2 Send-URI Operation ........................................54 125 3.3.3 Cancel-Job Operation ......................................54 126 3.3.3.1 Cancel-Job Request .....................................54 127 3.3.3.2 Cancel-Job Response ....................................55 128 3.3.4 Get-Job-Attributes Operation ..............................56 129 3.3.4.1 Get-Job-Attributes Request .............................57 130 3.3.4.2 Get-Job-Attributes Response ............................57 131 4. Object Attributes ..............................................58 132 4.1 Attribute Syntaxes ..........................................58 133 4.1.1 'text' ....................................................59 135 Expires December 30, 1998 136 4.1.1.1 'textWithoutLanguage' ..................................60 137 4.1.1.2 'textWithLanguage' .....................................61 138 4.1.2 'name' ....................................................62 139 4.1.2.1 'nameWithoutLanguage' ..................................62 140 4.1.2.2 'nameWithLanguage' .....................................62 141 4.1.3 'keyword' .................................................63 142 4.1.4 'enum' ....................................................64 143 4.1.5 'uri' .....................................................64 144 4.1.6 'uriScheme' ...............................................65 145 4.1.7 'charset' .................................................65 146 4.1.8 'naturalLanguage' .........................................66 147 4.1.9 'mimeMediaType' ...........................................66 148 4.1.10 'octetString' .............................................68 149 4.1.11 'boolean' .................................................68 150 4.1.12 'integer' .................................................68 151 4.1.13 'rangeOfInteger' ..........................................68 152 4.1.14 'dateTime' ................................................68 153 4.1.15 'resolution' ..............................................69 154 4.1.16 '1setOf X' ...............................................69 155 4.2 Job Template Attributes .....................................69 156 4.2.1 job-priority (integer(1:100)) .............................73 157 4.2.2 job-hold-until (type3 keyword | name (MAX)) ...............74 158 4.2.3 job-sheets (type3 keyword | name(MAX)) ....................75 159 4.2.4 multiple-document-handling (type2 keyword) ................75 160 4.2.5 copies (integer(1:MAX)) ...................................77 161 4.2.6 finishings (1setOf type2 enum) ............................77 162 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) ...............78 163 4.2.8 sides (type2 keyword) .....................................79 164 4.2.9 number-up (integer(1:MAX)) ................................80 165 4.2.10 orientation-requested (type2 enum) ........................80 166 4.2.11 media (type3 keyword | name(MAX)) .........................81 167 4.2.12 printer-resolution (resolution) ...........................82 168 4.2.13 print-quality (type2 enum) ................................82 169 4.3 Job Description Attributes ..................................83 170 4.3.1 job-uri (uri) .............................................85 171 4.3.2 job-id (integer(1:MAX)) ...................................85 172 4.3.3 job-printer-uri (uri) .....................................85 173 4.3.4 job-more-info (uri) .......................................86 174 4.3.5 job-name (name(MAX)) ......................................86 175 4.3.6 job-originating-user-name (name(MAX)) .....................86 176 4.3.7 job-state (type1 enum) ....................................87 177 4.3.8 job-state-reasons (1setOf type2 keyword) .................90 178 4.3.9 job-state-message (text(MAX)) .............................92 179 4.3.10 number-of-documents (integer(0:MAX)) ......................92 180 4.3.11 output-device-assigned (name(127)) ........................93 181 4.3.12 time-at-creation (integer(0:MAX)) .........................93 182 4.3.13 time-at-processing (integer(0:MAX)) .......................93 183 4.3.14 time-at-completed (integer(0:MAX)) ........................93 185 Expires December 30, 1998 186 4.3.15 number-of-intervening-jobs (integer(0:MAX)) ...............94 187 4.3.16 job-message-from-operator (text(127)) .....................94 188 4.3.17 job-k-octets (integer(0:MAX)) .............................94 189 4.3.18 job-impressions (integer(0:MAX)) ..........................95 190 4.3.19 job-media-sheets (integer(0:MAX)) .........................95 191 4.3.20 job-k-octets-processed (integer(0:MAX)) ...................96 192 4.3.21 job-impressions-completed (integer(0:MAX)) ................96 193 4.3.22 job-media-sheets-completed (integer(0:MAX)) ...............96 194 4.3.23 attributes-charset (charset) ..............................96 195 4.3.24 attributes-natural-language (naturalLanguage) .............97 196 4.4 Printer Description Attributes ..............................97 197 4.4.1 printer-uri-supported (1setOf uri) ........................99 198 4.4.2 uri-security-supported (1setOf type2 keyword) .............99 199 4.4.3 printer-name (name(127)) .................................101 200 4.4.4 printer-location (text(127)) .............................101 201 4.4.5 printer-info (text(127)) .................................101 202 4.4.6 printer-more-info (uri) ..................................101 203 4.4.7 printer-driver-installer (uri) ...........................102 204 4.4.8 printer-make-and-model (text(127)) .......................102 205 4.4.9 printer-more-info-manufacturer (uri) .....................102 206 4.4.10 printer-state (type1 enum) ...............................102 207 4.4.11 printer-state-reasons (1setOf type2 keyword) .............103 208 4.4.12 printer-state-message (text(MAX)) ........................106 209 4.4.13 operations-supported (1setOf type2 enum) .................106 210 4.4.14 charset-configured (charset) .............................107 211 4.4.15 charset-supported (1setOf charset) .......................107 212 4.4.16 natural-language-configured (naturalLanguage) ............107 213 4.4.17 generated-natural-language-supported 214 (1setOf naturalLanguage) .................................108 215 4.4.18 document-format-default (mimeMediaType) ..................108 216 4.4.19 document-format-supported (1setOf mimeMediaType) .........109 217 4.4.20 printer-is-accepting-jobs (boolean) ......................109 218 4.4.21 queued-job-count (integer(0:MAX)) ........................109 219 4.4.22 printer-message-from-operator (text(127)) ................109 220 4.4.23 color-supported (boolean) ................................109 221 4.4.24 reference-uri-schemes-supported (1setOf uriScheme) .......110 222 4.4.25 pdl-override-supported (type2 keyword) ...................110 223 4.4.26 printer-up-time (integer(1:MAX)) .........................110 224 4.4.27 printer-current-time (dateTime) ..........................111 225 4.4.28 multiple-operation-time-out (integer(1:MAX)) .............111 226 4.4.29 compression-supported (1setOf type3 keyword) .............111 227 4.4.30 job-k-octets-supported (rangeOfInteger(0:MAX)) ...........112 228 4.4.31 job-impressions-supported (rangeOfInteger(0:MAX)) ........112 229 4.4.32 job-media-sheets-supported (rangeOfInteger(0:MAX)) .......112 230 5. Conformance ...................................................112 231 5.1 Client Conformance Requirements ............................113 232 5.2 IPP Object Conformance Requirements ........................113 233 5.2.1 Objects ..................................................113 235 Expires December 30, 1998 236 5.2.2 Operations ...............................................114 237 5.2.3 IPP Object Attributes ....................................114 238 5.2.4 Extensions ...............................................115 239 5.2.5 Attribute Syntaxes .......................................115 240 5.3 Charset and Natural Language Requirements ..................115 241 5.4 Security Conformance Requirements ..........................115 242 6. IANA Considerations (registered and private extensions) .......116 243 6.1 Typed 'keyword' and 'enum' Extensions ......................116 244 6.2 Attribute Extensibility ....................................118 245 6.3 Attribute Syntax Extensibility .............................119 246 6.4 Operation Extensibility ....................................120 247 6.5 Status Code Extensibility ..................................120 248 6.6 Registration of MIME types/sub-types for document-formats ..121 249 6.7 Registration of charsets for use in 'charset' attribute 250 values .....................................................121 251 7. Internationalization Considerations ...........................121 252 8. Security Considerations .......................................124 253 8.1 Security Scenarios .........................................125 254 8.1.1 Client and Server in the Same Security Domain ............125 255 8.1.2 Client and Server in Different Security Domains ..........126 256 8.1.3 Print by Reference .......................................126 257 8.2 URIs for TLS and non-TLS Access ............................126 258 8.3 The "requesting-user-name" (name(MAX)) Operation Attribute .126 259 8.4 Restricted Queries .........................................128 260 8.5 IPP Security Application Profile for TLS ...................128 261 9. References ....................................................129 262 10.Copyright Notice ..............................................133 263 11.Author's Address ..............................................133 264 12.Formats for IPP Registration Proposals ........................136 265 12.1 Type2 keyword attribute values registration ................136 266 12.2 Type3 keyword attribute values registration ................136 267 12.3 Type2 enum attribute values registration ...................137 268 12.4 Type3 enum attribute values registration ...................137 269 12.5 Attribute registration .....................................137 270 12.6 Attribute Syntax registration ..............................138 271 12.7 Operation registration .....................................138 272 12.8 Status code registration ...................................139 273 13.APPENDIX A: Terminology .......................................139 274 13.1 Conformance Terminology ....................................139 275 13.1.1 NEED NOT .................................................139 276 13.2 Model Terminology ..........................................139 277 13.2.1 Keyword ..................................................139 278 13.2.2 Attributes ...............................................140 279 13.2.2.1 Attribute Name ........................................140 280 13.2.2.2 Attribute Group Name ..................................140 281 13.2.2.3 Attribute Value .......................................140 282 13.2.2.4 Attribute Syntax ......................................140 283 13.2.3 Supports .................................................141 285 Expires December 30, 1998 286 13.2.4 print-stream page ........................................143 287 13.2.5 impression ...............................................143 288 14.APPENDIX B: Status Codes and Suggested Status Code Messages ..143 289 14.1 Status Codes ...............................................144 290 14.1.1 Informational ............................................144 291 14.1.2 Successful Status Codes ..................................145 292 14.1.2.1 successful-ok (0x0000) ................................145 293 14.1.2.2 successful-ok-ignored-or-substituted-attributes 294 (0x0001) ..............................................145 295 14.1.2.3 successful-ok-conflicting-attributes (0x0002) .........145 296 14.1.3 Redirection Status Codes .................................145 297 14.1.4 Client Error Status Codes ................................145 298 14.1.4.1 client-error-bad-request (0x0400) .....................146 299 14.1.4.2 client-error-forbidden (0x0401) .......................146 300 14.1.4.3 client-error-not-authenticated (0x0402) ...............146 301 14.1.4.4 client-error-not-authorized (0x0403) ..................146 302 14.1.4.5 client-error-not-possible (0x0404) ....................146 303 14.1.4.6 client-error-timeout (0x0405) .........................147 304 14.1.4.7 client-error-not-found (0x0406) .......................147 305 14.1.4.8 client-error-gone (0x0407) ............................147 306 14.1.4.9 client-error-request-entity-too-large (0x0408) ........148 307 14.1.4.10 client-error-request-value-too-long (0x0409) ..........148 308 14.1.4.11 client-error-document-format-not-supported (0x040A) ...148 309 14.1.4.12 client-error-attributes-or-values-not-supported 310 (0x040B) ..............................................149 311 14.1.4.13 client-error-uri-scheme-not-supported (0x040C) ........149 312 14.1.4.14 client-error-charset-not-supported (0x040D) ...........149 313 14.1.4.15 client-error-conflicting-attributes (0x040E) ..........149 314 14.1.5 Server Error Status Codes ................................149 315 14.1.5.1 server-error-internal-error (0x0500) ..................150 316 14.1.5.2 server-error-operation-not-supported (0x0501) .........150 317 14.1.5.3 server-error-service-unavailable (0x0502) .............150 318 14.1.5.4 server-error-version-not-supported (0x0503) ...........150 319 14.1.5.5 server-error-device-error (0x0504) ....................151 320 14.1.5.6 server-error-temporary-error (0x0505) .................151 321 14.1.5.7 server-error-not-accepting-jobs (0x0506) ..............151 322 14.1.5.8 server-error-busy (0x0507) ............................151 323 14.2 Status Codes for IPP Operations ............................152 324 15.APPENDIX C: "media" keyword values ...........................153 325 16.APPENDIX D: Processing IPP Attributes .........................157 326 16.1 Fidelity ...................................................158 327 16.2 Page Description Language (PDL) Override ...................159 328 16.3 Suggested Operation Processing Steps for All Operations ....161 329 16.3.1 Validate version number ..................................162 330 16.3.2 Validate operation identifier ............................162 331 16.3.3 Validate the request identifier ..........................162 332 16.3.4 Validate attribute group and attribute presence and order 163 333 16.3.4.1 Validate the presence and order of attribute groups ...163 335 Expires December 30, 1998 336 16.3.4.2 Ignore unknown attribute groups in the expected 337 position ..............................................163 338 16.3.4.3 Validate the presence of a single occurrence of 339 required Operation attributes .........................164 340 16.3.5 Validate the values of the REQUIRED Operation attributes .169 341 16.3.6 Validate the values of the OPTIONAL Operation attributes .172 342 16.4 Suggested Additional Processing Steps for Operations that 343 Create/Validate Jobs and Add Documents .....................175 344 16.4.1 Default "ipp-attribute-fidelity" if not supplied .........175 345 16.4.2 Check that the Printer object is accepting jobs ..........175 346 16.4.3 Validate the values of the Job Template attributes .......175 347 16.4.4 Check for conflicting Job Template attributes values .....180 348 16.4.5 Decide whether to REJECT the request .....................181 349 16.4.6 For the Validate-Job operation, RETURN one of the 350 success status codes .....................................181 351 16.4.7 Create the Job object with attributes to support .........181 352 16.4.8 Return one of the success status codes ...................183 353 16.4.9 Accept appended Document Content .........................184 354 16.4.10 Scheduling and Starting to Process the Job ...............184 355 16.4.11 Completing the Job .......................................184 356 16.4.12 Destroying the Job after completion ......................184 357 16.4.13 Interaction with "ipp-attribute-fidelity" ................184 358 16.5 Using Job Template Attributes During Document Processing. ..185 359 17.APPENDIX E: Generic Directory Schema ..........................186 361 Expires December 30, 1998 362 1. Introduction 364 The Internet Printing Protocol (IPP) is an application level protocol 365 that can be used for distributed printing using Internet tools and 366 technologies. IPP version 1.0 (IPP/1.0) focuses only on end user 367 functionality. This document is just one of a suite of documents that 368 fully define IPP. The full set of IPP documents includes: 370 Design Goals for an Internet Printing Protocol [IPP-REQ] 371 (informational) 372 Rationale for the Structure and Model and Protocol for the Internet 373 Printing Protocol [IPP-RAT] (informational) 374 Internet Printing Protocol/1.0: Model and Semantics (this document) 375 Internet Printing Protocol/1.0: Encoding and Transport [IPP-PRO] 376 Mapping between LPD and IPP Protocols [IPP-LPD] (informational) 378 Anyone reading this document for the first time is strongly encouraged 379 to read the IPP documents in the following order: 381 1. The design goals document, "Design Goals for an Internet 382 Printing Protocol". That document takes a broad look at 383 distributed printing functionality, and it enumerates real-life 384 scenarios that help to clarify the features that need to be 385 included in a printing protocol for the Internet. It identifies 386 requirements for three types of users: end users, operators, and 387 administrators. The design goals document calls out a subset of 388 end user requirements that are satisfied in IPP/1.0. Operator 389 and administrator requirements are out of scope for version 1.0. 390 2. The rationale document, "Rationale for the Structure and Model 391 and Protocol for the Internet Printing Protocol". That document 392 describes IPP from a high level view, defines a roadmap for the 393 various documents that form the suite of IPP specifications, and 394 gives background and rationale for the IETF working group's major 395 decisions. 396 3. This document, the "Internet Printing Protocol/1.0: Model and 397 Semantics" document. This document describes a simplified model 398 with abstract objects, their attributes, and their operations. 399 The model introduces a Printer and a Job. A Job optionally 400 supports multiple documents per Job. The model document also 401 describes how security, internationalization, and directory 402 issues are addressed. 403 4. The protocol specification, " Internet Printing Protocol/1.0: 404 Encoding and Transport". That document defines the encoding 405 rules for a new Internet media type called "application/ipp" and 406 shows a formal mapping of the abstract operations and attributes 407 defined in the model document onto HTTP/1.1. 409 Expires December 30, 1998 411 The LPD mapping document, "Mapping between LPD and IPP Protocols", is 412 an informational document that recommends a mapping between the 413 commands and operands of IPP. The LPD mapping document gives some 414 advice to implementers of gateways between IPP and LPD (Line Printer 415 Daemon) implementations. 417 This document is laid out as follows: 419 - The rest of Section 1 is an introduction to the IPP simplified 420 model for distributed printing. 421 - Section 2 introduces the object types covered in the model with 422 their basic behaviors, attributes, and interactions. 423 - Section 3 defines the operations included in IPP/1.0. IPP 424 operations are synchronous, therefore, for each operation, there 425 is a both request and a response. 426 - Section 4 defines the attributes (and their syntaxes) that are 427 used in the model. 428 - Sections 5 - 6 summarizes the implementation conformance 429 requirements for objects that support the protocol and IANA 430 considerations, respectively. 431 - Sections 7 - 11 cover the Internationalization and Security 432 considerations as well as References, Copyright Notice, and 433 Author contact information. 434 - Sections 12 - 14 are appendices that cover Terminology, Status 435 Codes and Messages, and "media" keyword values. This document 436 uses terms such as "attributes", "keywords", and "support". 437 These terms have special meaning and are defined in the model 438 terminology section. Capitalized terms, such as MUST and 439 OPTIONAL, have special meaning relating to conformance. These 440 terms are defined in the section on conformance terminology, most 441 of which is taken from RFC 2119 [RFC2119]. 442 - Section 15 is an appendix that defines the rules and suggested 443 techniques for the processing of attributes in client requests by 444 IPP objects. This section helps to clarify the effects of 445 interactions between related attributes and their values. 446 - Section 16 is an appendix that enumerates the subset of Printer 447 attributes that form a generic directory schema. These 448 attributes are useful when registering a Printer so that a client 449 can find the Printer not just by name, but by filtered searches 450 as well. 452 1.1 Simplified Printing Model 454 In order to achieve its goal of realizing a workable printing protocol 455 for the Internet, the Internet Printing Protocol (IPP) is based on a 456 simplified printing model that abstracts the many components of real 457 world printing solutions. The Internet is a distributed computing 459 Expires December 30, 1998 460 environment where requesters of print services (clients, applications, 461 printer drivers, etc.) cooperate and interact with print service 462 providers. This model and semantics document describes a simple, 463 abstract model for IPP even though the underlying configurations may 464 be complex "n-tier" client/server systems. An important simplifying 465 step in the IPP model is to expose only the key objects and interfaces 466 required for printing. The model described in this model document 467 does not include features, interfaces, and relationships that are 468 beyond the scope of the first version of IPP (IPP/1.0). IPP/1.0 469 incorporates many of the relevant ideas and lessons learned from other 470 specification and development efforts [HTPP] [ISO10175] [LDPA] 471 [P1387.4] [PSIS] [RFC1179] [SWP]. 473 The IPP/1.0 model encapsulates the important components of distributed 474 printing into two object types: 476 - Printer (Section 2.1) 477 - Job (Section 2.2) 479 Each object type has an associated set of operations (see section 3) 480 and attributes (see section 4). 482 It is important, however, to understand that in real system 483 implementations (which lie underneath the abstracted IPP/1.0 model), 484 there are other components of a print service which are not explicitly 485 defined in the IPP/1.0 model. The following figure illustrates where 486 IPP/1.0 fits with respect to these other components. 488 Expires December 30, 1998 489 +--------------+ 490 | Application | 491 o +. . . . . . . | 492 \|/ | Spooler | 493 / \ +. . . . . . . | +---------+ 494 End-User | Print Driver |---| File | 495 +-----------+ +-----+ +------+-------+ +----+----+ 496 | Browser | | GUI | | | 497 +-----+-----+ +--+--+ | | 498 | | | | 499 | +---+------------+---+ | 500 N D S | | IPP Client |------------+ 501 O I E | +---------+----------+ 502 T R C | | 503 I E U | 504 F C R -------------- Transport ------------------ 505 I T I 506 C O T | --+ 507 A R Y +--------+--------+ | 508 T Y | IPP Server | | 509 I +--------+--------+ | 510 O | | 511 N +-----------------+ | IPP Printer 512 | Print Service | | 513 +-----------------+ | 514 | --+ 515 +-----------------+ 516 | Output Device(s)| 517 +-----------------+ 519 An IPP Printer object encapsulates the functions normally associated 520 with physical output devices along with the spooling, scheduling and 521 multiple device management functions often associated with a print 522 server. Printer objects are optionally registered as entries in a 523 directory where end users find and select them based on some sort of 524 filtered and context based searching mechanism (see section 17). The 525 directory is used to store relatively static information about the 526 Printer, allowing end users to search for and find Printers that match 527 their search criteria, for example: name, context, printer 528 capabilities, etc. The more dynamic information, such as state, 529 currently loaded and ready media, number of jobs at the Printer, 530 errors, warnings, and so forth, is directly associated with the 531 Printer object itself rather than with the entry in the directory 532 which only represents the Printer object. 534 IPP clients implement the IPP protocol on the client side and give end 535 users (or programs running on behalf of end users) the ability to 537 Expires December 30, 1998 538 query Printer objects and submit and manage print jobs. An IPP server 539 is just that part of the Printer object that implements the server- 540 side protocol. The rest of the Printer object implements (or gateways 541 into) the application semantics of the print service itself. The 542 Printer objects may be embedded in an output device or may be 543 implemented on a host on the network that communicates with an output 544 device. 546 When a job is submitted to the Printer object and the Printer object 547 validates the attributes in the submission request, the Printer object 548 creates a new Job object. The end user then interacts with this new 549 Job object to query its status and monitor the progress of the job. 550 End users may also cancel the print job by using the Job object's 551 Cancel-Job operation. The notification service is out of scope for 552 IPP/1.0, but using such a notification service, the end user is able 553 to register for and receive Printer specific and Job specific events. 554 An end user can query the status of Printer objects and can follow the 555 progress of Job objects by polling using the Get-Printer-Attributes, 556 Get-Jobs, and Get-Job-Attributes operations. 558 2. IPP Objects 560 The IPP/1.0 model introduces objects of type Printer and Job. Each 561 type of object models relevant aspects of a real-world entity such as 562 a real printer or real print job. Each object type is defined as a 563 set of possible attributes that may be supported by instances of that 564 object type. For each object (instance), the actual set of supported 565 attributes and values describe a specific implementation. The 566 object's attributes and values describe its state, capabilities, 567 realizable features, job processing functions, and default behaviors 568 and characteristics. For example, the Printer object type is defined 569 as a set of attributes that each Printer object potentially supports. 570 In the same manner, the Job object type is defined as a set of 571 attributes that are potentially supported by each Job object. 573 Each attribute included in the set of attributes defining an object 574 type is labeled as: 576 - "REQUIRED": each object MUST support the attribute. 577 - "OPTIONAL": each object MAY support the attribute. 579 There is no such similar labeling of attribute values. However, if an 580 implementation supports an attribute, it MUST support at least one of 581 the possible values for that attribute. 583 Expires December 30, 1998 584 2.1 Printer Object 586 The major component of the IPP/1.0 model is the Printer object. A 587 Printer object implements the server-side of the IPP/1.0 protocol. 588 Using the protocol, end users may query the attributes of the Printer 589 object and submit print jobs to the Printer object. The actual 590 implementation components behind the Printer abstraction may take on 591 different forms and different configurations. However, the model 592 abstraction allows the details of the configuration of real components 593 to remain opaque to the end user. Section 3 describes each of the 594 Printer operations in detail. 596 The capabilities and state of a Printer object are described by its 597 attributes. Printer attributes are divided into two groups: 599 - "job-template" attributes: These attributes describe supported 600 job processing capabilities and defaults for the Printer object. 601 (See section 4.2) 602 - "printer-description" attributes: These attributes describe the 603 Printer object's identification, state, location, references to 604 other sources of information about the Printer object, etc. (see 605 section 4.4) 607 Since a Printer object is an abstraction of a generic document output 608 device and print service provider, a Printer object could be used to 609 represent any real or virtual device with semantics consistent with 610 the Printer object, such as a fax device, an imager, or even a CD 611 writer. 613 Some examples of configurations supporting a Printer object include: 615 1) An output device with no spooling capabilities 616 2) An output device with a built-in spooler 617 3) A print server supporting IPP with one or more associated output 618 devices 619 3a) The associated output devices may or may not be capable of 620 spooling jobs 621 3b) The associated output devices may or may not support IPP 623 The following figures show some examples of how Printer objects can be 624 realized on top of various distributed printing configurations. The 625 embedded case below represents configurations 1 and 2. The hosted and 626 fan-out figures below represent configurations 3a and 3b. 628 Expires December 30, 1998 629 Legend: 631 ##### indicates a Printer object which is 632 either embedded in an output device or is 633 hosted in a server. The Printer object 634 might or might not be capable of queuing/spooling. 636 any indicates any network protocol or direct 637 connect, including IPP 639 embedded printer: 640 output device 641 +---------------+ 642 O +--------+ | ########### | 643 /|\ | client |------------IPP------------># Printer # | 644 / \ +--------+ | # Object # | 645 | ########### | 646 +---------------+ 648 hosted printer: 649 +---------------+ 650 O +--------+ ########### | | 651 /|\ | client |--IPP--># Printer #-any->| output device | 652 / \ +--------+ # Object # | | 653 ########### +---------------+ 655 +---------------+ 656 fan out: | | 657 +-->| output device | 658 any/ | | 659 O +--------+ ########### / +---------------+ 660 /|\ | client |-IPP-># Printer #--* 661 / \ +--------+ # Object # \ +---------------+ 662 ########### any\ | | 663 +-->| output device | 664 | | 665 +---------------+ 667 2.2 Job Object 669 A Job object is used to model a print job. A Job can contain one or 670 more documents. The information required to create a Job object is 672 Expires December 30, 1998 673 sent in a create request from the end user via an IPP Client to the 674 Printer object. The Printer object validates the create request, and 675 if the Printer object accepts the request, the Printer object creates 676 the new Job object. Section 3 describes each of the Job operations in 677 detail. 679 The characteristics and state of a Job object are described by its 680 attributes. Job attributes are grouped into two groups as follows: 682 - "job-template" attributes: These attributes can be supplied by 683 the client or end user and include job processing instructions 684 which are intended to override any Printer object defaults and/or 685 instructions embedded within the document data. (See section 4.2) 686 - "job-description" attributes: These attributes describe the Job 687 object's identification, state, size, etc. The client supplies 688 some of these attributes, and the Printer object generates 689 others. (See section 4.3) 691 A Job object contains at least one document, but may contain multiple 692 documents. A document is either: 694 - a stream of document data in a format supported by the Printer 695 object (typically a Page Description Language - PDL), or 696 - a reference to such a stream of document data 698 In IPP/1.0, a document is not modeled as an IPP object, therefore it 699 has no object identifier or associated attributes. All job processing 700 instructions are modeled as Job object attributes. These attributes 701 are called Job Template attributes and they apply equally to all 702 documents within a Job object. 704 2.3 Object Relationships 706 IPP objects have relationships that are maintained persistently along 707 with the persistent storage of the object attributes. 709 A Printer object can represent either one or more physical output 710 devices or a logical device which "processes" jobs but never actually 711 uses a physical output device to put marks on paper. Examples of 712 logical devices include a Web page publisher or a gateway into an 713 online document archive or repository. A Printer object contains zero 714 or more Job objects. 716 A Job object is contained by exactly one Printer object, however the 717 identical document data associated with a Job object could be sent to 718 either the same or a different Printer object. In this case, a second 719 Job object would be created which would be almost identical to the 721 Expires December 30, 1998 722 first Job object, however it would have new (different) Job object 723 identifiers (see section 2.4). 725 A Job object contains one or more documents. If the contained 726 document is a stream of document data, that stream can be contained in 727 only one document. However, there can be identical copies of the 728 stream in other documents in the same or different Job objects. If 729 the contained document is just a reference to a stream of document 730 data, other documents (in the same or different Job object(s)) may 731 contain the same reference. 733 2.4 Object Identity 735 All Printer and Job objects are identified by a Uniform Resource 736 Identifier (URI) [RFC1630] so that they can be persistently and 737 unambiguously referenced. The notion of a URI is a useful concept, 738 however, until the notion of URI is more stable (i.e., defined more 739 completely and deployed more widely), it is expected that the URIs 740 used for IPP objects will actually be URLs [RFC1738] [RFC1808]. Since 741 every URL is a specialized form of a URI, even though the more generic 742 term URI is used throughout the rest of this document, its usage is 743 intended to cover the more specific notion of URL as well. 745 An administrator configures Printer objects to either support or not 746 support authentication and/or message privacy using TLS [TLS] (the 747 mechanism for security configuration is outside the scope of IPP/1.0). 748 In some situations, both types of connections (both authenticated and 749 unauthenticated) can be established using a single communication 750 channel that has some sort of negotiation mechanism. In other 751 situations, multiple communication channels are used, one for each 752 type of security configuration. Section 8 provides a full description 753 of all security considerations and configurations. , 755 If a Printer object supports more than one communication channel, some 756 or all of those channels might support and/or require different 757 security mechanisms. In such cases, an administrator could expose the 758 simultaneous support for these multiple communication channels as 759 multiple URIs for a single Printer object where each URI represents 760 one of the communication channels to the Printer object. To support 761 this flexibility, the IPP Printer object type defines a multi-valued 762 identification attribute called the "printer-uri-supported" attribute. 763 It MUST contain at least one URI. It MAY contain more than one URI. 764 That is, every Printer object will have at least one URI that 765 identifies at least one communication channel to the Printer object, 766 but it may have more than one URI where each URI identifies a 767 different communication channel to the Printer object. The "printer- 768 uri-supported" attribute has a companion attribute, the "uri-security- 770 Expires December 30, 1998 771 supported" attribute, that has the same cardinality as "printer-uri- 772 supported". The purpose of the "uri-security-supported" attribute is 773 to indicate the security mechanisms (if any) used for each URI listed 774 in "printer-uri-supported". These two attributes are fully described 775 in sections 4.4.1 and 4.4.2. 777 When a job is submitted to the Printer object via a create request, 778 the client supplies only a single Printer object URI. The client 779 supplied Printer object URI MUST be one of the values in the "printer- 780 uri-supported" Printer attribute. 782 Note: IPP/1.0 does not specify how the client obtains the client 783 supplied URI, but it is RECOMMENDED that a Printer object be 784 registered as an entry in a directory service. End-users and programs 785 can then interrogate the directory searching for Printers. Section 17 786 defines a generic schema for Printer object entries in the directory 787 service and describes how the entry acts as a bridge to the actual IPP 788 Printer object. The entry in the directory that represents the IPP 789 Printer object includes the possibly many URIs for that Printer object 790 as values in one its attributes. 792 When a client submits a create request to the Printer object, the 793 Printer object validates the request and creates a new Job object. 794 The Printer object assigns the new Job object a URI which is stored in 795 the "job-uri" Job attribute. This URI is then used by clients as the 796 target for subsequent Job operations. The Printer object generates a 797 Job URI based on its configured security policy and the URI used by 798 the client in the create request. 800 For example, consider a Printer object that supports both a 801 communication channel secured by the use of TLS (using a standard URI 802 indicating the use of HTTP over TLS) and another open communication 803 channel that is not secured with TLS (using an simple "http" schemed 804 URI). If a client were to submit a job using the secure URI, the 805 Printer object would assign the new Job object a secure URI as well. 806 If a client were to submit a job using the open-channel URI, the 807 Printer would assign the new Job object an open-channel URI. 809 In addition, the Printer object also populates the Job object's "job- 810 printer-uri" attribute. This is a reference back to the Printer 811 object that created the Job object. If a client only has access to a 812 Job object's "job-uri" identifier, the client can query the Job's 813 "job-printer-uri" attribute in order to determine which Printer object 814 created the Job object. If the Printer object supports more than one 815 URI, the Printer object picks the one URI supplied by the client when 816 creating the job to build the value for and to populate the Job's 817 "job-printer-uri" attribute. 819 Expires December 30, 1998 820 Allowing Job objects to have URIs allows for flexibility and 821 scalability. For example, in some implementations, the Printer object 822 might create Jobs that are processed in the same local environment as 823 the Printer object itself. In this case, the Job URI might just be a 824 composition of the Printer's URI and some unique component for the Job 825 object, such as the unique 32-bit positive integer mentioned later in 826 this paragraph. In other implementations, the Printer object might be 827 a central clearing-house for validating all Job object creation 828 requests, but the Job object itself might be created in some 829 environment that is remote from the Printer object. In this case, the 830 Job object's URI may have no physical-location relationship at all to 831 the Printer object's URI. Again, the fact that Job objects have URIs 832 allows for flexibility and scalability, however, many existing 833 printing systems have local models or interface constraints that force 834 print jobs to be identified using only a 32-bit positive integer 835 rather than an independent URI. This numeric Job ID is only unique 836 within the context of the Printer object to which the create request 837 was originally submitted. Therefore, in order to allow both types of 838 client access to IPP Job objects (either by Job URI or by numeric Job 839 ID), when the Printer object successfully processes a create request 840 and creates a new Job object, the Printer object MUST generate both a 841 Job URI and a Job ID. The Job ID (stored in the "job-id" attribute) 842 only has meaning in the context of the Printer object to which the 843 create request was originally submitted. This requirement to support 844 both Job URIs and Job IDs allows all types of clients to access 845 Printer objects and Job objects no matter the local constraints 846 imposed on the client implementation. 848 In addition to identifiers, Printer objects and Job objects have names 849 ("printer-name" and "job-name"). An object name NEED NOT be unique 850 across all instances of all objects. A Printer object's name is chosen 851 and set by an administrator through some mechanism outside the scope 852 of IPP/1.0. A Job object's name is optionally chosen and supplied by 853 the IPP client submitting the job. If the client does not supply a 854 Job object name, the Printer object generates a name for the new Job 855 object. In all cases, the name only has local meaning. 857 To summarize: 859 - Each Printer object is identified with one or more URIs. The 860 Printer's "printer-uri-supported" attribute contains the URI(s). 861 - The Printer object's "uri-security-supported" attribute 862 identifies the communication channel security protocols that may 863 or may not have been configured for the various Printer object 864 URIs (e.g., 'tls' or 'none'). 865 - Each Job object is identified with a Job URI. The Job's "job- 866 uri" attribute contains the URI. 868 Expires December 30, 1998 870 - Each Job object is also identified with Job ID which is a 32-bit, 871 positive integer. The Job's "job-id" attribute contains the Job 872 ID. The Job ID is only unique within the context of the Printer 873 object which created the Job object. 874 - Each Job object has a "job-printer-uri" attribute which contains 875 the URI of the Printer object that was used to create the Job 876 object. This attribute is used to determine the Printer object 877 that created a Job object when given only the URI for the Job 878 object. This linkage is necessary to determine the languages, 879 charsets, and operations which are supported on that Job (the 880 basis for such support comes from the creating Printer object). 881 - Each Printer object has a name (which is not necessarily unique). 882 The administrator chooses and sets this name through some 883 mechanism outside the scope of IPP/1.0 itself. The Printer 884 object's "printer-name" attribute contains the name. 885 - Each Job object has a name (which is not necessarily unique). 886 The client optionally supplies this name in the create request. 887 If the client does not supply this name, the Printer object 888 generates a name for the Job object. The Job object's "job-name" 889 attribute contains the name. 891 3. IPP Operations 893 IPP objects support operations. An operation consists of a request 894 and a response. When a client communicates with an IPP object, the 895 client issues an operation request to the URI for that object. 896 Operation requests and responses have parameters that identify the 897 operation. Operations also have attributes that affect the run-time 898 characteristics of the operation (the intended target, localization 899 information, etc.). These operation-specific attributes are called 900 operation attributes (as compared to object attributes such as Printer 901 object attributes or Job object attributes). Each request carries 902 along with it any operation attributes, object attributes, and/or 903 document data required to perform the operation. Each request 904 requires a response from the object. Each response indicates success 905 or failure of the operation with a status code as a response 906 parameter. The response contains any operation attributes, object 907 attributes, and/or status messages generated during the execution of 908 the operation request. 910 This section describes the semantics of the IPP operations, both 911 requests and responses, in terms of the parameters, attributes, and 912 other data associated with each operation. 914 The IPP/1.0 Printer operations are: 916 Print-Job (section 3.2.1) 918 Expires December 30, 1998 919 Print-URI (section 3.2.2) 920 Validate-Job (section 3.2.3) 921 Create-Job (section 3.2.4) 922 Get-Printer-Attributes (section 3.2.5) 923 Get-Jobs (section 3.2.6) 925 The Job operations are: 927 Send-Document (section 3.3.1) 928 Send-URI (section 3.3.2) 929 Cancel-Job (section 3.3.3) 930 Get-Job-Attributes (section 3.3.4) 932 The Send-Document and Send-URI Job operations are used to add a new 933 document to an existing multi-document Job object created using the 934 Create-Job operation. 936 3.1 Common Semantics 938 All IPP operations require some common parameters and operation 939 attributes. These common elements and their semantic characteristics 940 are defined and described in more detail in the following sections. 942 3.1.1 Required Parameters 944 Every operation request contains the following REQUIRED parameters: 946 - a "version-number", 947 - an "operation-id", 948 - a "request-id", and 949 - the attributes that are REQUIRED for that type of request. 951 Every operation response contains the following REQUIRED parameters: 953 - a "version-number", 954 - a "status-code", 955 - the "request-id" that was supplied in the corresponding request, 956 and 957 - the attributes that are REQUIRED for that type of response. 959 The encoding and transport document [IPP-PRO] defines special rules 960 for the encoding of these parameters. All other operation elements 961 are represented using the more generic encoding rules for attributes 962 and groups of attributes. 964 Expires December 30, 1998 965 3.1.2 Operation IDs and Request IDs 967 Each IPP operation request includes an identifying "operation-id" 968 value. Valid values are defined in the "operations-supported" Printer 969 attribute section (see section 4.4.13). The client specifies which 970 operation is being requested by supplying the correct "operation-id" 971 value. 973 In addition, every invocation of an operation is identified by a 974 "request-id" value. For each request, the client chooses the "request- 975 id" which is an integer (possibly unique depending on client 976 requirements) in the range from 1 to 2**31 - 1 (inclusive). This 977 "request-id" allows clients to manage multiple outstanding requests. 978 The receiving IPP object copies the client supplied "request-id" 979 attribute into the response so that the client can match the response 980 with the correct outstanding request. 982 Note: In some cases, the transport protocol underneath IPP might be a 983 connection oriented protocol that would make it impossible for a 984 client to receive responses in any order other than the order in which 985 the corresponding requests were sent. In such cases, the "request-id" 986 attribute would not be essential for correct protocol operation. 987 However, in other mappings, the operation responses can come back in 988 any order. In these cases, the "request-id" would be essential. 990 3.1.3 Attributes 992 Operation requests and responses are both composed of groups of 993 attributes and/or document data. The attributes groups are: 995 - Operation Attributes: These attributes are passed in the 996 operation and affect the IPP object's behavior while processing 997 the operation request and may affect other attributes or groups 998 of attributes. Some operation attributes describe the document 999 data associated with the print job and are associated with new 1000 Job objects, however most operation attributes do not persist 1001 beyond the life of the operation. The description of each 1002 operation attribute includes conformance statements indicating 1003 which operation attributes are REQUIRED and which are OPTIONAL 1004 for an IPP object to support and which attributes a client MUST 1005 supply in a request and an IPP object MUST supply in a response. 1006 - Job Template Attributes: These attributes affect the processing 1007 of a job. A client OPTIONALLY supplies Job Template Attributes 1008 in a create request, and the receiving object MUST be prepared to 1009 receive all supported attributes. The Job object can later be 1010 queried to find out what Job Template attributes were originally 1011 requested in the create request, and such attributes are returned 1013 Expires December 30, 1998 1014 in the response as Job Object Attributes. The Printer object can 1015 be queried about its Job Template attributes to find out what 1016 type of job processing capabilities are supported and/or what the 1017 default job processing behaviors are, though such attributes are 1018 returned in the response as Printer Object Attributes. The "ipp- 1019 attribute-fidelity" operation attribute affects processing of all 1020 client-supplied Job Template attributes (see section 16 for a 1021 full description of "ipp-attribute-fidelity" and its relationship 1022 to other attributes). 1023 - Job Object Attributes: These attributes are returned in response 1024 to a query operation directed at a Job object. 1025 - Printer Object Attributes: These attributes are returned in 1026 response to a query operation directed at a Printer object. 1027 - Unsupported Attributes: In a create request, the client supplies 1028 a set of Operation and Job Template attributes. If any of these 1029 attributes or their values is unsupported by the Printer object, 1030 the Printer object returns the set of unsupported attributes in 1031 the response. Section 16 gives a full description of how Job 1032 Template attributes supplied by the client in a create request 1033 are processed by the Printer object and how unsupported 1034 attributes are returned to the client. Because of extensibility, 1035 any IPP object might receive a request that contains new or 1036 unknown attributes or values for which it has no support. In such 1037 cases, the IPP object processes what it can and returns the 1038 unsupported attributes in the response. 1040 Later in this section, each operation is formally defined by 1041 identifying the allowed and expected groups of attributes for each 1042 request and response. The model identifies a specific order for each 1043 group in each request or response, but the attributes within each 1044 group may be in any order, unless specified otherwise. 1046 Each attribute specification includes the attribute's name followed by 1047 the name of its attribute syntax(es) in parenthesizes. In addition, 1048 each 'integer' attribute is followed by the allowed range in 1049 parentheses, (m:n), for values of that attribute. Each 'text' or 1050 'name' attribute is followed by the maximum size in octets in 1051 parentheses, (size), for values of that attribute. For more details on 1052 attribute syntax notation, see the descriptions of these attributes 1053 syntaxes in section 4.1. 1055 Note: Document data included in the operation is not strictly an 1056 attribute, but it is treated as a special attribute group for ordering 1057 purposes. The only operations that support supplying the document 1058 data within an operation request are Print-Job and Send-Document. 1059 There are no operation responses that include document data. 1061 Expires December 30, 1998 1062 Note: Some operations are REQUIRED for IPP objects to support; the 1063 others are OPTIONAL (see section 5.2.2). Therefore, before using an 1064 OPTIONAL operation, a client SHOULD first use the REQUIRED Get- 1065 Printer-Attributes operation to query the Printer's "operations- 1066 supported" attribute in order to determine which OPTIONAL Printer and 1067 Job operations are actually supported. The client SHOULD NOT use an 1068 OPTIONAL operation that is not supported. When an IPP object receives 1069 a request to perform an operation it does not support, it returns the 1070 'server-error-operation-not-supported' status code (see section 1071 14.1.5.2). An IPP object is non-conformant if it does not support a 1072 REQUIRED operation. 1074 3.1.4 Character Set and Natural Language Operation Attributes 1076 Some Job and Printer attributes have values that are text strings and 1077 names intended for human understanding rather than machine 1078 understanding (see the 'text' and 'name' attribute syntax descriptions 1079 in section 4.1). The following sections describe two special 1080 Operation Attributes called "attributes-charset" and "attributes- 1081 natural-language". These attributes are always part of the Operation 1082 Attributes group. For most attribute groups, the order of the 1083 attributes within the group is not important. However, for these two 1084 attributes within the Operation Attributes group, the order is 1085 critical. The "attributes-charset" attribute MUST be the first 1086 attribute in the group and the "attributes-natural-language" attribute 1087 MUST be the second attribute in the group. In other words, these 1088 attributes MUST be supplied in every IPP request and response, they 1089 MUST come first in the group, and MUST come in the specified order. 1090 For job creation operations, the IPP Printer implementation saves 1091 these two attributes with the new Job object as Job Description 1092 attributes. For the sake of brevity in this document, these operation 1093 attribute descriptions are not repeated with every operation request 1094 and response, but have a reference back to this section instead. 1096 3.1.4.1 Request Operation Attributes 1098 The client MUST supply and the Printer object MUST support the 1099 following REQUIRED operation attributes in every IPP/1.0 operation 1100 request: 1102 "attributes-charset" (charset): 1103 This operation attribute identifies the charset (coded character 1104 set and encoding method) used by any 'text' and 'name' attributes 1105 that the client is supplying in this request. It also identifies 1106 the charset that the Printer object MUST use (if supported) for 1107 all 'text' and 'name' attributes and status messages that the 1109 Expires December 30, 1998 1110 Printer object returns in the response to this request. See 1111 Sections 4.1.1 and 4.1.2 for the specification of the 'text' and 1112 'name' attribute syntaxes. 1114 All IPP objects MUST support the 'utf-8' charset [RFC2044] and 1115 MAY support additional charsets provided that they are registered 1116 with IANA [IANA-CS]. If the Printer object does not support the 1117 client supplied charset value, the Printer object MUST reject the 1118 request and return the 'client-error-charset-not-supported' 1119 status code. The Printer object MUST indicate the charset(s) 1120 supported as the values of the "charset-supported" Printer 1121 attribute (see Section 4.4.15), so that the client can query to 1122 determine which charset(s) are supported. 1124 Note to client implementers: Since IPP objects are only required 1125 to support the 'utf-8' charset, in order to maximize 1126 interoperability with multiple IPP object implementations, a 1127 client may want to supply 'utf-8' in the "attributes-charset" 1128 operation attribute, even though the client is only passing and 1129 able to present a simpler charset, such as US-ASCII or ISO-8859- 1130 1. Then the client will have to filter out (or charset convert) 1131 those characters that are returned in the response that it cannot 1132 present to its user. On the other hand, if both the client and 1133 the IPP objects also support a charset in common besides utf-8, 1134 the client may want to use that charset in order to avoid charset 1135 conversion or data loss. 1137 See the 'charset' attribute syntax description in Section 4.1.7 1138 for the syntax and semantic interpretation of the values of this 1139 attribute and for example values. 1141 "attributes-natural-language" (naturalLanguage): 1142 This operation attribute identifies the natural language used by 1143 any 'text' and 'name' attributes that the client is supplying in 1144 this request. This attribute also identifies the natural 1145 language that the Printer object SHOULD use for all 'text' and 1146 'name' attributes and status messages that the Printer object 1147 returns in the response to this request. 1149 There are no REQUIRED natural languages required for the Printer 1150 object to support. However, the Printer object's "generated- 1151 natural-language-supported" attribute identifies the natural 1152 languages supported by the Printer object and any contained Job 1153 objects for all text strings generated by the IPP object. A 1154 client MAY query this attribute to determine which natural 1155 language(s) are supported for generated messages. 1157 Expires December 30, 1998 1158 For any of the attributes for which the Printer object generates 1159 text, i.e., for the "job-state-message", "printer-state-message", 1160 and status messages (see Section 3.1.6), the Printer object MUST 1161 be able to generate these text strings in any of its supported 1162 natural languages. If the client requests a natural language 1163 that is not supported, the Printer object MUST return these 1164 generated messages in the Printer's configured natural language 1165 as specified by the Printer's "natural-language-configured" 1166 attribute" (see Section 4.4.16). 1168 For other 'text' and 'name' attributes supplied by the client, 1169 authentication system, operator, system administrator, or 1170 manufacturer (i.e., for "job-originating-user-name", "printer- 1171 name" (name), "printer-location" (text), "printer-info" (text), 1172 and "printer-make-and-model" (text)), the Printer object is only 1173 required to support the configured natural language of the 1174 Printer identified by the Printer object's "natural-language- 1175 configured" attribute, though support of additional natural 1176 languages for these attributes is permitted. 1178 For any 'text' or 'name' attribute in the request that is in a 1179 different natural language than the value supplied in the 1180 "attributes-natural-language", the client MUST use the Natural 1181 Language Override mechanism (see sections 4.1.1.2 and 4.1.2.2) 1182 for each such attribute value supplied. 1184 The IPP object MUST accept any natural language and any Natural 1185 Language Override, whether the IPP object supports that natural 1186 language or not (and independent of the value of the "ipp- 1187 attribute-fidelity" Operation attribute). That is the IPP object 1188 accepts all client supplied values no matter what the values are 1189 in the Printer object's "generated-natural-language-supported" 1190 attribute. That attribute, "generated-natural-language- 1191 supported", only applies to generated messages, not client 1192 supplied messages. The IPP object MUST remember that natural 1193 language for all client-supplied attributes, and when returning 1194 those attributes in response to a query, the IPP object MUST 1195 indicate that natural language. 1197 For example, the "job-name" attribute MAY be supplied by the 1198 client in a create request. The text value for this attribute 1199 will be in the natural language identified by the "attribute- 1200 natural-language" attribute, or if different, as identified by 1201 the Natural Language Override mechanism. If supplied, the IPP 1202 object will use the value of the "job-name" attribute to populate 1203 the Job object's "job-name" attribute. Whenever any client 1204 queries the Job object's "job-name" attribute, the IPP object 1205 returns the attribute as stored and uses the Natural Language 1207 Expires December 30, 1998 1208 Override mechanism to specify the natural language, if it is 1209 different from that reported in the "attributes-natural-language" 1210 operation attribute of the response. An IPP object MUST NOT 1211 reject a request based on a supplied natural language in an 1212 "attributes-natural-language" Operation attribute or in any 1213 attribute that uses the Natural Language Override. 1215 See the 'naturalLanguage' attribute syntax description in section 1216 4.1.8 for the syntax and semantic interpretation of the values of 1217 this attribute and for example values. 1219 Clients SHOULD NOT supply 'text' or 'name' attributes that use an 1220 illegal combination of natural language and charset. For example, 1221 suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and 1222 'iso-8859-7'. Suppose also, that it supports natural languages 'en' 1223 (English), 'fr' (French), and 'el' (Greek). Although the Printer 1224 object supports the charset 'iso-8859-1' and natural language 'el', it 1225 probably does not support the combination of Greek text strings using 1226 the 'iso-8859-1' charset. The Printer object handles this apparent 1227 incompatibility differently depending on the context in which it 1228 occurs: 1230 - In a create request: If the client supplies a text or name 1231 attribute (for example, the "job-name" operation attribute) that 1232 uses an apparently incompatible combination, it is a client 1233 choice that does not affect the Printer object or its correct 1234 operation. Therefore, the Printer object simply accepts the 1235 client supplied value, stores it with the Job object, and 1236 responds back with the same combination whenever the client (or 1237 any client) queries for that attribute. 1238 -In a query-type operation, like Get-Printer-Attributes: If the 1239 client requests an apparently incompatible combination, the 1240 Printer object responds (as described in section 3.1.4.2) using 1241 the Printer's configured natural language rather than the natural 1242 language requested by the client. 1244 In either case, the Printer object does not reject the request because 1245 of the apparent incompatibility. The potential incompatible 1246 combination of charset and natural language can occur either at the 1247 global operation level or at the Natural Language Override attribute- 1248 by-attribute level. In addition, since the response always includes 1249 explicit charset and natural language information, there is never any 1250 question or ambiguity in how the client interprets the response. 1252 Expires December 30, 1998 1253 3.1.4.2 Response Operation Attributes 1255 The Printer object MUST supply and the client MUST support the 1256 following REQUIRED operation attributes in every IPP/1.0 operation 1257 response: 1259 "attributes-charset" (charset): 1260 This operation attribute identifies the charset used by any 1261 'text' and 'name' attributes that the Printer object is returning 1262 in this response. The value in this response MUST be the same 1263 value as the "attributes-charset" operation attribute supplied by 1264 the client in the request. If this is not possible (i.e., the 1265 charset requested is not supported), the request would have been 1266 rejected. See "attributes-charset" described in Section 3.1.4.1 1267 above. 1269 If the Printer object supports more than just the 'utf-8' 1270 charset, the Printer object MUST be able to code convert between 1271 each of the charsets supported on a highest fidelity possible 1272 basis in order to return the 'text' and 'name' attributes in the 1273 charset requested by the client. However, some information loss 1274 MAY occur during the charset conversion depending on the charsets 1275 involved. For example, the Printer object may convert from a 1276 UTF-8 'a' to a US-ASCII 'a' (with no loss of information), from 1277 an ISO Latin 1 CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' 1278 (losing the accent), or from a UTF-8 Japanese Kanji character to 1279 some ISO Latin 1 error character indication such as '?', decimal 1280 code equivalent, or to the absence of a character, depending on 1281 implementation. 1283 Note: Whether an implementation that supports more than one 1284 charset stores the data in the charset supplied by the client or 1285 code converts to one of the other supported charsets, depends on 1286 implementation. The strategy should try to minimize loss of 1287 information during code conversion. On each response, such an 1288 implementation converts from its internal charset to that 1289 requested. 1291 "attributes-natural-language" (naturalLanguage): 1292 This operation attribute identifies the natural language used by 1293 any 'text' and 'name' attributes that the IPP object is returning 1294 in this response. Unlike the "attributes-charset" operation 1295 attribute, the IPP object NEED NOT return the same value as that 1296 supplied by the client in the request. The IPP object MAY return 1297 the natural language of the Job object or the Printer's 1298 configured natural language as identified by the Printer object's 1299 "natural-language-configured" attribute, rather than the natural 1300 language supplied by the client. For any 'text' or 'name' 1302 Expires December 30, 1998 1303 attribute or status message in the response that is in a 1304 different natural language than the value returned in the 1305 "attributes-natural-language" operation attribute, the IPP object 1306 MUST use the Natural Language Override mechanism (see sections 1307 4.1.1.2 and 4.1.2.2) on each attribute value returned. 1309 3.1.5 Operation Targets 1311 All IPP operations are directed at IPP objects. For Printer 1312 operations, the operation is always directed at a Printer object using 1313 one of its URIs (i.e., one of the values in the Printer object's 1314 "printer-uri-supported" attribute). Even if the Printer object 1315 supports more than one URI, the client supplies only one URI as the 1316 target of the operation. The client identifies the target object by 1317 supplying the correct URI in the "printer-uri (uri)" operation 1318 attribute. 1320 For Job operations, the operation is directed at either: 1322 - The Job object itself using the Job object's URI. In this case, 1323 the client identifies the target object by supplying the correct 1324 URI in the "job-uri (uri)" operation attribute. 1325 - The Printer object that created the Job object using both the 1326 Printer objects URI and the Job object's Job ID. Since the 1327 Printer object that created the Job object generated the Job ID, 1328 it MUST be able to correctly associate the client supplied Job ID 1329 with the correct Job object. The client supplies the Printer 1330 object's URI in the "printer-uri (uri)" operation attribute and 1331 the Job object's Job ID in the "job-id (integer(1:MAX))" 1332 operation attribute. 1334 If the operation is directed at the Job object directly using the Job 1335 object's URI, the client MUST NOT include the redundant "job-id" 1336 operation attribute. 1338 The operation target attributes are REQUIRED operation attributes that 1339 MUST be included in every operation request. Like the charset and 1340 natural language attributes (see section 3.1.4), the operation target 1341 attributes are specially ordered operation attributes. In all cases, 1342 the operation target attributes immediately follow the "attributes- 1343 charset" and "attributes-natural-language" attributes within the 1344 operation attribute group, however the specific ordering rules are: 1346 - In the case where there is only one operation target attribute 1347 (i.e., either only the "printer-uri" attribute or only the "job- 1348 uri" attribute), that attribute MUST be the third attribute in 1349 the operation attributes group. 1351 Expires December 30, 1998 1353 - In the case where Job operations use two operation target 1354 attributes (i.e., the "printer-uri" and "job-id" attributes), the 1355 "printer-uri" attribute MUST be the third attribute and the "job- 1356 id" attribute MUST be the fourth attribute. 1358 In all cases, the target URIs contained within the body of IPP 1359 operation requests and responses must be in absolute format rather 1360 than relative format (a relative URL identifies a resource with the 1361 scope of the HTTP server, but does not include scheme, host or port). 1363 The following rules apply to the use of port numbers in URIs that 1364 identify IPP objects: 1366 1. If the URI scheme allows the port number to be explicitly 1367 included in the URI string, and a port number is specified within 1368 the URI, then that port number MUST be used by the client to 1369 contact the IPP object. 1371 2. If the URI scheme allows the port number to be explicitly 1372 included in the URI string, and a port number is not specified 1373 within the URI, then default port number implied by that URI 1374 scheme MUST be used by the client to contact the IPP object. 1376 3. If the URI scheme does not allow an explicit port number to be 1377 specified within the URI, then the default port number implied by 1378 that URI MUST be used by the client to contact the IPP object. 1380 Note: The IPP encoding and transport document [IPP-PRO] shows a 1381 mapping of IPP onto HTTP/1.1 and defines a new default port number for 1382 using IPP over HTTP/1.1. 1384 3.1.6 Operation Status Codes and Messages 1386 Every operation response includes a REQUIRED "status-code" parameter 1387 and an OPTIONAL "status-message" operation attribute. The "status- 1388 code" provides information on the processing of a request. A "status- 1389 message" attribute provides a short textual description of the status 1390 of the operation. The status code is intended for use by automata, 1391 and the status message is intended for the human end user. If a 1392 response does include a "status-message" attribute, an IPP client NEED 1393 NOT examine or display the message, however it SHOULD do so in some 1394 implementation specific manner. 1396 The "status-code" value is a numeric value that has semantic meaning. 1397 The "status-code" syntax is similar to a "type2 enum" (see section 4.1 1398 on "Attribute Syntaxes") except that values can range only from 0x0000 1399 to 0x7FFF. Section 14 describes the status codes, assigns the numeric 1401 Expires December 30, 1998 1402 values, and suggests a corresponding status message for each status 1403 code. The "status-message" attribute's syntax is "text(255)". 1405 A client implementation of IPP SHOULD convert status code values into 1406 any localized message that has semantic meaning to the end user. If 1407 the Printer object supports the status message, the Printer object 1408 MUST be able to generate this message in any of the natural languages 1409 identified by the Printer object's "generated-natural-language- 1410 supported" attribute (see the "attributes-natural-language" operation 1411 attribute specified in section 3.1.4.1). As described in section 1412 3.1.4.1 for any returned 'text' attribute, if there is a choice for 1413 generating this message, the Printer object uses the natural language 1414 indicated by the value of the "attributes-natural-language" in the 1415 client request if supported, otherwise the Printer object uses the 1416 value in the Printer object's own "natural-language-configured" 1417 attribute. 1419 3.1.7 Versions 1421 Each operation request and response carries with it a "version-number" 1422 parameter. Each value of the "version-number" is in the form "X.Y" 1423 where X is the major version number and Y is the minor version number. 1424 By including a version number in the client request, it allows the 1425 client to identify which version of IPP it is interested in using. 1426 If the IPP object does not support that version, the object responds 1427 with a status code of 'server-error-version-not-supported' along with 1428 the closest version number that is supported (see section 14.1.5.4). 1430 There is no version negotiation per se. However, if after receiving a 1431 'server-error-version-not-supported' status code from an IPP object, 1432 there is nothing that prevents a client from trying again with a 1433 different version number. In order to conform to IPP/1.0, an 1434 implementation MUST support at least version '1.0'. 1436 There is only one notion of "version number" that covers both IPP 1437 Model and IPP Protocol changes. Thus the version number MUST change 1438 when introducing a new version of the Model document or a new version 1439 of the Protocol document. 1441 Changes to the major version number indicate structural or syntactic 1442 changes that make it impossible for older version of IPP clients and 1443 Printer objects to correctly parse and process the new or changed 1444 attributes, operations and responses. If the major version number 1445 changes, the minor version numbers is set to zero. As an example, 1446 adding the "ipp-attribute-fidelity" attribute (if it had not been part 1447 of version '1.0'), would have required a change to the major version 1448 number. Items that might affect the changing of the major version 1450 Expires December 30, 1998 1451 number include any changes to the protocol specification itself, such 1452 as: 1454 - reordering of ordered attributes or attribute sets 1455 - changes to the syntax of existing attributes 1456 - changing Operation or Job Template attributes from OPTIONAL to 1457 REQUIRED and vice versa 1458 - adding REQUIRED (for an IPP object to support) operation 1459 attributes 1460 - adding REQUIRED (for an IPP object to support) operation 1461 attribute groups 1462 - adding values to existing operation attributes 1463 - adding REQUIRED operations 1465 Changes to the minor version number indicate the addition of new 1466 features, attributes and attribute values that may not be understood 1467 by all IPP objects, but which can be ignored if not understood. Items 1468 that might affect the changing of the minor version number include any 1469 changes to the model objects and attributes but not the encoding and 1470 transport rules [IPP-PRO] (except adding attribute syntaxes). 1471 Examples of such changes are: 1473 - grouping all extensions not included in a previous version into a 1474 new version 1475 - adding new attribute values 1476 - adding new object attributes 1477 - adding OPTIONAL (for an IPP object to support) operation 1478 attributes (i.e., those attributes that an IPP object can ignore 1479 without confusing clients) 1480 - adding OPTIONAL (for an IPP object to support) operation 1481 attribute groups (i.e., those attributes that an IPP object can 1482 ignore without confusing clients) 1483 - adding new attribute syntaxes 1484 - adding OPTIONAL operations 1485 - changing Job Description attributes or Printer Description 1486 attributes from OPTIONAL to REQUIRED or vice versa. 1488 The encoding of the "operation-id", the "version-number", the "status- 1489 code", and the "request-id" MUST NOT change over any version number 1490 (either major or minor). This rule guarantees that all future 1491 versions will be backwards compatible with all previous versions (at 1492 least for checking the "operation-id", the "version-number", and the 1493 "request-id"). In addition, any protocol elements (attributes, error 1494 codes, tags, etc.) that are not carried forward from one version to 1495 the next are deprecated so that they can never be reused with new 1496 semantics. 1498 Expires December 30, 1998 1499 Implementations that support a certain major version NEED NOT support 1500 ALL previous versions. As each new major version is defined (through 1501 the release of a new specification), that major version will specify 1502 which previous major versions MUST be supported in compliant 1503 implementations. 1505 3.1.8 Job Creation Operations 1507 In order to "submit a print job" and create a new Job object, a client 1508 issues a create request. A create request is any one of following 1509 three operation requests: 1511 - The Print-Job Request: A client that wants to submit a print job 1512 with only a single document uses the Print-Job operation. The 1513 operation allows for the client to "push" the document data to 1514 the Printer object by including the document data in the request 1515 itself. 1517 - The Print-URI Request: A client that wants to submit a print job 1518 with only a single document (where the Printer object "pulls" the 1519 document data instead of the client "pushing" the data to the 1520 Printer object) uses the Print-URI operation. In this case, the 1521 client includes in the request only a URI reference to the 1522 document data (not the document data itself). 1524 - The Create-Job Request: A client that wants to submit a print job 1525 with multiple documents uses the Create-Job operation. This 1526 operation is followed by an arbitrary number of Send-Document 1527 and/or Send-URI operations (each creating another document for 1528 the newly create Job object). The Send-Document operation 1529 includes the document data in the request (the client "pushes" 1530 the document data to the printer), and the Send-URI operation 1531 includes only a URI reference to the document data in the request 1532 (the Printer "pulls" the document data from the referenced 1533 location). The last Send-Document or Send-URI request for a 1534 given Job object includes a "last-document" operation attribute 1535 set to 'true' indicating that this is the last request. 1537 Throughout this model specification, the term "create request" is used 1538 to refer to any of these three operation requests. 1540 A Create-Job operation followed by only one Send-Document operation is 1541 semantically equivalent to a Print-Job operation, however, for 1542 performance reasons, the client SHOULD use the Print-Job operation for 1543 all single document jobs. Also, Print-Job is a REQUIRED operation 1544 (all implementations MUST support it) whereas Create-Job is an 1545 OPTIONAL operation, hence some implementations might not support it. 1547 Expires December 30, 1998 1548 Job submission time is the point in time when a client issues a create 1549 request. The initial state of every Job object is the 'pending' or 1550 'pending-held' state. Later, the Printer object begins processing the 1551 print job. At this point in time, the Job object's state moves to 1552 'processing'. This is known as job processing time. There are 1553 validation checks that must be done at job submission time and others 1554 that must be performed at job processing time. 1556 At job submission time and at the time a Validate-Job operation is 1557 received, the Printer MUST do the following: 1559 1. Process the client supplied attributes and either accept or 1560 reject the request 1561 2. Validate the syntax of and support for the scheme of any client 1562 supplied URI 1564 Section 16 describes the rules and issues surrounding the processing 1565 of client supplied attributes. Section 16.3 presents suggested steps 1566 for an IPP object to either accept or reject any request. Section 1567 16.4 presents suggested additional steps for processing create 1568 requests. 1570 At job submission time the Printer NEED NOT perform the validation 1571 checks reserved for job processing time such as: 1573 1. Validating the document data 1574 2. Validating the actual contents of any client supplied URI 1575 (resolve the reference and follow the link to the document data) 1577 At job submission time, these additional job processing time 1578 validation checks are essentially useless, since they require actually 1579 parsing and interpreting the document data, are not guaranteed to be 1580 100% accurate, and MUST be done, yet again, at job processing time. 1581 Also, in the case of a URI, checking for availability at job 1582 submission time does not guarantee availability at job processing 1583 time. In addition, at job processing time, the Printer object might 1584 discover any of the following conditions that were not detectable at 1585 job submission time: 1587 - runtime errors in the document data, 1588 - nested document data that is in an unsupported format, 1589 - the URI reference is no longer valid (i.e., the server hosting 1590 the document might be down), or 1591 - any other job processing error 1593 At job processing time, since the Printer object has already responded 1594 with a successful status code in the response to the create request, 1595 if the Printer object detects an error, the Printer object is unable 1597 Expires December 30, 1998 1598 to inform the end user of the error with an operation status code. 1599 In this case, the Printer, depending on the error, can set the "job- 1600 state", "job-state-reasons", or "job-state-message" attributes to the 1601 appropriate value(s) so that later queries can report the correct job 1602 status. 1604 Note: Asynchronous notification of events is outside the scope of 1605 IPP/1.0. 1607 3.2 Printer Operations 1609 All Printer operations are directed at Printer objects. A client MUST 1610 always supply the "printer-uri" operation attribute in order to 1611 identify the correct target of the operation. 1613 3.2.1 Print-Job Operation 1615 This REQUIRED operation allows a client to submit a print job with 1616 only one document and supply the document data (rather than just a 1617 reference to the data). See Section 16 for the suggested steps for 1618 processing create operations and their Operation and Job Template 1619 attributes. 1621 3.2.1.1 Print-Job Request 1623 The following groups of attributes are supplied as part of the Print- 1624 Job Request: 1626 Group 1: Operation Attributes 1628 Natural Language and Character Set: 1629 The "attributes-charset" and "attributes-natural-language" 1630 attributes as described in section 3.1.4.1. The Printer object 1631 MUST copy these values to the corresponding Job Description 1632 attributes described in sections 4.3.23 and 4.3.24. 1634 Target: 1635 The "printer-uri" (uri) operation attribute which is the target 1636 for this operation as described in section 3.1.5. 1638 Requesting User Name: 1639 The "requesting-user-name" (name(MAX)) attribute SHOULD be 1640 supplied by the client as described in section 8.3. 1642 Expires December 30, 1998 1644 "job-name" (name(MAX)): 1645 The client OPTIONALLY supplies this attribute. The Printer 1646 object MUST support this attribute. It contains the client 1647 supplied Job name. If this attribute is supplied by the client, 1648 its value is used for the "job-name" attribute of the newly 1649 created Job object. The client MAY automatically include any 1650 information that will help the end-user distinguish amongst 1651 his/her jobs, such as the name of the application program along 1652 with information from the document, such as the document name, 1653 document subject, or source file name. If this attribute is not 1654 supplied by the client, the Printer generates a name to use in 1655 the "job-name" attribute of the newly created Job object (see 1656 Section 4.3.5). 1658 "ipp-attribute-fidelity" (boolean): 1659 The client OPTIONALLY supplies this attribute. The Printer 1660 object MUST support this attribute. The value 'true' indicates 1661 that total fidelity to client supplied Job Template attributes 1662 and values is required, else the Printer object MUST reject the 1663 Print-Job request. The value 'false' indicates that a reasonable 1664 attempt to print the Job object is acceptable and the Printer 1665 object MUST accept the Print-job request. If not supplied, the 1666 Printer object assumes the value is 'false'. All Printer objects 1667 MUST support both types of job processing. See section 16 for a 1668 full description of "ipp-attribute-fidelity" and its relationship 1669 to other attributes, especially the Printer object's "pdl- 1670 override-supported" attribute. 1672 "document-name" (name(MAX)): 1673 The client OPTIONALLY supplies this attribute. The Printer 1674 object MUST support this attribute. It contains the client 1675 supplied document name. The document name MAY be different than 1676 the Job name. Typically, the client software automatically 1677 supplies the document name on behalf of the end user by using a 1678 file name or an application generated name. If this attribute is 1679 supplied, its value can be used in a manner defined by each 1680 implementation. Examples include: printed along with the Job 1681 (job start sheet, page adornments, etc.), used by accounting or 1682 resource tracking management tools, or even stored along with the 1683 document as a document level attribute. IPP/1.0 does not support 1684 the concept of document level attributes. 1686 "document-format" (mimeMediaType) : 1687 The client OPTIONALLY supplies this attribute. The Printer 1688 object MUST support this attribute. The value of this attribute 1689 identifies the format of the supplied document data. If the 1690 client does not supply this attribute, the Printer object assumes 1691 that the document data is in the format defined by the Printer 1693 Expires December 30, 1998 1694 object's "document-format-default" attribute. If the client 1695 supplies this attribute, but the value is not supported by the 1696 Printer object, i.e., the value is not one of the values of the 1697 Printer object's "document-format-supported" attribute, the 1698 Printer object MUST reject the request and return the 'client- 1699 error-document-format-not-supported' status code. 1701 "document-natural-language" (naturalLanguage): 1702 The client OPTIONALLY supplies this attribute. The Printer 1703 object OPTIONALLY supports this attribute. This attribute 1704 specifies the natural language of the document for those 1705 document-formats that require a specification of the natural 1706 language in order to image the document unambiguously. There are 1707 no particular values required for the Printer object to support. 1709 "compression" (type3 keyword) 1710 The client OPTIONALLY supplies this attribute. The Printer 1711 object OPTIONALLY supports this attribute and the "compression- 1712 supported" attribute (see section 4.4.29). The client supplied 1713 "compression" operation attribute identifies the compression 1714 algorithm used on the document data. If the client omits this 1715 attribute, the Printer object MUST assume that the data is not 1716 compressed. If the client supplies the attribute and the Printer 1717 object supports the attribute, the Printer object uses the 1718 corresponding decompression algorithm on the document data. If 1719 the client supplies this attribute, but the value is not 1720 supported by the Printer object, i.e., the value is not one of 1721 the values of the Printer object's "compression-supported" 1722 attribute, the Printer object MUST copy the attribute and its 1723 value to the Unsupported Attributes response group, reject the 1724 request, and return the 'client-error-attributes-or-values-not- 1725 supported' status code. 1727 "job-k-octets" (integer(0:MAX)) 1728 The client OPTIONALLY supplies this attribute. The Printer 1729 object OPTIONALLY supports this attribute and the "job-k-octets- 1730 supported" attribute (see section 4.4.30). The client supplied 1731 "job-k-octets" operation attribute identifies the total size of 1732 the document(s) in K octets being submitted (see section 4.3.17 1733 for the complete semantics). If the client supplies the 1734 attribute and the Printer object supports the attribute, the 1735 value of the attribute is used to populate the Job object's "job- 1736 k-octets" Job Description attribute. 1738 Note: For this attribute and the following two attributes ("job- 1739 impressions", and "job-media-sheets"), if the client supplies the 1740 attribute, but the Printer object does not support the attribute, 1741 the Printer object ignores the client-supplied value. If the 1743 Expires December 30, 1998 1744 client supplies the attribute and the Printer supports the 1745 attribute, and the value is within the range of the corresponding 1746 Printer object's "xxx-supported" attribute, the Printer object 1747 MUST use the value to populate the Job object's "xxx" attribute. 1748 If the client supplies the attribute and the Printer supports the 1749 attribute, but the value is outside the range of the 1750 corresponding Printer object's "xxx-supported" attribute, the 1751 Printer object MUST copy the attribute and its value to the 1752 Unsupported Attributes response group, reject the request, and 1753 return the 'client-error-attributes-or-values-not-supported' 1754 status code. If the client does not supply the attribute, the 1755 Printer object MAY choose to populate the corresponding Job 1756 object attribute depending on whether the Printer object supports 1757 the attribute and is able to calculate or discern the correct 1758 value. 1760 "job-impressions" (integer(0:MAX)) 1761 The client OPTIONALLY supplies this attribute. The Printer 1762 object OPTIONALLY supports this attribute and the "job- 1763 impressions-supported" attribute (see section 4.4.31). The 1764 client supplied "job-impressions" operation attribute identifies 1765 the total size in number of impressions of the document(s) being 1766 submitted (see section 4.3.18 for the complete semantics). 1768 See note under "job-k-octets". 1770 "job-media-sheets" (integer(0:MAX)) 1771 The client OPTIONALLY supplies this attribute. The Printer 1772 object OPTIONALLY supports this attribute and the "job-media- 1773 sheets-supported" attribute (see section 4.4.32). The client 1774 supplied "job-media-sheets" operation attribute identifies the 1775 total number of media sheets to be produced for this job (see 1776 section 4.3.19 for the complete semantics). 1778 See note under "job-k-octets". 1780 Group 2: Job Template Attributes 1782 The client OPTIONALLY supplies a set of Job Template attributes 1783 as defined in section 4.2. 1785 Group 3: Document Content 1787 The client MUST supply the document data to be processed. 1789 Note: In addition to the MANDTORY parameters required for every 1790 operation request, the simplest Print-Job Request consists of just the 1791 "attributes-charset" and "attributes-natural-language" operation 1793 Expires December 30, 1998 1794 attributes; the "printer-uri" target operation attribute; the Document 1795 Content and nothing else. In this simple case, the Printer object: 1797 - creates a new Job object (the Job object contains a single 1798 document), 1799 - stores a generated Job name in the "job-name" attribute in the 1800 natural language and charset requested (see Section 3.1.4.1) (if 1801 those are supported, otherwise using the Printer object's default 1802 natural language and charset), and 1803 - at job processing time, uses its corresponding default value 1804 attributes for the supported Job Template attributes that were 1805 not supplied by the client as IPP attribute or embedded 1806 instructions in the document data. 1808 3.2.1.2 Print-Job Response 1810 The Printer object MUST return to the client the following sets of 1811 attributes as part of the Print-Job Response: 1813 Group 1: Operation Attributes 1815 Status Message: 1816 In addition to the REQUIRED status code returned in every 1817 response, the response OPTIONALLY includes a "status-message" 1818 (text) operation attribute as described in section 3.1.6. If the 1819 client supplies unsupported or conflicting Job Template 1820 attributes or values, the Printer object MUST reject or accept 1821 the Print-Job request depending on the whether the client 1822 supplied a 'true' or 'false' value for the "ipp-attribute- 1823 fidelity" operation attribute. See section 16 for a complete 1824 description of the suggested steps for processing a create 1825 request. 1827 Natural Language and Character Set: 1828 The "attributes-charset" and "attributes-natural-language" 1829 attributes as described in section 3.1.4.2. 1831 Group 2: Unsupported Attributes 1833 This is a set of Operation and Job Template attributes supplied 1834 by the client (in the request) that are not supported by the 1835 Printer object or that conflict with one another (see sections 1836 16.3 and 16.4). 1838 Unsupported attributes fall into three categories: 1840 Expires December 30, 1998 1841 1. The Printer object does not support the named attribute (no 1842 matter what the value). 1843 2. The Printer object does support the attribute, but does not 1844 support some or all of the particular values supplied by the 1845 client (i.e., the Printer object does not have those values 1846 in the corresponding supported values attribute). 1847 3. The Printer object does support the attributes and values 1848 supplied, but the particular values are in conflict with one 1849 another, because they violate a constraint, such as not 1850 being able to staple transparencies. 1852 In the case of an unsupported attribute name, the Printer object 1853 returns the client-supplied attribute with a substituted "out-of- 1854 band" value of 'unsupported' indicating no support for the 1855 attribute itself (see the beginning of section 4.1). 1857 In the case of a supported attribute with one or more unsupported 1858 values, the Printer object simply returns the client-supplied 1859 attribute with the unsupported values as supplied by the client. 1860 This indicates support for the attribute, but no support for that 1861 particular value. If the client supplies a multi-valued attribute 1862 with more than one value and the Printer object supports the 1863 attribute but only supports a subset of the client supplied 1864 values, the Printer object MUST return only those values that are 1865 unsupported. 1867 In the case of two (or more) supported attribute values that are 1868 in conflict with one another (although each is supported 1869 independently, the values conflict when requested together within 1870 the same job), the Printer object MUST return all the values that 1871 it ignores or substitutes to resolve the conflict, but not any of 1872 the values that it is still using. The choice for exactly how to 1873 resolve the conflict is implementation dependent. See Section 1874 16.4.4 for an example. 1876 In these three cases, the value of the "ipp-attribute-fidelity" 1877 supplied by the client does not affect what the Printer object 1878 returns. The value of "ipp-attribute-fidelity" only affects 1879 whether the Print-Job operation is accepted or rejected. If the 1880 job is accepted, the client may query the job using the Get-Job- 1881 Attributes operation requesting the unsupported attributes that 1882 were returned in the create response to see which attributes were 1883 ignored (not stored on the Job object) and which attributes were 1884 stored with other (substituted) values. 1886 Group 3: Job Object Attributes 1888 Expires December 30, 1998 1889 "job-uri" (uri): 1890 The Printer object MUST return the Job object's URI by returning 1891 the contents of the REQUIRED "job-uri" Job object attribute. The 1892 client uses the Job object's URI when directing operations at the 1893 Job object. The Printer object always uses its configured 1894 security policy when creating the new URI. However, if the 1895 Printer object supports more than one URI, the Printer object 1896 also uses information about which URI was used in the Print-Job 1897 Request to generated the new URI so that the new URI references 1898 the correct access channel. In other words, if the Print-Job 1899 Request comes in over a secure channel, the Printer object MUST 1900 generate a Job URI that uses the secure channel as well. 1902 "job-id" (integer(1:MAX)): 1903 The Printer object MUST return the Job object's Job ID by 1904 returning the REQUIRED "job-id" Job object attribute. The 1905 client uses this "job-id" attribute in conjunction with the 1906 "printer-uri" attribute used in the Print-Job Request when 1907 directing Job operations at the Printer object. 1909 "job-state": 1910 The Printer object MUST return the Job object's REQUIRED "job- 1911 state" attribute. The value of this attribute (along with the 1912 value of the next attribute "job-state-reasons") is taken from a 1913 "snapshot" of the new Job object at some meaningful point in time 1914 (implementation defined) between when the Printer object receives 1915 the Print-Job Request and when the Printer object returns the 1916 response. 1918 "job-state-reasons": 1919 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1920 "job-state-reasons" attribute. If the Printer object supports 1921 this attribute then it MUST be returned in the response. If this 1922 attribute is not returned in the response, the client can assume 1923 that the "job-state-reasons" attribute is not supported and will 1924 not be returned in a subsequent Job object query. 1926 "job-state-message": 1927 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1928 "job-state-message" attribute. If the Printer object supports 1929 this attribute then it MUST be returned in the response. If this 1930 attribute is not returned in the response, the client can assume 1931 that the "job-state-message" attribute is not supported and will 1932 not be returned in a subsequent Job object query. 1934 "number-of-intervening-jobs": 1935 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1936 "number-of-intervening-jobs" attribute. If the Printer object 1938 Expires December 30, 1998 1939 supports this attribute then it MUST be returned in the response. 1940 If this attribute is not returned in the response, the client can 1941 assume that the "number-of-intervening-jobs" attribute is not 1942 supported and will not be returned in a subsequent Job object 1943 query. 1945 Note: Since any printer state information which affects a job's 1946 state is reflected in the "job-state" and "job-state-reasons" 1947 attributes, it is sufficient to return only these attributes and 1948 no specific printer status attributes. 1950 Note: In addition to the MANDTORY parameters required for every 1951 operation response, the simplest response consists of the just the 1952 "attributes-charset" and "attributes-natural-language" operation 1953 attributes and the "job-uri", "job-id", and "job-state" Job Object 1954 Attributes. In this simplest case, the status code is "successful-ok" 1955 and there is no "status-message" operation attribute. 1957 3.2.2 Print-URI Operation 1959 This OPTIONAL operation is identical to the Print-Job operation 1960 (section 3.2.1) except that a client supplies a URI reference to the 1961 document data using the "document-uri" (uri) operation attribute (in 1962 Group 1) rather than including the document data itself. Before 1963 returning the response, the Printer MUST validate that the Printer 1964 supports the retrieval method (e.g., http, ftp, etc.) implied by the 1965 URI, and MUST check for valid URI syntax. If the client-supplied URI 1966 scheme is not supported, i.e. the value is not in the Printer object's 1967 "referenced-uri-scheme-supported" attribute, the Printer object MUST 1968 reject the request and return the 'client-error-uri-scheme-not- 1969 supported' status code. See Section 16.3.5 for suggested additional 1970 checks. The Printer NEED NOT follow the reference and validate the 1971 contents of the reference. 1973 If the Printer object supports this operation, it MUST support the 1974 "reference-uri-schemes-supported" Printer attribute (see section 1975 4.4.24). 1977 It is up to the IPP object to interpret the URI and subsequently 1978 "pull" the document from the source referenced by the URI string. 1980 3.2.3 Validate-Job Operation 1982 This REQUIRED operation is similar to the Print-Job operation (section 1983 3.2.1) except that a client supplies no document data and the Printer 1984 allocates no resources (i.e., it does not create a new Job object). 1986 Expires December 30, 1998 1987 This operation is used only to verify capabilities of a printer object 1988 against whatever attributes are supplied by the client in the 1989 Validate-Job request. By using the Validate-Job operation a client 1990 can validate that an identical Print-Job operation (with the document 1991 data) would be accepted. The Validate-Job operation also performs the 1992 same security negotiation as the Print-Job operation (see section 8), 1993 so that a client can check that the client and Printer object security 1994 requirements can be met before performing a Print-Job operation. 1996 Note: The Validate-Job operation does not accept a "document-uri" 1997 attribute in order to allow a client to check that the same Print-URI 1998 operation will be accepted, since the client doesn't send the data 1999 with the Print-URI operation. The client SHOULD just issue the Print- 2000 URI request. 2002 The Printer object returns the same status codes, Operation Attributes 2003 (Group 1) and Unsupported Attributes (Group 2) as the Print-Job 2004 operation. However, no Job Object Attributes (Group 3) are returned, 2005 since no Job object is created. 2007 3.2.4 Create-Job Operation 2009 This OPTIONAL operation is similar to the Print-Job operation (section 2010 3.2.1) except that in the Create-Job request, a client does not supply 2011 document data or any reference to document data. Also, the client 2012 does not supply any of the "document-name", "document-format", 2013 "compression", or "document-natural-language" operation attributes. 2014 This operation is followed by one or more Send-Document or Send-URI 2015 operations. In each of those operation requests, the client 2016 OPTIONALLY supplies the "document-name", "document-format", and 2017 "document-natural-language" attributes for each document in the multi- 2018 document Job object. If a Printer object supports the Create-Job 2019 operation, it MUST also support the Send-Document operation and also 2020 MAY support the Send-URI operation. 2022 3.2.5 Get-Printer-Attributes Operation 2024 This REQUIRED operation allows a client to request the values of the 2025 attributes of a Printer object. In the request, the client supplies 2026 the set of Printer attribute names and/or attribute group names in 2027 which the requester is interested. In the response, the Printer 2028 object returns a corresponding attribute set with the appropriate 2029 attribute values filled in. 2031 For Printer objects, the possible names of attribute groups are: 2033 Expires December 30, 1998 2034 - 'job-template': all of the Job Template attributes that apply to 2035 a Printer object (the last two columns of the table in Section 2036 4.2). 2037 - 'printer-description': the attributes specified in Section 4.4. 2038 - 'all': the special group 'all' that includes all supported 2039 attributes. 2041 Since a client MAY request specific attributes or named groups, there 2042 is a potential that there is some overlap. For example, if a client 2043 requests, 'printer-name' and 'all', the client is actually requesting 2044 the "printer-name" attribute twice: once by naming it explicitly, and 2045 once by inclusion in the 'all' group. In such cases, the Printer 2046 object NEED NOT return each attribute only once in the response even 2047 if it is requested multiple times. The client SHOULD NOT request the 2048 same attribute in multiple ways. 2050 It is NOT REQUIRED that a Printer object support all attributes 2051 belonging to a group (since some attributes are OPTIONAL). However, 2052 it is REQUIRED that each Printer object support all group names. 2054 3.2.5.1 Get-Printer-Attributes Request 2056 The following sets of attributes are part of the Get-Printer- 2057 Attributes Request: 2059 Group 1: Operation Attributes 2061 Natural Language and Character Set: 2062 The "attributes-charset" and "attributes-natural-language" 2063 attributes as described in section 3.1.4.1. 2065 Target: 2066 The "printer-uri" (uri) operation attribute which is the target 2067 for this operation as described in section 3.1.5. 2069 Requesting User Name: 2070 The "requesting-user-name" (name(MAX)) attribute SHOULD be 2071 supplied by the client as described in section 8.3. 2073 "requested-attributes" (1setOf keyword) : 2074 The client OPTIONALLY supplies a set of attribute names and/or 2075 attribute group names in whose values the requester is 2076 interested. The Printer object MUST support this attribute. If 2077 the client omits this attribute, the Printer MUST respond as if 2078 this attribute had been supplied with a value of 'all'. 2080 Expires December 30, 1998 2082 "document-format" (mimeMediaType) : 2083 The client OPTIONALLY supplies this attribute. The Printer 2084 object MUST support this attribute. This attribute is useful for 2085 a Printer object to determine the set of supported attribute 2086 values that relate to the requested document format. The Printer 2087 object MUST return the attributes and values that it uses to 2088 validate a job on a create or Validate-Job operation in which 2089 this document format is supplied. The Printer object SHOULD 2090 return only (1) those attributes that are supported for the 2091 specified format and (2) the attribute values that are supported 2092 for the specified document format. By specifying the document 2093 format, the client can get the Printer object to eliminate the 2094 attributes and values that are not supported for a specific 2095 document format. For example, a Printer object might have 2096 multiple interpreters to support both 'application/postscript' 2097 (for PostScript) and 'text/plain' (for text) documents. However, 2098 for only one of those interpreters might the Printer object be 2099 able to support "number-up" with values of '1', '2', and '4'. 2100 For the other interpreter it might be able to only support 2101 "number-up" with a value of '1'. Thus a client can use the Get- 2102 Printer-Attributes operation to obtain the attributes and values 2103 that will be used to accept/reject a create job operation. 2105 If the Printer object does not distinguish between different sets 2106 of supported values for each different document format when 2107 validating jobs in the create and Validate-Job operations, it 2108 MUST NOT distinguish between different document formats in the 2109 Get-Printer-Attributes operation. If the Printer object does 2110 distinguish between different sets of supported values for each 2111 different document format specified by the client, this 2112 specialization applies only to the following Printer object 2113 attributes: 2115 - Printer attributes that are Job Template attributes ("xxx- 2116 default" "xxx-supported", and "xxx-ready" in the Table in 2117 Section 4.2), 2118 - "pdl-override-supported", 2119 - "compression-supported", 2120 - "job-k-octets-supported", 2121 - "job-impressions-supported, 2122 - "job-media-sheets-supported" 2123 - "printer-driver-installer", 2124 - "color-supported", and 2125 - "reference-uri-schemes-supported" 2127 The values of all other Printer object attributes (including 2128 "document-format-supported") remain invariant with respect to the 2130 Expires December 30, 1998 2131 client supplied document format (except for new Printer 2132 description attribute as registered according to section 6.2). 2134 If the client omits this "document-format" operation attribute, 2135 the Printer object MUST respond as if the attribute had been 2136 supplied with the value of the Printer object's "document-format- 2137 default" attribute. It is recommended that the client always 2138 supply a value for "document-format", since the Printer object's 2139 "document-format-default" may be 'application/octet-stream', in 2140 which case the returned attributes and values are for the union 2141 of the document formats that the Printer can automatically sense. 2142 For more details, see the description of the 'mimeMediaType' 2143 attribute syntax in section 4.1.9. 2145 If the client supplies a value for the "document-format" 2146 Operation attribute that is not supported by the Printer, i.e., 2147 is not among the values of the Printer object's "document-format- 2148 supported" attribute, the Printer object MUST reject the 2149 operation and return the 'client-error-document-format-not- 2150 supported' status code. 2152 3.2.5.2 Get-Printer-Attributes Response 2154 The Printer object returns the following sets of attributes as part of 2155 the Get-Printer-Attributes Response: 2157 Group 1: Operation Attributes 2159 Status Message: 2160 In addition to the REQUIRED status code returned in every 2161 response, the response OPTIONALLY includes a "status-message" 2162 (text) operation attribute as described in section 3.1.5. 2164 Natural Language and Character Set: 2165 The "attributes-charset" and "attributes-natural-language" 2166 attributes as described in section 3.1.4.2. 2168 Group 2: Unsupported Attributes 2170 This is a set of Operation attributes supplied by the client (in 2171 the request) that are not supported by the Printer object or that 2172 conflict with one another (see sections 3.2.1.2 and 16). 2174 Group 3: Printer Object Attributes 2176 This is the set of requested attributes and their current values. 2177 The Printer object ignores (does not respond with) any requested 2179 Expires December 30, 1998 2180 attribute which is not supported. The Printer object MAY respond 2181 with a subset of the supported attributes and values, depending 2182 on the security policy in force. However, the Printer object 2183 MUST respond with the 'unknown' value for any supported attribute 2184 (including all REQUIRED attributes) for which the Printer object 2185 does not know the value. Also the Printer object MUST respond 2186 with the 'no-value' for any supported attribute (including all 2187 REQUIRED attributes) for which the system administrator has not 2188 configured a value. See the description of the "out-of-band" 2189 values in the beginning of Section 4.1. 2191 3.2.6 Get-Jobs Operation 2193 This REQUIRED operation allows a client to retrieve the list of Job 2194 objects belonging to the target Printer object. The client may also 2195 supply a list of Job attribute names and/or attribute group names. A 2196 group of Job object attributes will be returned for each Job object 2197 that is returned. 2199 This operation is similar to the Get-Job-Attributes operation, except 2200 that this Get-Jobs operation returns attributes from possibly more 2201 than one object (see the description of Job attribute group names in 2202 section 3.3.4). 2204 3.2.6.1 Get-Jobs Request 2206 The client submits the Get-Jobs request to a Printer object. 2208 The following groups of attributes are part of the Get-Jobs Request: 2210 Group 1: Operation Attributes 2212 Natural Language and Character Set: 2213 The "attributes-charset" and "attributes-natural-language" 2214 attributes as described in section 3.1.4.1. 2216 Target: 2217 The "printer-uri" (uri) operation attribute which is the target 2218 for this operation as described in section 3.1.5. 2220 Requesting User Name: 2221 The "requesting-user-name" (name(MAX)) attribute SHOULD be 2222 supplied by the client as described in section 8.3. 2224 Expires December 30, 1998 2226 "limit" (integer(1:MAX)): 2227 The client OPTIONALLY supplies this attribute. The Printer 2228 object MUST support this attribute. It is an integer value that 2229 indicates a limit to the number of Job objects returned. The 2230 limit is a "stateless limit" in that if the value supplied by the 2231 client is 'N', then only the first 'N' jobs are returned in the 2232 Get-Jobs Response. There is no mechanism to allow for the next 2233 'M' jobs after the first 'N' jobs. If the client does not supply 2234 this attribute, the Printer object responds with all applicable 2235 jobs. 2237 "requested-attributes" (1setOf keyword): 2238 The client OPTIONALLY supplies this attribute. The Printer 2239 object MUST support this attribute. It is a set of Job attribute 2240 names and/or attribute groups names in whose values the requester 2241 is interested. This set of attributes is returned for each Job 2242 object that is returned. The allowed attribute group names are 2243 the same as those defined in the Get-Job-Attributes operation in 2244 section 3.3.4. If the client does not supply this attribute, the 2245 Printer MUST respond as if the client had supplied this attribute 2246 with two values: 'job-uri' and 'job-id'. 2248 "which-jobs" (keyword): 2249 The client OPTIONALLY supplies this attribute. The Printer 2250 object MUST support this attribute. It indicates which Job 2251 objects MUST be returned by the Printer object. The values for 2252 this attribute are: 2254 'completed': This includes any Job object whose state is 2255 'completed', 'canceled', or 'aborted'. 2256 'not-completed': This includes any Job object whose state is 2257 'pending', 'processing', 'processing-stopped', or 'pending- 2258 held'. 2260 A Printer object MUST support both values. However, if the 2261 implementation does not keep jobs in the 'completed', 'canceled', 2262 and 'aborted' states, then it returns no jobs when the 2263 'completed' value is supplied. 2265 If a client supplies some other value, the Printer object MUST 2266 copy the attribute and the unsupported value to the Unsupported 2267 Attributes response group, reject the request, and return the 2268 'client-error-attributes-or-values-not-supported' status code. 2270 If the client does not supply this attribute, the Printer object 2271 MUST respond as if the client had supplied the attribute with a 2272 value of 'not-completed'. 2274 Expires December 30, 1998 2276 "my-jobs" (boolean): 2277 The client OPTIONALLY supplies this attribute. The Printer 2278 object MUST support this attribute. It indicates whether all 2279 jobs or just the jobs submitted by the requesting user of this 2280 request MUST be returned by the Printer object. If the client 2281 does not supply this attribute, the Printer object MUST respond 2282 as if the client had supplied the attribute with a value of 2283 'false', i.e., all jobs. The means for authenticating the 2284 requesting user and matching the jobs is described in section 8. 2286 3.2.6.2 Get-Jobs Response 2288 The Printer object returns all of the Job objects that match the 2289 criteria as defined by the attribute values supplied by the client in 2290 the request. It is possible that no Job objects are returned since 2291 there may literally be no Job objects at the Printer, or there may be 2292 no Job objects that match the criteria supplied by the client. If the 2293 client requests any Job attributes at all, there is a set of Job 2294 Object Attributes returned for each Job object. 2296 Group 1: Operation Attributes 2298 Status Message: 2299 In addition to the REQUIRED status code returned in every 2300 response, the response OPTIONALLY includes a "status-message" 2301 (text) operation attribute as described in section 3.1.5. 2303 Natural Language and Character Set: 2304 The "attributes-charset" and "attributes-natural-language" 2305 attributes as described in section 3.1.4.2. 2307 Group 2: Unsupported Attributes 2309 This is a set of Operation attributes supplied by the client (in 2310 the request) that are not supported by the Printer object or that 2311 conflict with one another (see sections 3.2.1.2 and 16.3). 2313 Groups 3 to N: Job Object Attributes 2315 The Printer object responds with one set of Job Object Attributes 2316 for each returned Job object. The Printer object ignores (does 2317 not respond with) any requested attribute or value which is not 2318 supported or which is restricted by the security policy in force, 2319 including whether the requesting user is the user that submitted 2320 the job (job originating user) or not (see section 8). However, 2321 the Printer object MUST respond with the 'unknown' value for any 2322 supported attribute (including all REQUIRED attributes) for which 2323 the Printer object does not know the value, unless it would 2325 Expires December 30, 1998 2326 violate the security policy. See the description of the "out-of- 2327 band" values in the beginning of Section 4.1. 2329 For any job submitted in a different natural language than the 2330 natural language that the Printer object is returning in the 2331 "attributes-natural-language" operation attribute in the Get-Jobs 2332 response, the Printer MUST indicate the submitted natural 2333 language by returning the Job object's "attributes-natural- 2334 language" as the first Job object attribute, which overrides the 2335 "attributes-natural-language" operation attribute value being 2336 returned by the Printer object. If any returned 'text' or 'name' 2337 attribute includes a Natural Language Override as described in 2338 the sections 4.1.1.2 and 4.1.2.2, the Natural Language Override 2339 overrides the Job object's "attributes-natural-language" value 2340 and/or the "attributes-natural-language" operation attribute 2341 value. 2343 Jobs are returned in the following order: 2345 - If the client requests all 'completed' Jobs (Jobs in the 2346 'completed', 'aborted', or 'canceled' states), then the Jobs 2347 are returned newest to oldest (with respect to actual 2348 completion time) 2349 - If the client requests all 'not-completed' Jobs (Jobs in the 2350 'pending', 'processing', 'pending-held', and 'processing- 2351 stopped' states), then Jobs are returned in relative 2352 chronological order of expected time to complete (based on 2353 whatever scheduling algorithm is configured for the Printer 2354 object). 2356 3.3 Job Operations 2358 All Job operations are directed at Job objects. A client MUST always 2359 supply some means of identifying the Job object in order to identify 2360 the correct target of the operation. That job identification MAY 2361 either be a single Job URI or a combination of a Printer URI with a 2362 Job ID. The IPP object implementation MUST support both forms of 2363 identification for every job. 2365 3.3.1 Send-Document Operation 2367 This OPTIONAL operation allows a client to create a multi-document Job 2368 object that is initially "empty" (contains no documents). In the 2369 Create-Job response, the Printer object returns the Job object's URI 2370 (the "job-uri" attribute) and the Job object's 32-bit identifier (the 2371 "job-id" attribute). For each new document that the client desires to 2373 Expires December 30, 1998 2374 add, the client uses a Send-Document operation. Each Send-Document 2375 Request contains the entire stream of document data for one document. 2377 Since the Create-Job and the send operations (Send-Document or Send- 2378 URI operations) that follow can occur over arbitrarily long periods of 2379 time, each Printer object must decide how long to "wait" for the next 2380 send operation. The Printer object OPTIONALLY supports the "multiple- 2381 operation-timeout" attribute. This attribute indicates the maximum 2382 number of seconds the Printer object will wait for the next send 2383 operation. If the Printer object times-out waiting for the next send 2384 operation, the Printer object MAY decide on any of the following 2385 semantic actions: 2387 1. Assume that the Job is an invalid job, start the process of 2388 changing the job state to 'aborted', and clean up all resources 2389 associated with the Job. In this case, if another send operation 2390 is finally received, the Printer responds with an "client-error- 2391 not-possible" or "client-error-not-found" depending on whether or 2392 not the Job object is still around when it finally arrives. 2393 2. Assume that the last send operation received was in fact the 2394 last document (as if the "last-document" flag had been set to 2395 'true'), close the Job object, and proceed to process it (i.e., 2396 move the Job's state to 'pending'). 2397 3. Assume that the last send operation received was in fact the 2398 last document, close the Job, but move it to the 'pending-held' 2399 to allow an operator to determine whether or not to continue 2400 processing the Job by moving it back to the 'pending' state. 2402 Each implementation is free to decide the "best" action to take 2403 depending on local policy, the value of "ipp-attribute-fidelity", 2404 and/or any other piece of information available to it. If the choice 2405 is to abort the Job object, it is possible that the Job object may 2406 already have been processed to the point that some media sheet pages 2407 have been printed. 2409 3.3.1.1 Send-Document Request 2411 The following attribute sets are part of the Send-Document Request: 2413 Group 1: Operation Attributes 2415 Natural Language and Character Set: 2416 The "attributes-charset" and "attributes-natural-language" 2417 attributes as described in section 3.1.4.1. 2419 Expires December 30, 1998 2421 Target: 2422 Either (1) the "printer-uri" (uri) plus "job-id" 2423 (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) 2424 which define the target for this operation as described in 2425 section 3.1.5. 2427 Requesting User Name: 2428 The "requesting-user-name" (name(MAX)) attribute SHOULD be 2429 supplied by the client as described in section 8.3. 2431 "document-name" (name(MAX)): 2432 The client OPTIONALLY supplies this attribute. The Printer 2433 object MUST support this attribute. It contains the client 2434 supplied document name. The document name MAY be different than 2435 the Job name. It might be helpful, but NEED NOT be unique across 2436 multiple documents in the same Job. Typically, the client 2437 software automatically supplies the document name on behalf of 2438 the end user by using a file name or an application generated 2439 name. See the description of the "document-name" operation 2440 attribute in the Print-Job Request (section 3.2.1.1) for more 2441 information about this attribute. 2443 "document-format" (mimeMediaType) : 2444 The client OPTIONALLY supplies this attribute. The Printer 2445 object MUST support this attribute. The value of this attribute 2446 identifies the format of the supplied document data. If the 2447 client does not supply this attribute, the Printer object assumes 2448 that the document data is in the format defined by the Printer 2449 object's "document-format-default" attribute. If the client 2450 supplies this attribute, but the value is not supported by the 2451 Printer object, i.e., the value is not one of the values of the 2452 Printer object's "document-format-supported" attribute, the 2453 Printer object MUST reject the request and return the 'client- 2454 error-document-format-not-supported' status code. 2456 "document-natural-language" (naturalLanguage): 2457 The client OPTIONALLY supplies this attribute. The Printer 2458 object OPTIONALLY supports this attribute. This attribute 2459 specifies the natural language of the document for those 2460 document-formats that require a specification of the natural 2461 language in order to image the document unambiguously. There are 2462 no particular values required for the Printer object to support. 2464 "compression" (type3 keyword) 2465 The client OPTIONALLY supplies this attribute. The Printer 2466 object OPTIONALLY supports this attribute and the "compression- 2467 supported" attribute (see section 4.4.29). The client supplied 2468 "compression" operation attribute identifies the compression 2470 Expires December 30, 1998 2471 algorithm used on the document data. If the client omits this 2472 attribute, the Printer object MUST assume that the data is not 2473 compressed. If the client supplies the attribute and the Printer 2474 object supports the attribute, the Printer object MUST use the 2475 corresponding decompression algorithm on the document data. If 2476 the client supplies this attribute, but the value is not 2477 supported by the Printer object, i.e., the value is not one of 2478 the values of the Printer object's "compression-supported" 2479 attribute, the Printer object MUST copy the attribute and its 2480 value to the Unsupported Attributes response group, reject the 2481 request, and return the 'client-error-attributes-or-values-not- 2482 supported' status code. 2484 "last-document" (boolean): 2485 The client MUST supply this attribute. The Printer object MUST 2486 support this attribute. It is a boolean flag that is set to 2487 'true' if this is the last document for the Job, 'false' 2488 otherwise. 2490 Group 2: Document Content 2492 The client MUST supply the document data if the "last-document" 2493 flag is set to 'false'. However, since a client might not know 2494 that the previous document sent with a Send-Document (or Send- 2495 URI) operation was the last document (i.e., the "last-document" 2496 attribute was set to 'false'), it is legal to send a Send- 2497 Document request with no document data where the "last-document" 2498 flag is set to 'true'. Such a request MUST NOT increment the 2499 value of the Job object's "number-of-documents" attribute, since 2500 no real document was added to the job. 2502 3.3.1.2 Send-Document Response 2504 The following sets of attributes are part of the Send-Document 2505 Response: 2507 Group 1: Operation Attributes 2509 Status Message: 2510 In addition to the REQUIRED status code returned in every 2511 response, the response OPTIONALLY includes a "status-message" 2512 (text) operation attribute as described in section 3.1.5. 2514 Natural Language and Character Set: 2515 The "attributes-charset" and "attributes-natural-language" 2516 attributes as described in section 3.1.4.2. 2518 Group 2: Unsupported Attributes 2520 Expires December 30, 1998 2521 This is a set of Operation attributes supplied by the client (in 2522 the request) that are not supported by the Printer object or that 2523 conflict with one another (see sections 3.2.1.2 and 16.3). 2525 Group 3: Job Object Attributes 2527 This is the same set of attributes as described in the Print-Job 2528 response (see section 3.2.1.2). 2530 3.3.2 Send-URI Operation 2532 This OPTIONAL operation is identical to the Send-Document operation 2533 (see section 3.3.1) except that a client MUST supply a URI reference 2534 ("document-uri" operation attribute) rather than the document data 2535 itself. If a Printer object supports this operation, clients can use 2536 both Send-URI or Send-Document operations to add new documents to an 2537 existing multi-document Job object. However, if a client needs to 2538 indicate that the previous Send-URI or Send-Document was the last 2539 document, the client MUST use the Send-Document operation with no 2540 document data and the "last-document" flag set to 'true' (rather than 2541 using a Send-URI operation with no "document-uri" operation 2542 attribute). If a Printer object supports this operation, it MUST also 2543 support the Print-URI operation (see section 3.2.2). 2545 The Printer object MUST validate the syntax and URI scheme of the 2546 supplied URI before returning a response, just as in the Print-URI 2547 operation. 2549 3.3.3 Cancel-Job Operation 2551 This REQUIRED operation allows a client to cancel a Print Job any time 2552 after a create job operation. Since a Job might already be printing 2553 by the time a Cancel-Job is received, some media sheet pages might be 2554 printed before the job is actually terminated. 2556 3.3.3.1 Cancel-Job Request 2558 The following groups of attributes are part of the Cancel-Job Request: 2560 Group 1: Operation Attributes 2562 Natural Language and Character Set: 2563 The "attributes-charset" and "attributes-natural-language" 2564 attributes as described in section 3.1.4.1. 2566 Expires December 30, 1998 2568 Target: 2569 Either (1) the "printer-uri" (uri) plus "job-id" 2570 (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) 2571 which define the target for this operation as described in 2572 section 3.1.5. 2574 Requesting User Name: 2575 The "requesting-user-name" (name(MAX)) attribute SHOULD be 2576 supplied by the client as described in section 8.3. 2578 "message" (text(127)): 2579 The client OPTIONALLY supplies this attribute. The Printer 2580 object OPTIONALLY supports this attribute. It is a message to the 2581 operator. This "message" attribute is not the same as the "job- 2582 message-from-operator" attribute. That attribute is used to 2583 report a message from the operator to the end user that queries 2584 that attribute. This "message" operation attribute is used to 2585 send a message from the client to the operator along with the 2586 operation request. It is an implementation decision of how or 2587 where to display this message to the operator (if at all). 2589 3.3.3.2 Cancel-Job Response 2591 The following sets of attributes are part of the Cancel-Job Response: 2593 Group 1: Operation Attributes 2595 Status Message: 2596 In addition to the REQUIRED status code returned in every 2597 response, the response OPTIONALLY includes a "status-message" 2598 (text) operation attribute as described in section 3.1.5. 2600 If the job is already in the 'completed', 'aborted', or 2601 'canceled' state, or the 'process-to-stop-point' value is set in 2602 the Job's "job-state-reasons" attribute, the Printer object MUST 2603 reject the request and return the 'client-error-not-possible' 2604 error status code. 2606 Natural Language and Character Set: 2607 The "attributes-charset" and "attributes-natural-language" 2608 attributes as described in section 3.1.4.2. 2610 Group 2: Unsupported Attributes 2612 This is a set of Operation attributes supplied by the client (in 2613 the request) that are not supported by the Printer object or that 2614 conflict with one another (see sections 3.2.1.2 and 16.3). 2616 Expires December 30, 1998 2618 Once a successful response has been sent, the implementation 2619 guarantees that the Job will eventually end up in the 'canceled' 2620 state. Between the time of the Cancel-Job operation is accepted and 2621 when the job enters the 'canceled' job-state (see section 4.3.7), the 2622 "job-state-reasons" attribute SHOULD contain the ' processing-to-stop- 2623 point ' value which indicates to later queries that although the Job 2624 might still be 'processing', it will eventually end up in the 2625 'canceled' state, not the 'completed' state. 2627 3.3.4 Get-Job-Attributes Operation 2629 This REQUIRED operation allows a client to request the values of 2630 attributes of a Job object and it is almost identical to the Get- 2631 Printer-Attributes operation (see section 3.2.5). The only 2632 differences are that the operation is directed at a Job object rather 2633 than a Printer object, there is no "document-format" operation 2634 attribute used when querying a Job object, and the returned attribute 2635 group is a set of Job object attributes rather than a set of Printer 2636 object attributes. 2638 For Jobs, the possible names of attribute groups are: 2640 - 'job-template': all of the Job Template attributes that apply to 2641 a Job object (the first column of the table in Section 4.2). 2642 - 'job-description': all of the Job Description attributes 2643 specified in Section 4.3. 2644 - 'all': the special group 'all' that includes all supported 2645 attributes. 2647 Since a client MAY request specific attributes or named groups, there 2648 is a potential that there is some overlap. For example, if a client 2649 requests, 'job-name' and 'job-description', the client is actually 2650 requesting the "job-name" attribute once by naming it explicitly, and 2651 once by inclusion in the 'job-description' group. In such cases, the 2652 Printer object NEED NOT return the attribute only once in the response 2653 even if it is requested multiple times. The client SHOULD NOT request 2654 the same attribute in multiple ways. 2656 It is NOT REQUIRED that a Job object support all attributes belonging 2657 to a group (since some attributes are OPTIONAL). However it is 2658 REQUIRED that each Job object support all group names. 2660 Expires December 30, 1998 2661 3.3.4.1 Get-Job-Attributes Request 2663 The following groups of attributes are part of the Get-Job-Attributes 2664 Request when the request is directed at a Job object: 2666 Group 1: Operation Attributes 2668 Natural Language and Character Set: 2669 The "attributes-charset" and "attributes-natural-language" 2670 attributes as described in section 3.1.4.1. 2672 Target: 2673 Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) 2674 or (2) the "job-uri" (uri) operation attribute(s) which define 2675 the target for this operation as described in section 3.1.5. 2677 Requesting User Name: 2678 The "requesting-user-name" (name(MAX)) attribute SHOULD be 2679 supplied by the client as described in section 8.3. 2681 "requested-attributes" (1setOf keyword) : 2682 The client OPTIONALLY supplies this attribute. The IPP object 2683 MUST support this attribute. It is a set of attribute names 2684 and/or attribute group names in whose values the requester is 2685 interested. If the client omits this attribute, the IPP object 2686 MUST respond as if this attribute had been supplied with a value 2687 of 'all'. 2689 3.3.4.2 Get-Job-Attributes Response 2691 The Printer object returns the following sets of attributes as part of 2692 the Get-Job-Attributes Response: 2694 Group 1: Operation Attributes 2696 Status Message: 2697 In addition to the REQUIRED status code returned in every 2698 response, the response OPTIONALLY includes a "status-message" 2699 (text) operation attribute as described in section 3.1.5. 2701 Natural Language and Character Set: 2702 The "attributes-charset" and "attributes-natural-language" 2703 attributes as described in section 3.1.4.2. The "attributes- 2704 natural-language" MAY be the natural language of the Job object, 2705 rather than the one requested. 2707 Expires December 30, 1998 2709 Group 2: Unsupported Attributes 2711 This is a set of Operation attributes supplied by the client (in 2712 the request) that are not supported by the Printer object or that 2713 conflict with one another (see sections 3.2.1.2 and 16.3). 2715 Group 3: Job Object Attributes 2717 This is the set of requested attributes and their current values. 2718 The IPP object ignores (does not respond with) any requested 2719 attribute or value which is not supported or which is restricted 2720 by the security policy in force, including whether the requesting 2721 user is the user that submitted the job (job originating user) or 2722 not (see section 8). However, the IPP object MUST respond with 2723 the 'unknown' value for any supported attribute (including all 2724 REQUIRED attributes) for which the IPP object does not know the 2725 value, unless it would violate the security policy. See the 2726 description of the "out-of-band" values in the beginning of 2727 Section 4.1. 2729 4. Object Attributes 2731 This section describes the attributes with their corresponding 2732 attribute syntaxes and values that are part of the IPP model. The 2733 sections below show the objects and their associated attributes which 2734 are included within the scope of this protocol. Many of these 2735 attributes are derived from other relevant specifications: 2737 - Document Printing Application (DPA) [ISO10175] 2738 - RFC 1759 Printer MIB [RFC1759] 2740 Each attribute is uniquely identified in this document using a 2741 "keyword" (see section 13.2.1) which is the name of the attribute. 2742 The keyword is included in the section header describing that 2743 attribute. 2745 Note: Not only are keywords used to identify attributes, but one of 2746 the attribute syntaxes described below is "keyword" so that some 2747 attributes have keyword values. Therefore, these attributes are 2748 defined as having an attribute syntax that is a set of keywords. 2750 4.1 Attribute Syntaxes 2752 This section defines the basic attribute syntax types that all clients 2753 and IPP objects MUST be able to accept in responses and accept in 2754 requests, respectively. Each attribute description in sections 3 and 2756 Expires December 30, 1998 2757 4 includes the name of attribute syntax(es) in the heading (in 2758 parentheses). A conforming implementation of an attribute MUST 2759 include the semantics of the attribute syntax(es) so identified. 2760 Section 6.3 describes how the protocol can be extended with new 2761 attribute syntaxes. 2763 The attribute syntaxes are specified in the following sub-sections, 2764 where the sub-section heading is the keyword name of the attribute 2765 syntax inside the single quotes. In operation requests and responses 2766 each attribute value MUST be represented as one of the attribute 2767 syntaxes specified in the sub-section heading for the attribute. In 2768 addition, the value of an attribute in a response (but not in a 2769 request) MAY be one of the "out-of-band" values. Standard "out-of- 2770 band" values are: 2772 'unknown': The attribute is supported by the IPP object, but the 2773 value is unknown to the IPP object for some reason. 2774 'unsupported': The attribute is unsupported by the IPP object. 2775 This value MUST be returned only as the value of an attribute in 2776 the Unsupported Attributes Group. 2777 'no-value': The attribute is supported by the Printer object, but 2778 the system administrator has not yet configured a value. 2780 The protocol specification defines mechanisms for passing "out-of- 2781 band" values. All attributes in a request MUST have one or more 2782 values as defined in Sections 4.2 to 4.4. Thus clients MUST NOT 2783 supply attributes with "out-of-band" values. All attribute in a 2784 response MUST have one or more values as defined in Sections 4.2 to 2785 4.4 or a single "out-of-band" value. 2787 Most attributes are defined to have a single attribute syntax. 2788 However, a few attributes (e.g., "job-sheet", "media", "job-hold- 2789 until") are defined to have several attribute syntaxes, depending on 2790 the value. These multiple attribute syntaxes are separated by the "|" 2791 character in the sub-section heading to indicate the choice. Since 2792 each value MUST be tagged as to its attribute syntax in the protocol, 2793 a single-valued attribute instance may have any one of its attribute 2794 syntaxes and a multi-valued attribute instance may have a mixture of 2795 its defined attribute syntaxes. 2797 4.1.1 'text' 2799 A text attribute is an attribute whose value is a sequence of zero or 2800 more characters encoded in a maximum of 1023 ('MAX') octets. MAX is 2801 the maximum length for each value of any text attribute. However, if 2802 an attribute will always contain values whose maximum length is much 2804 Expires December 30, 1998 2805 less than MAX, the definition of that attribute will include a 2806 qualifier that defines the maximum length for values of that 2807 attribute. For example: the "printer-location" attribute is specified 2808 as "printer-location (text(127))". In this case, text values for 2809 "printer-location" MUST NOT exceed 127 octets; if supplied with a 2810 longer text string via some external interface (other than the 2811 protocol), implementations are free to truncate to this shorter length 2812 limitation. 2814 In this specification, all text attributes are defined using the 2815 'text' syntax. However, 'text' is used only for brevity; the formal 2816 interpretation of 'text' is: 'textWithoutLanguage | textWithLanguage'. 2817 That is, for any attribute defined in this specification using the 2818 'text' attribute syntax, all IPP objects and clients MUST support both 2819 the 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes. 2820 However, in actual usage and protocol execution, objects and clients 2821 accept and return only one of the two syntax per attribute. The 2822 syntax 'text' never appears "on-the-wire". 2824 Both 'textWithoutLanguage' and 'textWithLanguage' are needed to 2825 support the real world needs of interoperability between sites and 2826 systems that use different natural languages as the basis for human 2827 communication. Generally, one natural language applies to all text 2828 attributes in a given request or response. The language is indicated 2829 by the "attributes-natural-language" operation attribute defined in 2830 section 3.1.4 or "attributes-natural-language" job attribute defined 2831 in section 4.3.24, and there is no need to identify the natural 2832 language for each text string on a value-by-value basis. In these 2833 cases, the attribute syntax 'textWithoutLanguage' is used for text 2834 attributes. In other cases, the client needs to supply or the Printer 2835 object needs to return a text value in a natural language that is 2836 different from the rest of the text values in the request or response. 2837 In these cases, the client or Printer object uses the attribute syntax 2838 'textWithLanguage' for text attributes (this is the Natural Language 2839 Override mechanism described in section 3.1.4). 2841 The 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes 2842 are described in more detail in the following sections. 2844 4.1.1.1 'textWithoutLanguage' 2846 The 'textWithoutLanguage' syntax indicates a value that is sequence of 2847 zero or more characters. Text strings are encoded using the rules of 2848 some charset. The Printer object MUST support the UTF-8 charset 2849 [RFC2044] and MAY support additional charsets to represent 'text' 2850 values, provided that the charsets are registered with IANA [IANA-CS]. 2852 Expires December 30, 1998 2853 See Section 4.1.7 for the specification of the 'charset' attribute 2854 syntax, including restricted semantics and examples of charsets. 2856 4.1.1.2 'textWithLanguage' 2858 The 'textWithLanguage' attribute syntax is a compound attribute syntax 2859 consisting of two parts: a 'textWithoutLanguage' part plus an 2860 additional 'naturalLanguage' (see section 4.1.8) part that overrides 2861 the natural language in force. The 'naturalLanguage' part explicitly 2862 identifies the natural language that applies to the text part of that 2863 value and that value alone. For any give text attribute, the 2864 'textWithoutLanguage' part is limited to the maximum length defined 2865 for that attribute, , but the 'naturalLanguage' part is always limited 2866 to 63 octets. Using the 'textWithLanguage' attribute syntax rather 2867 than the normal 'textWithoutLanguage' syntax is the so-called Natural 2868 Language Override mechanism and MUST be supported by all IPP objects 2869 and clients. 2871 If the attribute is multi-valued (1setOf text), then the 2872 'textWithLanguage' attribute syntax MUST be used to explicitly specify 2873 each attribute value whose natural language needs to be overridden. 2874 Other values in a multi-valued 'text' attribute in a request or a 2875 response revert to the natural language of the operation attribute or 2876 to the "attributes-natural-language" Job attribute, if present, in the 2877 case of a Get-Jobs response. 2879 In a create request, the Printer object MUST accept and store with the 2880 Job object any natural language in the "attributes-natural-language" 2881 operation attribute, whether the Printer object supports that natural 2882 language or not. Furthermore, the Printer object MUST accept and 2883 store any 'textWithLanguage' attribute value, whether the Printer 2884 object supports that natural language or not. These requirements are 2885 independent of the value of the "ipp-attribute-fidelity" operation 2886 attribute that the client MAY supply. 2888 Example: If the client supplies the "attributes-natural-language" 2889 operation attribute with the value: 'en' indicating English, but the 2890 value of the "job-name" attribute is in French, the client MUST use 2891 the 'textWithLanguage' attribute syntax with the following two values: 2893 'fr': Natural Language Override indicating French 2894 'Rapport Mensuel': the job name in French 2896 See the Protocol document [IPP-PRO] for a detailed example of the 2897 'textWithLanguage' attribute syntax. 2899 Expires December 30, 1998 2900 4.1.2 'name' 2902 This syntax type is used for user-friendly strings, such as a Printer 2903 name, that, for humans, are more meaningful than identifiers. Names 2904 are usually never translated from one natural language to another. 2905 The 'name' attribute syntax is essentially the same as 'text', 2906 including the REQUIRED support of UTF-8 except that the sequence of 2907 characters is limited so that its encoded form MUST NOT exceed 255 2908 (MAX) octets. 2910 Also like 'text', 'name' is really an abbreviated notation for either 2911 'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP 2912 objects and clients MUST support both the 'nameWithoutLanguage' and 2913 'nameWithLanguage' attribute syntaxes. However, in actual usage and 2914 protocol execution, objects and clients accept and return only one of 2915 the two syntax per attribute. The syntax 'name' never appears "on- 2916 the-wire". 2918 Note: Only the 'text' and 'name' attribute syntaxes permit the 2919 Natural Language Override mechanism. 2921 Some attributes are defined as 'type3 keyword | name'. These 2922 attributes support values that are either type3 keywords or names. 2923 This dual-syntax mechanism enables a site administrator to extend 2924 these attributes to legally include values that are locally defined by 2925 the site administrator. Such names are not registered with IANA. 2927 4.1.2.1 'nameWithoutLanguage' 2929 The nameWithoutLanguage' syntax indicates a value that is sequence of 2930 zero or more characters so that its encoded form does not exceed MAX 2931 octets. 2933 4.1.2.2 'nameWithLanguage' 2935 The 'nameWithLanguage' attribute syntax is a compound attribute syntax 2936 consisting of two parts: a 'nameWithoutLanguage' part plus an 2937 additional 'naturalLanguage' (see section 4.1.8) part that overrides 2938 the natural language in force. The 'naturalLanguage' part explicitly 2939 identifies the natural language that applies to that name value and 2940 that name value alone. 2942 The 'nameWithLanguage' attribute syntax behaves the same as the 2943 'textWithLanguage' syntax. If a name is in a language that is 2944 different than the rest of the object or operation, then this 2946 Expires December 30, 1998 2947 'nameWithLanguage' syntax is used rather than the generic 2948 'nameWithoutLanguage' syntax. 2950 Example: If the client supplies the "attributes-natural-language" 2951 operation attribute with the value: 'en' indicating English, but the 2952 "printer-name" attribute is in German, the client MUST use the 2953 'nameWithLanguage' attribute syntax as follows: 2955 'de': Natural Language Override indicating German 2956 'Farbdrucker': the Printer name in German 2958 4.1.3 'keyword' 2960 The 'keyword' attribute syntax is a sequence of characters, length: 1 2961 to 255, containing only the US-ASCII [ASCII] encoded values for 2962 lowercase letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot 2963 ("."), and underscore ("_"). The first character MUST be a lowercase 2964 letter. Furthermore, keywords MUST be in U.S. English. 2966 This syntax type is used for enumerating semantic identifiers of 2967 entities in the abstract protocol, i.e., entities identified in this 2968 document. Keywords are used as attribute names or values of 2969 attributes. Unlike 'text' and 'name' attribute values, 'keyword' 2970 values MUST NOT use the Natural Language Override mechanism, since 2971 they MUST always be US-ASCII and U.S. English. 2973 Keywords are for use in the protocol. A user interface will likely 2974 provide a mapping between protocol keywords and displayable user- 2975 friendly words and phrases which are localized to the natural language 2976 of the user. While the keywords specified in this document MAY be 2977 displayed to users whose natural language is U.S. English, they MAY be 2978 mapped to other U.S. English words for U.S. English users, since the 2979 user interface is outside the scope of this document. 2981 In the definition for each attribute of this syntax type, the full set 2982 of defined keyword values for that attribute are listed. 2984 When a keyword is used to represent an attribute (its name), it MUST 2985 be unique within the full scope of all IPP objects and attributes. 2986 When a keyword is used to represent a value of an attribute, it MUST 2987 be unique just within the scope of that attribute. That is, the same 2988 keyword MUST NOT be used for two different values within the same 2989 attribute to mean two different semantic ideas. However, the same 2990 keyword MAY be used across two or more attributes, representing 2991 different semantic ideas for each attribute. Section 6.1 describes 2992 how the protocol can be extended with new keyword values. Examples of 2993 attribute name keywords: 2995 Expires December 30, 1998 2996 "job-name" 2997 "attributes-charset" 2999 Note: This document uses "type1", "type2", and "type3" prefixes to 3000 the "keyword" basic syntax to indicate different levels of review for 3001 extensions (see section 6.1). 3003 4.1.4 'enum' 3005 The 'enum' attribute syntax is an enumerated integer value that is in 3006 the range from 1 to 2**31 - 1 (MAX). Each value has an associated 3007 'keyword' name. In the definition for each attribute of this syntax 3008 type, the full set of possible values for that attribute are listed. 3009 This syntax type is used for attributes for which there are enum 3010 values assigned by other standards, such as SNMP MIBs. A number of 3011 attribute enum values in this specification are also used for 3012 corresponding attributes in other standards [RFC1759]. This syntax 3013 type is not used for attributes to which the system administrator may 3014 assign values. Section 6.1 describes how the protocol can be extended 3015 with new enum values. 3017 Enum values are for use in the protocol. A user interface will 3018 provide a mapping between protocol enum values and displayable user- 3019 friendly words and phrases which are localized to the natural language 3020 of the user. While the enum symbols specified in this document MAY be 3021 displayed to users whose natural language is U.S. English, they MAY be 3022 mapped to other U.S. English words for U.S. English users, since the 3023 user interface is outside the scope of this document. 3025 Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP 3026 "out-of-band" value 'unknown'. See the description of the "out-of- 3027 band" values at the beginning of Section 4.1. Therefore, attributes 3028 of type 'enum' start at '3'. 3030 Note: This document uses "type1", "type2", and "type3" prefixes to 3031 the "enum" basic syntax to indicate different levels of review for 3032 extensions (see section 6.1). 3034 4.1.5 'uri' 3036 The 'uri' attribute syntax is any valid Uniform Resource Identifier or 3037 URI [RFC1630]. Most often, URIs are simply Uniform Resource Locators 3038 or URLs [RFC1738] [RFC1808]. The maximum length of URIs used within 3039 IPP is 1023 octets. Although most other IPP syntax types allow for 3040 only lower-cased values, this syntax type allows for mixed-case 3042 Expires December 30, 1998 3043 values. The URI and URL standards allow for mixed-case values that 3044 are case-sensitive. 3046 4.1.6 'uriScheme' 3048 The 'uriScheme' attribute syntax is a sequence of characters 3049 representing a URI scheme according to RFC 1738 [RFC1738]. Though RFC 3050 1736 requires that the values be case-insensitive, IPP requires all 3051 lower case to simplify comparing by IPP clients and Printer objects. 3052 Standard values for this syntax type are the following keywords: 3054 'http': for HTTP schemed URIs (e.g., "http:_") 3055 'https': for use with HTTPS schemed URIs (e.g., "https:...") (not 3056 on standards track) 3057 'ftp': for FTP schemed URIs (e.g., "ftp:...") 3058 'mailto': for SMTP schemed URIs (e.g., "mailto:...") 3059 'file': for file schemed URIs (e.g., "file:...") 3061 A Printer object MAY support any URI scheme that has been registered 3062 with IANA [IANA-MT]. The maximum length of URI schemes used within IPP 3063 is 63 octets. 3065 4.1.7 'charset' 3067 The 'charset' attribute syntax is a standard identifier for a charset. 3068 A charset is a coded character set and encoding scheme. Charsets are 3069 used for labeling certain document contents and 'text' and 'name' 3070 attribute values. The syntax and semantics of this attribute syntax 3071 are specified in RFC 2046 [RFC2046] and contained in the IANA 3072 character-set Registry [IANA-CS] according to the IANA procedures 3073 [RFC2278]. Though RFC 2046 requires that the values be case- 3074 insensitive US-ASCII, IPP requires all lower case to simplify 3075 comparing by IPP clients and Printer objects. When a character-set in 3076 the IANA registry has more than one name (alias), the name labeled as 3077 "(preferred MIME name)", if present, MUST be used. 3079 The maximum length of charset values used within IPP is 63 octets. 3081 Some examples are: 3083 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set 3084 (UCS) represented as the UTF-8 [RFC2279] transfer encoding scheme 3085 in which US-ASCII is a subset charset. 3086 'us-ascii': 7-bit American Standard Code for Information 3087 Interchange (ASCII), ANSI X3.4-1986 [ASCII]. That standard 3089 Expires December 30, 1998 3090 defines US-ASCII, but RFC 2045 [46] eliminates most of the 3091 control characters from conformant usage in MIME and IPP. 3092 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet 3093 Nr 1 [ISO8859-1]. That standard defines a coded character set 3094 that is used by Latin languages in the Western Hemisphere and 3095 Western Europe. US-ASCII is a subset charset. 3096 'iso-10646-ucs-2': ISO 10646 Universal Multiple-Octet Coded 3097 Character Set (UCS) represented as two octets (UCS-2), with the 3098 high order octet of each pair coming first (so-called Big Endian 3099 integer). 3101 Some attribute descriptions MAY place additional requirements on 3102 charset values that may be used, such as REQUIRED values that MUST be 3103 supported or additional restrictions, such as requiring that the 3104 charset have US-ASCII as a subset charset. 3106 4.1.8 'naturalLanguage' 3108 The 'naturalLanguage' attribute syntax is a standard identifier for a 3109 natural language and optionally a country. The values for this syntax 3110 type are defined by RFC 1766 [RFC1766]. Though RFC 1766 requires that 3111 the values be case-insensitive US-ASCII, IPP requires all lower case 3112 to simplify comparing by IPP clients and Printer objects. Examples 3113 include: 3115 'en': for English 3116 'en-us': for US English 3117 'fr': for French 3118 'de': for German 3120 The maximum length of naturalLanguage values used within IPP is 63 3121 octets. 3123 4.1.9 'mimeMediaType' 3125 The 'mimeMediaType' attribute syntax is the Internet Media Type 3126 (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and 3127 registered according to the procedures of RFC 2048 [RFC2048] for 3128 identifying a document format. The value MAY include a charset 3129 parameter, depending on the specification of the Media Type in the 3130 IANA Registry [IANA-MT]. Although most other IPP syntax types allow 3131 for only lower-cased values, this syntax type allows for mixed-case 3132 values which are case-insensitive. 3134 Examples are: 3136 Expires December 30, 1998 3137 'text/html': An HTML document 3138 'text/plain': A plain text document in US-ASCII (RFC 2046 indicates 3139 that in the absence of the charset parameter MUST mean US-ASCII 3140 rather than simply unspecified) [RFC2046]. 3141 'text/plain; charset=US-ASCII': A plain text document in US-ASCII 3142 [52, 56]. 3143 'text/plain; charset=ISO-8859-1': A plain text document in ISO 3144 8859-1 (Latin 1) [ISO8859-1]. 3145 'text/plain; charset=utf-8': A plain text document in ISO 10646 3146 represented as UTF-8 [RFC2044] 3147 'text/plain, charset=iso-10646-ucs-2': A plain text document in 3148 ISO 10646 represented in two octets (UCS-2) [ISO10646-1] 3149 'application/postscript': A PostScript document [RFC2046] 3150 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape 3151 sequence embedded in the document data) 3152 'application/octet-stream': Auto-sense - see below 3154 One special type is 'application/octet-stream'. If the Printer object 3155 supports this value, the Printer object MUST be capable of auto- 3156 sensing the format of the document data. If the Printer object's 3157 default value attribute "document-format-default" is set to 3158 'application/octet-stream', the Printer object not only supports auto- 3159 sensing of the document format, but will depend on the result of 3160 applying its auto-sensing when the client does not supply the 3161 "document-format" attribute. If the client supplies a document format 3162 value, the Printer MUST rely on the supplied attribute, rather than 3163 trust its auto-sensing algorithm. To summarize: 3165 1. If the client does not supply a document format value, the 3166 Printer MUST rely on its default value setting (which may be 3167 'application/octet-stream' indicating an auto-sensing mechanism). 3168 2. If the client supplies a value other than 'application/octet- 3169 stream', the client is supplying valid information about the 3170 format of the document data and the Printer object MUST trust the 3171 client supplied value more than the outcome of applying an 3172 automatic format detection mechanism. For example, the client 3173 may be requesting the printing of a PostScript file as a 3174 'text/plain' document. The Printer object MUST print a text 3175 representation of the PostScript commands rather than interpret 3176 the stream of PostScript commands and print the result. 3177 3. If the client supplies a value of 'application/octet-stream', 3178 the client is indicating that the Printer object MUST use its 3179 auto-sensing mechanism on the client supplied document data 3180 whether auto-sensing is the Printer object's default or not. 3182 Note: Since the auto-sensing algorithm is probabilistic, if the 3183 client requests both auto-sensing ("document-format" set to 3184 'application/octet-stream') and true fidelity ("ipp-attribute- 3186 Expires December 30, 1998 3187 fidelity" set to 'true'), the Printer object might not be able to 3188 guarantee exactly what the end user intended (the auto-sensing 3189 algorithm might mistake one document format for another ), but it is 3190 able to guarantee that its auto-sensing mechanism be used. 3192 The maximum length of a 'mimeMediaType' value in IPP is 255 octets. 3194 4.1.10 'octetString' 3196 The 'octetString' attribute syntax is a sequence of octets encoded in 3197 a maximum of 1023 octets which is indicated in sub-section headers 3198 using the notation: octetString(MAX). This syntax type is used for 3199 opaque data. 3201 4.1.11 'boolean' 3203 The 'boolean' attribute syntax is similar to an enum with only two 3204 values: 'true' and 'false'. 3206 4.1.12 'integer' 3208 The 'integer' attribute syntax is an integer value that is in the 3209 range from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual attribute 3210 may specify the range constraint explicitly in sub-section headers if 3211 the range is different from the full range of possible integer values. 3212 For example: job-priority (integer(1:100)) for the "job-priority" 3213 attribute. However, the enforcement of that additional constraint is 3214 up to the IPP objects, not the protocol. 3216 4.1.13 'rangeOfInteger' 3218 The 'rangeOfInteger' attribute syntax is an ordered pair of integers 3219 that defines an inclusive range of integer values. The first integer 3220 specifies the lower bound and the second specifies the upper bound. 3221 If a range constraint is specified in the header description for an 3222 attribute in this document whose attribute syntax is 'rangeOfInteger' 3223 (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum 3224 value), then the constraint applies to both integers. 3226 4.1.14 'dateTime' 3228 The 'dateTime' attribute syntax is a standard, fixed length, 11 octet 3229 representation of the "DateAndTime" syntax as defined in RFC 1903 3231 Expires December 30, 1998 3232 [RFC1903]. RFC 1903 also identifies an 8 octet representation of a 3233 "DateAndTime" value, but IPP objects MUST use the 11 octet 3234 representation. A user interface will provide a mapping between 3235 protocol dateTime values and displayable user-friendly words or 3236 presentation values and phrases which are localized to the natural 3237 language and date format of the user. 3239 4.1.15 'resolution' 3241 The 'resolution' attribute syntax specifies a two-dimensional 3242 resolution in the indicated units. It consists of 3 integers: a cross 3243 feed direction resolution (positive integer value), a feed direction 3244 resolution (positive integer value), and a units value. The semantics 3245 of these three components are taken from the Printer MIB [RFC1759] 3246 suggested values. That is, the cross feed direction component 3247 resolution component is the same as the 3248 prtMarkerAddressabilityXFeedDir object in the Printer MIB, the feed 3249 direction component resolution component is the same as the 3250 prtMarkerAddressabilityFeedDir in the Printer MIB, and the units 3251 component is the same as the prtMarkerAddressabilityUnit object in the 3252 Printer MIB (namely, '3' indicates dots per inch and '4' indicates 3253 dots per centimeter). All three values MUST be present even if the 3254 first two values are the same. Example: '300', '600', '3' indicates 3255 a 300 dpi cross-feed direction resolution, a 600 dpi feed direction 3256 resolution, since a '3' indicates dots per inch (dpi). 3258 4.1.16 '1setOf X' 3260 The '1setOf X' attribute syntax is 1 or more values of attribute 3261 syntax type X. This syntax type is used for multi-valued attributes. 3262 The syntax type is called '1setOf' rather than just 'setOf' as a 3263 reminder that the set of values MUST NOT be empty (i.e., a set of size 3264 0). Sets are normally unordered. However each attribute description 3265 of this type may specify that the values MUST be in a certain order 3266 for that attribute. 3268 4.2 Job Template Attributes 3270 Job Template attributes describe job processing behavior. Support for 3271 Job Template attributes by a Printer object is OPTIONAL (see section 3272 13.2.3 for a description of support for OPTIONAL attributes). Also, 3273 clients OPTIONALLY supply Job Template attributes in create requests. 3275 Job Template attributes conform to the following rules. For each Job 3276 Template attribute called "xxx": 3278 Expires December 30, 1998 3279 1. If the Printer object supports "xxx" then it MUST support both a 3280 "xxx-default" attribute (unless there is a "No" in the table 3281 below) and a "xxx-supported" attribute. If the Printer object 3282 doesn't support "xxx", then it MUST support neither an "xxx- 3283 default" attribute nor an "xxx-supported" attribute, and it MUST 3284 treat an attribute "xxx" supplied by a client as unsupported. An 3285 attribute "xxx" may be supported for some document formats and 3286 not supported for other document formats. For example, it is 3287 expected that a Printer object would only support "orientation- 3288 requested" for some document formats (such as 'text/plain' or 3289 'text/html') but not others (such as 'application/postscript'). 3291 2. "xxx" is OPTIONALLY supplied by the client in a create request. 3292 If "xxx" is supplied, the client is indicating a desired job 3293 processing behavior for this Job. When "xxx" is not supplied, 3294 the client is indicating that the Printer object apply its 3295 default job processing behavior at job processing time if the 3296 document content does not contain an embedded instruction 3297 indicating an xxx-related behavior. 3299 Note: Since an administrator MAY change the default value 3300 attribute after a Job object has been submitted but before it has 3301 been processed, the default value used by the Printer object at 3302 job processing time may be different that the default value in 3303 effect at job submission time. 3305 3. The "xxx-supported" attribute is a Printer object attribute that 3306 describes which job processing behaviors are supported by that 3307 Printer object. A client can query the Printer object to find 3308 out what xxx-related behaviors are supported by inspecting the 3309 returned values of the "xxx-supported" attribute. 3311 Note: The "xxx" in each "xxx-supported" attribute name is 3312 singular, even though an "xxx-supported" attribute usually has 3313 more than one value, such as "job-sheet-supported", unless the 3314 "xxx" Job Template attribute is plural, such as "finishings" or 3315 "sides". In such cases the "xxx-supported" attribute names are: 3316 "finishings-supported" and "sides-supported". 3318 4. The "xxx-default" default value attribute describes what will be 3319 done at job processing time when no other job processing 3320 information is supplied by the client (either explicitly as an 3321 IPP attribute in the create request or implicitly as an embedded 3322 instruction within the document data). 3324 If an application wishes to present an end user with a list of 3325 supported values from which to choose, the application SHOULD query 3326 the Printer object for its supported value attributes. The 3328 Expires December 30, 1998 3329 application SHOULD also query the default value attributes. If the 3330 application then limits selectable values to only those value that are 3331 supported, the application can guarantee that the values supplied by 3332 the client in the create request all fall within the set of supported 3333 values at the Printer. When querying the Printer, the client MAY 3334 enumerate each attribute by name in the Get-Printer-Attributes 3335 Request, or the client MAY just name the "job-template" group in order 3336 to get the complete set of supported attributes (both supported and 3337 default attributes). 3339 The "finishings" attribute is an example of a Job Template attribute. 3340 It can take on a set of values such as 'staple', 'punch', and/or 3341 'cover'. A client can query the Printer object for the "finishings- 3342 supported" attribute and the "finishings-default" attribute. The 3343 supported attribute contains a set of supported values. The default 3344 value attribute contains the finishing value(s) that will be used for 3345 a new Job if the client does not supply a "finishings" attribute in 3346 the create request and the document data does not contain any 3347 corresponding finishing instructions. If the client does supply the 3348 "finishings" attribute in the create request, the IPP object validates 3349 the value or values to make sure that they are a subset of the 3350 supported values identified in the Printer object's "finishings- 3351 supported" attribute. See section 3.2.1.2. 3353 The table below summarizes the names and relationships for all Job 3354 Template attributes. The first column of the table (labeled "Job 3355 Attribute") shows the name and syntax for each Job Template attribute 3356 in the Job object. These are the attributes that can optionally be 3357 supplied by the client in a create request. The last two columns 3358 (labeled "Printer: Default Value Attribute" and "Printer: Supported 3359 Values Attribute") shows the name and syntax for each Job Template 3360 attribute in the Printer object (the default value attribute and the 3361 supported values attribute). A "No" in the table means the Printer 3362 MUST NOT support the attribute (that is, the attribute is simply not 3363 applicable). For brevity in the table, the 'text' and 'name' entries 3364 do not show the maximum length for each attribute. 3366 Expires December 30, 1998 3367 +===================+======================+======================+ 3368 | Job Attribute |Printer: Default Value| Printer: Supported | 3369 | | Attribute | Values Attribute | 3370 +===================+======================+======================+ 3371 | job-priority | job-priority-default |job-priority-supported| 3372 | (integer 1:100) | (integer 1:100) |(integer 1:100) | 3373 +-------------------+----------------------+----------------------+ 3374 | job-hold-until | job-hold-until- |job-hold-until- | 3375 | (type3 keyword | | default | supported | 3376 | name) | (type3 keyword | |(1setOf | 3377 | | name) | type3 keyword | name)| 3378 +-------------------+----------------------+----------------------+ 3379 | job-sheets | job-sheets-default |job-sheets-supported | 3380 | (type3 keyword | | (type3 keyword | |(1setOf | 3381 | name) | name) | type3 keyword | name)| 3382 +-------------------+----------------------+----------------------+ 3383 |multiple-document- |multiple-document- |multiple-document- | 3384 | handling | handling-default |handling-supported | 3385 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 3386 +-------------------+----------------------+----------------------+ 3387 | copies | copies-default | copies-supported | 3388 | (integer (1:MAX)) | (integer (1:MAX)) | (rangeOfInteger | 3389 | | | (1:MAX)) | 3390 +-------------------+----------------------+----------------------+ 3391 | finishings | finishings-default | finishings-supported | 3392 |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | 3393 +-------------------+----------------------+----------------------+ 3394 | page-ranges | No | page-ranges- | 3395 | (1setOf | | supported (boolean) | 3396 | rangeOfInteger | | | 3397 | (1:MAX)) | | | 3398 +-------------------+----------------------+----------------------+ 3399 | sides | sides-default | sides-supported | 3400 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 3401 +-------------------+----------------------+----------------------+ 3402 | number-up | number-up-default | number-up-supported | 3403 | (integer (1:MAX)) | (integer (1:MAX)) |(1setOf integer | 3404 | | | (1:MAX) | | 3405 | | | rangeOfInteger | 3406 | | | (1:MAX)) | 3407 +-------------------+----------------------+----------------------+ 3408 | orientation- |orientation-requested-|orientation-requested-| 3409 | requested | default | supported | 3410 | (type2 enum) | (type2 enum) | (1setOf type2 enum) | 3411 +-------------------+----------------------+----------------------+ 3412 | media | media-default | media-supported | 3413 | (type3 keyword | | (type3 keyword | |(1setOf | 3414 | name) | name) | type3 keyword | name)| 3416 Expires December 30, 1998 3417 | | | | 3418 | | | media-ready | 3419 | | |(1setOf | 3420 | | | type3 keyword | name)| 3421 +-------------------+----------------------+----------------------+ 3422 | printer-resolution| printer-resolution- | printer-resolution- | 3423 | (resolution) | default | supported | 3424 | | (resolution) |(1setOf resolution) | 3425 +-------------------+----------------------+----------------------+ 3426 | print-quality | print-quality-default| print-quality- | 3427 | (type2 enum) | (type2 enum) | supported | 3428 | | |(1setOf type2 enum) | 3429 +-------------------+----------------------+----------------------+ 3431 4.2.1 job-priority (integer(1:100)) 3433 This attribute specifies a priority for scheduling the Job. A higher 3434 value specifies a higher priority. The value 1 indicates the lowest 3435 possible priority. The value 100 indicates the highest possible 3436 priority. Among those jobs that are ready to print, a Printer MUST 3437 print all jobs with a priority value of n before printing those with a 3438 priority value of n-1 for all n. 3440 If the Printer object supports this attribute, it MUST always support 3441 the full range from 1 to 100. No administrative restrictions are 3442 permitted. This way an end-user can always make full use of the 3443 entire range with any Printer object. If privileged jobs are 3444 implemented outside IPP/1.0, they MUST have priorities higher than 3445 100, rather than restricting the range available to end-users. 3447 If the client does not supply this attribute and this attribute is 3448 supported by the Printer object, the Printer object MUST use the value 3449 of the Printer object's "job-priority-default" at job submission time 3450 (unlike most Job Template attributes that are used if necessary at job 3451 processing time). 3453 The syntax for the "job-priority-supported" is also integer(1:100). 3454 This single integer value indicates the number of priority levels 3455 supported. The Printer object MUST take the value supplied by the 3456 client and map it to the closest integer in a sequence of n integers 3457 values that are evenly distributed over the range from 1 to 100 using 3458 the formula: 3460 roundToNearestInt((100x+50)/n) 3462 Expires December 30, 1998 3464 where n is the value of "job-priority-supported" and x ranges from 0 3465 through n-1. 3467 For example, if n=1 the sequence of values is 50; if n=2, the 3468 sequence of values is: 25 and 75; if n = 3, the sequence of values 3469 is: 17, 50 and 83; if n = 10, the sequence of values is: 5, 15, 25, 3470 35, 45, 55, 65, 75, 85, and 95; if n = 100, the sequence of values 3471 is: 1, 2, 3, _ 100. 3473 If the value of the Printer object's "job-priority-supported" is 10 3474 and the client supplies values in the range 1 to 10, the Printer 3475 object maps them to 5, in the range 11 to 20, the Printer object maps 3476 them to 15, etc. 3478 4.2.2 job-hold-until (type3 keyword | name (MAX)) 3480 This attribute specifies the named time period during which the Job 3481 MUST become a candidate for printing. 3483 Standard values for named time periods are: 3485 'no-hold': immediately, if there are not other reasons to hold the 3486 job 3487 'day-time': during the day 3488 'evening': evening 3489 'night': night 3490 'weekend': weekend 3491 'second-shift': second-shift (after close of business) 3492 'third-shift': third-shift (after midnight) 3494 An administrator MUST associate allowable print times with a named 3495 time period (by means outside IPP/1.0). An administrator is 3496 encouraged to pick names that suggest the type of time period. An 3497 administrator MAY define additional values using the 'name' or 3498 'keyword' attribute syntax, depending on implementation. 3500 If the value of this attribute specifies a time period that is in the 3501 future, the Printer MUST add the 'job-hold-until-specified' value to 3502 the job's "job-state-reasons" attribute, move the job to the 'pending- 3503 held' state, and MUST NOT schedule the job for printing until the 3504 specified time-period arrives. When the specified time period 3505 arrives, the Printer MUST remove the 'job-hold-until-specified' value 3506 from the job's "job-state-reason" attribute and, if there are no other 3507 job state reasons that keep the job in the 'pending-held' state, the 3508 Printer MUST consider the job as a candidate for processing by moving 3509 the job to the 'pending' state. 3511 Expires December 30, 1998 3512 If this job attribute value is the named value 'no-hold', or the 3513 specified time period has already started, the job MUST be a candidate 3514 for processing immediately. 3516 If the client does not supply this attribute and this attribute is 3517 supported by the Printer object, the Printer object MUST use the value 3518 of the Printer object's "job-hold-until-default" at job submission 3519 time (unlike most Job Template attributes that are used if necessary 3520 at job processing time). 3522 4.2.3 job-sheets (type3 keyword | name(MAX)) 3524 This attribute determines which job start/end sheet(s), if any, MUST 3525 be printed with a job. 3527 Standard values are: 3529 'none': no job sheet is printed 3530 'standard': one or more site specific standard job sheets are 3531 printed, e.g. a single start sheet or both start and end sheet is 3532 printed 3534 An administrator MAY define additional values using the 'name' or 3535 'keyword' attribute syntax, depending on implementation. 3537 Note: The effect of this attribute on jobs with multiple documents MAY 3538 be affected by the "multiple-document-handling" job attribute (section 3539 4.2.4), depending on the job sheet semantics. 3541 4.2.4 multiple-document-handling (type2 keyword) 3543 This attribute is relevant only if a job consists of two or more 3544 documents. The attribute controls finishing operations and the 3545 placement of one or more print-stream pages into impressions and onto 3546 media sheets. When the value of the "copies" attribute exceeds 1, it 3547 also controls the order in which the copies that result from 3548 processing the documents are produced. For the purposes of this 3549 explanations, if "a" represents an instance of document data, then the 3550 result of processing the data in document "a" is a sequence of media 3551 sheets represented by "a(*)". 3553 Standard values are: 3555 'single-document': If a Job object has multiple documents, say, the 3556 document data is called a and b, then the result of processing 3557 all the document data (a and then b) MUST be treated as a single 3559 Expires December 30, 1998 3560 sequence of media sheets for finishing operations; that is, 3561 finishing would be performed on the concatenation of the 3562 sequences a(*),b(*). The Printer object MUST NOT force the data 3563 in each document instance to be formatted onto a new print-stream 3564 page, nor to start a new impression on a new media sheet. If more 3565 than one copy is made, the ordering of the sets of media sheets 3566 resulting from processing the document data MUST be a(*), b(*), 3567 a(*), b(*), ..., and the Printer object MUST force each copy 3568 (a(*),b(*)) to start on a new media sheet. 3569 'separate-documents-uncollated-copies': If a Job object has 3570 multiple documents, say, the document data is called a and b, 3571 then the result of processing the data in each document instance 3572 MUST be treated as a single sequence of media sheets for 3573 finishing operations; that is, the sets a(*) and b(*) would each 3574 be finished separately. The Printer object MUST force each copy 3575 of the result of processing the data in a single document to 3576 start on a new media sheet. If more than one copy is made, the 3577 ordering of the sets of media sheets resulting from processing 3578 the document data MUST be a(*), a(*), ..., b(*), b(*) ... . 3579 'separate-documents-collated-copies': If a Job object has multiple 3580 documents, say, the document data is called a and b, then the 3581 result of processing the data in each document instance MUST be 3582 treated as a single sequence of media sheets for finishing 3583 operations; that is, the sets a(*) and b(*) would each be 3584 finished separately. The Printer object MUST force each copy of 3585 the result of processing the data in a single document to start 3586 on a new media sheet. If more than one copy is made, the 3587 ordering of the sets of media sheets resulting from processing 3588 the document data MUST be a(*), b(*), a(*), b(*), ... . 3590 The 'single-document' value is the same as 'separate-documents- 3591 collated-copies' with respect to ordering of print-stream pages, but 3592 not media sheet generation, since 'single-document' will put the first 3593 page of the next document on the back side of a sheet if an odd number 3594 of pages have been produced so far for the job, while 'separate- 3595 documents-collated-copies' always forces the next document or document 3596 copy on to a new sheet. In addition, if the "finishings" attribute 3597 specifies 'staple', then with 'single-document', documents a and b are 3598 stapled together as a single document, but with 'separate-documents- 3599 uncollated-copies' and 'separate-documents-collated-copies', documents 3600 a and b are stapled separately. 3602 Note: None of these values provide means to produce uncollated sheets 3603 within a document, i.e., where multiple copies of sheet n are produced 3604 before sheet n+1 of the same document. 3606 The relationship of this attribute and the other attributes that 3607 control document processing is described in section 16.5. 3609 Expires December 30, 1998 3610 4.2.5 copies (integer(1:MAX)) 3612 This attribute specifies the number of copies to be printed. 3614 On many devices the supported number of collated copies will be 3615 limited by the number of physical output bins on the device, and may 3616 be different from the number of uncollated copies which can be 3617 supported. 3619 Note: The effect of this attribute on jobs with multiple documents is 3620 controlled by the "multiple-document-handling" job attribute (section 3621 4.2.4) and the relationship of this attribute and the other attributes 3622 that control document processing is described in section 16.5. 3624 4.2.6 finishings (1setOf type2 enum) 3626 This attribute identifies the finishing operations that the Printer 3627 uses for each copy of each printed document in the Job. For Jobs with 3628 multiple documents, the "multiple-document-handling" attribute 3629 determines what constitutes a "copy" for purposes of finishing. 3631 Standard values are: 3633 Value Symbolic Name and Description 3635 '3' 'none': Perform no finishing 3636 '4' 'staple': Bind the document(s) with one or more staples. 3637 The exact number and placement of the staples is site- 3638 defined. 3639 '5' 'punch': This value indicates that holes are required in 3640 the finished document. The exact number and placement 3641 of the holes is site-defined The punch specification 3642 MAY be satisfied (in a site- and implementation- 3643 specific manner) either by drilling/punching, or by 3644 substituting pre-drilled media. 3645 '6' 'cover': This value is specified when it is desired to 3646 select a non-printed (or pre-printed) cover for the 3647 document. This does not supplant the specification of a 3648 printed cover (on cover stock medium) by the document 3649 itself. 3650 '7' 'bind': This value indicates that a binding is to be 3651 applied to the document; the type and placement of the 3652 binding is site-defined." 3654 Note: The effect of this attribute on jobs with multiple documents is 3655 controlled by the "multiple-document-handling" job attribute (section 3657 Expires December 30, 1998 3658 4.2.4) and the relationship of this attribute and the other attributes 3659 that control document processing is described in section 16.5. 3661 If the client supplies a value of 'none' along with any other 3662 combination of values, it is the same as if only that other 3663 combination of values had been supplied (that is the 'none' value has 3664 no effect). 3666 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 3668 This attribute identifies the range(s) of print-stream pages that the 3669 Printer object uses for each copy of each document which are to be 3670 printed. Nothing is printed for any pages identified that do not 3671 exist in the document(s). Ranges MUST be in ascending order, for 3672 example: 1-3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling 3673 Printer object can process the job in a single pass. If the ranges 3674 are not ascending or are overlapping, the IPP object MUST reject the 3675 request and return the 'client-error-bad-request' status code. The 3676 attribute is associated with print-stream pages not application- 3677 numbered pages (for example, the page numbers found in the headers and 3678 or footers for certain word processing applications). 3680 For Jobs with multiple documents, the "multiple-document-handling" 3681 attribute determines what constitutes a "copy" for purposes of the 3682 specified page range(s). When "multiple-document-handling" is 3683 'single-document', the Printer object MUST apply each supplied page 3684 range once to the concatenation of the print-stream pages. For 3685 example, if there are 8 documents of 10 pages each, the page-range 3686 '41:60' prints the pages in the 5th and 6th documents as a single 3687 document and none of the pages of the other documents are printed. 3688 When "multiple-document-handling" is 'separate-document-uncollated- 3689 copies' or 'separate-document-collated-copies', the Printer object 3690 MUST apply each supplied page range repeatedly to each document copy. 3691 For the same job, the page-range '1:3, 10:10' would print the first 3 3692 pages and the 10th page of each of the 8 documents in the Job, as 8 3693 separate documents. 3695 In most cases, the exact pages to be printed will be generated by a 3696 device driver and this attribute would not be required. However, when 3697 printing an archived document which has already been formatted, the 3698 end user may elect to print just a subset of the pages contained in 3699 the document. In this case, if page-range = n.m is specified, the 3700 first page to be printed will be page n. All subsequent pages of the 3701 document will be printed through and including page m. 3703 "page-ranges-supported" is a boolean value indicating whether or not 3704 the printer is capable of supporting the printing of page ranges. 3706 Expires December 30, 1998 3707 This capability may differ from one PDL to another. There is no "page- 3708 ranges-default" attribute. If the "page-ranges" attribute is not 3709 supplied by the client, all pages of the document will be printed. 3711 Note: The effect of this attribute on jobs with multiple documents is 3712 controlled by the "multiple-document-handling" job attribute (section 3713 4.2.4) and the relationship of this attribute and the other attributes 3714 that control document processing is described in section 16.5. 3716 4.2.8 sides (type2 keyword) 3718 This attribute specifies how print-stream pages are to be imposed upon 3719 the sides of an instance of a selected medium, i.e., an impression. 3721 The standard values are: 3723 'one-sided': imposes each consecutive print-stream page upon the 3724 same side of consecutive media sheets. 3725 'two-sided-long-edge': imposes each consecutive pair of print- 3726 stream pages upon front and back sides of consecutive media 3727 sheets, such that the orientation of each pair of print-stream 3728 pages on the medium would be correct for the reader as if for 3729 binding on the long edge. This imposition is sometimes called 3730 'duplex' or 'head-to-head'. 3731 'two-sided-short-edge': imposes each consecutive pair of print- 3732 stream pages upon front and back sides of consecutive media 3733 sheets, such that the orientation of each pair of print-stream 3734 pages on the medium would be correct for the reader as if for 3735 binding on the short edge. This imposition is sometimes called 3736 'tumble' or 'head-to-toe'. 3738 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 3739 all work the same for portrait or landscape. However 'head-to-toe' is 3740 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 3741 switches between 'duplex' and 'tumble' when using portrait and 3742 landscape modes. 3744 Note: The effect of this attribute on jobs with multiple documents is 3745 controlled by the "multiple-document-handling" job attribute (section 3746 4.2.4) and the relationship of this attribute and the other attributes 3747 that control document processing is described in section 16.5. 3749 Expires December 30, 1998 3750 4.2.9 number-up (integer(1:MAX)) 3752 This attribute specifies the number of print-stream pages to impose 3753 upon a single side of an instance of a selected medium. For example, 3754 if the value is 3756 Value Description 3758 '1' The Printer MUST place one print-stream page on a single 3759 side of an instance of the selected medium (MAY add 3760 some sort of translation, scaling, or rotation). 3761 '2' The Printer MUST place two print-stream pages on a single 3762 side of an instance of the selected medium (MAY add 3763 some sort of translation, scaling, or rotation). 3764 '4' The Printer MUST place four print-stream pages on a single 3765 side of an instance of the selected medium (MAY add 3766 some sort of translation, scaling, or rotation). 3768 This attribute primarily controls the translation, scaling and 3769 rotation of print-stream pages. 3771 Note: The effect of this attribute on jobs with multiple documents is 3772 controlled by the "multiple-document-handling" job attribute (section 3773 4.2.4) and the relationship of this attribute and the other attributes 3774 that control document processing is described in section 16.5. 3776 4.2.10 orientation-requested (type2 enum) 3778 This attribute indicates the desired orientation for printed print- 3779 stream pages; it does not describe the orientation of the client- 3780 supplied print-stream pages. 3782 For some document formats (such as 'application/postscript'), the 3783 desired orientation of the print-stream pages is specified within the 3784 document data. This information is generated by a device driver prior 3785 to the submission of the print job. Other document formats (such as 3786 'text/plain') do not include the notion of desired orientation within 3787 the document data. In the latter case it is possible for the Printer 3788 object to bind the desired orientation to the document data after it 3789 has been submitted. It is expected that a Printer object would only 3790 support "orientations-requested" for some document formats (e.g., 3791 'text/plain' or 'text/html') but not others (e.g., 3792 'application/postscript'). This is no different than any other Job 3793 Template attribute since section 4.2, item 1, points out that a 3794 Printer object may support or not support any Job Template attribute 3795 based on the document format supplied by the client. However, a 3796 special mention is made here since it is very likely that a Printer 3798 Expires December 30, 1998 3799 object will support "orientation-requested" for only a subset of the 3800 supported document formats. 3802 Standard values are: 3804 Value Symbolic Name and Description 3806 '3' 'portrait': The content will be imaged across the short 3807 edge of the medium. 3808 '4' 'landscape': The content will be imaged across the long 3809 edge of the medium. Landscape is defined to be a 3810 rotation of the print-stream page to be imaged by +90 3811 degrees with respect to the medium (i.e. anti- 3812 clockwise) from the portrait orientation. Note: The 3813 +90 direction was chosen because simple finishing on 3814 the long edge is the same edge whether portrait or 3815 landscape 3816 '5' 'reverse-landscape': The content will be imaged across the 3817 long edge of the medium. Reverse-landscape is defined 3818 to be a rotation of the print-stream page to be imaged 3819 by -90 degrees with respect to the medium (i.e. 3820 clockwise) from the portrait orientation. Note: The 3821 'reverse-landscape' value was added because some 3822 applications rotate landscape -90 degrees from 3823 portrait, rather than +90 degrees. 3824 '6' 'reverse-portrait': The content will be imaged across the 3825 short edge of the medium. Reverse-portrait is defined 3826 to be a rotation of the print-stream page to be imaged 3827 by 180 degrees with respect to the medium from the 3828 portrait orientation. Note: The 'reverse-portrait' 3829 value was added for use with the "finishings" attribute 3830 in cases where the opposite edge is desired for 3831 finishing a portrait document on simple finishing 3832 devices that have only one finishing position. Thus a 3833 'text'/plain' portrait document can be stapled "on the 3834 right" by a simple finishing device as is common use 3835 with some middle eastern languages such as Hebrew. 3837 Note: The effect of this attribute on jobs with multiple documents is 3838 controlled by the "multiple-document-handling" job attribute (section 3839 4.2.4) and the relationship of this attribute and the other attributes 3840 that control document processing is described in section 16.5. 3842 4.2.11 media (type3 keyword | name(MAX)) 3844 This attribute identifies the medium that the Printer uses for all 3845 impressions of the Job. 3847 Expires December 30, 1998 3848 The values for "media" include medium-names, medium-sizes, input-trays 3849 and electronic forms so that one attribute specifies the media. If a 3850 Printer object supports a medium name as a value of this attribute, 3851 such a medium name implicitly selects an input-tray that contains the 3852 specified medium. If a Printer object supports a medium size as a 3853 value of this attribute, such a medium size implicitly selects a 3854 medium name that in turn implicitly selects an input-tray that 3855 contains the medium with the specified size. If a Printer object 3856 supports an input-tray as the value of this attribute, such an input- 3857 tray implicitly selects the medium that is in that input-tray at the 3858 time the job prints. This case includes manual-feed input-trays. If 3859 a Printer object supports an electronic form as the value of this 3860 attribute, such an electronic form implicitly selects a medium-name 3861 that in turn implicitly selects an input-tray that contains the medium 3862 specified by the electronic form. The electronic form also implicitly 3863 selects an image that the Printer MUST merge with the document data as 3864 its prints each page. 3866 Standard values are (taken from ISO DPA and the Printer MIB) and are 3867 listed in section 15. An administrator MAY define additional values 3868 using the 'name' or 'keyword' attribute syntax, depending on 3869 implementation. 3871 There is also an additional Printer attribute named "media-ready" 3872 which differs from "media-supported" in that legal values only include 3873 the subset of "media-supported" values that are physically loaded and 3874 ready for printing with no operator intervention required. If an IPP 3875 object supports "media-supported", it NEED NOT support "media-ready". 3877 The relationship of this attribute and the other attributes that 3878 control document processing is described in section 16.5. 3880 4.2.12 printer-resolution (resolution) 3882 This attribute identifies the resolution that Printer uses for the 3883 Job. 3885 4.2.13 print-quality (type2 enum) 3887 This attribute specifies the print quality that the Printer uses for 3888 the Job. 3890 The standard values are: 3892 Value Symbolic Name and Description 3894 Expires December 30, 1998 3895 '3' 'draft': lowest quality available on the printer 3896 '4' 'normal': normal or intermediate quality on the printer 3897 '5' 'high': highest quality available on the printer 3899 4.3 Job Description Attributes 3901 The attributes in this section form the attribute group called "job- 3902 description". The following table summarizes these attributes. The 3903 third column indicates whether the attribute is a REQUIRED attribute 3904 that MUST be supported by Printer objects. If it is not indicated as 3905 REQUIRED, then it is OPTIONAL. The maximum size in octets for 'text' 3906 and 'name' attributes is indicated in parenthesizes. 3908 Expires December 30, 1998 3909 +----------------------------+----------------------+----------------+ 3910 | Attribute | Syntax | REQUIRED? | 3911 +----------------------------+----------------------+----------------+ 3912 | job-uri | uri | REQUIRED | 3913 +----------------------------+----------------------+----------------+ 3914 | job-id | integer(1:MAX) | REQUIRED | 3915 +----------------------------+----------------------+----------------+ 3916 | job-printer-uri | uri | REQUIRED | 3917 +----------------------------+----------------------+----------------+ 3918 | job-more-info | uri | | 3919 +----------------------------+----------------------+----------------+ 3920 | job-name | name (MAX) | REQUIRED | 3921 +----------------------------+----------------------+----------------+ 3922 | job-originating-user-name | name (MAX) | REQUIRED | 3923 +----------------------------+----------------------+----------------+ 3924 | job-state | type1 enum | REQUIRED | 3925 +----------------------------+----------------------+----------------+ 3926 | job-state-reasons | 1setOf type2 keyword | | 3927 +----------------------------+----------------------+----------------+ 3928 | job-state-message | text (MAX) | | 3929 +----------------------------+----------------------+----------------+ 3930 | number-of-documents | integer (0:MAX) | | 3931 +----------------------------+----------------------+----------------+ 3932 | output-device-assigned | name (127) | | 3933 +----------------------------+----------------------+----------------+ 3934 | time-at-creation | integer (0:MAX) | | 3935 +----------------------------+----------------------+----------------+ 3936 | time-at-processing | integer (0:MAX) | | 3937 +----------------------------+----------------------+----------------+ 3938 | time-at-completed | integer (0:MAX) | | 3939 +----------------------------+----------------------+----------------+ 3940 | number-of-intervening-jobs | integer (0:MAX) | | 3941 +----------------------------+----------------------+----------------+ 3942 | job-message-from-operator | text (127) | | 3943 +----------------------------+----------------------+----------------+ 3944 | job-k-octets | integer (0:MAX) | | 3945 +----------------------------+----------------------+----------------+ 3946 | job-impressions | integer (0:MAX) | | 3947 +----------------------------+----------------------+----------------+ 3948 | job-media-sheets | integer (0:MAX) | | 3949 +----------------------------+----------------------+----------------+ 3950 | job-k-octets-processed | integer (0:MAX) | | 3951 +----------------------------+----------------------+----------------+ 3952 | job-impressions-completed | integer (0:MAX) | | 3953 +----------------------------+----------------------+----------------+ 3954 | job-media-sheets-completed | integer (0:MAX) | | 3955 +----------------------------+----------------------+----------------+ 3956 | attributes-charset | charset | REQUIRED | 3958 Expires December 30, 1998 3959 +----------------------------+----------------------+----------------+ 3960 | attributes-natural-language| naturalLanguage | REQUIRED | 3961 +----------------------------+----------------------+----------------+ 3963 4.3.1 job-uri (uri) 3965 This REQUIRED attribute contains the URI for the job. The Printer 3966 object, on receipt of a new job, generates a URI which identifies the 3967 new Job. The Printer object returns the value of the "job-uri" 3968 attribute as part of the response to a create request. The precise 3969 format of a Job URI is implementation dependent. If the Printer 3970 object supports more than one URI and there is some relationship 3971 between the newly formed Job URI and the Printer object's URI, the 3972 Printer object uses the Printer URI supplied by the client in the 3973 create request. For example, if the create request comes in over a 3974 secure channel, the new Job URI MUST use the same secure channel. 3975 This can be guaranteed because the Printer object is responsible for 3976 generating the Job URI and the Printer object is aware of its security 3977 configuration and policy as well as the Printer URI used in the create 3978 request. 3980 For a description of this attribute and its relationship to "job-id" 3981 and "job-printer-uri" attribute, see the discussion in section 2.4 on 3982 "Object Identity". 3984 4.3.2 job-id (integer(1:MAX)) 3986 This REQUIRED attribute contains the ID of the job. The Printer, on 3987 receipt of a new job, generates an ID which identifies the new Job on 3988 that Printer. The Printer returns the value of the "job-id" attribute 3989 as part of the response to a create request. The 0 value is not 3990 included to allow for compatibility with SNMP index values which also 3991 cannot be 0. 3993 For a description of this attribute and its relationship to "job-uri" 3994 and "job-printer-uri" attribute, see the discussion in section 2.4 on 3995 "Object Identity". 3997 4.3.3 job-printer-uri (uri) 3999 This REQUIRED attribute identifies the Printer object that created 4000 this Job object. When a Printer object creates a Job object, it 4001 populates this attribute with the Printer object URI that was used in 4002 the create request. This attribute permits a client to identify the 4004 Expires December 30, 1998 4005 Printer object that created this Job object when only the Job object's 4006 URI is available to the client. The client queries the creating 4007 Printer object to determine which languages, charsets, operations, are 4008 supported for this Job. 4010 For a description of this attribute and its relationship to "job-uri" 4011 and "job-id" attribute, see the discussion in section 2.4 on "Object 4012 Identity". 4014 4.3.4 job-more-info (uri) 4016 Similar to "printer-more-info", this attribute contains the URI 4017 referencing some resource with more information about this Job object, 4018 perhaps an HTML page containing information about the Job. 4020 4.3.5 job-name (name(MAX)) 4022 This REQUIRED attribute is the name of the job. It is a name that is 4023 more user friendly than the "job-uri" attribute value. It does not 4024 need to be unique between Jobs. The Job's "job-name" attribute is set 4025 to the value supplied by the client in the "job-name" operation 4026 attribute in the create request (see Section 3.2.1.1). If, however, 4027 the "job-name" operation attribute is not supplied by the client in 4028 the create request, the Printer object, on creation of the Job, MUST 4029 generate a name. The printer SHOULD generate the value of the Job's 4030 "job-name" attribute from the first of the following sources that 4031 produces a value: 1) the "document-name" operation attribute of the 4032 first (or only) document, 2) the "document-URI" attribute of the first 4033 (or only) document, or 3) any other piece of Job specific and/or 4034 Document Content information. 4036 4.3.6 job-originating-user-name (name(MAX)) 4038 This REQUIRED attribute contains the name of the end user that 4039 submitted the print job. The Printer object sets this attribute to 4040 the most authenticated printable name that it can obtain from the 4041 authentication service over which the IPP operation was received. 4042 Only if such is not available, does the Printer object use the value 4043 supplied by the client in the "requesting-user-name" operation 4044 attribute of the create operation (see Section 8). 4046 Note: The Printer object needs to keep an internal originating user 4047 id of some form, typically as a credential of a principal, with the 4048 Job object. Since such an internal attribute is implementation- 4049 dependent and not of interest to clients, it is not specified as a Job 4051 Expires December 30, 1998 4052 Description attribute. This originating user id is used for 4053 authorization checks (if any) on all subsequent operation. 4055 4.3.7 job-state (type1 enum) 4057 This REQUIRED attribute identifies the current state of the job. Even 4058 though the IPP protocol defines eight values for job states, 4059 implementations only need to support those states which are 4060 appropriate for the particular implementation. In other words, a 4061 Printer supports only those job states implemented by the output 4062 device and available to the Printer object implementation. 4064 Standard values are: 4066 Values Symbolic Name and Description 4068 '3' 'pending': The job is a candidate to start processing, but 4069 is not yet processing. 4071 '4' 'pending-held': The job is not a candidate for processing 4072 for any number of reasons but will return to the 4073 'pending' state as soon as the reasons are no longer 4074 present. The job's "job-state-reason" attribute MUST 4075 indicate why the job is no longer a candidate for 4076 processing. 4078 '5' 'processing': One or more of: 4080 1. the job is using, or is attempting to use, one or 4081 more purely software processes that are analyzing, 4082 creating, or interpreting a PDL, etc., 4083 2. the job is using, or is attempting to use, one or 4084 more hardware devices that are interpreting a PDL, 4085 making marks on a medium, and/or performing finishing, 4086 such as stapling, etc., 4087 3. the Printer object has made the job ready for 4088 printing, but the output device is not yet printing it, 4089 either because the job hasn't reached the output device 4090 or because the job is queued in the output device or 4091 some other spooler, awaiting the output device to print 4092 it. 4094 When the job is in the 'processing' state, the entire 4095 job state includes the detailed status represented in 4096 the printer's "printer-state", "printer-state-reasons", 4097 and "printer-state-message" attributes. 4099 Expires December 30, 1998 4100 Implementations MAY, though they NEED NOT, include 4101 additional values in the job's "job-state-reasons" 4102 attribute to indicate the progress of the job, such as 4103 adding the 'job-printing' value to indicate when the 4104 output device is actually making marks on paper and/or 4105 the 'processing-to-stop-point' value to indicate that 4106 the IPP object is in the process of canceling or 4107 aborting the job. Most implementations won't bother 4108 with this nuance. 4110 '6' 'processing-stopped': The job has stopped while processing 4111 for any number of reasons and will return to the 4112 'processing' state as soon as the reasons are no longer 4113 present. 4115 The job's "job-state-reason" attribute MAY indicate why 4116 the job has stopped processing. For example, if the 4117 output device is stopped, the 'printer-stopped' value 4118 MAY be included in the job's "job-state-reasons" 4119 attribute. 4121 Note: When an output device is stopped, the device 4122 usually indicates its condition in human readable form 4123 locally at the device. A client can obtain more 4124 complete device status remotely by querying the Printer 4125 object's "printer-state", "printer-state-reasons" and 4126 "printer-state-message" attributes. 4128 '7' 'canceled': The job has been canceled by a Cancel-Job 4129 operation and the Printer object has completed 4130 canceling the job and all job status attributes have 4131 reached their final values for the job. While the 4132 Printer object is canceling the job, the job remains in 4133 its current state, but the job's "job-state-reasons" 4134 attribute SHOULD contain the 'processing-to-stop-point' 4135 value and one of the 'canceled-by-user', 'canceled-by- 4136 operator', or 'canceled-at-device' value. When the job 4137 moves to the 'canceled' state, the 'processing-to- 4138 stop-point' value, if present, MUST be removed, but the 4139 'canceled-by-xxx', if present, MUST remain. 4141 '8' 'aborted': The job has been aborted by the system, usually 4142 while the job was in the 'processing' or 'processing- 4143 stopped' state and the Printer has completed aborting 4144 the job and all job status attributes have reached 4145 their final values for the job. While the Printer 4146 object is aborting the job, the job remains in its 4147 current state, but the job's "job-state-reasons" 4149 Expires December 30, 1998 4150 attribute SHOULD contain the 'processing-to-stop-point' 4151 and 'aborted-by-system' values. When the job moves to 4152 the 'aborted' state, the 'processing-to-stop-point' 4153 value, if present, MUST be removed, but the 'aborted- 4154 by-system' value, if present, MUST remain. 4156 '9' 'completed': The job has completed successfully or with 4157 warnings or errors after processing and all of the job 4158 media sheets have been successfully stacked in the 4159 appropriate output bin(s) and all job status attributes 4160 have reached their final values for the job. The job's 4161 "job-state-reasons" attribute SHOULD contain one of: 4162 'completed-successfully', 'completed-with-warnings', or 4163 'completed-with-errors' values. 4165 The final value for this attribute MUST be one of: 'completed', 4166 'canceled', or 'aborted' before the Printer removes the job 4167 altogether. The length of time that jobs remain in the 'canceled', 4168 'aborted', and 'completed' states depends on implementation. 4170 The following figure shows the normal job state transitions. 4172 +----> canceled 4173 / 4174 +----> pending --------> processing ---------+------> completed 4175 | ^ ^ \ 4176 --->+ | | +----> aborted 4177 | v v / 4178 +----> pending-held processing-stopped ---+ 4180 Normally a job progresses from left to right. Other state transitions 4181 are unlikely, but are not forbidden. Not shown are the transitions to 4182 the 'canceled' state from the 'pending', 'pending-held', and 4183 'processing-stopped' states. 4185 Jobs reach one of the three terminal states: 'completed', 'canceled', 4186 or 'aborted', after the jobs have completed all activity, including 4187 stacking output media, after the jobs have completed all activity, and 4188 all job status attributes have reached their final values for the job. 4190 Note: As with all other IPP attributes, if the implementation can not 4191 determine the correct value for this attribute, it SHOULD respond with 4192 the out-of-band value 'unknown' (see section 4.1) rather than try to 4193 guess at some possibly incorrect value and give the end user the wrong 4194 impression about the state of the Job object. For example, if the 4195 implementation is just a gateway into some printing system that does 4196 not provide detailed status about the print job, the IPP Job object's 4197 state might literally be 'unknown'. 4199 Expires December 30, 1998 4200 4.3.8 job-state-reasons (1setOf type2 keyword) 4202 This attribute provides additional information about the job's current 4203 state, i.e., information that augments the value of the job's "job- 4204 state" attribute. 4206 Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT 4207 implement them, even if (1) the output device supports the 4208 functionality represented by the reason and (2) is available to the 4209 Printer object implementation. These values MAY be used with any job 4210 state or states for which the reason makes sense. Furthermore, when 4211 implemented, the Printer MUST return these values when the reason 4212 applies and MUST NOT return them when the reason no longer applies 4213 whether the value of the Job's "job-state" attribute changed or not. 4214 When the Job does not have any reasons for being in its current state, 4215 the value of the Job's "job-state-reasons" attribute MUST be 'none'. 4217 Note: While values cannot be added to the 'job-state' attribute 4218 without impacting deployed clients that take actions upon receiving 4219 "job-state" values, it is the intent that additional "job-state- 4220 reasons" values can be defined and registered without impacting such 4221 deployed clients. In other words, the "job-state-reasons" attribute 4222 is intended to be extensible. 4224 The following standard values are defined. For ease of understanding, 4225 the values are presented in the order in which the reasons are likely 4226 to occur (if implemented), starting with the 'job-incoming' value: 4228 'none': There are no reasons for the job's current state. 4229 'job-incoming': The Create-Job operation has been accepted by the 4230 Printer, but the Printer is expecting additional Send-Document 4231 and/or Send-URI operations and/or is accessing/accepting document 4232 data. 4233 'submission-interrupted': The job was not completely submitted for 4234 some unforeseen reason, such as: (1) the Printer has crashed 4235 before the job was closed by the client, (2) the Printer or the 4236 document transfer method has crashed in some non-recoverable way 4237 before the document data was entirely transferred to the Printer, 4238 (3) the client crashed or failed to close the job before the 4239 time-out period. 4240 'job-outgoing': The Printer is transmitting the job to the output 4241 device. 4242 'job-hold-until-specified': The value of the job's "job-hold- 4243 until" attribute was specified with a time period that is still 4244 in the future. The job MUST NOT be a candidate for processing 4245 until this reason is removed and there are no other reasons to 4246 hold the job. 4248 Expires December 30, 1998 4250 'resources-are-not-ready': At least one of the resources needed by 4251 the job, such as media, fonts, resource objects, etc., is not 4252 ready on any of the physical printer's for which the job is a 4253 candidate. This condition MAY be detected when the job is 4254 accepted, or subsequently while the job is pending or processing, 4255 depending on implementation. The job may remain in its current 4256 state or be moved to the 'pending-held' state, depending on 4257 implementation and/or job scheduling policy. 4258 'printer-stopped-partly': The value of the Printer's "printer- 4259 state-reasons" attribute contains the value 'stopped-partly'. 4260 'printer-stopped': The value of the Printer's "printer-state" 4261 attribute is 'stopped'. 4262 'job-interpreting': Job is in the 'processing' state, but more 4263 specifically, the Printer is interpreting the document data. 4264 'job-queued': Job is in the 'processing' state, but more 4265 specifically, the Printer has queued the document data. 4266 'job-transforming': Job is in the 'processing' state, but more 4267 specifically, the Printer is interpreting document data and 4268 producing another electronic representation. 4269 'job-printing': The output device is marking media. This value is 4270 useful for Printers which spend a great deal of time processing 4271 (1) when no marking is happening and then want to show that 4272 marking is now happening or (2) when the job is in the process of 4273 being canceled or aborted while the job remains in the 4274 'processing' state, but the marking has not yet stopped so that 4275 impression or sheet counts are still increasing for the job. 4276 'job-canceled-by-user': The job was canceled by the owner of the 4277 job using the Cancel-Job request, i.e., by a user whose 4278 authenticated identity is the same as the value of the 4279 originating user that created the Job object, or by some other 4280 authorized end-user, such as a member of the job owner's security 4281 group. 4282 'job-canceled-by-operator': The job was canceled by the operator 4283 using the Cancel-Job request, i.e., by a user who has been 4284 authenticated as having operator privileges (whether local or 4285 remote). If the security policy is to allow anyone to cancel 4286 anyone's job, then this value may be used when the job is 4287 canceled by other than the owner of the job. For such a security 4288 policy, in effect, everyone is an operator as far as canceling 4289 jobs with IPP is concerned. 4290 'job-canceled-at-device': The job was canceled by an unidentified 4291 local user, i.e., a user at a console at the device. 4292 'aborted-by-system': The job (1) is in the process of being 4293 aborted, (2) has been aborted by the system and placed in the 4294 'aborted' state, or (3) has been aborted by the system and placed 4295 in the 'pending-held' state, so that a user or operator can 4296 manually try the job again. 4298 Expires December 30, 1998 4300 'processing-to-stop-point': The requester has issued a Cancel-job 4301 operation or the Printer object has aborted the job, but is still 4302 performing some actions on the job until a specified stop point 4303 occurs or job termination/cleanup is completed. 4305 This reason is recommended to be used in conjunction with the 4306 'processing' job state to indicate that the Printer object is 4307 still performing some actions on the job while the job remains in 4308 the 'processing' state. After all the job's job description 4309 attributes have stopped incrementing, the Printer object moves 4310 the job from the 'processing' state to the 'canceled' or 4311 'aborted' job states. 4313 'service-off-line': The Printer is off-line and accepting no jobs. 4314 All 'pending' jobs are put into the 'pending-held' state. This 4315 situation could be true if the service's or document transform's 4316 input is impaired or broken. 4317 'job-completed-successfully': The job completed successfully. 4318 'job-completed-with-warnings': The job completed with warnings. 4319 'job-completed-with-errors': The job completed with errors (and 4320 possibly warnings too). 4322 4.3.9 job-state-message (text(MAX)) 4324 This attribute specifies information about the "job-state" and "job- 4325 state-reasons" attributes in human readable text. If the Printer 4326 object supports this attribute, the Printer object MUST be able to 4327 generate this message in any of the natural languages identified by 4328 the Printer's "generated-natural-language-supported" attribute (see 4329 the "attributes-natural-language" operation attribute specified in 4330 Section 3.1.4.1). 4332 Note: the value SHOULD NOT contain additional information not 4333 contained in the values of the "job-state" and "job-states-reasons" 4334 attributes, such as interpreter error information. Otherwise, 4335 application programs might attempt to parse the (localized text). For 4336 such additional information such as interpreter errors for application 4337 program consumption, a new attribute with keyword values, needs to be 4338 developed and registered. 4340 4.3.10 number-of-documents (integer(0:MAX)) 4342 This attribute indicates the number of documents in the job, i.e., the 4343 number of Send-Document, Send-URI, Print-Job, or Print-URI operations 4345 Expires December 30, 1998 4346 that the Printer has accepted for this job, regardless of whether the 4347 document data has reached the Printer object or not. 4349 Implementations supporting the OPTIONAL Create-Job/Send-Document/Send- 4350 URI operations SHOULD support this attribute so that clients can query 4351 the number of documents in each job. 4353 4.3.11 output-device-assigned (name(127)) 4355 This attribute identifies the output device to which the Printer 4356 object has assigned this job. If an output device implements an 4357 embedded Printer object, the Printer object NEED NOT set this 4358 attribute. If a print server implements a Printer object, the value 4359 MAY be empty (zero-length string) or not returned until the Printer 4360 object assigns an output device to the job. This attribute is 4361 particularly useful when a single Printer object support multiple 4362 devices (so called "fan-out"). 4364 4.3.12 time-at-creation (integer(0:MAX)) 4366 This attribute indicates the point in time at which the Job object was 4367 created. In order to populate this attribute, the Printer object uses 4368 the value in its "printer-up-time" attribute at the time the Job 4369 object is created. 4371 4.3.13 time-at-processing (integer(0:MAX)) 4373 This attribute indicates the point in time at which the Job object 4374 began processing. In order to populate this attribute, the Printer 4375 object uses the value in its "printer-up-time" attribute at the time 4376 the Job object is moved into the 'processing' state for the first 4377 time. 4379 4.3.14 time-at-completed (integer(0:MAX)) 4381 This attribute indicates the point in time at which the Job object 4382 completed (or was cancelled or aborted). In order to populate this 4383 attribute, the Printer object uses the value in its "printer-up-time" 4384 attribute at the time the Job object is moved into the 'completed' or 4385 'canceled' or 'aborted' state. 4387 Expires December 30, 1998 4388 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 4390 This attribute indicates the number of jobs that are "ahead" of this 4391 job in the relative chronological order of expected time to complete 4392 (i.e., the current scheduled order). For efficiency, it is only 4393 necessary to calculate this value when an operation is performed that 4394 requests this attribute. 4396 4.3.16 job-message-from-operator (text(127)) 4398 This attribute provides a message from an operator, system 4399 administrator or "intelligent" process to indicate to the end user the 4400 reasons for modification or other management action taken on a job. 4402 4.3.17 job-k-octets (integer(0:MAX)) 4404 This attribute specifies the total size of the document(s) in K 4405 octets, i.e., in units of 1024 octets requested to be processed in the 4406 job. The value MUST be rounded up, so that a job between 1 and 1024 4407 octets MUST be indicated as being 1, 1025 to 2048 MUST be 2, etc. 4409 This value MUST NOT include the multiplicative factors contributed by 4410 the number of copies specified by the "copies" attribute, independent 4411 of whether the device can process multiple copies without making 4412 multiple passes over the job or document data and independent of 4413 whether the output is collated or not. Thus the value is independent 4414 of the implementation and indicates the size of the document(s) 4415 measured in K octets independent of the number of copies. 4417 This value MUST also not include the multiplicative factor due to a 4418 copies instruction embedded in the document data. If the document 4419 data actually includes replications of the document data, this value 4420 will include such replication. In other words, this value is always 4421 the size of the source document data, rather than a measure of the 4422 hardcopy output to be produced. 4424 Note: This attribute and the following two attributes ("job- 4425 impressions" and "job-media-sheets") are not intended to be counters; 4426 they are intended to be useful routing and scheduling information if 4427 known. For these three attributes, the Printer object may try to 4428 compute the value if it is not supplied in the create request. Even 4429 if the client does supply a value for these three attributes in the 4430 create request, the Printer object MAY choose to change the value if 4431 the Printer object is able to compute a value which is more accurate 4432 than the client supplied value. The Printer object may be able to 4434 Expires December 30, 1998 4435 determine the correct value for these three attributes either right at 4436 job submission time or at any later point in time. 4438 4.3.18 job-impressions (integer(0:MAX)) 4440 This attribute specifies the total size in number of impressions of 4441 the document(s) being submitted (see the definition of impression in 4442 section 13.2.5). 4444 As with "job-k-octets", this value MUST NOT include the multiplicative 4445 factors contributed by the number of copies specified by the "copies" 4446 attribute, independent of whether the device can process multiple 4447 copies without making multiple passes over the job or document data 4448 and independent of whether the output is collated or not. Thus the 4449 value is independent of the implementation and reflects the size of 4450 the document(s) measured in impressions independent of the number of 4451 copies. 4453 As with "job-k-octets", this value MUST also not include the 4454 multiplicative factor due to a copies instruction embedded in the 4455 document data. If the document data actually includes replications of 4456 the document data, this value will include such replication. In other 4457 words, this value is always the number of impressions in the source 4458 document data, rather than a measure of the number of impressions to 4459 be produced by the job. 4461 See the Note in the "job-k-octets" attribute that also applies to this 4462 attribute. 4464 4.3.19 job-media-sheets (integer(0:MAX)) 4466 This attribute specifies the total number of media sheets to be 4467 produced for this job. 4469 Unlike the "job-k-octets" and the "job-impressions" attributes, this 4470 value MUST include the multiplicative factors contributed by the 4471 number of copies specified by the "copies" attribute and a 'number of 4472 copies' instruction embedded in the document data, if any. This 4473 difference allows the system administrator to control the lower and 4474 upper bounds of both (1) the size of the document(s) with "job-k- 4475 octets-supported" and "job-impressions-supported" and (2) the size of 4476 the job with "job-media-sheets-supported". 4478 See the Note in the "job-k-octets" attribute that also applies to this 4479 attribute. 4481 Expires December 30, 1998 4482 4.3.20 job-k-octets-processed (integer(0:MAX)) 4484 This attribute specifies the total number of octets processed in K 4485 octets, i.e., in units of 1024 octets so far. The value MUST be 4486 rounded up, so that a job between 1 and 1024 octets inclusive MUST be 4487 indicated as being 1, 1025 to 2048 inclusive MUST be 2, etc. 4489 For implementations where multiple copies are produced by the 4490 interpreter with only a single pass over the data, the final value 4491 MUST be equal to the value of the "job-k-octets" attribute. For 4492 implementations where multiple copies are produced by the interpreter 4493 by processing the data for each copy, the final value MUST be a 4494 multiple of the value of the "job-k-octets" attribute. 4496 Note: This attribute and the following two attributes ("job- 4497 impressions-completed" and "job-sheets-completed") are intended to be 4498 counters. That is, the value for a job that has not started processing 4499 MUST be 0. When the job's "job-state" is 'processing' or 'processing- 4500 stopped', this value is intended to contain the amount of the job that 4501 has been processed to the time at which the attributes are requested. 4503 4.3.21 job-impressions-completed (integer(0:MAX)) 4505 This job attribute specifies the number of impressions completed for 4506 the job so far. For printing devices, the impressions completed 4507 includes interpreting, marking, and stacking the output. 4509 See the note in "job-k-octets-processed" which also applies to this 4510 attribute. 4512 4.3.22 job-media-sheets-completed (integer(0:MAX)) 4514 This job attribute specifies the media-sheets completed marking and 4515 stacking for the entire job so far whether those sheets have been 4516 processed on one side or on both. 4518 See the note in "job-k-octets-processed" which also applies to this 4519 attribute. 4521 4.3.23 attributes-charset (charset) 4523 This REQUIRED attribute is populated using the value in the client 4524 supplied "attributes-charset" attribute in the create request. It 4525 identifies the charset (coded character set and encoding method) used 4526 by any Job attributes with attribute syntax 'text' and 'name' that 4528 Expires December 30, 1998 4529 were supplied by the client in the create request. See Section 3.1.4 4530 for a complete description of the "attributes-charset" operation 4531 attribute. 4533 This attribute does not indicate the charset in which the 'text' and 4534 'name' values are stored internally in the Job object. The internal 4535 charset is implementation-defined. The IPP object MUST convert from 4536 whatever the internal charset is to that being requested in an 4537 operation as specified in Section 3.1.4. 4539 4.3.24 attributes-natural-language (naturalLanguage) 4541 This REQUIRED attribute is populated using the value in the client 4542 supplied "attributes-natural-language" attribute in the create 4543 request. It identifies the natural language used for any Job 4544 attributes with attribute syntax 'text' and 'name' that were supplied 4545 by the client in the create request. See Section 3.1.4 for a complete 4546 description of the "attributes-natural-language" operation attribute. 4547 See Section 3.2.6 for how this attribute is returned in a Get-Jobs 4548 operation when jobs with different natural languages are returned. 4549 See Sections 4.1.1.2 and 4.1.2.2 for how a Natural Language Override 4550 may be supplied explicitly for each 'text' and 'name' attribute value 4551 that differs from the value identified by the "attributes-natural- 4552 language" attribute. 4554 4.4 Printer Description Attributes 4556 These attributes form the attribute group called "printer- 4557 description". The following table summarizes these attributes, their 4558 syntax, and whether or not they are REQUIRED for a Printer object to 4559 support. If they are not indicated as REQUIRED, they are OPTIONAL. 4560 The maximum size in octets for 'text' and 'name' attributes is 4561 indicated in parenthesizes. 4563 Note: How these attributes are set by an Administrator is outside the 4564 scope of this specification. 4566 Expires December 30, 1998 4567 +----------------------------+----------------------+----------------+ 4568 | Attribute | Syntax | REQUIRED? | 4569 +----------------------------+----------------------+----------------+ 4570 | printer-uri-supported | 1setOf uri | REQUIRED | 4571 +----------------------------+----------------------+----------------+ 4572 | uri-security-supported | 1setOf type2 keyword | REQUIRED | 4573 +----------------------------+----------------------+----------------+ 4574 | printer-name | name (127) | REQUIRED | 4575 +----------------------------+----------------------+----------------+ 4576 | printer-location | text (127) | | 4577 +----------------------------+----------------------+----------------+ 4578 | printer-info | text (127) | | 4579 +----------------------------+----------------------+----------------+ 4580 | printer-more-info | uri | | 4581 +----------------------------+----------------------+----------------+ 4582 | printer-driver-installer | uri | | 4583 +----------------------------+----------------------+----------------+ 4584 | printer-make-and-model | text (127) | | 4585 +----------------------------+----------------------+----------------+ 4586 | printer-more-info- | uri | | 4587 | manufacturer | | | 4588 +----------------------------+----------------------+----------------+ 4589 | printer-state | type1 enum | REQUIRED | 4590 +----------------------------+----------------------+----------------+ 4591 | printer-state-reasons | 1setOf type2 keyword | | 4592 +----------------------------+----------------------+----------------+ 4593 | printer-state-message | text (MAX) | | 4594 +----------------------------+----------------------+----------------+ 4595 | operations-supported | 1setOf type2 enum | REQUIRED | 4596 +----------------------------+----------------------+----------------+ 4597 | charset-configured | charset | REQUIRED | 4598 +----------------------------+----------------------+----------------+ 4599 | charset-supported | 1setOf charset | REQUIRED | 4600 +----------------------------+----------------------+----------------+ 4601 | natural-language-configured| naturalLanguage | REQUIRED | 4602 +----------------------------+----------------------+----------------+ 4603 | generated-natural-language-| 1setOf | REQUIRED | 4604 | supported | naturalLanguage | | 4605 +----------------------------+----------------------+----------------+ 4606 | document-format-default | mimeMediaType | REQUIRED | 4607 +----------------------------+----------------------+----------------+ 4608 | document-format- | 1setOf | REQUIRED | 4609 | supported | mimeMediaType | | 4610 +----------------------------+----------------------+----------------+ 4611 | printer-is-accepting-jobs | boolean | REQUIRED | 4612 +----------------------------+----------------------+----------------+ 4613 | queued-job-count | integer (0:MAX) | | 4614 +----------------------------+----------------------+----------------+ 4616 Expires December 30, 1998 4617 | printer-message-from- | text (127) | | 4618 | operator | | | 4619 +----------------------------+----------------------+----------------+ 4620 | color-supported | boolean | | 4621 +----------------------------+----------------------+----------------+ 4622 | reference-uri-schemes- | 1setOf uriScheme | | 4623 | supported | | | 4624 +----------------------------+----------------------+----------------+ 4625 | pdl-override-supported | type2 keyword | REQUIRED | 4626 +----------------------------+----------------------+----------------+ 4627 | printer-up-time | integer (1:MAX) | REQUIRED | 4628 +----------------------------+----------------------+----------------+ 4629 | printer-current-time | dateTime | | 4630 +----------------------------+----------------------+----------------+ 4631 | multiple-operation-time-out| integer (1:MAX) | | 4632 +----------------------------+----------------------+----------------+ 4633 | compression-supported | 1setOf type3 keyword | | 4634 +----------------------------+----------------------+----------------+ 4635 | job-k-octets-supported | rangeOfInteger | | 4636 | | (0:MAX) | | 4637 +----------------------------+----------------------+----------------+ 4638 | job-impressions-supported | rangeOfInteger | | 4639 | | (0:MAX) | | 4640 +----------------------------+----------------------+----------------+ 4641 | job-media-sheets-supported | rangeOfInteger | | 4642 | | (0:MAX) | | 4643 +----------------------------+----------------------+----------------+ 4645 4.4.1 printer-uri-supported (1setOf uri) 4647 This REQUIRED Printer attribute contains at least one URI for the 4648 Printer object. It OPTIONALLY contains more than one URI for the 4649 Printer object. An administrator determines a Printer object's 4650 URI(s) and configures this attribute to contain those URIs by some 4651 means outside the scope of IPP/1.0. The precise format of this URI is 4652 implementation dependent and depends on the protocol. See the next 4653 section for a description "uri-security-supported" which is the 4654 REQUIRED companion attribute to this "printer-uri-supported" 4655 attribute. See section 2.4 on Printer object identity and section 8.2 4656 on security and URIs for more information. 4658 4.4.2 uri-security-supported (1setOf type2 keyword) 4660 This REQUIRED Printer attribute MUST have the same cardinality 4661 (contain the same number of values) as the "printer-uri-supported" 4662 attribute. This attribute identifies the security mechanisms used for 4664 Expires December 30, 1998 4665 each URI listed in the "printer-uri-supported" attribute. The "i th" 4666 value in "uri-security-supported" corresponds to the "i th" value in 4667 "printer-uri-supported" and it describes the security mechanisms used 4668 for accessing the Printer object via that URI. The following standard 4669 values are defined: 4671 'none': There are no secure communication channel protocols in use 4672 for the given URI. 4673 'tls': TLS 1.0 [TLS] is the secure communications channel protocol 4674 in use for the given URI. 4675 'ssl3': SSL3 is the secure communications channel protocol in use 4676 for the given URI. 4678 Consider the following example. For a single Printer object, an 4679 administrator configures the "printer-uri-supported" and "uri- 4680 security-supported" attributes as follows: 4682 "printer-uri-supported": 'http://acme.com/open-use-printer', 4683 'http://acme.com/restricted-use-printer', 4684 'http://acme.com/private-printer' 4685 "uri-security-supported": 'none', 'none', 'tls' 4687 In this case, one Printer object has three URIs. 4689 - For the first URI, 'http://acme.com/open-use-printer', the value 4690 'none' in "uri-security-supported" indicates that there is no 4691 secure channel protocol configured to run under HTTP. The name 4692 implies that there is no Basic or Digest authentication being 4693 used, but it is up to the client to determine that while using 4694 HTTP underneath the IPP application protocol. 4695 - For the second URI, 'http://acme.com/restricted-use-printer', the 4696 value 'none' in "uri-security-supported" indicates that there is 4697 no secure channel protocol configured to run under HTTP. In this 4698 case, although the name does imply that there is some sort of 4699 Basic or Digest authentication being used within HTTP, it is up 4700 to the client to determine that while using HTTP and by 4701 processing any '401 Unauthorized' HTTP error messages. 4702 - For the third URI, 'http://acme.com/private-printer', the value 4703 'tls' in "uri-security-supported" indicates that TLS is being 4704 used to secure the channel. The client SHOULD be prepared to use 4705 TLS framing to negotiate an acceptable ciphersuite to use while 4706 communicating with the Printer object. In this case, the name 4707 implies the use of a secure communications channel, but the fact 4708 is made explicit by the presence of the 'tls' value in "uri- 4709 security-supported". The client does not need to resort to 4710 understanding which security it must use by following naming 4711 conventions or by parsing the URI to determine which security 4712 mechanisms are implied. 4714 Expires December 30, 1998 4716 It is expected that many IPP Printer objects will be configured to 4717 support only one channel (either configured to use TLS access or not), 4718 and will therefore only ever have one URI listed in the "printer-uri- 4719 supported" attribute. No matter the configuration of the Printer 4720 object (whether it has only one URI or more than one URI), a client 4721 MUST supply only one URI in the target "printer-uri" operation 4722 attribute. 4724 4.4.3 printer-name (name(127)) 4726 This REQUIRED Printer attribute contains the name of the Printer 4727 object. It is a name that is more end-user friendly than a URI. An 4728 administrator determines a printer's name and sets this attribute to 4729 that name. This name may be the last part of the printer's URI or it 4730 may be unrelated. In non-US-English locales, a name may contain 4731 characters that are not allowed in a URI. 4733 4.4.4 printer-location (text(127)) 4735 This Printer attribute identifies the location of the device. This 4736 could include things like: "in Room 123A, second floor of building 4737 XYZ". 4739 4.4.5 printer-info (text(127)) 4741 This Printer attribute identifies the descriptive information about 4742 this Printer object. This could include things like: "This printer 4743 can be used for printing color transparencies for HR presentations", 4744 or "Out of courtesy for others, please print only small (1-5 page) 4745 jobs at this printer", or even "This printer is going away on July 1, 4746 1997, please find a new printer". 4748 4.4.6 printer-more-info (uri) 4750 This Printer attribute contains a URI used to obtain more information 4751 about this specific Printer object. For example, this could be an 4752 HTTP type URI referencing an HTML page accessible to a Web Browser. 4753 The information obtained from this URI is intended for end user 4754 consumption. Features outside the scope of IPP can be accessed from 4755 this URI. The information is intended to be specific to this printer 4756 instance and site specific services (e.g. job pricing, services 4757 offered, end user assistance). The device manufacturer may initially 4758 populate this attribute. 4760 Expires December 30, 1998 4761 4.4.7 printer-driver-installer (uri) 4763 This Printer attribute contains a URI to use to locate the driver 4764 installer for this Printer object. This attribute is intended for 4765 consumption by automata. The mechanics of print driver installation 4766 is outside the scope of IPP. The device manufacturer may initially 4767 populate this attribute. 4769 4.4.8 printer-make-and-model (text(127)) 4771 This Printer attribute identifies the make and model of the device. 4772 The device manufacturer may initially populate this attribute. 4774 4.4.9 printer-more-info-manufacturer (uri) 4776 This Printer attribute contains a URI used to obtain more information 4777 about this type of device. The information obtained from this URI is 4778 intended for end user consumption. Features outside the scope of IPP 4779 can be accessed from this URI (e.g., latest firmware, upgrades, print 4780 drivers, optional features available, details on color support). The 4781 information is intended to be germane to this printer without regard 4782 to site specific modifications or services. The device manufacturer 4783 may initially populate this attribute. 4785 4.4.10 printer-state (type1 enum) 4787 This REQUIRED Printer attribute identifies the current state of the 4788 device. The "printer-state reasons" attribute augments the "printer- 4789 state" attribute to give more detailed information about the Printer 4790 in the given printer state. 4792 A Printer object need only update this attribute before responding to 4793 an operation which requests the attribute; the Printer object NEED NOT 4794 update this attribute continually, since asynchronous event 4795 notification is not part of IPP/1.0. A Printer NEED NOT implement all 4796 values if they are not applicable to a given implementation. 4798 The following standard values are defined: 4800 Value Symbolic Name and Description 4802 '3' 'idle': If a Printer receives a job (whose required 4803 resources are ready) while in this state, such a job 4804 MUST transit into the processing state immediately. If 4805 the printer-state-reasons attribute contains any 4807 Expires December 30, 1998 4808 reasons, they MUST be reasons that would not prevent a 4809 job from transiting into the processing state 4810 immediately, e.g., toner-low. Note: if a Printer 4811 controls more than one output device, the above 4812 definition implies that a Printer is idle if at least 4813 one output device is idle. 4815 '4' 'processing': If a Printer receives a job (whose required 4816 resources are ready) while in this state, such a job 4817 MUST transit into the pending state immediately. Such a 4818 job MUST transit into the processing state only after 4819 jobs ahead of it complete. If the printer-state- 4820 reasons attribute contains any reasons, they MUST be 4821 reasons that do not prevent the current job from 4822 printing, e.g. toner-low. Note: if a Printer controls 4823 more than one output device, the above definition 4824 implies that a Printer is processing if at least one 4825 output device is processing, and none is idle. 4827 '5' 'stopped': If a Printer receives a job (whose required 4828 resources are ready) while in this state, such a job 4829 MUST transit into the pending state immediately. Such a 4830 job MUST transit into the processing state only after 4831 some human fixes the problem that stopped the printer 4832 and after jobs ahead of it complete printing. If 4833 supported, the "printer-state-reasons" attribute MUST 4834 contain at least one reason, e.g. media-jam, which 4835 prevents it from either processing the current job or 4836 transitioning a pending job to the processing state. 4838 Note: if a Printer controls more than one output 4839 device, the above definition implies that a Printer is 4840 stopped only if all output devices are stopped. Also, 4841 it is tempting to define stopped as when a sufficient 4842 number of output devices are stopped and leave it to an 4843 implementation to define the sufficient number. But 4844 such a rule complicates the definition of stopped and 4845 processing. For example, with this alternate definition 4846 of stopped, a job can move from idle to processing 4847 without human intervention, even though the Printer is 4848 stopped. 4850 4.4.11 printer-state-reasons (1setOf type2 keyword) 4852 This Printer attribute supplies additional detail about the device's 4853 state. 4855 Expires December 30, 1998 4856 Each keyword value MAY have a suffix to indicate its level of 4857 severity. The three levels are: report (least severe), warning, and 4858 error (most severe). 4860 - '-report': This suffix indicates that the reason is a "report". 4861 An implementation may choose to omit some or all reports. Some 4862 reports specify finer granularity about the printer state; others 4863 serve as a precursor to a warning. A report MUST contain nothing 4864 that could affect the printed output. 4865 - '-warning': This suffix indicates that the reason is a "warning". 4866 An implementation may choose to omit some or all warnings. 4867 Warnings serve as a precursor to an error. A warning MUST contain 4868 nothing that prevents a job from completing, though in some cases 4869 the output may be of lower quality. 4870 - '-error': This suffix indicates that the reason is an "error". 4871 An implementation MUST include all errors. If this attribute 4872 contains one or more errors, printer MUST be in the stopped 4873 state. 4875 If the implementation does not add any one of the three suffixes, all 4876 parties MUST assume that the reason is an "error". 4878 If a Printer object controls more than one output device, each value 4879 of this attribute MAY apply to one or more of the output devices. An 4880 error on one output device that does not stop the Printer object as a 4881 whole MAY appear as a warning in the Printer's "printer-state-reasons 4882 attribute". If the "printer-state" for such a Printer has a value of 4883 'stopped', then there MUST be an error reason among the values in the 4884 "printer-state-reasons" attribute. 4886 The following standard values are defined: 4888 'other': The device has detected an error other than one listed in 4889 this document. 4890 'none': There are not reasons. This state reason is semantically 4891 equivalent to "printer-state-reasons" without any value. 4892 'media-needed': A tray has run out of media. 4893 'media-jam': The device has a media jam. 4894 'paused': Someone has paused the Printer object. In this state, a 4895 Printer MUST NOT produce printed output, but it MUST perform 4896 other operations requested by a client. If a Printer had been 4897 printing a job when the Printer was paused, the Printer MUST 4898 resume printing that job when the Printer is no longer paused and 4899 leave no evidence in the printed output of such a pause. 4900 'shutdown': Someone has removed a Printer object from service, and 4901 the device may be powered down or physically removed. In this 4902 state, a Printer object MUST NOT produce printed output, and 4903 unless the Printer object is realized by a print server that is 4905 Expires December 30, 1998 4906 still active, the Printer object MUST perform no other operations 4907 requested by a client, including returning this value. If a 4908 Printer object had been printing a job when it was shutdown, the 4909 Printer NEED NOT resume printing that job when the Printer is no 4910 longer shutdown. If the Printer resumes printing such a job, it 4911 may leave evidence in the printed output of such a shutdown, e.g. 4912 the part printed before the shutdown may be printed a second time 4913 after the shutdown. 4914 'connecting-to-device': The Printer object has scheduled a job on 4915 the output device and is in the process of connecting to a shared 4916 network output device (and might not be able to actually start 4917 printing the job for an arbitrarily long time depending on the 4918 usage of the output device by other servers on the network). 4919 'timed-out': The server was able to connect to the output device 4920 (or is always connected), but was unable to get a response from 4921 the output device. 4922 'stopping': The Printer object is in the process of stopping the 4923 device and will be stopped in a while. When the device is 4924 stopped, the Printer object will change the Printer object's 4925 state to 'stopped'. The 'stopping-warning' reason is never an 4926 error, even for a Printer with a single output device. When an 4927 output-device ceases accepting jobs, the Printer will have this 4928 reason while the output device completes printing. 4929 'stopped-partly': When a Printer object controls more than one 4930 output device, this reason indicates that one or more output 4931 devices are stopped. If the reason is a report, fewer than half 4932 of the output devices are stopped. If the reason is a warning, 4933 fewer than all of the output devices are stopped. 4934 'toner-low': The device is low on toner. 4935 'marker-supply-low': The device is low on marker supply (ink, 4936 paint, etc.). 4937 'spool-area-full': The limit of persistent storage allocated for 4938 spooling has been reached. 4939 'cover-open': One or more covers on the device are open. 4940 'interlock-open': One or more interlock devices on the printer are 4941 unlocked. 4942 'door-open': One or more doors on the device are open. 4943 'input-tray-missing': One or more input trays are not in the 4944 device. 4945 'media-low': At least one input tray is low on media. 4946 'media-empty': At least one input tray is empty. 4947 'output-tray-missing': One or more output trays are not in the 4948 device 4949 'output-area-almost-full': One or more output area is almost full 4950 (e.g. tray, stacker, collator). 4951 'output-area-full': One or more output area is full. (e.g. tray, 4952 stacker, collator) 4954 Expires December 30, 1998 4956 'marker-supply-low': The device is low on at least one marker 4957 supply. (e.g. toner, ink, ribbon) 4958 'marker-supply-empty: The device is out of at least one marker 4959 supply. (e.g. toner, ink, ribbon) 4960 'marker-waste-almost-full': The device marker supply waste 4961 receptacle is almost full. 4962 'marker-waste-full': The device marker supply waste receptacle is 4963 full. 4964 'fuser-over-temp': The fuser temperature is above normal. 4965 'fuser-under-temp': The fuser temperature is below normal. 4966 'opc-near-eol': The optical photo conductor is near end of life. 4967 'opc-life-over': The optical photo conductor is no longer 4968 functioning. 4969 'developer-low': The device is low on developer. 4970 'developer-empty: The device is out of developer. 4971 'interpreter-resource-unavailable': An interpreter resource is 4972 unavailable (i.e. font, form) 4974 4.4.12 printer-state-message (text(MAX)) 4976 This Printer attribute specifies the additional information about the 4977 printer state and printer state reasons in human readable text. If 4978 the Printer object supports this attribute, the Printer object MUST be 4979 able to generate this message in any of the natural languages 4980 identified by the Printer's "generated-natural-language-supported" 4981 attribute (see the "attributes-natural-language" operation attribute 4982 specified in Section 3.1.4.1). 4984 4.4.13 operations-supported (1setOf type2 enum) 4986 This REQUIRED Printer attribute specifies the set of supported 4987 operations for this Printer object and contained Job objects. No 32- 4988 bit enum value for this attribute MUST exceed 0x8FFF, since these 4989 values are passed in two octets in each Protocol request [IPP-PRO]. 4991 The following standard values are defined: 4993 Value Operation Name 4994 ----------------- ------------------------------------- 4996 0x0000 reserved, not used 4997 0x0001 reserved, not used 4998 0x0002 Print-Job 4999 0x0003 Print-URI 5000 0x0004 Validate-Job 5002 Expires December 30, 1998 5003 0x0005 Create-Job 5004 0x0006 Send-Document 5005 0x0007 Send-URI 5006 0x0008 Cancel-Job 5007 0x0009 Get-Job-Attributes 5008 0x000A Get-Jobs 5009 0x000B Get-Printer-Attributes 5010 0x000C-0x3FFF reserved for future operations 5011 0x4000-0x8FFF reserved for private extensions 5013 This allows for certain vendors to implement private extensions that 5014 are guaranteed to not conflict with future registered extensions. 5015 However, there is no guarantee that two or more private extensions 5016 will not conflict. 5018 4.4.14 charset-configured (charset) 5020 This REQUIRED Printer attribute identifies the charset that the 5021 Printer object has been configured to represent 'text' and 'name' 5022 Printer attributes that are set by the operator, system administrator, 5023 or manufacturer, i.e., for "printer-name" (name), "printer-location" 5024 (text), "printer-info" (text), and "printer-make-and-model" (text). 5025 Therefore, the value of the Printer object's "charset-configured" 5026 attribute MUST also be among the values of the Printer object's 5027 "charset-supported" attribute. 5029 4.4.15 charset-supported (1setOf charset) 5031 This REQUIRED Printer attribute identifies the set of charsets that 5032 the Printer and contained Job objects support in attributes with 5033 attribute syntax 'text' and 'name'. At least the value 'utf-8' MUST be 5034 present, since IPP objects MUST support the UTF-8 [RFC2044] charset. 5035 If a Printer object supports a charset, it means that for all 5036 attributes of syntax 'text' and 'name' the IPP object MUST (1) accept 5037 the charset in requests and return the charset in responses as needed. 5039 If more charsets than UTF-8 are supported, the IPP object MUST perform 5040 charset conversion between the charsets as described in Section 5041 3.2.1.2. 5043 4.4.16 natural-language-configured (naturalLanguage) 5045 This REQUIRED Printer attribute identifies the natural language that 5046 the Printer object has been configured to represent 'text' and 'name' 5047 Printer attributes that are set by the operator, system administrator, 5049 Expires December 30, 1998 5050 or manufacturer, i.e., for "printer-name" (name), "printer-location" 5051 (text), "printer-info" (text), and "printer-make-and-model" (text). 5052 When returning these Printer attributes, the Printer object MAY return 5053 them in the configured natural language specified by this attribute, 5054 instead of the natural language requested by the client in the 5055 "attributes-natural-language" operation attribute. See Section 5056 3.1.4.1 for the specification of the OPTIONAL multiple natural 5057 language support. Therefore, the value of the Printer object's 5058 "natural-language-configured" attribute MUST also be among the values 5059 of the Printer object's "generated-natural-language-supported" 5060 attribute. 5062 4.4.17 generated-natural-language-supported (1setOf naturalLanguage) 5064 This REQUIRED Printer attribute identifies the natural language(s) 5065 that the Printer object and contained Job objects support in 5066 attributes with attribute syntax 'text' and 'name'. The natural 5067 language(s) supported depends on implementation and/or configuration. 5068 Unlike charsets, IPP objects MUST accept requests with any natural 5069 language or any Natural Language Override whether the natural language 5070 is supported or not. 5072 If a Printer object supports a natural language, it means that for any 5073 of the attributes for which the Printer or Job object generates 5074 messages, i.e., for the "job-state-message" and "printer-state- 5075 message" attributes and Operation Messages (see Section 3.1.5) in 5076 operation responses, the Printer and Job objects MUST be able to 5077 generate messages in any of the Printer's supported natural languages. 5078 See section 3.1.4 for the specification of 'text' and 'name' 5079 attributes in operation requests and responses. 5081 Note: A Printer object that supports multiple natural languages, often 5082 has separate catalogs of messages, one for each natural language 5083 supported. 5085 4.4.18 document-format-default (mimeMediaType) 5087 This Printer attribute identifies the document format that the Printer 5088 object has been configured to assume if the client does not supply a 5089 "document-format" operation attribute in any of the operation requests 5090 that supply document data. The standard values for this attribute are 5091 Internet Media types (sometimes called MIME types). For further 5092 details see the description of the 'mimeMediaType' attribute syntax in 5093 Section 4.1.9. 5095 Expires December 30, 1998 5096 4.4.19 document-format-supported (1setOf mimeMediaType) 5098 This Printer attribute identifies the set of document formats that the 5099 Printer object and contained Job objects can support. For further 5100 details see the description of the 'mimeMediaType' attribute syntax in 5101 Section 4.1.9. 5103 4.4.20 printer-is-accepting-jobs (boolean) 5105 This REQUIRED Printer attribute indicates whether the printer is 5106 currently able to accept jobs, i.e., is accepting Print-Job, Print- 5107 URI, and Create-Job requests. If the value is 'true', the printer is 5108 accepting jobs. If the value is 'false', the Printer object is 5109 currently rejecting any jobs submitted to it. In this case, the 5110 Printer object returns the 'server-error-not-accepting-jobs' status 5111 code. 5113 Note: This value is independent of the "printer-state" and "printer- 5114 state-reasons" attributes because its value does not affect the 5115 current job; rather it affects future jobs. This attribute may cause 5116 the Printer to reject jobs when the "printer-state" is 'idle' or it 5117 may cause the Printer object to accepts jobs when the "printer-state" 5118 is 'stopped'. 5120 4.4.21 queued-job-count (integer(0:MAX)) 5122 This Printer attribute contains a count of the number of jobs that are 5123 either 'pending', 'processing', 'pending-held', or 'processing- 5124 stopped' and is set by the Printer object. 5126 4.4.22 printer-message-from-operator (text(127)) 5128 This Printer attribute provides a message from an operator, system 5129 administrator or "intelligent" process to indicate to the end user 5130 information or status of the printer, such as why it is unavailable or 5131 when it is expected to be available. 5133 4.4.23 color-supported (boolean) 5135 This Printer attribute identifies whether the device is capable of any 5136 type of color printing at all, including highlight color. All 5137 document instructions having to do with color are embedded within the 5138 document PDL (none are external IPP attributes in IPP/1.0). 5140 Expires December 30, 1998 5141 Note: end-users are able to determine the nature and details of the 5142 color support by querying the "printer-more-info-manufacturer" Printer 5143 attribute. 5145 4.4.24 reference-uri-schemes-supported (1setOf uriScheme) 5147 This Printer attribute specifies which URI schemes are supported for 5148 use in the "document-uri" operation attribute of the Print-URI or 5149 Send-URI operation. If a Printer object supports these optional 5150 operations, it MUST support the "reference-uri-schemes-supported" 5151 Printer attribute with at least the following schemed URI value: 5153 'ftp': The Printer object will use an FTP 'get' operation as 5154 defined in RFC 2228 [RFC2228] using FTP URLs as defined by 5155 [RFC1738] and[RFC2316]. 5157 The Printer object MAY OPTIONALLY support other URI schemes (see 5158 section 4.1.6). 5160 4.4.25 pdl-override-supported (type2 keyword) 5162 This REQUIRED Printer attribute expresses the ability for a particular 5163 Printer implementation to either attempt to override document data 5164 instructions with IPP attributes or not. 5166 This attribute takes on the following values: 5168 - 'attempted': This value indicates that the Printer object 5169 attempts to make the IPP attribute values take precedence over 5170 embedded instructions in the document data, however there is no 5171 guarantee. 5172 - 'not-attempted': This value indicates that the Printer object 5173 makes no attempt to make the IPP attribute values take precedence 5174 over embedded instructions in the document data. 5176 Section 16 contains a full description of how this attribute interacts 5177 with and affects other IPP attributes, especially the "ipp-attribute- 5178 fidelity" attribute. 5180 4.4.26 printer-up-time (integer(1:MAX)) 5182 This REQUIRED Printer attribute indicates the amount of time (in 5183 seconds) that this instance of this Printer implementation has been up 5184 and running. This value is used to populate the Job attributes "time- 5185 at-creation", "time-at-processing", and "time-at-completed". These 5187 Expires December 30, 1998 5188 time values are all measured in seconds and all have meaning only 5189 relative to this attribute, "printer-up-time". The value is a 5190 monotonically increasing value starting from 1 when the Printer object 5191 is started-up (initialized, booted, etc.). 5193 If the Printer object goes down at some value 'n', and comes back up, 5194 the implementation MAY: 5196 1. Know how long it has been down, and resume at some value greater 5197 than 'n', or 5198 2. Restart from 1. 5200 In the first case, the Printer SHOULD not tweak any existing related 5201 Job attributes ("time-at-creation", "time-at-processing", and "time- 5202 at-completed"). In the second case, the Printer object SHOULD reset 5203 those attributes to 0. If a client queries a time-related Job 5204 attribute and finds the value to be 0, the client MUST assume that the 5205 Job was submitted in some life other than the Printer's current life. 5207 4.4.27 printer-current-time (dateTime) 5209 This Printer attribute indicates the current absolute wall-clock time. 5210 If an implementation supports this attribute, then a client could 5211 calculate the absolute wall-clock time each Job's "time-at-creation", 5212 "time-at-processing", and "time-at-completed" attributes by using both 5213 "printer-up-time" and this attribute, "printer-current-time". If an 5214 implementation does not support this attribute, a client can only 5215 calculate the relative time of certain events based on the REQUIRED 5216 "printer-up-time" attribute. 5218 4.4.28 multiple-operation-time-out (integer(1:MAX)) 5220 This Printer attributes identifies how long (in seconds) the Printer 5221 object waits for additional Send-Document or Send-URI operations to 5222 follow a still-open multi-document Job object before taking one of the 5223 actions indicated in section 3.3.1. 5225 4.4.29 compression-supported (1setOf type3 keyword) 5227 This Printer attribute identifies the set of supported compression 5228 algorithms for document data. Compression only applies to the 5229 document data; compression does not apply to the encoding of the IPP 5230 operation itself. The supported values are used to validate the 5231 client supplied "compression" operation attributes in Print-Job, Send- 5232 Document, and Send-URI requests. 5234 Expires December 30, 1998 5235 Standard values are : 5237 'none': no compression is used. 5238 'deflate': ZIP public domain inflate/deflate) compression 5239 technology 5240 'gzip' GNU zip compression technology described in RFC 1952 5241 [RFC1952]. 5242 'compress': UNIX compression technology 5244 4.4.30 job-k-octets-supported (rangeOfInteger(0:MAX)) 5246 This Printer attribute specifies the upper and lower bounds of total 5247 sizes of jobs in K octets, i.e., in units of 1024 octets. The 5248 supported values are used to validate the client supplied "job-k- 5249 octets" operation attributes in create requests. The corresponding 5250 job description attribute "job-k-octets" is defined in section 4.3.17. 5252 4.4.31 job-impressions-supported (rangeOfInteger(0:MAX)) 5254 This Printer attribute specifies the upper and lower bounds for the 5255 number of impressions per job. The supported values are used to 5256 validate the client supplied "job-impressions" operation attributes in 5257 create requests. The corresponding job description attribute "job- 5258 impressions" is defined in section 4.3.18. 5260 4.4.32 job-media-sheets-supported (rangeOfInteger(0:MAX)) 5262 This Printer attribute specifies the upper and lower bounds for the 5263 number of media sheets per job. The supported values are used to 5264 validate the client supplied "job-media-sheets" operation attributes 5265 in create requests. The corresponding Job attribute "job-media- 5266 sheets" is defined in section 4.3.19. 5268 5. Conformance 5270 This section describes conformance issues and requirements. This 5271 document introduces model entities such as objects, operations, 5272 attributes, attribute syntaxes, and attribute values. These 5273 conformance sections describe the conformance requirements which apply 5274 to these model entities. 5276 Expires December 30, 1998 5277 5.1 Client Conformance Requirements 5279 A conforming client MUST support all REQUIRED operations as defined in 5280 this document. For each attribute included in an operation request, a 5281 conforming client MUST supply a value whose type and value syntax 5282 conforms to the requirements of the Model document as specified in 5283 Sections 3 and 4. A conforming client MAY supply any registered 5284 extensions and/or private extensions in an operation request, as long 5285 as they meet the requirements in Section 6. 5287 Otherwise, there are no conformance requirements placed on the user 5288 interfaces provided by IPP clients or their applications. For 5289 example, one application might not allow an end user to submit 5290 multiple documents per job, while another does. One application might 5291 first query a Printer object in order to supply a graphical user 5292 interface (GUI) dialogue box with supported and default values whereas 5293 a different implementation might not. 5295 When sending a request, an IPP client NEED NOT supply any attributes 5296 that are indicated as OPTIONALLY supplied by the client. 5298 A client MUST be able to accept any of the attribute syntaxes defined 5299 in Section 4.1, including their full range, that may be returned to it 5300 in a response from a Printer object. For presentation purposes, 5301 truncation of long attribute values is not recommended. A recommended 5302 approach would be for the client implementation to allow the user to 5303 scroll through long attribute values. 5305 A query response may contain attribute groups, attributes, and values 5306 that the client does not expect. Therefore, a client implementation 5307 MUST gracefully handle such responses and not refuse to inter-operate 5308 with a conforming Printer that is returning extended registered or 5309 private attributes and/or attribute values that conform to Section 6. 5310 Clients may choose to ignore any parameters, attributes, or values 5311 that they do not understand. 5313 5.2 IPP Object Conformance Requirements 5315 This section specifies the conformance requirements for conforming 5316 implementations with respect to objects, operations, and attributes. 5318 5.2.1 Objects 5320 Conforming implementations MUST implement all of the model objects as 5321 defined in this specification in the indicated sections: 5323 Expires December 30, 1998 5324 Section 2.1 - Printer Object 5325 Section 2.2 - Job Object 5327 5.2.2 Operations 5329 Conforming IPP object implementations MUST implement all of the 5330 REQUIRED model operations, including REQUIRED responses, as defined in 5331 this specification in the indicated sections: 5333 For a Printer object: 5334 Print-Job (section 3.2.1) REQUIRED 5335 Print-URI (section 3.2.2) OPTIONAL 5336 Validate-Job (section 3.2.3) REQUIRED 5337 Create-Job (section 3.2.4) OPTIONAL 5338 Get-Printer-Attributes (section 3.2.5) REQUIRED 5339 Get-Jobs (section 3.2.6) REQUIRED 5341 For a Job object: 5342 Send-Document (section 3.3.1) OPTIONAL 5343 Send-URI (section 3.3.2) OPTIONAL 5344 Cancel-Job (section 3.3.3) REQUIRED 5345 Get-Job-Attributes (section 3.3.4) REQUIRED 5347 Conforming IPP objects MUST support all REQUIRED operation attributes 5348 and all values of such attributes if so indicated in the description. 5349 Conforming IPP objects MUST ignore all unsupported or unknown 5350 operation attributes or operation attribute groups received in a 5351 request, but MUST reject a request that contains a supported operation 5352 attribute that contains an unsupported value. 5354 The following section on object attributes specifies the support 5355 required for object attributes. 5357 5.2.3 IPP Object Attributes 5359 Conforming IPP objects MUST support all of the REQUIRED object 5360 attributes, as defined in this specification in the indicated 5361 sections. 5363 If an object supports an attribute, it MUST support only those values 5364 specified in this document or through the extension mechanism 5365 described in section 5.2.4. It MAY support any non-empty subset of 5366 these values. That is, it MUST support at least one of the specified 5367 values and at most all of them. 5369 Expires December 30, 1998 5370 5.2.4 Extensions 5372 A conforming IPP object MAY support registered extensions and private 5373 extensions, as long as they meet the requirements specified in Section 5374 6. 5376 For each attribute included in an operation response, a conforming IPP 5377 object MUST return a value whose type and value syntax conforms to the 5378 requirement of the Model document as specified in Sections 3 and 4. 5380 5.2.5 Attribute Syntaxes 5382 An IPP object MUST be able to accept any of the attribute syntaxes 5383 defined in Section 4.1, including their full range, in any operation 5384 in which a client may supply attributes or the system administrator 5385 may configure attributes (by means outside the scope of IPP/1.0). 5386 Furthermore, an IPP object MUST return attributes to the client in 5387 operation responses that conform to the syntax specified in Section 5388 4.1, including their full range if supplied previously by a client. 5390 5.3 Charset and Natural Language Requirements 5392 All clients and IPP objects MUST support the 'utf-8' charset as 5393 defined in section 4.1.7. 5395 IPP objects MUST be able to accept any client request which correctly 5396 uses the "attributes-natural-language" operation attribute or the 5397 Natural Language Override mechanism on any individual attribute 5398 whether or not the natural language is supported by the IPP object. 5399 If an IPP object supports a natural language, then it MUST be able to 5400 translate (perhaps by table lookup) all generated 'text' or 'name' 5401 attribute values into one of the supported languages (see section 5402 3.1.4). That is, the IPP object that supports a natural language NEED 5403 NOT be a general purpose translator of any arbitrary 'text' or 'name' 5404 value supplied by the client into that natural language. However, the 5405 object MUST be able to translate (automatically generate) any of its 5406 own attribute values and messages into that natural language. 5408 5.4 Security Conformance Requirements 5410 Conforming IPP Printer objects MAY support Transport Layer Security 5411 (TLS) access, support access without TLS or support both means of 5412 access. 5414 Expires December 30, 1998 5415 Conforming IPP clients SHOULD support TLS access and non-TLS access. 5416 Note: This client requirement to support both means that conforming 5417 IPP clients will be able to inter-operate with any IPP Printer object. 5419 For a detailed discussion of security considerations and the IPP 5420 application security profile required for TLS support, see section 8. 5422 6. IANA Considerations (registered and private extensions) 5424 This section describes how IPP can be extended to allow the following 5425 registered and private extensions to IPP: 5427 1. keyword attribute values 5428 2. enum attribute values 5429 3. attributes 5430 4. attribute syntaxes 5431 5. operations 5432 6. status codes 5434 Extensions registered for use with IPP/1.0 are OPTIONAL for client and 5435 IPP object conformance to the IPP/1.0 Model specification. 5437 These extension procedures are aligned with the guidelines as set 5438 forth by the IESG [IANA-CON]. Section 12 describes how to propose new 5439 registrations for consideration. IANA will reject registration 5440 proposals that leave out required information or do not follow the 5441 appropriate format described in Section 12. IPP/1.0 may also be 5442 extended by an appropriate RFC that specifies any of the above 5443 extensions. 5445 6.1 Typed 'keyword' and 'enum' Extensions 5447 IPP allows for 'keyword' and 'enum' extensions (see sections 4.1.3 and 5448 4.1.4). This document uses prefixes to the 'keyword' and 'enum' basic 5449 attribute syntax type in order to communicate extra information to the 5450 reader through its name. This extra information is not represented in 5451 the protocol because it is unimportant to a client or Printer object. 5452 The list below describes the prefixes and their meaning. 5454 "type1": The IPP specification must be revised to add a new 5455 keyword or a new enum. No private keywords or enums are allowed. 5457 "type2": Implementers can, at any time, add new keyword or enum 5458 values by proposing the complete specification to IANA: 5460 Expires December 30, 1998 5461 iana@iana.org 5463 IANA will forward the registration proposal to the IPP Designated 5464 Expert who will review the proposal with a mailing list that the 5465 Designated Expert keeps for this purpose. Initially, that list 5466 will be the mailing list used by the IPP WG: 5468 ipp@pwg.org 5470 even after the IPP WG is disbanded as permitted by [IANA-CON]. 5471 The IPP Designated Expert is appointed by the IESG Area Director 5472 responsible for IPP, according to [IANA-CON]. 5474 When a type2 keyword or enum is approved, the IPP Designated 5475 Expert becomes the point of contact for any future maintenance 5476 that might be required for that registration. 5478 "type3": Implementers can, at any time, add new keyword and enum 5479 values by submitting the complete specification to IANA as for 5480 type2 who will forward the proposal to the IPP Designated Expert. 5481 While no additional technical review is required, the IPP 5482 Designated Expert may, at his/her discretion, forward the 5483 proposal to the same mailing list as for type2 registrations for 5484 advice and comment. 5486 When a type3 keyword or enum is approved by the IPP Designated 5487 Expert, the original proposer becomes the point of contact for 5488 any future maintenance that might be required for that 5489 registration. 5491 For type2 and type3 keywords, the proposer includes the name of the 5492 keyword in the registration proposal and the name is part of the 5493 technical review. 5495 After type2 and type3 enums specifications are approved, the IPP 5496 Designated Expert in consultation with IANA assigns the next available 5497 enum number for each enum value. 5499 IANA will publish approved type2 and type3 keyword and enum attributes 5500 value registration specifications in: 5502 ftp.isi.edu/iana/assignments/ipp/attribute-values/xxx/yyy.txt 5504 where xxx is the attribute name that specifies the initial values and 5505 yyy.txt is a descriptive file name that contains one or more enums or 5506 keywords approved at the same time. For example, if several 5507 additional enums for stapling are approved for use with the 5508 "finishings" attribute (and "finishings-default" and "finishings- 5510 Expires December 30, 1998 5511 supported" attributes), IANA will publish the additional values in the 5512 file: 5514 ftp.isi.edu/iana/assignments/ipp/attribute- 5515 values/finishings/stapling.txt. 5517 Note: Some attributes are defined to be: 'type3 keywords' | 'name' 5518 which allows for attribute values to be extended by a site 5519 administrator with administrator defined names. Such names are not 5520 registered with IANA. 5522 By definition, each of the three types above assert some sort of 5523 registry or review process in order for extensions to be considered 5524 valid. Each higher numbered level (1, 2, 3) tends to be decreasingly 5525 less stringent than the previous level. Therefore, any typeN value 5526 MAY be registered using a process for some typeM where M is less than 5527 N, however such registration is NOT REQUIRED. For example, a type3 5528 value MAY be registered in a type 1 manner (by being included in a 5529 future version of an IPP specification), however, it is NOT REQUIRED. 5531 This specification defines keyword and enum values for all of the 5532 above types, including type3 keywords. 5534 For private (unregistered) keyword extensions, implementers SHOULD use 5535 keywords with a suitable distinguishing prefix, such as "xxx-" where 5536 xxx is the (lowercase) fully qualified company name registered with 5537 IANA for use in domain names [RFC1035]. For example, if the company 5538 XYZ Corp. had obtained the domain name "XYZ.com", then a private 5539 keyword 'abc' would be: 'xyz.com-abc'. 5541 Note: RFC 1035 [RFC1035] indicates that while upper and lower case 5542 letters are allowed in domain names, no significance is attached to 5543 the case. That is, two names with the same spelling but different 5544 case are to be treated as if identical. Also, the labels in a domain 5545 name must follow the rules for ARPANET host names: They must start 5546 with a letter, end with a letter or digit, and have as interior 5547 characters only letters, digits, and hyphen. Labels must be 63 5548 characters or less. Labels are separated by the "." character. 5550 For private (unregistered) enum extension, implementers MUST use 5551 values in the reserved integer range which is 2**30 to 2**31-1. 5553 6.2 Attribute Extensibility 5555 Attribute names are type2 keywords. Therefore, new attributes may be 5556 registered and have the same status as attributes in this document by 5557 following the type2 extension rules. For private (unregistered) 5559 Expires December 30, 1998 5560 attribute extensions, implementers SHOULD use keywords with a suitable 5561 distinguishing prefix as described in Section 6.1. 5563 IANA will publish approved attribute registration specifications as 5564 separate files: 5566 ftp.isi.edu/iana/assignments/ipp/attributes/xxx-yyy.txt 5568 where "xxx-yyy" is the new attribute name. 5570 If a new Printer object attribute is defined and its values can be 5571 affected by a specific document format, its specification needs to 5572 contain the following sentence: 5574 "The value of this attribute returned in a Get-Printer- 5575 Attributes response MAY depend on the "document-format" 5576 attribute supplied (see Section 3.2.5.1)." 5578 If the specification does not, then its value in the Get-Printer- 5579 Attributes response MUST NOT depend on the "document-format" supplied 5580 in the request. When a new Job Template attribute is registered, the 5581 value of the Printer attributes MAY vary with "document-format" 5582 supplied in the request without the specification having to indicate 5583 so. 5585 6.3 Attribute Syntax Extensibility 5587 Attribute syntaxes are like type2 enums. Therefore, new attribute 5588 syntaxes may be registered and have the same status as attribute 5589 syntaxes in this document by following the type2 extension rules 5590 described in Section 6.1. The value codes that identify each of the 5591 attribute syntaxes are assigned in the protocol specification [IPP- 5592 PRO], including a designated range for private, experimental use. 5594 For attribute syntaxes, the IPP Designated Expert in consultation with 5595 IANA assigns the next attribute syntax code in the appropriate range 5596 as specified in [IPP-PRO]. IANA will publish approved attribute 5597 syntax registration specifications as separate files: 5599 ftp.isi.edu/iana/assignments/ipp/attribute-syntaxes/xxx-yyy.txt 5601 where 'xxx-yyy' is the new attribute syntax name. 5603 Expires December 30, 1998 5604 6.4 Operation Extensibility 5606 Operations may also be registered following the type2 procedures 5607 described in Section 6.1, though major new operations will usually be 5608 done by a new standards track RFC that augments this document. For 5609 private (unregistered) operation extensions, implementers MUST use the 5610 range for the "operation-id" in requests specified in Section 4.4.13 5611 "operations-supported" Printer attribute. 5613 For operations, the IPP Designated Expert in consultation with IANA 5614 assigns the next operation-id code as specified in Section 4.4.13. 5615 IANA will publish approved operation registration specifications as 5616 separate files: 5618 ftp.isi.edu/iana/assignments/ipp/operations/Xxx-Yyy.txt 5620 where "Xxx-Yyy" is the new operation name. 5622 6.5 Status Code Extensibility 5624 Operation status codes may also be registered following the type2 5625 procedures described in Section 6.1. The values for status codes are 5626 allocated in ranges as specified in Section 14 for each status code 5627 class: 5629 "informational" - Request received, continuing process 5630 "successful" - The action was successfully received, understood, 5631 and accepted 5632 "redirection" - Further action must be taken in order to complete 5633 the request 5634 "client-error" - The request contains bad syntax or cannot be 5635 fulfilled 5636 "server-error" - The IPP object failed to fulfill an apparently 5637 valid request 5639 For private (unregistered) operation status code extensions, 5640 implementers MUST use the top of each range as specified in Section 5641 14. 5643 For operation status codes, the IPP Designated Expert in consultation 5644 with IANA assigns the next status code in the appropriate class range 5645 as specified in Section 14. IANA will publish approved status code 5646 registration specifications as separate files: 5648 ftp.isi.edu/iana/assignments/ipp/status-codes/xxx-yyy.txt 5650 where "xxx-yyy" is the new operation status code keyword. 5652 Expires December 30, 1998 5653 6.6 Registration of MIME types/sub-types for document-formats 5655 The "document-format" attribute's syntax is 'mimeMediaType'. This 5656 means that valid values are Internet Media Types (see Section 4.1.9). 5657 RFC 2045 [RFC2045] defines the syntax for valid Internet media types. 5658 IANA is the registry for all Internet media types. 5660 6.7 Registration of charsets for use in 'charset' attribute values 5662 The "attributes-charset" attribute's syntax is 'charset'. This means 5663 that valid values are charsets names. When a charset in the IANA 5664 registry has more than one name (alias), the name labeled as 5665 "(preferred MIME name)", if present, MUST be used (see Section 4.1.7). 5666 IANA is the registry for charsets following the procedures of 5667 [RFC2278]. 5669 7. Internationalization Considerations 5671 Some of the attributes have values that are text strings and names 5672 which are intended for human understanding rather than machine 5673 understanding (see the 'text' and 'name' attribute syntaxes in 5674 Sections 4.1.1 and 4.1.2). 5676 In each operation request, the client 5678 - identifies the charset and natural language of the request which 5679 affects each supplied 'text' and 'name' attribute value, and 5680 - requests the charset and natural language for attributes returned 5681 by the IPP object in operation responses (as described in Section 5682 3.1.4.1). 5684 In addition, the client MAY separately and individually identify the 5685 Natural Language Override of a supplied 'text' or 'name' attribute 5686 using the 'textWithLanguage' and 'nameWithLanguage' technique 5687 described section 4.1.1.2 and 4.1.2.2 respectively. 5689 All IPP objects MUST support the UTF-8 [RFC2044] charset in all 'text' 5690 and 'name' attributes supported. If an IPP object supports more than 5691 the UTF-8 charset, the object MUST convert between them in order to 5692 return the requested charset to the client according to Section 5693 3.1.4.2. If an IPP object supports more than one natural language, 5694 the object SHOULD return 'text' and 'name' values in the natural 5695 language requested where those values are generated by the Printer 5696 (see Section 3.1.4.1). 5698 Expires December 30, 1998 5699 For Printers that support multiple charsets and/or multiple natural 5700 languages in 'text' and 'name' attributes, different jobs may have 5701 been submitted in differing charsets and/or natural languages. All 5702 responses MUST be returned in the charset requested by the client. 5703 However, the Get-Jobs operation uses the 'textWithLanguage' and 5704 'nameWithLanguage' mechanism to identify the differing natural 5705 languages with each job returned. 5707 The Printer object also has configured charset and natural language 5708 attributes. The client can query the Printer object to determine the 5709 list of charsets and natural languages supported by the Printer object 5710 and what the Printer object's configured values are. See the 5711 "charset-configured", "charset-supported", "natural-language- 5712 configured", and "generated-natural-language-supported" Printer 5713 description attributes for more details. 5715 The "charset-supported" attributed identifies the supported charsets. 5716 If a charset is supported, the IPP object MUST be capable of 5717 converting to and from that charset into any other supported charset. 5718 In many cases, an IPP object will support only one charset and it MUST 5719 be the UTF-8 charset. 5721 The "charset-configured" attribute identifies the one supported 5722 charset which is the native charset given the current configuration of 5723 the IPP object (administrator defined). 5725 The "generated-natural-language-supported" attribute identifies the 5726 set of supported natural languages for generated messages; it is not 5727 related to the set of natural languages that must be accepted for 5728 client supplied 'text' and 'name' attributes. For client supplied 5729 'text' and 'name' attributes, an IPP object MUST accept ALL supplied 5730 natural languages. Just because a Printer object is currently 5731 configured to support 'en-us' natural language does not mean that the 5732 Printer object should reject a job if the client supplies a job name 5733 that is in 'fr-ca'. 5735 The "natural-language-configured" attribute identifies the one 5736 supported natural language for generated messages which is the native 5737 natural language given the current configuration of the IPP object 5738 (administrator defined). 5740 Attributes of type 'text' and 'name' are populated from different 5741 sources. These attributes can be categorized into following groups 5742 (depending on the source of the attribute): 5744 1. Some attributes are supplied by the client (e.g., the client 5745 supplied "job-name", "document-name", and "requesting-user-name" 5746 operation attributes along with the corresponding Job object's 5748 Expires December 30, 1998 5749 "job-name" and "job-originating-user-name" attributes). The IPP 5750 object MUST accept these attributes in any natural language no 5751 matter what the set of supported languages for generated messages 5752 2. Some attributes are supplied by the system administrator (e.g., 5753 the Printer object's "printer-name" and "printer-location" 5754 attributes). These too can be in any natural language. If the 5755 natural language for these attributes is different than what a 5756 client requests, then they must be reported using the Natural 5757 Language Override mechanism. 5758 3. Some attributes are supplied by the device manufacturer (e.g., 5759 the Printer object's "printer-make-and-model" attribute). These 5760 too can be in any natural language. If the natural language for 5761 these attributes is different than what a client requests, then 5762 they must be reported using the Natural Language Override 5763 mechanism. 5764 4. Some attributes are supplied by the operator (e.g., the Job 5765 object's "job-message-from-operator" attribute). These too can be 5766 in any natural language. If the natural language for these 5767 attributes is different than what a client requests, then they 5768 must be reported using the Natural Language Override mechanism. 5769 5. Some attributes are generated by the IPP object (e.g., the Job 5770 object's "job-state-message" attribute, the Printer object's 5771 "printer-state-message" attribute, and the "status-message" 5772 operation attribute). These attributes can only be in one of 5773 the "generated-natural-language-supported" natural languages. If 5774 a client requests some natural language for these attributes 5775 other than one of the supported values, the IPP object SHOULD 5776 respond in using the value of the "natural-language-configured" 5777 attribute (using the Natural Language Override mechanism if 5778 needed). 5780 The 'text' and 'name' attributes specified in this version of this 5781 document (additional ones will be registered according to the 5782 procedures in Section 6) are: 5784 Attributes Source 5785 -------------------------- ---------- 5786 Operation Attributes 5787 job-name (name) client 5788 document-name (name) client 5789 requesting-user-name (name) client 5791 Job Attributes: 5792 job-name (name) client or Printer object 5793 job-originating-user-name (name) Printer object 5794 job-state-message (text) Job or Printer object 5795 job-message-from-operator (text) operator 5797 Expires December 30, 1998 5799 Printer Attributes: 5800 printer-name (name) administrator 5801 printer-location (text) administrator 5802 printer-info (text) administrator 5803 printer-make-and-model (text) admin. or manufacturer 5804 printer-state-message (text) Printer object 5805 printer-message-from-operator (text) operator 5807 8. Security Considerations 5809 Some IPP objects MAY be deployed over protocol stacks that support 5810 Transport Layer Security (TLS) Version 1.0. Other IPP objects MAY be 5811 deployed over protocol stacks that do not support TLS. Some IPP 5812 objects MAY be deployed over both types of protocol stacks. Those IPP 5813 objects that support TLS, are capable of supporting mutual 5814 authentication as well as privacy of messages via multiple encryption 5815 schemes. TLS 1.0 also supports a backwards compatibility mode for 5816 negotiating down to SSL3 which leverages the vast installed base of 5817 SSL3 aware clients and servers. An important point about security 5818 related information for TLS access to an IPP object, is that the 5819 security-related parameters (authentication, encryption keys, etc.) 5820 are "out-of-band" to the actual IPP protocol. 5822 An IPP object that does not support TLS MAY elect to support a 5823 transport layer that provides other security mechanisms. For example, 5824 in a mapping of IPP over HTTP/1.1 [IPP-PRO], if the IPP object does 5825 not support TLS, HTTP still allows for client authentication. 5827 It is difficult to anticipate the security risks that might exist in 5828 any given IPP environment. For example, if IPP is used within a given 5829 corporation over a private network, the risks of exposing document 5830 data may be low enough that the corporation will choose not to use 5831 encryption on that data. However, if the connection between the 5832 client and the IPP object is over a public network, the client may 5833 wish to protect the content of the information during transmission 5834 through the network with encryption. 5836 Furthermore, the value of the information being printed may vary from 5837 one IPP environment to the next. Printing payroll checks, for example, 5838 would have a different value than printing public information from a 5839 file. There is also the possibly of denial-of-service attacks, but 5840 denial-of-service attacks against printing resources are not well 5841 understood and there is no published precedents regarding this 5842 scenario. 5844 Once the authenticated identity of the requester has been supplied to 5845 the IPP object, the object uses that identity to enforce any 5847 Expires December 30, 1998 5848 authorization policy that might be in place. For example, one site's 5849 policy might be that only the job owner is allowed to cancel a job. 5850 The details and mechanisms to set up a particular access control 5851 policy are not part of IPP/1.0, and must be established via some other 5852 type of administrative or access control framework. However, there 5853 are operation status codes that allow an IPP server to return 5854 information back to a client about any potential access control 5855 violations for an IPP object. 5857 During a create operation, the client's identity is recorded in the 5858 Job object in an implementation-defined attribute. This information 5859 can be used to verify a client's identity for subsequent operations on 5860 that Job object in order to enforce any access control policy that 5861 might be in effect. See section 8.3 below for more details. 5863 Since the security levels or the specific threats that any given IPP 5864 system administrator may be concerned with cannot be anticipated, IPP 5865 MUST be capable of operating with different security mechanisms and 5866 security policies as required by the individual installation. Security 5867 policies might vary from very strong, to very weak, to none at all, 5868 and corresponding security mechanisms will be required. TLS Version 5869 1.0 supports the type of negotiated levels of security required by 5870 most, if not all, potential IPP environments. IPP environments that 5871 require no security can elect to deploy IPP objects that do not 5872 utilize the optional TLS security mechanisms. 5874 8.1 Security Scenarios 5876 The following sections describe specific security attacks for IPP 5877 environments. Where examples are provided they should be considered 5878 illustrative of the environment and not an exhaustive set. Not all of 5879 these environments will necessarily be addressed in initial 5880 implementations of IPP. 5882 8.1.1 Client and Server in the Same Security Domain 5884 This environment is typical of internal networks where traditional 5885 office workers print the output of personal productivity applications 5886 on shared work-group printers, or where batch applications print their 5887 output on large production printers. Although the identity of the user 5888 may be trusted in this environment, a user might want to protect the 5889 content of a document against such attacks as eavesdropping, replaying 5890 or tampering. 5892 Expires December 30, 1998 5893 8.1.2 Client and Server in Different Security Domains 5895 Examples of this environment include printing a document created by 5896 the client on a publicly available printer, such as at a commercial 5897 print shop; or printing a document remotely on a business associate's 5898 printer. This latter operation is functionally equivalent to sending 5899 the document to the business associate as a facsimile. Printing 5900 sensitive information on a Printer in a different security domain 5901 requires strong security measures. In this environment authentication 5902 of the printer is required as well as protection against unauthorized 5903 use of print resources. Since the document crosses security domains, 5904 protection against eavesdropping and document tampering are also 5905 required. It will also be important in this environment to protect 5906 Printers against "spamming" and malicious document content. 5908 8.1.3 Print by Reference 5910 When the document is not stored on the client, printing can be done by 5911 reference. That is, the print request can contain a reference, or 5912 pointer, to the document instead of the actual document itself. 5913 Standard methods currently do not exist for remote entities to 5914 "assume" the credentials of a client for forwarding requests to a 3rd 5915 party. It is anticipated that Print-By-Reference will be used to 5916 access "public" documents and that sophisticated methods for 5917 authenticating "proxies" will not be specified for version 1 of IPP. 5919 8.2 URIs for TLS and non-TLS Access 5921 As described earlier, an IPP object can support TLS access, non-TLS 5922 access, or both. The "printer-uri-supported" attribute contains the 5923 Printer object's URI(s). Its companion attribute, "uri-security- 5924 supported", identifies the security mechanism used for each URI listed 5925 in the "printer-uri-supported" attribute. For each Printer operation 5926 request, a client MUST supply only one URI in the "printer-uri" 5927 operation attribute. In other words, even though the Printer supports 5928 more than one URI, the client only interacts with the Printer object 5929 using one if its URIs. This duality is not needed for Job objects, 5930 since the Printer objects is the factory for Job objects, and the 5931 Printer object will generate the correct URI for new Job objects 5932 depending on the Printer object's security configuration. 5934 8.3 The "requesting-user-name" (name(MAX)) Operation Attribute 5936 Each operation MUST specify the user who is performing the operation 5937 in both of the following two ways: 5939 Expires December 30, 1998 5940 1) via the REQUIRED "requesting-user-name" operation attribute that 5941 a client SHOULD supply in all operations. The client MUST obtain 5942 the value for this attribute from an environmental or network 5943 login name for the user, rather than allowing the user to supply 5944 any value. If the client does not supply a value for "requesting- 5945 user-name", the printer MUST assume that the client is supplying 5946 some anonymous name, such as "anonymous". 5947 2) via an authentication mechanism of the underlying transport 5948 which may be configured to give no authentication information. 5950 There are six cases to consider: 5952 a) the authentication mechanism gives no information, and the 5953 client doesn't specify "requesting-user-name". 5954 b) the authentication mechanism gives no information, but the 5955 client specifies "requesting-user-name". 5956 c) the authentication mechanism specifies a user which has no 5957 human readable representation, and the client doesn't specify 5958 "requesting-user-name". 5959 d) the authentication mechanism specifies a user which has no 5960 human readable representation, but the client specifies 5961 "requesting-user-name". 5962 e) the authentication mechanism specifies a user which has a human 5963 readable representation. The Printer object ignores the 5964 "requesting-user-name". 5965 f) the authentication mechanism specifies a user who is trusted 5966 and whose name means that the value of the "requesting-user- 5967 name", which MUST be present, is treated as the authenticated 5968 name. 5970 Note: Case "f" is intended for a tightly coupled gateway and server 5971 to work together so that the "user" name is able to be that of the 5972 gateway client and not that of the gateway. Because most, if not all, 5973 system vendors will initially implement IPP via a gateway into their 5974 existing print system, this mechanism is necessary unless the 5975 authentication mechanism allows a gateway (client) to act on behalf of 5976 some other client. 5978 The user-name has two forms: 5980 - one that is human readable: it is held in the REQUIRED "job- 5981 originating-user-name" Job Description attribute which is set 5982 during the job creation operations. It is used for presentation 5983 only, such as returning in queries or printing on start sheets 5984 - one for authorization: it is held in an undefined (by IPP) Job 5985 object attribute which is set by the job creation operation. It 5986 is used to authorize other operations, such as Send-Document, 5987 Send-URI, Cancel-Job, to determine the user when the my-jobs' 5989 Expires December 30, 1998 5990 attribute is specified with Get-Jobs, and to limit what 5991 attributes and values to return with Get-Job-Attributes and Get- 5992 Jobs. 5994 The human readable user name: 5996 - is the value of the "requesting-user-name" for cases b, d and f. 5997 - comes from the authentication mechanism for case e 5998 - is some anonymous name, such as "anonymous" for cases a and c. 6000 The user name used for authorization: 6002 - is the value of the "requesting-user-name" for cases b and f. 6003 - comes from the authentication mechanism for cases c, d and e 6004 - is some anonymous name, such as "anonymous" for case a. 6006 The essence of these rules for resolving conflicting sources of user- 6007 names is that a printer implementation is free to pick either source 6008 as long as it achieves consistent results. That is, if a user uses 6009 the same path for a series of requests, the requests MUST appear to 6010 come from the same user from the standpoint of both the human-readable 6011 user name and the user name for authorization. This rule MUST 6012 continue to apply even if a request could be authenticated by two or 6013 more mechanisms. It doesn't matter which of several authentication 6014 mechanisms a Printer uses as long as it achieves consistent results. 6015 If a client uses more than one authentication mechanism, it is 6016 recommended that an administrator make all credentials resolve to the 6017 same user and user-name as much as possible. 6019 8.4 Restricted Queries 6021 In many IPP operations, a client supplies a list of attributes to be 6022 returned in the response. For security reasons, an IPP object may be 6023 configured not to return all attributes (or all values) that a client 6024 requests. The job attributes returned MAY depend on whether the 6025 requesting user is the same as the user that submitted the job. The 6026 IPP object MAY even return none of the requested attributes. In such 6027 cases, the status returned is the same as if the object had returned 6028 all requested attributes. The client cannot tell by such a response 6029 whether the requested attribute was present or absent on the object. 6031 8.5 IPP Security Application Profile for TLS 6033 The IPP application profile for TLS follows the standard "Mandatory 6034 Cipher Suites" requirement as documented in the TLS specification 6036 Expires December 30, 1998 6037 [TLS]. Client implementations MUST NOT assume any other cipher suites 6038 are supported by an IPP Printer object. 6040 If a conforming IPP object supports TLS, it MUST implement and support 6041 the "Mandatory Cipher Suites" as specified in the TLS specification 6042 and MAY support additional cipher suites. 6044 A conforming IPP client SHOULD support TLS including the "Mandatory 6045 Cipher Suites" as specified in the TLS specification. A conforming 6046 IPP client MAY support additional cipher suites. 6048 It is possible that due to certain government export restrictions some 6049 non-compliant versions of this extension could be deployed. 6050 Implementations wishing to inter-operate with such non-compliant 6051 versions MAY offer the TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA 6052 mechanism. However, since 40 bit ciphers are known to be vulnerable 6053 to attack by current technology, any client which actives a 40 bit 6054 cipher MUST NOT indicate to the user that the connection is completely 6055 secure from eavesdropping. 6057 9. References 6059 [ASCII] 6060 Coded Character Set - 7-bit American Standard Code for 6061 Information Interchange (ASCII), ANSI X3.4-1986. This standard is 6062 the specification of the US-ASCII charset. 6064 [HTPP] 6065 J. Barnett, K. Carter, R. DeBry, "Initial Draft - Hypertext 6066 Printing Protocol - HTPP/1.0", October 1996, 6067 ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/overview.ps.gz 6069 [IANA-CON] 6070 Narte, T. and Alvestrand, H.T.: Guidelines for Writing an IANA 6071 Considerations Section in RFCs, Work in Progress, draft-iesg- 6072 iana-considerations-04.txt, May 21, 1998. 6074 [IANA-CS] 6075 IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- 6076 notes/iana/assignments/character-sets 6078 [IANA-MT] 6079 IANA Registry of Media Types: ftp://ftp.isi.edu/in- 6080 notes/iana/assignments/media-types/ 6082 Expires December 30, 1998 6084 [IPP LPD] 6085 Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping 6086 between LPD and IPP Protocols", draft-ietf-ipp-lpd-ipp-map- 6087 04.txt, June 1998. 6089 [IPP-PRO] 6090 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 6091 Protocol/1.0: Encoding and Transport", draft-ietf-ipp-pro-06.txt, 6092 June, 1998. 6094 [IPP-RAT] 6095 Zilles, S., "Rationale for the Structure and Model and Protocol 6096 for the Internet Printing Protocol", draft-ietf-ipp-rat-03.txt, 6097 June, 1998. 6099 [IPP-REQ] 6100 Wright, D., "Design Goals for an Internet Printing Protocol", 6101 draft-ietf-ipp-req-02.txt, June, 1998. 6103 [ISO10646-1] 6104 ISO/IEC 10646-1:1993, "Information technology -- Universal 6105 Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture 6106 and Basic Multilingual Plane, JTC1/SC2." 6108 [ISO8859-1] 6109 ISO/IEC 8859-1:1987, "Information technology -- 8-bit One-Byte 6110 Coded Character Set - Part 1: Latin Alphabet Nr 1", 1987, 6111 JTC1/SC2. 6113 [ISO10175] 6114 ISO/IEC 10175 Document Printing Application (DPA), June 1996. 6116 [LDPA] 6117 T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. Taylor, P. 6118 Zehler, "LDPA - Lightweight Document Printing Application", 6119 October 1996, 6120 ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz 6122 [P1387.4] 6123 Kirk, M. (editor), POSIX System Administration - Part 4: Printing 6124 Interfaces, POSIX 1387.4 D8, 1994. 6126 [PSIS] Herriot, R. (editor), X/Open A Printing System 6127 Interoperability Specification (PSIS), August 1995. 6129 [PWG] 6130 Printer Working Group, http://www.pwg.org. 6132 Expires December 30, 1998 6134 [RFC1035] 6135 P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND 6136 SPECIFICATION", RFC 1035, November 1987. 6138 [RFC1179] 6139 McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 6140 1179, August 1990. 6142 [RFC1630] 6143 T. Berners-Lee, "Universal Resource Identifiers in WWW: A 6144 Unifying Syntax for the Expression of Names and Addresses of 6145 Objects on the Network as used in the World-Wide Web", RFC 1630, 6146 June 1994. 6148 [RFC1738] 6149 Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource 6150 Locators (URL)", RFC 1738, December, 1994. 6152 [RFC1759] 6153 Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 6154 J., "Printer MIB", RFC 1759, March 1995. 6156 [RFC1766] 6157 H. Alvestrand, "Tags for the Identification of Languages", RFC 6158 1766, March 1995. 6160 [RFC1808] 6161 R. Fielding, "Relative Uniform Resource Locators", RFC 1808, 6162 June 1995. 6164 [RFC1903] 6165 J. Case, et.al., "Textual Conventions for Version 2 of the Simple 6166 Network Management Protocol (SNMP v2)" RFC 1903, January 1996. 6168 [RFC1952] 6169 P. Deutsch, "GZIP file format specification version 4.3", RFC 6170 1952, May 1996. 6172 [RFC2044] 6173 F. Yergeau, "UTF-8, a transformation format of Unicode and ISO 6174 10646", RFC 2044, October 1996. 6176 [RFC2068] 6177 R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee, 6178 "Hypertext Transfer Protocol - HTTP/1.1", RFC 2068, January 1997 6180 Expires December 30, 1998 6182 [RFC2069] 6183 J. Franks, P. Hallam-Baker, J. Hostetler, P. Leach, A. Luotonen, 6184 E. Sink, L. Stewart, "An Extension to HTTP: Digest Access 6185 Authentication", RFC-2069, Jan 1997. 6187 [RFC2045] 6188 N. Fried, N. Borenstein, ", Multipurpose Internet Mail Extensions 6189 (MIME) Part One: Format of Internet Message Bodies " RFC 2045, 6190 November 1996. 6192 [RFC2046] 6193 Multipurpose Internet Mail Extensions (MIME) Part Two: Media 6194 Types. N. Freed & N. Borenstein. November 1996. (Obsoletes 6195 RFC1521, RFC1522, RFC1590), RFC 2046. 6197 [RFC2048] 6198 N. Freed, J. Klensin & J. Postel, "Multipurpose Internet Mail 6199 Extension (MIME) Part Four: Registration Procedures". RFC 6200 2048,November 1996. 6202 [RFC2119] 6203 S. Bradner, "Key words for use in RFCs to Indicate Requirement 6204 Levels", RFC 2119 , March 1997 6206 [RFC2228] 6207 M. Horowitz, S. Lunt, "FTP Security Extensions", RFC 2228, 6208 October 1997. 6210 [RFC2277] 6211 H. Alvestrand, "IETF Policy on Character Sets and Languages" RFC 6212 2277, January 1998. 6214 [RFC2278] 6215 N. Freed, J. Postel: "IANA CharSet Registration Procedures", RFC 6216 2278, January 1998. 6218 [RFC2279] 6219 F. Yergeau , "UTF-8, a transformation format of ISO 10646", RFC 6220 2279. January 1998. 6222 [RFC2316] 6223 S. Bellovin , "Report of the IAB Security Architecture Workshop", 6224 RFC 2316, April 1998. 6226 [SWP] 6227 P. Moore, B. Jahromi, S. Butler, "Simple Web Printing SWP/1.0", 6228 May 7, 1997, ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf 6230 Expires December 30, 1998 6232 10. Copyright Notice 6234 This document and translations of it may be copied and furnished to 6235 others, and derivative works that comment on or otherwise explain it 6236 or assist in its implementation may be prepared, copied, published and 6237 distributed, in whole or in part, without restriction of any kind, 6238 provided that the above copyright notice and this paragraph are 6239 included on all such copies and derivative works. However, this 6240 document itself may not be modified in any way, such as by removing 6241 the copyright notice or references to the Internet Society or other 6242 Internet organizations, except as needed for the purpose of 6243 developing Internet standards in which case the procedures for 6244 copyrights defined in the Internet Standards process must be followed, 6245 or as required to translate it into languages other than English. 6247 The limited permissions granted above are perpetual and will not be 6248 revoked by the Internet Society or its successors or assigns. 6250 This document and the information contained herein is provided on an 6251 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 6252 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT 6253 NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN 6254 WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 6255 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 6257 11. Author's Address 6259 Scott A. Isaacson (Editor) 6260 Novell, Inc. 6261 122 E 1700 S 6262 Provo, UT 84606 6264 Phone: 801-861-7366 6265 Fax: 801-861-2517 6266 e-mail: sisaacson@novell.com 6268 Tom Hastings 6269 Xerox Corporation 6270 701 S. Aviation Blvd. 6271 El Segundo, CA 90245 6273 Phone: 310-333-6413 6274 Fax: 310-333-5514 6275 e-mail: hastings@cp10.es.xerox.com 6277 Robert Herriot 6279 Expires December 30, 1998 6280 Sun Microsystems Inc. 6281 901 San Antonio.Road, MPK-17 6282 Palo Alto, CA 94303 6284 Phone: 650-786-8995 6285 Fax: 650-786-7077 6286 e-mail: robert.herriot@eng.sun.com 6288 Roger deBry 6289 HUC/003G 6290 IBM Corporation 6291 P.O. Box 1900 6292 Boulder, CO 80301-9191 6294 Phone: (303) 924-4080 6295 Fax: (303) 924-9889 6296 e-mail: debry@vnet.ibm.com 6297 Patrick Powell 6298 Astart Technologies 6299 9475 Chesapeake Dr., Suite D 6300 San Diego, CA 95123 6302 Phone: (619) 874-6543 6303 Fax: (619) 279-8424 6304 e-mail: papowell@astart.com 6306 IPP Mailing List: ipp@pwg.org 6307 IPP Mailing List Subscription: ipp-request@pwg.org 6308 IPP Web Page: http://www.pwg.org/ipp/ 6310 Implementers of this specification are encouraged to join IPP Mailing 6311 List in order to participate in any discussions of clarification 6312 issues and review of registration proposals for additional attributes 6313 and values. 6315 Other Participants: 6317 Chuck Adams - Tektronix 6318 Jeff Barnett - IBM 6319 Ron Bergman - Dataproducts Corp. 6320 Sylvan Butler, HP 6321 Keith Carter, IBM Corporation 6322 Jeff Copeland - QMS 6323 Andy Davidson - Tektronix 6324 Mabry Dozier - QMS 6325 Lee Farrell - Canon Information Systems 6326 Steve Gebert - IBM 6327 Babek Jahromi, Microsoft 6329 Expires December 30, 1998 6330 David Kellerman - Northlake Software 6331 Rick Landau - Digital 6332 Greg LeClair - Epson 6333 Harry Lewis - IBM 6334 Pete Loya - HP 6335 Ray Lutz - Cognisys 6336 Mike MacKay, Novell, Inc. 6337 Daniel Manchala - Underscore 6338 Carl-Uno Manros, Xerox 6339 Jay Martin - Underscore 6340 Larry Masinter - Xerox 6341 Stan McConnell - Xerox 6342 Ira McDonald, High North Inc. 6343 Paul Moore, Microsoft 6344 Tetsuya Morita - Ricoh 6345 Yuichi Niwa - Ricoh 6346 Pat Nogay - IBM 6347 Ron Norton - Printronics 6348 Bob Pentecost - HP 6349 Rob Rhoads - Intel 6350 Xavier Riley - Xerox 6351 David Roach - Unisys 6352 Stuart Rowley, Kyocera 6353 Hiroyuki Sato - Canon 6354 Bob Setterbo - Adobe 6355 Devon Taylor, Novell, Inc. 6356 Mike Timperman - Lexmark 6357 Randy Turner - Sharp 6358 Atsushi Yuki - Kyocera 6359 Rick Yardumian - Xerox 6360 Lloyd Young - Lexmark 6361 Bill Wagner - DPI 6362 Jim Walker - DAZEL 6363 Chris Wellens - Interworking Labs 6364 Rob Whittle - Novell 6365 Don Wright - Lexmark 6366 Peter Zehler, Xerox 6367 Steve Zilles, Adobe 6369 Expires December 30, 1998 6371 12. Formats for IPP Registration Proposals 6373 In order to propose an IPP extension for registration, the proposer 6374 must submit an application to IANA by email to "iana@iana.org" or by 6375 filling out the appropriate form on the IANA web pages 6376 (http://www.iana.org). This section specifies the required 6377 information and the formats for proposing registrations of extensions 6378 to IPP as provided in Section 6 for: 6380 1. type2 'keyword' attribute values 6381 2. type3 'keyword' attribute values 6382 3. type2 'enum' attribute values 6383 4. type3 'enum' attribute values 6384 5. attributes 6385 6. attribute syntaxes 6386 7. operations 6387 8. status codes 6389 12.1 Type2 keyword attribute values registration 6391 Type of registration: type2 keyword attribute value 6392 Name of attribute to which this keyword specification is to be added: 6393 Proposed keyword name of this keyword value: 6394 Specification of this keyword value (follow the style of IPP Model 6395 Section 4.1.3): 6396 Name of proposer: 6397 Address of proposer: 6398 Email address of proposer: 6400 Note: For type2 keywords, the Designated Expert will be the point of 6401 contact for the approved registration specification, if any 6402 maintenance of the registration specification is needed. 6404 12.2 Type3 keyword attribute values registration 6406 Type of registration: type3 keyword attribute value 6407 Name of attribute to which this keyword specification is to be added: 6408 Proposed keyword name of this keyword value: 6409 Specification of this keyword value (follow the style of IPP Model 6410 Section 4.1.3): 6411 Name of proposer: 6412 Address of proposer: 6413 Email address of proposer: 6415 Expires December 30, 1998 6416 Note: For type3 keywords, the proposer will be the point of contact 6417 for the approved registration specification, if any maintenance of the 6418 registration specification is needed. 6420 12.3 Type2 enum attribute values registration 6422 Type of registration: type2 enum attribute value 6423 Name of attribute to which this enum specification is to be added: 6424 Keyword symbolic name of this enum value: 6425 Numeric value (to be assigned by the IPP Designated Expert in 6426 consultation with IANA): 6427 Specification of this enum value (follow the style of IPP Model 6428 Section 4.1.4): 6429 Name of proposer: 6430 Address of proposer: 6431 Email address of proposer: 6433 Note: For type2 enums, the Designated Expert will be the point of 6434 contact for the approved registration specification, if any 6435 maintenance of the registration specification is needed. 6437 12.4 Type3 enum attribute values registration 6439 Type of registration: type3 enum attribute value 6440 Name of attribute to which this enum specification is to be added: 6441 Keyword symbolic name of this enum value: 6442 Numeric value (to be assigned by the IPP Designated Expert in 6443 consultation with IANA): 6444 Specification of this enum value (follow the style of IPP Model 6445 Section 4.1.4): 6446 Name of proposer: 6447 Address of proposer: 6448 Email address of proposer: 6450 Note: For type3 enums, the proposer will be the point of contact for 6451 the approved registration specification, if any maintenance of the 6452 registration specification is needed. 6454 12.5 Attribute registration 6456 Type of registration: attribute 6457 Proposed keyword name of this attribute: 6458 Types of attribute (Operation, Job Template, Job Description, Printer 6459 Description): 6460 Operations to be used with if the attribute is an operation attribute: 6461 Object (Job, Printer, etc. if bound to an object): 6462 Attribute syntax(es) (include 1setOf and range as in Section 4.2): 6463 If attribute syntax is 'keyword' or 'enum', is it type2 or type3: 6465 Expires December 30, 1998 6466 If this is a Printer attribute, MAY the value returned depend on 6467 "document-format" (See Section 6.2): 6468 Specification of this attribute (follow the style of IPP Model Section 6469 4.2): 6470 Name of proposer: 6471 Address of proposer: 6472 Email address of proposer: 6474 Note: For attributes, the IPP Designated Expert will be the point of 6475 contact for the approved registration specification, if any 6476 maintenance of the registration specification is needed. 6478 12.6 Attribute Syntax registration 6480 Type of registration: attribute syntax 6481 Proposed name of this attribute syntax: 6482 Type of attribute syntax (integer, octetString, character-string, see 6483 [IPP-PRO]): 6484 Numeric value (to be assigned by the IPP Designated Expert in 6485 consultation with IANA): 6486 Specification of this attribute (follow the style of IPP Model Section 6487 4.1): 6488 Name of proposer: 6489 Address of proposer: 6490 Email address of proposer: 6492 Note: For attribute syntaxes, the IPP Designated Expert will be the 6493 point of contact for the approved registration specification, if any 6494 maintenance of the registration specification is needed. 6496 12.7 Operation registration 6498 Type of registration: operation 6499 Proposed name of this operation: 6500 Numeric operation-id value (to be assigned by the IPP Designated 6501 Expert in consultation with IANA): 6502 Object Target (Job, Printer, etc. that operation is upon): 6503 Specification of this attribute (follow the style of IPP Model Section 6504 3): 6505 Name of proposer: 6506 Address of proposer: 6507 Email address of proposer: 6509 Note: For operations, the IPP Designated Expert will be the point of 6510 contact for the approved registration specification, if any 6511 maintenance of the registration specification is needed. 6513 Expires December 30, 1998 6514 12.8 Status code registration 6516 Type of registration: status code 6517 Keyword symbolic name of this status code value: 6518 Numeric value (to be assigned by the IPP Designated Expert in 6519 consultation with IANA): 6520 Operations that this status code may be used with: 6521 Specification of this status code (follow the style of IPP Model 6522 Section 14 APPENDIX B: Status Codes and Suggested Status Code 6523 Messages): 6524 Name of proposer: 6525 Address of proposer: 6526 Email address of proposer: 6528 Note: For status codes, the Designated Expert will be the point of 6529 contact for the approved registration specification, if any 6530 maintenance of the registration specification is needed. 6532 13. APPENDIX A: Terminology 6534 This specification uses the terminology defined in this section. 6536 13.1 Conformance Terminology 6538 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 6539 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 6540 document are to be interpreted as described in RFC 2119 [RFC2119]. 6542 13.1.1 NEED NOT 6544 This term is not included in RFC 2119. The verb "NEED NOT" indicates 6545 an action that the subject of the sentence does not have to implement 6546 in order to claim conformance to the standard. The verb "NEED NOT" is 6547 used instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. 6549 13.2 Model Terminology 6551 13.2.1 Keyword 6553 Keywords are used within this document as identifiers of semantic 6554 entities within the abstract model (see section 4.1.3). Attribute 6555 names, some attribute values, attribute syntaxes, and attribute group 6556 names are represented as keywords. 6558 Expires December 30, 1998 6559 13.2.2 Attributes 6561 An attribute is an item of information that is associated with an 6562 instance of an IPP object. An attribute consists of an attribute name 6563 and one or more attribute values. Each attribute has a specific 6564 attribute syntax. All object attributes are defined in section 4 and 6565 all operation attributes are defined in section 3. 6567 Job Template Attributes are described in section 4.2. The client 6568 optionally supplies Job Template attributes in a create request 6569 (operation requests that create Job objects). The Printer object has 6570 associated attributes which define supported and default values for 6571 the Printer. 6573 13.2.2.1 Attribute Name 6575 Each attribute is uniquely identified in this document by its 6576 attribute name. An attribute name is a keyword. The keyword 6577 attribute name is given in the section header describing that 6578 attribute. In running text in this document, attribute names are 6579 indicated inside double quotation marks (") where the quotation marks 6580 are not part of the keyword itself. 6582 13.2.2.2 Attribute Group Name 6584 Related attributes are grouped into named groups. The name of the 6585 group is a keyword. The group name may be used in place of naming all 6586 the attributes in the group explicitly. Attribute groups are defined 6587 in section 3. 6589 13.2.2.3 Attribute Value 6591 Each attribute has one or more values. Attribute values are 6592 represented in the syntax type specified for that attribute. In 6593 running text in this document, attribute values are indicated inside 6594 single quotation marks ('), whether their attribute syntax is keyword, 6595 integer, text, etc. where the quotation marks are not part of the 6596 value itself. 6598 13.2.2.4 Attribute Syntax 6600 Each attribute is defined using an explicit syntax type. In this 6601 document, each syntax type is defined as a keyword with specific 6602 meaning. The protocol specification document [IPP-PRO] indicates the 6604 Expires December 30, 1998 6605 actual "on-the-wire" encoding rules for each syntax type. Attribute 6606 syntax types are defined in section 4.1. 6608 13.2.3 Supports 6610 By definition, a Printer object supports an attribute only if that 6611 Printer object responds with the corresponding attribute populated 6612 with some value(s) in a response to a query for that attribute. A 6613 Printer object supports an attribute value if the value is one of the 6614 Printer object's "supported values" attributes. The device behind a 6615 Printer object may exhibit a behavior that corresponds to some IPP 6616 attribute, but if the Printer object, when queried for that attribute, 6617 doesn't respond with the attribute, then as far as IPP is concerned, 6618 that implementation does not support that feature. If the Printer 6619 object's "xxx-supported" attribute is not populated with a particular 6620 value (even if that value is a legal value for that attribute), then 6621 that Printer object does not support that particular value. 6623 A conforming implementation MUST support all REQUIRED attributes. 6624 However, even for REQUIRED attributes, conformance to IPP does not 6625 mandate that all implementations support all possible values 6626 representing all possible job processing behaviors and features. For 6627 example, if a given instance of a Printer supports only certain 6628 document formats, then that Printer responds with the "document- 6629 format-supported" attribute populated with a set of values, possibly 6630 only one, taken from the entire set of possible values defined for 6631 that attribute. This limited set of values represents the Printer's 6632 set of supported document formats. Supporting an attribute and some 6633 set of values for that attribute enables IPP end users to be aware of 6634 and make use of those features associated with that attribute and 6635 those values. If an implementation chooses to not support an 6636 attribute or some specific value, then IPP end users would have no 6637 ability to make use of that feature within the context of IPP itself. 6638 However, due to existing practice and legacy systems which are not IPP 6639 aware, there might be some other mechanism outside the scope of IPP to 6640 control or request the "unsupported" feature (such as embedded 6641 instructions within the document data itself). 6643 For example, consider the "finishings-supported" attribute. 6645 1) If a Printer object is not physically capable of stapling, the 6646 "finishings-supported" attribute MUST NOT be populated with the 6647 value of 'staple'. 6648 2) A Printer object is physically capable of stapling, however an 6649 implementation chooses not to support stapling in the IPP 6650 "finishings" attribute. In this case, 'staple' MUST NOT be a 6651 value in the "finishings-supported" Printer object attribute. 6653 Expires December 30, 1998 6654 Without support for the value 'staple', an IPP end user would 6655 have no means within the protocol itself to request that a Job be 6656 stapled. However, an existing document data formatter might be 6657 able to request that the document be stapled directly with an 6658 embedded instruction within the document data. In this case, the 6659 IPP implementation does not "support" stapling, however the end 6660 user is still able to have some control over the stapling of the 6661 completed job. 6662 3) A Printer object is physically capable of stapling, and an 6663 implementation chooses to support stapling in the IPP 6664 "finishings" attribute. In this case, 'staple' MUST be a value in 6665 the "finishings-supported" Printer object attribute. Doing so, 6666 would enable end users to be aware of and make use of the 6667 stapling feature using IPP attributes. 6669 Even though support for Job Template attributes by a Printer object is 6670 OPTIONAL, it is RECOMMENDED that if the device behind a Printer object 6671 is capable of realizing any feature or function that corresponds to an 6672 IPP attribute and some associated value, then that implementation 6673 SHOULD support that IPP attribute and value. 6675 The set of values in any of the supported value attributes is set 6676 (populated) by some administrative process or automatic sensing 6677 mechanism that is outside the scope of IPP. For administrative policy 6678 and control reasons, an administrator may choose to make only a subset 6679 of possible values visible to the end user. In this case, the real 6680 output device behind the IPP Printer abstraction may be capable of a 6681 certain feature, however an administrator is specifying that access to 6682 that feature not be exposed to the end user through the IPP protocol. 6683 Also, since a Printer object may represent a logical print device (not 6684 just a physical device) the actual process for supporting a value is 6685 undefined and left up to the implementation. However, if a Printer 6686 object supports a value, some manual human action may be needed to 6687 realize the semantic action associated with the value, but no end user 6688 action is required. 6690 For example, if one of the values in the "finishings-supported" 6691 attribute is 'staple', the actual process might be an automatic staple 6692 action by a physical device controlled by some command sent to the 6693 device. Or, the actual process of stapling might be a manual action 6694 by an operator at an operator attended Printer object. 6696 For another example of how supported attributes function, consider a 6697 system administrator who desires to control all print jobs so that no 6698 job sheets are printed in order to conserve paper. To force no job 6699 sheets, the system administrator sets the only supported value for the 6700 "job-sheets-supported" attribute to 'none'. In this case, if a client 6701 requests anything except 'none', the create request is rejected or the 6703 Expires December 30, 1998 6704 "job-sheets" value is ignored (depending on the value of "ipp- 6705 attribute-fidelity"). To force the use of job start/end sheets on all 6706 jobs, the administrator does not include the value 'none' in the "job- 6707 sheets-supported" attribute. In this case, if a client requests 6708 'none', the create request is rejected or the "job-sheets" value is 6709 ignored (again depending on the value of "ipp-attribute-fidelity"). 6711 13.2.4 print-stream page 6713 A "print-stream page" is a page according to the definition of pages 6714 in the language used to express the document data. 6716 13.2.5 impression 6718 An "impression" is the image (possibly many print-stream pages in 6719 different configurations) imposed onto a single media page. 6721 14. APPENDIX B: Status Codes and Suggested Status Code Messages 6723 This section defines status code enum keywords and values that are 6724 used to provide semantic information on the results of an operation 6725 request. Each operation response MUST include a status code. The 6726 response MAY also contain a status message that provides a short 6727 textual description of the status. The status code is intended for 6728 use by automata, and the status message is intended for the human end 6729 user. Since the status message is an OPTIONAL component of the 6730 operation response, an IPP application (i.e., a browser, GUI, print 6731 driver or gateway) is NOT REQUIRED to examine or display the status 6732 message, since it MAY not be returned to the application. 6734 The prefix of the status keyword defines the class of response as 6735 follows: 6737 "informational" - Request received, continuing process 6738 "successful" - The action was successfully received, understood, 6739 and accepted 6740 "redirection" - Further action must be taken in order to complete 6741 the request 6742 "client-error" - The request contains bad syntax or cannot be 6743 fulfilled 6744 "server-error" - The IPP object failed to fulfill an apparently 6745 valid request 6747 Expires December 30, 1998 6749 As with type2 enums, IPP status codes are extensible. IPP clients are 6750 NOT REQUIRED to understand the meaning of all registered status codes, 6751 though such understanding is obviously desirable. However, IPP 6752 clients MUST understand the class of any status code, as indicated by 6753 the prefix, and treat any unrecognized response as being equivalent to 6754 the first status code of that class, with the exception that an 6755 unrecognized response MUST NOT be cached. For example, if an 6756 unrecognized status code of "client-error-xxx-yyy" is received by the 6757 client, it can safely assume that there was something wrong with its 6758 request and treat the response as if it had received a "client-error- 6759 bad-request" status code. In such cases, IPP applications SHOULD 6760 present the OPTIONAL message (if present) to the end user since the 6761 message is likely to contain human readable information which will 6762 help to explain the unusual status. The name of the enum is the 6763 suggested status message for US English. 6765 The status code values range from 0x0000 to 0x7FFF. The value ranges 6766 for each status code class are as follows: 6768 "successful" - 0x0000 to 0x00FF 6769 "informational" - 0x0100 to 0x01FF 6770 "redirection" - 0x0200 to 0x02FF 6771 "client-error" - 0x0400 to 0x04FF 6772 "server-error" - 0x0500 to 0x05FF 6774 The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 6775 to 5) is reserved for private use within each status code class. 6776 Values 0x0600 to 0x7FFF are reserved for future assignment and MUST 6777 NOT be used. 6779 14.1 Status Codes 6781 Each status code is described below. Section 14.2 contains a table 6782 that indicates which status codes apply to which operations. Sections 6783 16.3 and 16.4 describe the suggested steps for processing IPP 6784 attributes for all operations, including returning status codes. 6786 14.1.1 Informational 6788 This class of status code indicates a provisional response and is to 6789 be used for informational purposes only. 6791 There are no status codes defined in IPP/1.0 for this class of status 6792 code. 6794 Expires December 30, 1998 6795 14.1.2 Successful Status Codes 6797 This class of status code indicates that the client's request was 6798 successfully received, understood, and accepted. 6800 14.1.2.1 successful-ok (0x0000) 6802 The request has succeeded. In the case of a response to a create 6803 request, the 'successful-ok' status code indicates that the request 6804 was successfully received and validated, and that the Job object has 6805 been created; it does not indicate that the job has been processed. 6806 The transition of the Job object into the 'completed' state is the 6807 only indicator that the job has been printed. 6809 14.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) 6811 The request has succeeded, but some attributes were ignored or 6812 unsupported values were substituted with supported values in order to 6813 process the job without rejecting it. 6815 14.1.2.3 successful-ok-conflicting-attributes (0x0002) 6817 The request has succeeded, but some attribute values conflicted with 6818 the values of other attributes. These conflicting values were either 6819 (1) substituted with (supported) values or (2) the attributes were 6820 removed in order to process the job without rejecting it. 6822 14.1.3 Redirection Status Codes 6824 This class of status code indicates that further action needs to be 6825 taken to fulfill the request. 6827 There are no status codes defined in IPP/1.0 for this class of status 6828 code. 6830 14.1.4 Client Error Status Codes 6832 This class of status code is intended for cases in which the client 6833 seems to have erred. The IPP object SHOULD return a message 6834 containing an explanation of the error situation and whether it is a 6835 temporary or permanent condition. 6837 Expires December 30, 1998 6838 14.1.4.1 client-error-bad-request (0x0400) 6840 The request could not be understood by the IPP object due to malformed 6841 syntax (such as the value of a fixed length attribute whose length 6842 does not match the prescribed length for that attribute - see section 6843 16.3). The IPP application SHOULD NOT repeat the request without 6844 modifications. 6846 14.1.4.2 client-error-forbidden (0x0401) 6848 The IPP object understood the request, but is refusing to fulfill it. 6849 Additional authentication information or authorization credentials 6850 will not help and the request SHOULD NOT be repeated. This status 6851 code is commonly used when the IPP object does not wish to reveal 6852 exactly why the request has been refused or when no other response is 6853 applicable. 6855 14.1.4.3 client-error-not-authenticated (0x0402) 6857 The request requires user authentication. The IPP client may repeat 6858 the request with suitable authentication information. If the request 6859 already included authentication information, then this status code 6860 indicates that authorization has been refused for those credentials. 6861 If this response contains the same challenge as the prior response, 6862 and the user agent has already attempted authentication at least once, 6863 then the response message may contain relevant diagnostic information. 6864 This status codes reveals more information than "client-error- 6865 forbidden". 6867 14.1.4.4 client-error-not-authorized (0x0403) 6869 The requester is not authorized to perform the request. Additional 6870 authentication information or authorization credentials will not help 6871 and the request SHOULD NOT be repeated. This status code is used when 6872 the IPP object wishes to reveal that the authentication information is 6873 understandable, however, the requester is explicitly not authorized to 6874 perform the request. This status codes reveals more information than 6875 "client-error-forbidden" and "client-error-not-authenticated". 6877 14.1.4.5 client-error-not-possible (0x0404) 6879 This status code is used when the request is for something that can 6880 not happen. For example, there might be a request to cancel a job 6882 Expires December 30, 1998 6883 that has already been canceled or aborted by the system. The IPP 6884 client SHOULD NOT repeat the request. 6886 14.1.4.6 client-error-timeout (0x0405) 6888 The client did not produce a request within the time that the IPP 6889 object was prepared to wait. For example, a client issued a Create- 6890 Job operation and then, after a long period of time, issued a Send- 6891 Document operation and this error status code was returned in response 6892 to the Send-Document request (see section 3.3.1). The IPP object 6893 might have been forced to clean up resources that had been held for 6894 the waiting additional Documents. The IPP object was forced to close 6895 the Job since the client took too long. The client SHOULD NOT repeat 6896 the request without modifications. 6898 14.1.4.7 client-error-not-found (0x0406) 6900 The IPP object has not found anything matching the request URI. No 6901 indication is given of whether the condition is temporary or 6902 permanent. For example, a client with an old reference to a Job (a 6903 URI) tries to cancel the Job, however in the mean time the Job might 6904 have been completed and all record of it at the Printer has been 6905 deleted. This status code, 'client-error-not-found' is returned 6906 indicating that the referenced Job can not be found. This error 6907 status code is also used when a client supplies a URI as a reference 6908 to the document data in either a Print-URI or Send-URI operation, but 6909 the document can not be found. 6911 In practice, an IPP application should avoid a not found situation by 6912 first querying and presenting a list of valid Printer URIs and Job 6913 URIs to the end-user. 6915 14.1.4.8 client-error-gone (0x0407) 6917 The requested object is no longer available and no forwarding address 6918 is known. This condition should be considered permanent. Clients 6919 with link editing capabilities should delete references to the request 6920 URI after user approval. If the IPP object does not know or has no 6921 facility to determine, whether or not the condition is permanent, the 6922 status code "client-error-not-found" should be used instead. 6924 This response is primarily intended to assist the task of maintenance 6925 by notifying the recipient that the resource is intentionally 6926 unavailable and that the IPP object administrator desires that remote 6927 links to that resource be removed. It is not necessary to mark all 6929 Expires December 30, 1998 6930 permanently unavailable resources as "gone" or to keep the mark for 6931 any length of time -- that is left to the discretion of the IPP object 6932 administrator. 6934 14.1.4.9 client-error-request-entity-too-large (0x0408) 6936 The IPP object is refusing to process a request because the request 6937 entity is larger than the IPP object is willing or able to process. 6938 An IPP Printer returns this status code when it limits the size of 6939 print jobs and it receives a print job that exceeds that limit or when 6940 the attributes are so many that their encoding causes the request 6941 entity to exceed IPP object capacity. 6943 14.1.4.10 client-error-request-value-too-long (0x0409) 6945 The IPP object is refusing to service the request because one or more 6946 of the client-supplied attributes has a variable length value that is 6947 longer than the maximum length specified for that attribute. The IPP 6948 object might not have sufficient resources (memory, buffers, etc.) to 6949 process (even temporarily), interpret, and/or ignore a value larger 6950 than the maximum length. Another use of this error code is when the 6951 IPP object supports the processing of a large value that is less than 6952 the maximum length, but during the processing of the request as a 6953 whole, the object may pass the value onto some other system component 6954 which is not able to accept the large value. For more details, see 6955 section 16.3. 6957 Note: For attribute values that are URIs, this rare condition is only 6958 likely to occur when a client has improperly submitted a request with 6959 long query information (e.g. an IPP application allows an end-user to 6960 enter an invalid URI), when the client has descended into a URI "black 6961 hole" of redirection (e.g., a redirected URI prefix that points to a 6962 suffix of itself), or when the IPP object is under attack by a client 6963 attempting to exploit security holes present in some IPP objects using 6964 fixed-length buffers for reading or manipulating the Request-URI. 6966 14.1.4.11 client-error-document-format-not-supported (0x040A) 6968 The IPP object is refusing to service the request because the document 6969 data is in a format, as specified in the "document-format" operation 6970 attribute, that is not supported by the Printer object. This error is 6971 returned independent of the client-supplied "ipp-attribute-fidelity". 6972 The Printer object MUST return this status code, even if there are 6973 other attributes that are not supported as well, since this error is a 6974 bigger problem than with Job Template attributes. 6976 Expires December 30, 1998 6977 14.1.4.12 client-error-attributes-or-values-not-supported (0x040B) 6979 In a create request, if the Printer object does not support one or 6980 more attributes or attribute values supplied in the request and the 6981 client supplied the "ipp-attributes-fidelity" operation attribute with 6982 the 'true' value, the Printer object MUST return this status code. 6983 For example, if the request indicates 'iso-a4' media, but that media 6984 type is not supported by the Printer object. Or, if the client 6985 supplies an optional attribute and the attribute itself is not even 6986 supported by the Printer. If the "ipp-attribute-fidelity" attribute 6987 is 'false', the Printer MUST ignore or substitute values for 6988 unsupported attributes and values rather than reject the request and 6989 return this status code. 6991 For any operation where a client requests attributes (such as a Get- 6992 Jobs, Get-Printer-Attributes, or Get-Job-Attributes operation), if the 6993 IPP object does not support one or more of the requested attributes, 6994 the IPP object simply ignores the unsupported requested attributes and 6995 processes the request as if they had not been supplied, rather than 6996 returning this status code. 6998 14.1.4.13 client-error-uri-scheme-not-supported (0x040C) 7000 The type of the client supplied URI in a Print-URI or a Send-URI 7001 operation is not supported. 7003 14.1.4.14 client-error-charset-not-supported (0x040D) 7005 For any operation, if the IPP Printer does not support the charset 7006 supplied by the client in the "attributes-charset" operation 7007 attribute, the Printer MUST reject the operation and return this 7008 status (see Section 3.1.4.1). 7010 14.1.4.15 client-error-conflicting-attributes (0x040E) 7012 The request is rejected because some attribute values conflicted with 7013 the values of other attributes. 7015 14.1.5 Server Error Status Codes 7017 This class of status codes indicates cases in which the IPP object is 7018 aware that it has erred or is incapable of performing the request. 7019 The IPP object SHOULD include a message containing an explanation of 7021 Expires December 30, 1998 7022 the error situation, and whether it is a temporary or permanent 7023 condition. 7025 14.1.5.1 server-error-internal-error (0x0500) 7027 The IPP object encountered an unexpected condition that prevented it 7028 from fulfilling the request. This error status code differs from 7029 "server-error-temporary-error" in that it implies a more permanent 7030 type of internal error. It also differs from "server-error-device- 7031 error" in that it implies an unexpected condition (unlike a paper-jam 7032 or out-of-toner problem which is undesirable but expected). This 7033 error status code indicates that probably some knowledgeable human 7034 intervention is required. 7036 14.1.5.2 server-error-operation-not-supported (0x0501) 7038 The IPP object does not support the functionality required to fulfill 7039 the request. This is the appropriate response when the IPP object does 7040 not recognize an operation or is not capable of supporting it. 7042 14.1.5.3 server-error-service-unavailable (0x0502) 7044 The IPP object is currently unable to handle the request due to a 7045 temporary overloading or maintenance of the IPP object. The 7046 implication is that this is a temporary condition which will be 7047 alleviated after some delay. If known, the length of the delay may be 7048 indicated in the message. If no delay is given, the IPP application 7049 should handle the response as it would for a "server-error-temporary- 7050 error" response. If the condition is more permanent, the error status 7051 codes "client-error-gone" or "client-error-not-found" could be used. 7053 14.1.5.4 server-error-version-not-supported (0x0503) 7055 The IPP object does not support, or refuses to support, the IPP 7056 protocol version that was used in the request message. The IPP object 7057 is indicating that it is unable or unwilling to complete the request 7058 using the same version as supplied in the request other than with this 7059 error message. The response should contain a Message describing why 7060 that version is not supported and what other versions are supported by 7061 that IPP object. 7063 A conforming IPP/1.0 client MUST specify the valid version ('1.0') on 7064 each request. A conforming IPP/1.0 object MUST NOT return this status 7065 code to a conforming IPP/1.0 client. An IPP object MUST return this 7067 Expires December 30, 1998 7068 status code to a non-conforming IPP client. The response MUST 7069 identify in the "version-number" operation attribute the closest 7070 version number that the IPP object does support. 7072 14.1.5.5 server-error-device-error (0x0504) 7074 A printer error, such as a paper jam, occurs while the IPP object 7075 processes a Print or Send operation. The response contains the true 7076 Job Status (the values of the "job-state" and "job-state-reasons" 7077 attributes). Additional information can be returned in the optional 7078 "job-state-message" attribute value or in the OPTIONAL status message 7079 that describes the error in more detail. This error status code is 7080 only returned in situations where the Printer is unable to accept the 7081 create request because of such a device error. For example, if the 7082 Printer is unable to spool, and can only accept one job at a time, the 7083 reason it might reject a create request is that the printer currently 7084 has a paper jam. In many cases however, where the Printer object can 7085 accept the request even though the Printer has some error condition, 7086 the 'successful-ok' status code will be returned. In such a case, the 7087 client would look at the returned Job Object Attributes or later query 7088 the Printer to determine its state and state reasons. 7090 14.1.5.6 server-error-temporary-error (0x0505) 7092 A temporary error such as a buffer full write error, a memory overflow 7093 (i.e. the document data exceeds the memory of the Printer), or a disk 7094 full condition, occurs while the IPP Printer processes an operation. 7095 The client MAY try the unmodified request again at some later point in 7096 time with an expectation that the temporary internal error condition 7097 may have been cleared. Alternatively, as an implementation option, a 7098 Printer object MAY delay the response until the temporary condition is 7099 cleared so that no error is returned. 7101 14.1.5.7 server-error-not-accepting-jobs (0x0506) 7103 A temporary error indicating that the Printer is not currently 7104 accepting jobs, because the administrator has set the value of the 7105 Printer's "printer-is-not-accepting-jobs" attribute to 'false' (by 7106 means outside of IPP/1.0). 7108 14.1.5.8 server-error-busy (0x0507) 7110 A temporary error indicating that the Printer is too busy processing 7111 jobs and/or other requests. The client SHOULD try the unmodified 7113 Expires December 30, 1998 7114 request again at some later point in time with an expectation that the 7115 temporary busy condition will have been cleared. 7117 14.2 Status Codes for IPP Operations 7119 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 7120 SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and 7121 Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job 7123 IPP Operations 7124 IPP Status Keyword PJ PU CJ SD SU V GA GJ C 7125 ------------------ -- -- -- -- -- - -- -- - 7126 successful-ok x x x x x x x x x 7127 successful-ok-ignored-or-substituted- x x x x x x x x x 7128 attributes 7129 successful-ok-conflicting-attributes x x x x x x x x x 7130 client-error-bad-request x x x x x x x x x 7131 client-error-forbidden x x x x x x x x x 7132 client-error-not-authenticated x x x x x x x x x 7133 client-error-not-authorized x x x x x x x x x 7134 client-error-not-possible x x x x x x x x x 7135 client-error-timeout x x x x x x x x x 7136 client-error-not-found x x x x x x x x x 7137 client-error-gone x x x x x x x x x 7138 client-error-request-entity-too-large x x x x x x x x x 7139 client-error-request-value-too-long x x x x x x x x x 7140 client-error-document-format-not- x x x x x x 7141 supported 7142 client-error-attributes-or-values-not- x x x x x x x x x 7143 supported 7144 client-error-uri-scheme-not-supported x x 7145 client-error-charset-not-supported x x x x x x x x x 7146 client-error-conflicting-attributes x x x x x x x x x 7147 server-error-internal-error x x x x x x x x x 7148 server-error-operation-not-supported x x x x 7149 server-error-service-unavailable x x x x x x x x x 7150 server-error-version-not-supported x x x x x x x x x 7151 server-error-device-error x x x x x 7152 server-error-temporary-error x x x x x 7153 server-error-not-accepting-jobs x x x x x x 7154 server-error-busy x x x x x x x x x 7156 Expires December 30, 1998 7157 15. APPENDIX C: "media" keyword values 7159 Standard keyword values are taken from several sources. 7161 Standard values are defined (taken from DPA[ISO10175] and the Printer 7162 MIB[RFC1759]): 7164 'default': The default medium for the output device 7165 'iso-a4-white': Specifies the ISO A4 white medium 7166 'iso-a4-colored': Specifies the ISO A4 colored medium 7167 'iso-a4-transparent' Specifies the ISO A4 transparent medium 7168 'iso-a3-white': Specifies the ISO A3 white medium 7169 'iso-a3-colored': Specifies the ISO A3 colored medium 7170 'iso-a5-white': Specifies the ISO A5 white medium 7171 'iso-a5-colored': Specifies the ISO A5 colored medium 7172 'iso-b4-white': Specifies the ISO B4 white medium 7173 'iso-b4-colored': Specifies the ISO B4 colored medium 7174 'iso-b5-white': Specifies the ISO B5 white medium 7175 'iso-b5-colored': Specifies the ISO B5 colored medium 7176 'jis-b4-white': Specifies the JIS B4 white medium 7177 'jis-b4-colored': Specifies the JIS B4 colored medium 7178 'jis-b5-white': Specifies the JIS B5 white medium 7179 'jis-b5-colored': Specifies the JIS B5 colored medium 7181 The following standard values are defined for North American media: 7183 'na-letter-white': Specifies the North American letter white medium 7184 'na-letter-colored': Specifies the North American letter colored 7185 medium 7186 'na-letter-transparent': Specifies the North American letter 7187 transparent medium 7188 'na-legal-white': Specifies the North American legal white medium 7189 'na-legal-colored': Specifies the North American legal colored 7190 medium 7192 The following standard values are defined for envelopes: 7194 'iso-b4-envelope': Specifies the ISO B4 envelope medium 7195 'iso-b5-envelope': Specifies the ISO B5 envelope medium 7196 'iso-c3-envelope': Specifies the ISO C3 envelope medium 7197 'iso-c4-envelope': Specifies the ISO C4 envelope medium 7198 'iso-c5-envelope': Specifies the ISO C5 envelope medium 7199 'iso-c6-envelope': Specifies the ISO C6 envelope medium 7200 'iso-designated-long-envelope': Specifies the ISO Designated Long 7201 envelope medium 7203 Expires December 30, 1998 7205 'na-10x13-envelope': Specifies the North American 10x13 envelope 7206 medium 7207 'na-9x12-envelope': Specifies the North American 9x12 envelope 7208 medium 7209 'monarch-envelope': Specifies the Monarch envelope 7210 'na-number-10-envelope': Specifies the North American number 10 7211 business envelope medium 7212 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 7213 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 7214 'na-10x14-envelope': Specifies the North American 10x14 inch 7215 envelope 7216 'na-number-9-envelope': Specifies the North American number 9 7217 business envelope 7218 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 7219 'na-10x15-envelope': Specifies the North American 10x15 inch 7220 envelope 7222 The following standard values are defined for the less commonly used 7223 media (white-only): 7225 'executive-white': Specifies the white executive medium 7226 'folio-white': Specifies the folio white medium 7227 'invoice-white': Specifies the white invoice medium 7228 'ledger-white': Specifies the white ledger medium 7229 'quarto-white': Specified the white quarto medium 7230 'iso-a0-white': Specifies the ISO A0 white medium 7231 'iso-a1-white': Specifies the ISO A1 white medium 7232 'iso-a2-white': Specifies the ISO A2 white medium 7233 'iso-a6-white': Specifies the ISO A6 white medium 7234 'iso-a7-white': Specifies the ISO A7 white medium 7235 'iso-a8-white': Specifies the ISO A8 white medium 7236 'iso-a9-white': Specifies the ISO A9 white medium 7237 'iso-10-white': Specifies the ISO A10 white medium 7238 'iso-b0-white': Specifies the ISO B0 white medium 7239 'iso-b1-white': Specifies the ISO B1 white medium 7240 'iso-b2-white': Specifies the ISO B2 white medium 7241 'iso-b3-white': Specifies the ISO B3 white medium 7242 'iso-b6-white': Specifies the ISO B6 white medium 7243 'iso-b7-white': Specifies the ISO B7 white medium 7244 'iso-b8-white': Specifies the ISO B8 white medium 7245 'iso-b9-white': Specifies the ISO B9 white medium 7246 'iso-b10-white': Specifies the ISO B10 white medium 7247 'jis-b0-white': Specifies the JIS B0 white medium 7248 'jis-b1-white': Specifies the JIS B1 white medium 7249 'jis-b2-white': Specifies the JIS B2 white medium 7250 'jis-b3-white': Specifies the JIS B3 white medium 7251 'jis-b6-white': Specifies the JIS B6 white medium 7253 Expires December 30, 1998 7254 'jis-b7-white': Specifies the JIS B7 white medium 7255 'jis-b8-white': Specifies the JIS B8 white medium 7256 'jis-b9-white': Specifies the JIS B9 white medium 7257 'jis-b10-white': Specifies the JIS B10 white medium 7259 The following standard values are defined for engineering media: 7261 'a': Specifies the engineering A size medium 7262 'b': Specifies the engineering B size medium 7263 'c': Specifies the engineering C size medium 7264 'd': Specifies the engineering D size medium 7265 'e': Specifies the engineering E size medium 7267 The following standard values are defined for input-trays (from ISO 7268 DPA and the Printer MIB): 7270 'top': The top input tray in the printer. 7271 'middle': The middle input tray in the printer. 7272 'bottom': The bottom input tray in the printer. 7273 'envelope': The envelope input tray in the printer. 7274 'manual': The manual feed input tray in the printer. 7275 'large-capacity': The large capacity input tray in the printer. 7276 'main': The main input tray 7277 'side': The side input tray 7279 The following standard values are defined for media sizes (from ISO 7280 DPA): 7282 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined 7283 in ISO 216 7284 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 7285 ISO 216 7286 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 7287 ISO 216 7288 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 7289 ISO 216 7290 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 7291 ISO 216 7292 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 7293 ISO 216 7294 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 7295 ISO 216 7296 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 7297 ISO 216 7299 Expires December 30, 1998 7301 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in 7302 ISO 216 7303 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in 7304 ISO 216 7305 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 7306 ISO 216 7307 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined 7308 in ISO 216 7309 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined 7310 in ISO 216 7311 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 7312 ISO 216 7313 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 7314 ISO 216 7315 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 7316 ISO 216 7317 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 7318 ISO 216 7319 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 7320 ISO 216 7321 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 7322 ISO 216 7323 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in 7324 ISO 216 7325 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in 7326 ISO 216 7327 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 7328 ISO 216 7329 'na-letter': Specifies the North American letter size: 8.5 inches 7330 by 11 inches 7331 'na-legal': Specifies the North American legal size: 8.5 inches by 7332 14 inches 7333 'executive': Specifies the executive size (7.25 X 10.5 in) 7334 'folio': Specifies the folio size (8.5 X 13 in) 7335 'invoice': Specifies the invoice size (5.5 X 8.5 in) 7336 'ledger': Specifies the ledger size (11 X 17 in) 7337 'quarto': Specifies the quarto size (8.5 X 10.83 in) 7338 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 7339 ISO 269 7340 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 7341 ISO 269 7342 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 7343 ISO 269 7344 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 7345 ISO 269 7346 'iso-designated-long': Specifies the ISO Designated Long size: 110 7347 mm by 220 mm as defined in ISO 269 7349 Expires December 30, 1998 7351 'na-10x13-envelope': Specifies the North American 10x13 size: 10 7352 inches by 13 inches 7353 'na-9x12-envelope': Specifies the North American 9x12 size: 9 7354 inches by 12 inches 7355 'na-number-10-envelope': Specifies the North American number 10 7356 business envelope size: 4.125 inches by 9.5 inches 7357 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 7358 size 7359 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 7360 size 7361 'na-10x14-envelope': Specifies the North American 10x14 inch 7362 envelope size 7363 'na-number-9-envelope': Specifies the North American number 9 7364 business envelope size 7365 'na-6x9-envelope': Specifies the North American 6x9 envelope size 7366 'na-10x15-envelope': Specifies the North American 10x15 envelope 7367 size 7368 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 7369 in) 7370 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 7371 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 7372 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 7373 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 7374 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 7375 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 7376 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 7377 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 7378 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 7379 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 7380 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 7382 16. APPENDIX D: Processing IPP Attributes 7384 When submitting a print job to a Printer object, the IPP model allows 7385 a client to supply operation and Job Template attributes along with 7386 the document data. These Job Template attributes in the create 7387 request affect the rendering, production and finishing of the 7388 documents in the job. Similar types of instructions may also be 7389 contained in the document to be printed, that is, embedded within the 7390 print data itself. In addition, the Printer has a set of attributes 7391 that describe what rendering and finishing options which are supported 7392 by that Printer. This model, which allows for flexibility and power, 7393 also introduces the potential that at job submission time, these 7394 client-supplied attributes may conflict with either: 7396 - what the implementation is capable of realizing (i.e., what the 7397 Printer supports), as well as 7399 Expires December 30, 1998 7401 - the instructions embedded within the print data itself. 7403 The following sections describe how these two types of conflicts are 7404 handled in the IPP model. 7406 16.1 Fidelity 7408 If there is a conflict between what the client requests and what a 7409 Printer object supports, the client may request one of two possible 7410 conflict handling mechanisms: 7412 1) either reject the job since the job can not be processed exactly 7413 as specified, or 7414 2) allow the Printer to make any changes necessary to proceed with 7415 processing the Job the best it can. 7417 In the first case the client is indicating to the Printer object: 7418 "Print the job exactly as specified with no exceptions, and if that 7419 can't be done, don't even bother printing the job at all." In the 7420 second case, the client is indicating to the Printer object: "It is 7421 more important to make sure the job is printed rather than be 7422 processed exactly as specified; just make sure the job is printed even 7423 if client supplied attributes need to be changed or ignored." 7425 The IPP model accounts for this situation by introducing an "ipp- 7426 attribute-fidelity" attribute. 7428 In a create request, "ipp-attribute-fidelity" is a boolean operation 7429 attribute that is OPTIONALLY supplied by the client. The value 'true' 7430 indicates that total fidelity to client supplied Job Template 7431 attributes and values is required. The client is requesting that the 7432 Job be printed exactly as specified, and if that is not possible then 7433 the job MUST be rejected rather than processed incorrectly. The value 7434 'false' indicates that a reasonable attempt to print the Job is 7435 acceptable. If a Printer does not support some of the client supplied 7436 Job Template attributes or values, the Printer MUST ignore them or 7437 substitute any supported value for unsupported values, respectively. 7438 The Printer may choose to substitute the default value associated with 7439 that attribute, or use some other supported value that is similar to 7440 the unsupported requested value. For example, if a client supplies a 7441 "media" value of 'na-letter', the Printer may choose to substitute 7442 'iso-a4' rather than a default value of 'envelope'. If the client does 7443 not supply the "ipp-attribute-fidelity" attribute, the Printer assumes 7444 a value of 'false'. 7446 Expires December 30, 1998 7447 Each Printer implementation MUST support both types of "fidelity" 7448 printing (that is whether the client supplies a value of 'true' or 7449 'false'): 7451 - If the client supplies 'false' or does not supply the attribute, 7452 the Printer object MUST always accept the request by ignoring 7453 unsupported Job Template attributes and by substituting 7454 unsupported values of supported Job Template attributes with 7455 supported values. 7456 - If the client supplies 'true', the Printer object MUST reject the 7457 request if the client supplies unsupported Job Template 7458 attributes. 7460 Since a client can always query a Printer to find out exactly what is 7461 and is not supported, "ipp-attribute-fidelity" set to 'false' is 7462 useful when: 7464 1) The End-User uses a command line interface to request attributes 7465 that might not be supported. 7466 2) In a GUI context, if the End User expects the job might be moved 7467 to another printer and prefers a sub-optimal result to nothing at 7468 all. 7469 3) The End User just wants something reasonable in lieu of nothing 7470 at all. 7472 16.2 Page Description Language (PDL) Override 7474 If there is a conflict between the value of an IPP Job Template 7475 attribute and a corresponding instruction in the document data, the 7476 value of the IPP attribute SHOULD take precedence over the document 7477 instruction. Consider the case where a previously formatted file of 7478 document data is sent to an IPP Printer. In this case, if the client 7479 supplies any attributes at job submission time, the client desires 7480 that those attributes override the embedded instructions. Consider 7481 the case were a previously formatted document has embedded in it 7482 commands to load 'iso-a4' media. However, the document is passed to 7483 an end user that only has access to a printer with 'na-letter' media 7484 loaded. That end user most likely wants to submit that document to an 7485 IPP Printer with the "media" Job Template attribute set to 'na- 7486 letter'. The job submission attribute should take precedence over the 7487 embedded PDL instruction. However, until companies that supply 7488 document data interpreters allow a way for external IPP attributes to 7489 take precedence over embedded job production instructions, a Printer 7490 might not be able to support the semantics that IPP attributes 7491 override the embedded instructions. 7493 Expires December 30, 1998 7494 The IPP model accounts for this situation by introducing a "pdl- 7495 override-supported" attribute that describes the Printer objects 7496 capabilities to override instructions embedded in the PDL data stream. 7497 The value of the "pdl-override-supported" attribute is configured by 7498 means outside IPP/1.0. 7500 This REQUIRED Printer attribute takes on the following values: 7502 - 'attempted': This value indicates that the Printer object 7503 attempts to make the IPP attribute values take precedence over 7504 embedded instructions in the document data, however there is no 7505 guarantee. 7506 - 'not-attempted': This value indicates that the Printer object 7507 makes no attempt to make the IPP attribute values take precedence 7508 over embedded instructions in the document data. 7510 At job processing time, an implementation that supports the value of 7511 'attempted' might do one of several different actions: 7513 1) Generate an output device specific command sequence to realize 7514 the feature represented by the IPP attribute value. 7515 2) Parse the document data itself and replace the conflicting 7516 embedded instruction with a new embedded instruction that matches 7517 the intent of the IPP attribute value. 7518 3) Indicate to the Printer that external supplied attributes take 7519 precedence over embedded instructions and then pass the external 7520 IPP attribute values to the document data interpreter. 7521 4) Anything else that allows for the semantics that IPP attributes 7522 override embedded document data instructions. 7524 Since 'attempted' does not offer any type of guarantee, even though a 7525 given Printer object might not do a very "good" job of attempting to 7526 ensure that IPP attributes take a higher precedence over instructions 7527 embedded in the document data, it would still be a conforming 7528 implementation. 7530 At job processing time, an implementation that supports the value of 7531 'not-attempted' might do one of the following actions: 7533 1) Simply pre-pend the document data with the PDL instruction that 7534 corresponds to the client-supplied PDL attribute, such that if 7535 the document data also has the same PDL instruction, it will 7536 override what the Printer object pre-pended. In other words, 7537 this implementation is using the same implementation semantics 7538 for the client-supplied IPP attributes as for the Printer object 7539 defaults. 7540 2) Parse the document data and replace the conflicting embedded 7541 instruction with a new embedded instruction that approximates, 7543 Expires December 30, 1998 7544 but does not match, the semantic intent of the IPP attribute 7545 value. 7547 Note: The "ipp-attribute-fidelity" attribute applies to the Printer's 7548 ability to either accept or reject other unsupported Job Template 7549 attributes. In other words, if "ipp-attribute-fidelity" is set to 7550 'true', a Job is accepted if and only if the client supplied Job 7551 Template attributes and values are supported by the Printer. Whether 7552 these attributes actually affect the processing of the Job when the 7553 document data contains embedded instructions depends on the ability of 7554 the Printer to override the instructions embedded in the document data 7555 with the semantics of the IPP attributes. If the document data 7556 attributes can be overridden ("pdl-override-supported" set to 7557 'attempted'), the Printer makes an attempt to use the IPP attributes 7558 when processing the Job. If the document data attributes can not be 7559 overridden ("pdl-override-supported" set to 'not-attempted'), the 7560 Printer makes no attempt to override the embedded document data 7561 instructions with the IPP attributes when processing the Job, and 7562 hence, the IPP attributes may fail to affect the Job processing and 7563 output when the corresponding instruction is embedded in the document 7564 data. 7566 16.3 Suggested Operation Processing Steps for All Operations 7568 When an IPP object receives a request, the IPP object either accepts 7569 or rejects the request. In order to determine whether or not to accept 7570 or reject the request, the IPP object SHOULD execute the following 7571 steps. The order of the steps may be rearranged and/or combined, 7572 including making one or multiple passes over the request. Therefore, 7573 the error status codes returned may differ between implementations. 7574 The next section contains the additional steps for the Print-Job, 7575 Validate-Job, Print-URI, Create-Job, Send-Document, and Send-URI 7576 operations that create jobs, adds documents, and validates jobs. 7578 In the following, processing continues step by step until a "RETURNS 7579 the xxx status code _" statement is encountered. Error returns are 7580 indicated by the verb: "REJECTS". Since clients have difficulty 7581 getting the status code before sending all of the document data in a 7582 Print-Job request, clients SHOULD use the Validate-Job operation 7583 before sending large documents to be printed, in order to validate 7584 whether the IPP Printer will accept the job or not. 7586 It is assumed that security authentication and authorization has 7587 already taken place at a lower layer. 7589 Expires December 30, 1998 7590 16.3.1 Validate version number 7592 Every request and every response contains the "version-number" 7593 attribute. The value of this attribute is the major and minor version 7594 number of the syntax and semantics that the client and IPP object is 7595 using, respectively. The "version-number" attribute remains in a 7596 fixed position across all future versions so that all clients and IPP 7597 object that support future versions can determine which version is 7598 being used. The IPP object checks to see if the major version number 7599 supplied in the request is supported. If not, the Printer object 7600 REJECTS the request and RETURNS the 'server-error-version-not- 7601 supported' status code in the response. The IPP object returns in the 7602 "version-number" response attribute the major and minor version for 7603 the error response. Thus the client can learn at least one major and 7604 minor version that the IPP object supports. The IPP object is 7605 encouraged to return the closest version number to the one supplied by 7606 the client. 7608 The checking of the minor version number is implementation dependent, 7609 however if the client supplied minor version is explicitly supported, 7610 the IPP object MUST respond using that identical minor version number. 7611 If the requested minor version is not supported (the requested minor 7612 version is either higher or lower) than a supported minor version, the 7613 IPP object SHOULD return the closest supported minor version. 7615 16.3.2 Validate operation identifier 7617 The Printer object checks to see if the "operation-id" attribute 7618 supplied by the client is supported as indicated in the Printer 7619 object's "printer-operations-supported" attribute. If not, the 7620 Printer REJECTS the request and returns the 'server-error-operation- 7621 not-supported' status code in the response. 7623 16.3.3 Validate the request identifier 7625 The Printer object checks to see if the "request-id" attribute 7626 supplied by the client is in range. If the value is not between 1 and 7627 2**31 - 1 (inclusive), the Printer object REJECTS the request and 7628 returns the 'client-error-bad-request' status code in the response. 7630 Note: The "version-number", attribute, "operation-id", and the 7631 "request-id" attributes in the same fixed octet positions in all 7632 versions of the protocol. These fields are validated before 7633 proceeding with the rest of the validation. 7635 Expires December 30, 1998 7636 16.3.4 Validate attribute group and attribute presence and order 7638 The order of the following validation steps depends on implementation. 7640 16.3.4.1 Validate the presence and order of attribute groups 7642 Client requests and IPP object responses contain attribute groups that 7643 Section 3 requires to be present and in a specified order. An IPP 7644 object verifies that the attribute groups are present and in the 7645 correct order in requests supplied by clients (attribute groups 7646 without an * in the following tables). 7648 If an IPP object receives a request with (1) required attribute groups 7649 missing, or (2) the attributes groups are out of order, or (3) the 7650 groups are repeated, the IPP object REJECTS the request and RETURNS 7651 the 'client-error-bad-request' status code. For example, it is an 7652 error for the Job Template Attributes group to occur before the 7653 Operation Attributes group, for the Operation Attributes group to be 7654 omitted, or for an attribute group to occur more than once, except in 7655 the Get-Jobs response. 7657 Since this kind of attribute group error is most likely to be an error 7658 detected by a client developer rather than by a customer, the IPP 7659 object NEED NOT return an indication of which attribute group was in 7660 error in either the Unsupported Attributes group or the Status 7661 Message. Also, the IPP object NEED NOT find all attribute group 7662 errors before returning this error. 7664 16.3.4.2 Ignore unknown attribute groups in the expected position 7666 Future attribute groups may be added to the specification at the end 7667 of requests just before the Document Content and at the end of 7668 response, except for the Get-Jobs response, where it maybe there or 7669 before the first job attributes returned. If an IPP object receives 7670 an unknown attribute group in these positions, it ignores the entire 7671 group, rather than returning an error, since that group may be a new 7672 group in a later minor version of the protocol that can be ignored. 7673 (If the new attribute group cannot be ignored without confusing the 7674 client, the major version number would have been increased in the 7675 protocol document and in the request). If the unknown group occurs in 7676 a different position, the IPP object REJECTS the request and RETURNS 7677 the 'client-error-bad-request' status code. 7679 Clients also ignore unknown attribute groups returned in a response. 7681 Expires December 30, 1998 7682 Note: By validating that requests are in the proper form, IPP objects 7683 force clients to use the proper form which, in turn, increases the 7684 chances that customers will be able to use such clients from multiple 7685 vendors with IPP objects from other vendors. 7687 16.3.4.3 Validate the presence of a single occurrence of required 7688 Operation attributes 7690 Client requests and IPP object responses contain Operation attributes 7691 that Section 3 requires to be present. Attributes within a group may 7692 be in any order, except for the ordering of target, charset, and 7693 natural languages attributes. These attributes must be first, and 7694 must be supplied in the following order: charset, natural language, 7695 and then target. An IPP object verifies that the attributes that 7696 Section 4 requires to be supplied by the client have been supplied in 7697 the request (attributes without an * in the following tables). An 7698 asterisk (*) indicates groups and Operation attributes that the client 7699 may omit in a request or an IPP object may omit in a response. 7701 If an IPP object receives a request with required attributes missing 7702 or repeated from a group, the IPP object REJECTS the request and 7703 RETURNS the 'client-error-bad-request' status code. For example, it 7704 is an error for the "attributes-charset" or "attributes-natural- 7705 language" attribute to be omitted in any operation request, or for an 7706 Operation attribute to be supplied in a Job Template group or a Job 7707 Template attribute to be supplied in an Operation Attribute group in a 7708 create request. It is also an error to supply the "attributes- 7709 charset" attribute twice. 7711 Since these kinds of attribute errors are most likely to be detected 7712 by a client developer rather than by a customer, the IPP object NEED 7713 NOT return an indication of which attribute was in error in either the 7714 Unsupported Attributes group or the Status Message. Also, the IPP 7715 object NEED NOT find all attribute errors before returning this error. 7717 The following tables list all the attributes for all the operations by 7718 attribute group in each request and each response. The order of the 7719 groups is the order that the client supplies the groups as specified 7720 in Section 3. The order of the attributes within a group is 7721 arbitrary, except as noted for some of the special operation 7722 attributes (charset, natural language, and target). The tables below 7723 use the following notation: 7725 R indicates a REQUIRED attribute that an IPP object MUST 7726 support 7727 O indicates an OPTIONAL attribute that an IPP object NEED NOT 7728 support 7730 Expires December 30, 1998 7732 * indicates that a client MAY omit the attribute in a request 7733 and that an IPP object MAY omit the attribute in a 7734 response. The absence of an * means that a client MUST 7735 supply the attribute in a request and an IPP object 7736 MUST supply the attribute in a response. 7738 Operation Requests 7740 The tables below show the attributes in their proper attribute groups 7741 for operation requests: 7743 Note: All operation requests contain "version-number", "operation-id", 7744 and "request-id" parameters. 7746 Print-Job Request: 7747 Group 1: Operation Attributes (R) 7748 attributes-charset (R) 7749 attributes-natural-language (R) 7750 printer-uri (R) 7751 requesting-user-name (R*) 7752 job-name (R*) 7753 ipp-attribute-fidelity (R*) 7754 document-name (R*) 7755 document-format (R*) 7756 document-natural-language (O*) 7757 compression (O*) 7758 job-k-octets (O*) 7759 job-impressions (O*) 7760 job-media-sheets (O*) 7761 Group 2: Job Template Attributes (R) 7762 (O*) (see Section 4.2) 7763 Group 3: Document Content (R) 7764 7766 Validate-Job Request: 7767 Group 1: Operation Attributes (R) 7768 attributes-charset (R) 7769 attributes-natural-language (R) 7770 printer-uri (R) 7771 requesting-user-name (R*) 7772 job-name (R*) 7773 ipp-attribute-fidelity (R*) 7774 document-name (R*) 7775 document-format (R*) 7776 document-natural-language (O*) 7777 compression (O*) 7778 job-k-octets (O*) 7779 job-impressions (O*) 7781 Expires December 30, 1998 7782 job-media-sheets (O*) 7783 Group 2: Job Template Attributes (R) 7784 (O*) (see Section 4.2) 7786 Create-Job Request: 7787 Group 1: Operation Attributes (R) 7788 attributes-charset (R) 7789 attributes-natural-language (R) 7790 printer-uri (R) 7791 requesting-user-name (R*) 7792 job-name (R*) 7793 ipp-attribute-fidelity (R*) 7794 job-k-octets (O*) 7795 job-impressions (O*) 7796 job-media-sheets (O*) 7797 Group 2: Job Template Attributes (R) 7798 (O*) (see Section 4.2) 7800 Print-URI Request: 7801 Group 1: Operation Attributes (R) 7802 attributes-charset (R) 7803 attributes-natural-language (R) 7804 printer-uri (R) 7805 document-uri (R) 7806 requesting-user-name (R*) 7807 job-name (R*) 7808 ipp-attribute-fidelity (R*) 7809 document-name (R*) 7810 document-format (R*) 7811 document-natural-language (O*) 7812 compression (O*) 7813 job-k-octets (O*) 7814 job-impressions (O*) 7815 job-media-sheets (O*) 7816 Group 2: Job Template Attributes (R) 7817 (O*) (see Section 4.2) 7819 Send-Document Request: 7820 Group 1: Operation Attributes (R) 7821 attributes-charset (R) 7822 attributes-natural-language (R) 7823 (printer-uri & job-id) | job-uri (R) 7824 last-document (R) 7825 requesting-user-name (R*) 7826 document-name (R*) 7827 document-format (R*) 7828 document-natural-language (O*) 7829 compression (O*) 7831 Expires December 30, 1998 7833 Group 2: Document Content (R) 7834 7836 Send-URI Request: 7837 Group 1: Operation Attributes (R) 7838 attributes-charset (R) 7839 attributes-natural-language (R) 7840 (printer-uri & job-id) | job-uri (R) 7841 last-document (R) 7842 document-uri (R) 7843 requesting-user-name (R*) 7844 document-name (R*) 7845 document-format (R*) 7846 document-natural-language (O*) 7847 compression (O*) 7849 Cancel-Job Request: 7850 Group 1: Operation Attributes (R) 7851 attributes-charset (R) 7852 attributes-natural-language (R) 7853 (printer-uri & job-id) | job-uri (R) 7854 requesting-user-name (R*) 7855 message (O*) 7857 Get-Printer-Attributes Request: 7858 Group 1: Operation Attributes (R) 7859 attributes-charset (R) 7860 attributes-natural-language (R) 7861 printer-uri (R) 7862 requesting-user-name (R*) 7863 requested-attributes (R*) 7864 document-format (R*) 7866 Get-Job-Attributes Request: 7867 Group 1: Operation Attributes (R) 7868 attributes-charset (R) 7869 attributes-natural-language (R) 7870 (printer-uri & job-id) | job-uri (R) 7871 requesting-user-name (R*) 7872 requested-attributes (R*) 7874 Get-Jobs Request: 7875 Group 1: Operation Attributes (R) 7876 attributes-charset (R) 7877 attributes-natural-language (R) 7878 printer-uri (R) 7879 requesting-user-name (R*) 7880 limit (R*) 7882 Expires December 30, 1998 7883 requested-attributes (R*) 7884 which-jobs (R*) 7885 my-jobs (R*) 7887 Operation Responses 7889 The tables below show the response attributes in their proper 7890 attribute groups for responses. 7892 Note: All operation responses contain "version-number", "status-code", 7893 and "request-id" parameters. 7895 Print-Job Response: 7896 Print-URI Response: 7897 Create-Job Response: 7898 Send-Document Response: 7899 Send-URI Response: 7900 Group 1: Operation Attributes (R) 7901 attributes-charset (R) 7902 attributes-natural-language (R) 7903 status-message (O*) 7904 Group 2: Unsupported Attributes (R*) (see Note 3) 7905 (R*) 7906 Group 3: Job Object Attributes(R*) (see Note 2) 7907 job-uri (R) 7908 job-id (R) 7909 job-state (R) 7910 job-state-reasons (O*) 7911 job-state-message (O*) 7912 number-of-intervening-jobs (O*) 7914 Validate-Job Response: 7915 Cancel-Job Response: 7916 Group 1: Operation Attributes (R) 7917 attributes-charset (R) 7918 attributes-natural-language (R) 7919 status-message (O*) 7920 Group 2: Unsupported Attributes (R*) (see Note 3) 7921 (R*) 7923 Note 2 - the Job Object Attributes and Printer Object Attributes are 7924 returned only if the IPP object returns one of the success status 7925 codes. 7927 Expires December 30, 1998 7928 Note 3 - the Unsupported Attributes Group is present only if the 7929 client included some Operation and/or Job Template attributes that the 7930 Printer doesn't support whether a success or an error return. 7932 Get-Printer-Attributes Response: 7933 Group 1: Operation Attributes (R) 7934 attributes-charset (R) 7935 attributes-natural-language (R) 7936 status-message (O*) 7937 Group 2: Unsupported Attributes (R*) (see Note 4) 7938 (R*) 7939 Group 3: Printer Object Attributes(R*) (see Note 2) 7940 (R*) 7942 Note 4 - the Unsupported Attributes Group is present only if the 7943 client included some Operation attributes that the Printer doesn't 7944 support whether a success or an error return. 7946 Get-Job-Attributes Response: 7947 Group 1: Operation Attributes (R) 7948 attributes-charset (R) 7949 attributes-natural-language (R) 7950 status-message (O*) 7951 Group 2: Unsupported Attributes (R*) (see Note 4) 7952 (R*) 7953 Group 3: Job Object Attributes(R*) (see Note 2) 7954 (R*) 7956 Get-Jobs Response: 7957 Group 1: Operation Attributes (R) 7958 attributes-charset (R) 7959 attributes-natural-language (R) 7960 status-message (O*) 7961 Group 2: Unsupported Attributes (R*) (see Note 4) 7962 (R*) 7963 Group 3: Job Object Attributes(R*) (see Note 2, 5) 7964 (R*) 7966 Note 5: for the Get-Jobs operation the response contains a separate 7967 Job Object Attributes group 3 to N containing requested-attributes for 7968 each job object in the response. 7970 16.3.5 Validate the values of the REQUIRED Operation attributes 7972 An IPP object validates the values supplied by the client of the 7973 REQUIRED Operation attribute that the IPP object MUST support. The 7975 Expires December 30, 1998 7976 next section specifies the validation of the values of the OPTIONAL 7977 Operation attributes that IPP objects MAY support. 7979 The IPP object performs the following syntactic validation checks of 7980 each Operation attribute value: 7982 a) 7983 that the length of each Operation attribute value is correct 7984 for the attribute syntax tag supplied by the client according 7985 to Section 4.1. 7986 b) 7987 that the attribute syntax tag is correct for that Operation 7988 attribute according to Section 3, 7989 c) 7990 that the value is in the range specified for that Operation 7991 attribute according to Section 3, 7992 d) 7993 that multiple values are supplied by the client only for 7994 operation attributes that are multi-valued, i.e., that are 7995 1setOf X according to Section 3. 7997 If any of these checks fail, the IPP object REJECTS the request and 7998 RETURNS the 'client-error-bad-request' or the 'client-error-request- 7999 value-too-long' status code. Since such an error is most likely to be 8000 an error detected by a client developer, rather than by an end-user, 8001 the IPP object NEED NOT return an indication of which attribute had 8002 the error in either the Unsupported Attributes Group or the Status 8003 Message. The description for each of these syntactic checks is 8004 explicitly expressed in the first IF statement in the following table. 8006 In addition, the IPP object checks each Operation attribute value 8007 against some Printer object attribute or some hard-coded value if 8008 there is no "xxx-supported" Printer object attribute defined. If its 8009 value is not among those supported or is not in the range supported, 8010 then the IPP object REJECTS the request and RETURNS the error status 8011 code indicated in the table by the second IF statement. If the value 8012 of the Printer object's "xxx-supported" attribute is 'no-value' 8013 (because the system administrator hasn't configured a value), the 8014 check always fails. 8016 ----------------------------------------------- 8017 attributes-charset (charset) 8018 IF NOT any single non-empty 'charset' value less than or equal to 8019 63 octets, REJECT/RETURN 'client-error-request-value-too-long'. 8020 IF NOT in the Printer object's "charset-supported" attribute, 8021 REJECT/RETURN "client-error-charset-not-supported". 8023 attributes-natural-language(naturalLanguage) 8024 IF NOT any single non-empty 'naturalLanguage' value less than or 8025 equal to 63 octets, REJECT/RETURN 'client-error-request-value- 8026 too-long'. 8028 Expires December 30, 1998 8030 ACCEPT the request even if not a member of the set in the Printer 8031 object's "generated-natural-language-supported" attribute. 8033 requesting-user-name 8034 IF NOT any single 'name' value less than or equal to 255 octets, 8035 REJECT/RETURN 'client-error-request-value-too-long'. 8036 IF the IPP object can obtain a better authenticated name, use it 8037 instead. 8039 job-name(name) 8040 IF NOT any single 'name' value less than or equal to 255 octets, 8041 REJECT/RETURN 'client-error-request-value-too-long'. 8042 IF NOT supplied by the client, the Printer object creates a name 8043 from the document-name or document-uri. 8045 document-name (name) 8046 IF NOT any single 'name' value less than or equal to 255 octets, 8047 REJECT/RETURN 'client-error-request-value-too-long'. 8049 ipp-attribute-fidelity (boolean) 8050 IF NOT either a single 'true' or 'false' 'boolean' value equal to 1 8051 octet, REJECT/RETURN 'client-error-bad-request'. 8052 IF NOT supplied by the client, the IPP object assumes the value 8053 'false'. 8055 document-format (mimeMediaType) 8056 IF NOT any single non-empty 'mimeMediaType' value less than or 8057 equal to 255 octets, REJECT/RETURN 'client-error-request-value- 8058 too-long'. 8059 IF NOT in the Printer object's "document-format-supported" 8060 attribute, REJECT/RETURN 'client-error-document-format-not- 8061 supported' 8062 IF NOT supplied by the client, the IPP object assumes the value of 8063 the Printer object's "document-format-default" attribute. 8065 document-uri (uri) 8066 IF NOT any single non-empty 'uri' value less than or equal to 1023 8067 octets, REJECT/RETURN 'client-error-request-value-too-long'. 8068 IF the URI syntax is not valid, REJECT/RETURN 'client-error-bad- 8069 request'. 8070 IF scheme is NOT in the Printer object's "reference-uri-schemes- 8071 supported" attribute, REJECT/RETURN 'client-error'-uri-scheme- 8072 not-supported'. 8074 last-document (boolean) 8075 IF NOT either a single 'true' or 'false' 'boolean' value equal to 1 8076 octet, REJECT/RETURN 'client-error-bad-request'. 8078 Expires December 30, 1998 8080 job-id (integer(1:MAX)) 8081 IF NOT any single 'integer' value equal to 4 octets AND in the 8082 range 1 to MAX, REJECT/RETURN 'client-error-bad-request'. 8083 IF NOT a job-id of an existing Job object, REJECT/RETURN 'client- 8084 error-not-found' or 'client-error-gone' status code, if keep 8085 track of recently deleted jobs. 8087 requested-attributes (1setOf keyword) 8088 IF NOT any number of 'keyword' values less than or equal to 255 8089 octets, REJECT/RETURN 'client-error-request-value-too-long'. 8090 Ignore unsupported values which are the keyword names of 8091 unsupported attributes. Don't bother to copy such requested 8092 (unsupported) attributes to the Unsupported Attribute response 8093 group since the response will not return them. 8095 which-jobs (type2 keyword) 8096 IF NOT a single 'keyword' value less than or equal to 255 octets, 8097 REJECT/RETURN 'client-error-request-value-too-long'. 8098 IF NEITHER 'completed' NOR 'not-completed', copy the attribute and 8099 the unsupported value to the Unsupported Attributes response 8100 group and REJECT/RETURN 'client-error-attributes-or-values-not- 8101 supported'. 8102 Note: a Printer still supports the 'completed' value even if it 8103 keeps no completed/canceled/aborted jobs: by returning no jobs 8104 when so queried. 8105 IF NOT supplied by the client, the IPP object assumes the 'not- 8106 completed' value. 8108 my-jobs (boolean) 8109 IF NOT either a single 'true' or 'false' 'boolean' value equal to 1 8110 octet, REJECT/RETURN 'client-error-bad-request'. 8111 IF NOT supplied by the client, the IPP object assumes the 'false' 8112 value. 8114 limit (integer(1:MAX)) 8115 IF NOT any single 'integer' value equal to 4 octets AND in the 8116 range 1 to MAX, REJECT/RETURN 'client-error-bad-request'. 8117 IF NOT supplied by the client, the IPP object returns all jobs, no 8118 matter how many. 8120 ----------------------------------------------- 8122 16.3.6 Validate the values of the OPTIONAL Operation attributes 8124 OPTIONAL Operation attributes are those that an IPP object MAY or MAY 8125 NOT support. An IPP object validates the values of the OPTIONAL 8126 attributes supplied by the client. The IPP object performs the same 8128 Expires December 30, 1998 8129 syntactic validation checks for each OPTIONAL attribute value as in 8130 Section 16.3.5. As in Section 16.3.5, if any fail, the IPP object 8131 REJECTS the request and RETURNS the 'client-error-bad-request' or the 8132 'client-error-request-value-too-long' status code. 8134 In addition, the IPP object checks each Operation attribute value 8135 against some Printer attribute or some hard-coded value if there is no 8136 "xxx-supported" Printer attribute defined. If its value is not among 8137 those supported or is not in the range supported, then the IPP object 8138 REJECTS the request and RETURNS the error status code indicated in the 8139 table. If the value of the Printer object's "xxx-supported" attribute 8140 is 'no-value' (because the system administrator hasn't configured a 8141 value), the check always fails. 8143 If the IPP object doesn't recognize/support an attribute, the IPP 8144 object treats the attribute as an unknown or unsupported attribute 8145 (see the last row in the table below). 8147 ----------------------------------------------- 8148 document-natural-language (naturalLanguage) 8149 IF NOT any single non-empty 'naturalLanguage' value less than or 8150 equal to 63 octets, REJECT/RETURN 'client-error-request-value- 8151 too-long'. 8152 IF NOT a value that the Printer object supports in document 8153 formats, (no standard "xxx-supported" Printer attribute), 8154 REJECT/RETURN 'client-error-natural-language-not-supported'. 8156 compression (type3 keyword) 8157 IF NOT any single 'keyword' values less than or equal to 255 8158 octets, REJECT/RETURN 'client-error-request-value-too-long'. 8159 IF NOT in the Printer object's "compression-supported" attribute, 8160 copy the attribute and the unsupported value to the Unsupported 8161 Attributes response group and REJECT/RETURN 'client-error- 8162 attributes-or-values-not-supported'. 8164 job-k-octets (integer(0:MAX)) 8165 IF NOT any single 'integer' value equal to 4 octets, 8166 REJECT/RETURN 'client-error-bad-request'. 8167 IF NOT in the range of the Printer object's "job-k-octets- 8168 supported" attribute, copy the attribute and the unsupported 8169 value to the Unsupported Attributes response group and 8170 REJECT/RETURN 'client-error-attributes-or-values-not-supported'. 8172 job-impressions (integer(0:MAX)) 8173 IF NOT any single 'integer' value equal to 4 octets, 8174 REJECT/RETURN 'client-error-bad-request'. 8175 IF NOT in the range of the Printer object's "job-impressions- 8176 supported" attribute, copy the attribute and the unsupported 8178 Expires December 30, 1998 8179 value to the Unsupported Attributes response group and 8180 REJECT/RETURN 'client-error-attributes-or-values-not-supported'. 8182 job-media-sheets (integer(0:MAX)) 8183 IF NOT any single 'integer' value equal to 4 octets, 8184 REJECT/RETURN 'client-error-bad-request'. 8185 IF NOT in the range of the Printer object's "job-media-supported" 8186 attribute, copy the attribute and the unsupported value to the 8187 Unsupported Attributes response group and REJECT/RETURN 'client- 8188 error-attributes-or-values-not-supported'. 8190 message (text(127)) 8191 IF NOT any single 'text' value less than or equal to 127 octets, 8192 REJECT/RETURN 'client-error-request-value-too-long'. 8194 unknown or unsupported attribute 8195 IF the attribute syntax supplied by the client is supported but the 8196 length is not legal for that attribute syntax, REJECT/RETURN 8197 'client-error-request-value-too-long'. 8198 ELSE copy the attribute and value to the Unsupported Attributes 8199 response group and change the attribute value to the "out-of- 8200 band" 'unsupported' value, but otherwise ignore the attribute. 8202 Note: Future Operation attributes may be added to the protocol 8203 specification that may occur anywhere in the specified group. When 8204 the operation is otherwise successful, the IPP object returns the 8205 'successful-ok-ignored-or-substituted-attributes' status code. 8206 Ignoring unsupported Operation attributes in all operations is 8207 analogous to the handling of unsupported Job Template attributes in 8208 the create and Validate-Job operations when the client supplies the 8209 "ipp-attribute-fidelity" Operation attribute with the 'false' 8210 value. This last rule is so that we can add OPTIONAL Operation 8211 attributes to future versions of IPP so that older clients can 8212 inter-work with new IPP objects and newer clients can inter-work 8213 with older IPP objects. (If the new attribute cannot be ignored 8214 without performing unexpectedly, the major version number would 8215 have been increased in the protocol document and in the request). 8216 This rule for Operation attributes is independent of the value of 8217 the "ipp-attribute-fidelity" attribute. For example, if an IPP 8218 object doesn't support the OPTIONAL "job-k-octets" attribute', the 8219 IPP object treats "job-k-octets" as an unknown attribute and only 8220 checks the length for the 'integer' attribute syntax supplied by 8221 the client. If it is not four octets, the IPP object REJECTS the 8222 request and RETURNS the 'client-error-bad-request' status code, 8223 else the IPP object copies the attribute to the Unsupported 8224 Attribute response group, setting the value to the "out-of-band" 8225 'unsupported' value, but otherwise ignores the attribute. 8227 Expires December 30, 1998 8229 ----------------------------------------------- 8231 16.4 Suggested Additional Processing Steps for Operations that 8232 Create/Validate Jobs and Add Documents 8234 This section in combination with the previous section recommends the 8235 processing steps for the Print-Job, Validate-Job, Print-URI, Create- 8236 Job, Send-Document, and Send-URI operations that IPP objects SHOULD 8237 use. These are the operations that create jobs, validate a Print-Job 8238 request, and add documents to a job. 8240 16.4.1 Default "ipp-attribute-fidelity" if not supplied 8242 The Printer object checks to see if the client supplied an "ipp- 8243 attribute-fidelity" Operation attribute. If the attribute is not 8244 supplied by the client, the IPP object assumes that the value is 8245 'false'. 8247 16.4.2 Check that the Printer object is accepting jobs 8249 If the value of the Printer object's "printer-is-accepting-jobs" is 8250 'false', the Printer object REJECTS the request and RETURNS the 8251 'server-error-not-accepting-jobs' status code. 8253 16.4.3 Validate the values of the Job Template attributes 8255 An IPP object validates the values of all Job Template attribute 8256 supplied by the client. The IPP object performs the analogous 8257 syntactic validation checks of each Job Template attribute value that 8258 it performs for Operation attributes (see Section 16.3.5.): 8260 a) 8261 that the length of each value is correct for the attribute 8262 syntax tag supplied by the client according to Section 4.1. 8263 b) 8264 that the attribute syntax tag is correct for that attribute 8265 according to Sections 4.2 to 4.4, 8266 c) 8267 that multiple values are supplied only for multi-valued 8268 attributes, i.e., that are 1setOf X according to Sections 4.2 8269 to 4.4 8271 As in Section 16.3.5, if any of these syntactic checks fail, the IPP 8272 object REJECTS the request and RETURNS the 'client-error-bad-request' 8273 or 'client-error-request-value-too-long' status code, independent of 8274 the value of the "ipp-attribute-fidelity". Since such an error is 8275 most likely to be an error detected by a client developer, rather than 8276 by an end-user, the IPP object NEED NOT return an indication of which 8277 attribute had the error in either the Unsupported Attributes Group or 8279 Expires December 30, 1998 8280 the Status Message. The description for each of these syntactic 8281 checks is explicitly expressed in the first IF statement in the 8282 following table. 8284 In addition, the IPP object loops through all the client-supplied Job 8285 Template attributes, checking to see if the supplied attribute 8286 value(s) are supported or in the range supported, i.e., the value of 8287 the "xxx" attribute in the request is (1) a member of the set of 8288 values or is in the range of values of the Printer' objects "xxx- 8289 supported" attribute. If the value of the Printer object's "xxx- 8290 supported" attribute is 'no-value' (because the system administrator 8291 hasn't configured a value), the check always fails. If the check 8292 fails, the IPP object copies the attribute to the Unsupported 8293 Attributes response group with its unsupported value. If the 8294 attribute contains more than one value, each value is checked and each 8295 unsupported value is separately copied, while supported values are not 8296 copied. If an IPP object doesn't recognize/support a Job Template 8297 attribute, i.e., there is no corresponding Printer object "xxx- 8298 supported" attribute, the IPP object treats the attribute as an 8299 unknown or unsupported attribute (see the last row in the table 8300 below). 8302 If some Job Template attributes are supported for some document 8303 formats and not for others or the values are different for different 8304 document formats, the IPP object SHOULD take that into account in this 8305 validation using the value of the "document-format" supplied by the 8306 client (or defaulted to the value of the Printer's "document-format- 8307 default" attribute, if not supplied by the client). For example, if 8308 "number-up" is supported for the 'text/plain' document format, but not 8309 for the 'application/postscript' document format, the check SHOULD 8310 (though it NEED NOT) depend on the value of the "document-format" 8311 operation attribute. See "document-format" in section 3.2.1.1 and 8312 3.2.5.1. 8314 Note: whether the request is accepted or rejected is determined by the 8315 value of the "ipp-attribute-fidelity" attribute in a subsequent step, 8316 so that all Job Template attribute supplied are examined and all 8317 unsupported attributes and/or values are copied to the Unsupported 8318 Attributes response group. 8320 ----------------------------------------------- 8321 job-priority (integer(1:100)) 8322 IF NOT any single 'integer' value equal to 4 octets, REJECT/RETURN 8323 'client-error-bad-request'. 8324 IF NOT supplied by the client, use the value of the Printer 8325 object's "job-priority-default" attribute at job submission time. 8326 IF NOT in the range 1 to 100, inclusive, copy the attribute and the 8327 unsupported value to the Unsupported Attributes response group. 8329 Expires December 30, 1998 8331 Map the value to the nearest supported value in the range 1:100 as 8332 specified by the number of discrete values indicated by the value 8333 of the Printer's "job-priority-supported" attribute. See the 8334 formula in Section 4.2.1. 8336 job-hold-until (type3 keyword | name) 8337 IF NOT any single 'keyword' or 'name' value less than or equal to 8338 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. 8339 IF NOT supplied by the client, use the value of the Printer 8340 object's "job-hold-until" attribute at job submission time. 8341 IF NOT in the Printer object's "job-hold-until-supported" 8342 attribute, copy the attribute and the unsupported value to the 8343 Unsupported Attributes response group. 8345 job-sheets (type3 keyword | name) 8346 IF NOT any single 'keyword' or 'name' value less than or equal to 8347 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. 8348 IF NOT in the Printer object's "job-sheets-supported" attribute, 8349 copy the attribute and the unsupported value to the Unsupported 8350 Attributes response group. 8352 multiple-document-handling (type2 keyword) 8353 IF NOT any single 'keyword' value less than or equal to 255 octets, 8354 REJECT/RETURN 'client-error-request-value-too-long'. 8355 IF NOT in the Printer object's "multiple-document-handling- 8356 supported" attribute, copy the attribute and the unsupported 8357 value to the Unsupported Attributes response group. 8359 copies (integer(1:MAX)) 8360 IF NOT any single 'integer' value equal to 4 octets, 8361 REJECT/RETURN 'client-error-bad-request'. 8362 IF NOT in range of the Printer object's "copies-supported" 8363 attribute 8364 copy the attribute and the unsupported value to the Unsupported 8365 Attributes response group. 8367 finishings (1setOf type2 enum) 8368 IF NOT any 'enum' value(s) equal to 4 octets, REJECT/RETURN 8369 'client-error-bad-request'. 8370 IF NOT in the Printer object's "finishings-supported" attribute, 8371 copy the attribute and the unsupported value(s), but not any 8372 supported values, to the Unsupported Attributes response group. 8374 page-ranges (1setOf rangeOfInteger(1:MAX)) 8375 IF NOT any 'rangeOfInteger' value(s) each equal to 8 octets, 8376 REJECT/RETURN 'client-error-bad-request'. 8378 Expires December 30, 1998 8380 IF first value is greater than second value in any range, the 8381 ranges are not in ascending order, or ranges overlap, 8382 REJECT/RETURN 'client-error-bad-request'. 8383 IF the value of the Printer object's "page-ranges-supported" 8384 attribute is 'false', copy the attribute to the Unsupported 8385 Attributes response group and set the value to the "out-of-band" 8386 'unsupported' value. 8388 sides (type2 keyword) 8389 IF NOT any single 'keyword' value less than or equal to 255 octets, 8390 REJECT/RETURN 'client-error-request-value-too-long'. 8391 IF NOT in the Printer object's "sides-supported" attribute, copy 8392 the attribute and the unsupported value to the Unsupported 8393 Attributes response group. 8395 number-up (integer(1:MAX)) 8396 IF NOT any single 'integer' value equal to 4 octets, 8397 REJECT/RETURN 'client-error-bad-request'. 8398 IF NOT a value or in the range of one of the values of the Printer 8399 object's "number-up-supported" attribute, copy the attribute and 8400 value to the Unsupported Attribute response group. 8402 orientation-requested (type2 enum) 8403 IF NOT any single 'enum' value equal to 4 octets, 8404 REJECT/RETURN 'client-error-bad-request'. 8405 IF NOT in the Printer object's "orientation-requested-supported" 8406 attribute, copy the attribute and the unsupported value to the 8407 Unsupported Attributes response group. 8409 media (type3 keyword | name) 8410 IF NOT any single 'keyword' or 'name' value less than or equal to 8411 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. 8412 IF NOT in the Printer object's "media-supported" attribute, copy 8413 the attribute and the unsupported value to the Unsupported 8414 Attributes response group. 8416 printer-resolution (resolution) 8417 IF NOT any single 'resolution' value equal to 9 octets, 8418 REJECT/RETURN 'client-error-bad-request'. 8419 IF NOT in the Printer object's "multiple-document-handling- 8420 supported" attribute, copy the attribute and the unsupported 8421 value to the Unsupported Attributes response group. 8423 print-quality (type2 enum) 8424 IF NOT any single 'enum' value equal to 4 octets, 8425 REJECT/RETURN 'client-error-bad-request'. 8427 Expires December 30, 1998 8428 IF NOT in the Printer object's "print-quality-supported" attribute, 8429 copy the attribute and the unsupported value to the Unsupported 8430 Attributes response group. 8432 unknown or unsupported attribute (i.e., there is no corresponding 8433 Printer object "xxx-supported" attribute) 8434 IF the attribute syntax supplied by the client is supported but the 8435 length is not legal for that attribute syntax, 8436 REJECT/RETURN 'client-error-bad-request' or 'client-error-request- 8437 value-too-long'. 8438 ELSE copy the attribute and value to the Unsupported Attributes 8439 response group and change the attribute value to the "out-of- 8440 band" 'unsupported' value. Any remaining Job Template Attributes 8441 are either unknown or unsupported Job Template attributes and are 8442 validated algorithmically according to their attribute syntax for 8443 proper length (see below). 8444 ----------------------------------------------- 8446 If the attribute syntax is supported AND the length check fails, the 8447 IPP object REJECTS the request and RETURNS the 'client-error-request- 8448 value-too-long' status code, else the IPP object copies the 8449 unsupported Job Template attribute to the Unsupported Attributes 8450 response group and changes the attribute value to the "out-of-band" 8451 'unsupported' value. The following table shows the length checks for 8452 all attribute syntaxes. In the following table: "<=" means less than 8453 or equal, "=" means equal to: 8455 Expires December 30, 1998 8456 Name Octet length check for read-write attributes 8457 ----------- -------------------------------------------- 8458 'textWithLanguage <= 1023 AND 'naturalLanguage' <= 63 8459 'textWithoutLanguage' <= 1023 8460 'nameWithLanguage' <= 255 AND 'naturalLanguage' <= 63 8461 'nameWithoutLanguage' <= 255 8462 'keyword' <= 255 8463 'enum' = 4 8464 'uri' <= 1023 8465 'uriScheme' <= 63 8466 'charset' <= 63 8467 'naturalLanguage' <= 63 8468 'mimeMediaType' <= 255 8469 'octetString' <= 1023 8470 'boolean' = 1 8471 'integer' = 4 8472 'rangeOfInteger' = 8 8473 'dateTime' = 11 8474 'resolution' = 9 8475 '1setOf X' 8477 16.4.4 Check for conflicting Job Template attributes values 8479 Once all the Operation and Job Template attributes have been checked 8480 individually, the Printer object SHOULD check for any conflicting 8481 values among all the supported values supplied by the client. For 8482 example, a Printer object might be able to staple and to print on 8483 transparencies, however due to physical stapling constraints, the 8484 Printer object might not be able to staple transparencies. The IPP 8485 object copies the supported attributes and their conflicting attribute 8486 values to the Unsupported Attributes response group. The Printer 8487 object only copies over those attributes that the Printer object 8488 either ignores or substitutes in order to resolve the conflict, and it 8489 returns the original values which were supplied by the client. For 8490 example suppose the client supplies "finishings" equals 'staple' and 8491 "media" equals 'transparency', but the Printer object does not support 8492 stapling transparencies. If the Printer chooses to ignore the 8493 stapling request in order to resolve the conflict, the Printer objects 8494 returns "finishings" equal to 'staple' in the Unsupported Attributes 8495 response group. If any attributes are multi-valued, only the 8496 conflicting values of the attributes are copied. 8498 Note: The decisions made to resolve the conflict (if there is a 8499 choice) is implementation dependent. 8501 Expires December 30, 1998 8502 16.4.5 Decide whether to REJECT the request 8504 If there were any unsupported Job Template attributes or 8505 unsupported/conflicting Job Template attribute values and the client 8506 supplied the "ipp-attribute-fidelity" attribute with the 'true' value, 8507 the Printer object REJECTS the request and return the status code: 8509 (1) 'client-error-conflicting-attributes' status code, if there 8510 were any conflicts between attributes supplied by the client. 8511 (2) 'client-error-attributes-or-values-not-supported' status code, 8512 otherwise. 8514 Note: Unsupported Operation attributes or values that are returned do 8515 not affect the status returned in this step. If the unsupported 8516 Operation attribute was a serious error, the above already rejected 8517 the request in a previous step. If control gets to this step with 8518 unsupported Operation attributes being returned, they are not serious 8519 errors. 8521 16.4.6 For the Validate-Job operation, RETURN one of the success 8522 status codes 8524 If the requested operation is the Validate-Job operation, the Printer 8525 object returns: 8527 (1) the "successful-ok" status code, if there are no unsupported or 8528 conflicting Job Template attributes or values. 8529 (2) the "successful-ok-conflicting-attributes, if there are any 8530 conflicting Job Template attribute or values. 8531 (3) the "successful-ok-ignored-or-substituted-attributes, if there 8532 are only unsupported Job Template attributes or values. 8534 Note: Unsupported Operation attributes or values that are returned do 8535 not affect the status returned in this step. If the unsupported 8536 Operation attribute was a serious error, the above already rejected 8537 the request in a previous step. If control gets to this step with 8538 unsupported Operation attributes being returned, they are not serious 8539 errors. 8541 16.4.7 Create the Job object with attributes to support 8543 If "ipp-attribute-fidelity" is set to 'false' (or it was not supplied 8544 by the client), the Printer object: 8546 Expires December 30, 1998 8547 (1) creates a Job object, assigns a unique value to the job's "job- 8548 uri" and "job-id" attributes, and initializes all of the job's 8549 other supported Job Description attributes. 8550 (2) removes all unsupported attributes from the Job object. 8551 (3) for each unsupported value, removes either the unsupported 8552 value or substitutes the unsupported attribute value with some 8553 supported value. If an attribute has no values after removing 8554 unsupported values from it, the attribute is removed from the Job 8555 object (so that the normal default behavior at job processing 8556 time will take place for that attribute). 8557 (4) for each conflicting value, removes either the conflicting 8558 value or substitutes the conflicting attribute value with some 8559 other supported value. If an attribute has no values after 8560 removing conflicting values from it, the attribute is removed 8561 from the Job object (so that the normal default behavior at job 8562 processing time will take place for that attribute). 8564 If there were no attributes or values flagged as unsupported, or the 8565 value of 'ipp-attribute-fidelity" was 'false', the Printer object is 8566 able to accept the create request and create a new Job object. If the 8567 "ipp-attribute-fidelity" attribute is set to 'true', the Job Template 8568 attributes that populate the new Job object are necessarily all the 8569 Job Template attributes supplied in the create request. If the "ipp- 8570 attribute-fidelity" attribute is set to 'false', the Job Template 8571 attributes that populate the new Job object are all the client 8572 supplied Job Template attributes that are supported or that have value 8573 substitution. Thus, some of the requested Job Template attributes may 8574 not appear in the Job object because the Printer object did not 8575 support those attributes. The attributes that populate the Job object 8576 are persistently stored with the Job object for that Job. A Get-Job- 8577 Attributes operation on that Job object will return only those 8578 attributes that are persistently stored with the Job object. 8580 Note: All Job Template attributes that are persistently stored with 8581 the Job object are intended to be "override values"; that is, they 8582 that take precedence over whatever other embedded instructions might 8583 be in the document data itself. However, it is not possible for all 8584 Printer objects to realize the semantics of "override". End users may 8585 query the Printer's "pdl-override-supported" attribute to determine if 8586 the Printer either attempts or does not attempt to override document 8587 data instructions with IPP attributes. 8589 There are some cases, where a Printer supports a Job Template 8590 attribute and has an associated default value set for that attribute. 8591 In the case where a client does not supply the corresponding 8592 attribute, the Printer does not use its default values to populate Job 8593 attributes when creating the new Job object; only Job Template 8594 attributes actually in the create request are used to populate the Job 8596 Expires December 30, 1998 8597 object. The Printer's default values are only used later at Job 8598 processing time if no other IPP attribute or instruction embedded in 8599 the document data is present. 8601 Note: If the default values associated with Job Template attributes 8602 that the client did not supply were to be used to populate the Job 8603 object, then these values would become "override values" rather than 8604 defaults. If the Printer supports the 'attempted' value of the "pdl- 8605 override-supported" attribute, then these override values could 8606 replace values specified within the document data. This is not the 8607 intent of the default value mechanism. A default value for an 8608 attribute is used only if the create request did not specify that 8609 attribute (or it was ignored when allowed by "ipp-attribute-fidelity" 8610 being 'false') and no value was provided within the content of the 8611 document data. 8613 If the client does not supply a value for some Job Template attribute, 8614 and the Printer does not support that attribute, as far as IPP is 8615 concerned, the result of processing that Job (with respect to the 8616 missing attribute) is undefined. 8618 16.4.8 Return one of the success status codes 8620 Once the Job object has been created, the Printer object accepts the 8621 request and returns to the client: 8623 (1) the 'successful-ok' status code, if there are no unsupported or 8624 conflicting Job Template attributes or values. 8625 (2) the 'successful-ok-conflicting-attributes' status code, if 8626 there are any conflicting Job Template attribute or values. 8627 (3) the 'successful-ok-ignored-or-substituted-attributes' status 8628 code, if there are only unsupported Job Template attributes or 8629 values. 8631 Note: Unsupported Operation attributes or values that are returned do 8632 not affect the status returned in this step. If the unsupported 8633 Operation attribute was a serious error, the above already rejected 8634 the request in a previous step. If control gets to this step with 8635 unsupported Operation attributes being returned, they are not serious 8636 errors. 8638 The Printer object also returns Job status attributes that indicate 8639 the initial state of the Job ('pending', 'pending-held', 'processing', 8640 etc.), etc. See Print-Job Response, section 3.2.1.2. 8642 Expires December 30, 1998 8643 16.4.9 Accept appended Document Content 8645 The Printer object accepts the appended Document Content data and 8646 either starts it printing, or spools it for later processing. 8648 16.4.10 Scheduling and Starting to Process the Job 8650 The Printer object uses its own configuration and implementation 8651 specific algorithms for scheduling the Job in the correct processing 8652 order. Once the Printer object begins processing the Job, the Printer 8653 changes the Job's state to 'processing'. If the Printer object 8654 supports PDL override (the "pdl-override-supported" attribute set to 8655 'attempted'), the implementation does its best to see that IPP 8656 attributes take precedence over embedded instructions in the document 8657 data. 8659 16.4.11 Completing the Job 8661 The Printer object continues to process the Job until it can move the 8662 Job into the 'completed' state. If an Cancel-Job operation is 8663 received, the implementation eventually moves the Job into the 8664 'canceled' state. If the system encounters errors during processing 8665 that do not allow it to progress the Job into a completed state, the 8666 implementation halts all processing, cleans up any resources, and 8667 moves the Job into the 'aborted' state. 8669 16.4.12 Destroying the Job after completion 8671 Once the Job moves to the 'completed', 'aborted', or 'canceled' state, 8672 it is an implementation decision as to when to destroy the Job object 8673 and release all associated resources. Once the Job has been 8674 destroyed, the Printer would return either the "client-error-not- 8675 found" or "client-error-gone" status codes for operations directed at 8676 that Job. 8678 Note: the Printer object SHOULD NOT re-use a "job-uri" or "job-id" 8679 value for a sufficiently long time after a job has been destroyed, so 8680 that stale references kept by clients are less likely to access the 8681 wrong (newer) job. 8683 16.4.13 Interaction with "ipp-attribute-fidelity" 8685 Some Printer object implementations may support "ipp-attribute- 8686 fidelity" set to 'true' and "pdl-override-supported" set to 8688 Expires December 30, 1998 8689 'attempted' and yet still not be able to realize exactly what the 8690 client specifies in the create request. This is due to legacy 8691 decisions and assumptions that have been made about the role of job 8692 instructions embedded within the document data and external job 8693 instructions that accompany the document data and how to handle 8694 conflicts between such instructions. The inability to be 100% precise 8695 about how a given implementation will behave is also compounded by the 8696 fact that the two special attributes, "ipp-attribute-fidelity" and 8697 "pdl-override-supported", apply to the whole job rather than specific 8698 values for each attribute. For example, some implementations may be 8699 able to override almost all Job Template attributes except for 8700 "number-up". 8702 16.5 Using Job Template Attributes During Document Processing. 8704 The Printer object uses some of the Job object's Job Template 8705 attributes during the processing of the document data associated with 8706 that job. These include, but are not limited to, "orientation", 8707 "number-up", "sides", "media", and "copies". The processing of each 8708 document in a Job Object MUST follow the steps below. These steps are 8709 intended only to identify when and how attributes are to be used in 8710 processing document data and any alternative steps that accomplishes 8711 the same effect can be used to implement this specification. 8713 1. Using the client supplied "document-format" attribute or some 8714 form of document format detection algorithm (if the value of 8715 "document-format" is not specific enough), determine whether or 8716 not the document data has already been formatted for printing. If 8717 the document data has been formatted, then go to step 2. 8718 Otherwise, the document data MUST be formatted. The formatting 8719 detection algorithm is implementation defined and is not 8720 specified by this specification. The formatting of the document 8721 data uses the "orientation-requested" attribute to determine how 8722 the formatted print data should be placed on a print-stream page, 8723 see section 4.2.10 for the details. 8725 2. The document data is in the form of a print-stream in a known 8726 media type. The "page-ranges" attribute is used to select, as 8727 specified in section 4.2.7, a sub-sequence of the pages in the 8728 print-stream that are to be processed and images. 8730 3. The input to this step is a sequence of print-stream pages. This 8731 step is controlled by the "number-up" attribute. If the value of 8732 "number-up" is N, then during the processing of the print-stream 8733 pages, each N print-stream pages are positioned, as specified in 8734 section 4.2.9, to create a single impression. If a given document 8735 does not have N more print-stream pages, then the completion of 8737 Expires December 30, 1998 8738 the impression is controlled by the "multiple-document-handling" 8739 attribute as described in section 4.2.4; when the value of this 8740 attribute is 'single-document', the print-stream pages of 8741 document data from subsequent documents is used to complete the 8742 impression. 8744 The size(scaling), position(translation) and rotation of the 8745 print-stream pages on the impression is implementation defined. 8746 Note that during this process the print-stream pages may be 8747 rendered to a form suitable for placing on the impression; this 8748 rendering is controlled by the values of the "printer-resolution" 8749 and "print-quality" attributes as described in sections 4.2.12 8750 and 4.2.13. In the case N=1, the impression is nearly the same as 8751 the print-stream page; the differences would only be in the size, 8752 position and rotation of the print-stream page and/or any 8753 decoration, such as a frame to the page, that is added by the 8754 implementation. 8756 4. The collection of impressions is placed, in sequence, onto sides 8757 of the media sheets. This placement is controlled by the "sides" 8758 attribute and the orientation of the print-stream page, as 8759 described in section 4.2.8. The orientation of the print-stream 8760 pages affects the orientation of the impression; for example, if 8761 "number-up" equals 2, then, typically, two portrait print-stream 8762 pages become one landscape impression. Note that the placement of 8763 impressions onto media sheets is also controlled by the 8764 "multiple-document-handling" attribute as described in section 8765 4.2.4. 8767 5. The "copies" and "multiple-document-handling" attributes are 8768 used to determine how many copies of each media instance are 8769 created and in what order. See sections 4.2.5 and 4.2.4 for the 8770 details. 8772 6. When the correct number of copies are created, the media 8773 instances are finished according to the values of the 8774 "finishings" attribute as described in 4.2.6. Note that sometimes 8775 finishing operations may require manual intervention to perform 8776 the finishing operations on the copies, especially uncollated 8777 copies. This specification allows any or all of the processing 8778 steps to be performed automatically or manually at the discretion 8779 of the Printer object. 8781 17. APPENDIX E: Generic Directory Schema 8783 This section defines a generic schema for an entry in a directory 8784 service. A directory service is a means by which service users can 8786 Expires December 30, 1998 8787 locate service providers. In IPP environments, this means that IPP 8788 Printers can be registered (either automatically or with the help of 8789 an administrator) as entries of type printer in the directory using an 8790 implementation specific mechanism such as entry attributes, entry type 8791 fields, specific branches, etc. IPP clients can search or browse for 8792 entries of type printer. Clients use the directory service to find 8793 entries based on naming, organizational contexts, or filtered searches 8794 on attribute values of entries. For example, a client can find all 8795 printers in the "Local Department" context. Authentication and 8796 authorization are also often part of a directory service so that an 8797 administrator can place limits on end users so that they are only 8798 allowed to find entries to which they have certain access rights. IPP 8799 itself does not require any specific directory service protocol or 8800 provider. 8802 Note: Some directory implementations allow for the notion of 8803 "aliasing". That is, one directory entry object can appear as 8804 multiple directory entry object with different names for each object. 8805 In each case, each alias refers to the same directory entry object 8806 which refers to a single IPP Printer object. 8808 The generic schema is a subset of IPP Printer Job Template and Printer 8809 Description attributes (sections 4.2 and 4.4). These attributes are 8810 identified as either REQUIRED or OPTIONAL for the directory entry 8811 itself. This conformance labeling is NOT the same conformance 8812 labeling applied to the attributes of IPP Printers objects. REQUIRED 8813 attributes MUST be associated with each directory entry. OPTIONAL 8814 attributes SHOULD be associated with the directory entry (if known or 8815 supported). In addition, all directory entry attributes SHOULD 8816 reflect the current attribute values for the corresponding Printer 8817 object. 8819 In order to bridge between the directory service and the IPP Printer 8820 object, one of the REQUIRED directory entry attributes is the Printer 8821 object's "printer-uri-supported" attribute. The IPP client queries 8822 the "printer-uri-supported" attribute in the directory entry and then 8823 addresses the IPP Printer object using one of its URIs. The "uri- 8824 security-supported" attribute identifies the protocol (if any) used to 8825 secure a channel. 8827 The following attributes define the generic schema for directory 8828 entries of type PRINTER: 8830 printer-uri-supported REQUIRED Section 4.4.1 8831 uri-security-supported REQUIRED Section 4.4.2 8832 printer-name REQUIRED Section 4.4.3 8833 printer-location OPTIONAL Section 4.4.4 8834 printer-info OPTIONAL Section 4.4.5 8836 Expires December 30, 1998 8837 printer-more-info OPTIONAL Section 4.4.6 8838 printer-make-and-model OPTIONAL Section 4.4.8 8839 charset-supported REQUIRED Section 4.4.15| 8840 generated-natural-language- 8841 supported REQUIRED Section 4.4.17 8842 document-format-supported OPTIONAL Section 4.4.19 8843 color-supported OPTIONAL Section 4.4.23 8844 finishings-supported OPTIONAL Section 4.2.6 8845 number-up-supported OPTIONAL Section 4.2.7 8846 sides-supported OPTIONAL Section 4.2.8 8847 media-supported OPTIONAL Section 4.2.11 8848 printer-resolution-supported OPTIONAL Section 4.2.12 8849 print-quality-supported OPTIONAL Section 4.2.13 8851 Expires December 30, 1998