idnits 2.17.1 draft-ietf-ipp-model-08.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 1 longer page, the longest (page 156) 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]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 170 has weird spacing: '...(1setOf type2...' == Line 615 has weird spacing: '...any indicate...' == Line 896 has weird spacing: '... these unsup...' == Line 1078 has weird spacing: '...es, and when ...' == Line 2904 has weird spacing: '...phrases which...' == (8 more instances...) == The document seems to use 'NOT RECOMMENDED' as an RFC 2119 keyword, but does not include the phrase in its RFC 2119 key words list. -- 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 'SHALL not' in this paragraph: The protocol specification defines mechanisms for allowing passing "out of band" values. All attributes in a request SHALL have one or more values as defined in Sections 4.2 to 4.4. Thus clients SHALL not supply attributes with "out-of-band" values. All attribute in a response SHALL have one or more values as defined in Sections 4.2 to 4.4 or a single "out-of-band" value. == 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 'SHALL not' in this paragraph: The 'nameWithLanguage' attribute syntax is the same as 'textWithLanguage', including the MANDATORY support of UTF-8, except that the length of the 'name' part SHALL not exceed 255 octets. This attribute syntax is the so-called Natural Language Override mechanism for the 'name' attribute syntax and MUST be supported by IPP objects. == 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 'SHALL not' in this paragraph: When a keyword is used to represent an attribute (its name), it MUST be unique within the full scope of all IPP objects and attributes. When a keyword is used to represent a value of an attribute, it MUST be unique just within the scope of that attribute. That is, the same keyword SHALL not be used for two different values within the same attribute to mean two different semantic ideas. However, the same keyword MAY be used across two or more attributes, representing different semantic ideas for each attribute. Section 6 describes how the protocol can be extended with new keyword values. Examples of attribute name keywords: == 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 'SHALL not' in this paragraph: This value SHALL not include the multiplicative factors contributed by the number of copies specified by the "copies" attribute, independent of whether the device can process multiple copies without making multiple passes over the job or document data and independent of whether the output is collated or not. Thus the value is independent of the implementation and indicates the size of the document(s) measured in K octets independent of the number of copies. == 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 'SHALL not' in this paragraph: As with "job-k-octets", this value SHALL not include the multiplicative factors contributed by the number of copies specified == 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 'SHALL not' in this paragraph: 'other': The device has detected an error other than one listed in this document. 'none': There are not reasons. This state reason is semantically equivalent to "printer-state-reasons" without any value. 'media-needed': A tray has run out of media. 'media-jam': The device has a media jam. 'paused': Someone has paused the Printer object. In this state, a Printer SHALL not produce printed output, but it SHALL perform other operations requested by a client. If a Printer had been printing a job when the Printer was paused, the Printer SHALL resume printing that job when the Printer is no longer paused and leave no evidence in the printed output of such a pause. 'shutdown': Someone has removed a Printer object from service, and the device may be powered down or physical removed. In this state, a Printer object SHALL not produce printed output, and unless the Printer object is realized by a print server that is still active, the Printer object SHALL perform no other operations requested by a client, including returning this value. If a Printer object had been printing a job when it was shutdown, the Printer need not resume printing that job when the Printer is no longer shutdown. If the Printer resumes printing such a job, it may leave evidence in the printed output of such a shutdown, e.g. the part printed before the shutdown may be printed a second time after the shutdown. 'connecting-to-device': The Printer object has scheduled a job on the output device and is in the process of connecting to a shared network output device (and might not be able to actually start printing the job for an arbitrarily long time depending on the usage of the output device by other servers on the network). 'timed-out': The server was able to connect to the output device (or is always connected), but was unable to get a response from the output device. 'stopping': The Printer object is in the process of stopping the device and will be stopped in a while. When the device is stopped, the Printer object will change the Printer object's state to 'stopped'. The 'stopping-warning' reason is never an error, even for a Printer with a single output device. When an output-device ceases accepting jobs, the Printer will have this reason while the output device completes printing. 'stopped-partly': When a Printer object controls more than one output device, this reason indicates that one or more output devices are stopped. If the reason is a report, fewer than half == 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: 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. == 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 'SHALL not' in this paragraph: The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 to 5) is reserved for private use within each status code class. Values 0x0600 to 0x7FFF are reserved for future assignment and SHALL not be used. == 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 syntactic validation checks for each OPTIONAL attribute value as in Section 15.3.4. As in Section 15.3.4, if any fail, the IPP object REJECTS the request and RETURNS the 'client-error-bad-request' status code. -- 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 (December 19, 1997) is 9624 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: 'RFC1808' is mentioned on line 2713, but not defined ** Obsolete undefined reference: RFC 1808 (Obsoleted by RFC 3986) -- Looks like a reference, but probably isn't: '46' on line 2763 -- Looks like a reference, but probably isn't: '52' on line 2811 -- Looks like a reference, but probably isn't: '56' on line 2811 == Missing Reference: 'RFC1903' is mentioned on line 2900, but not defined ** Obsolete undefined reference: RFC 1903 (Obsoleted by RFC 2579) == Missing Reference: 'TLS' is mentioned on line 5451, but not defined == Unused Reference: 'CS-POL' is defined on line 5480, but no explicit reference was found in the text == Unused Reference: 'RFC2068' is defined on line 5579, but no explicit reference was found in the text == Unused Reference: 'RFC2069' is defined on line 5583, but no explicit reference was found in the text -- Possible downref: Non-RFC (?) normative reference: ref. 'ASCII' -- Possible downref: Non-RFC (?) normative reference: ref. 'CS-POL' -- Possible downref: Non-RFC (?) normative reference: ref. 'HTPP' -- Possible downref: Non-RFC (?) normative reference: ref. 'IANA-CS' == Outdated reference: A later version (-03) exists of draft-freed-charset-reg-02 ** Downref: Normative reference to an Informational draft: draft-freed-charset-reg (ref. 'IANA-CSa') -- Possible downref: Non-RFC (?) normative reference: ref. 'IANA-MT' -- No information found for draft-ipp-pro - is the name correct? -- Possible downref: Normative reference to a draft: ref. 'IPP-PRO' -- No information found for draft-ipp-rat - is the name correct? -- Possible downref: Normative reference to a draft: ref. 'IPP-RAT' -- No information found for draft-ipp-req - is the name correct? -- Possible downref: Normative reference to a draft: 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 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) -- Possible downref: Non-RFC (?) normative reference: ref. 'SWP' Summary: 19 errors (**), 0 flaws (~~), 26 warnings (==), 25 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTERNET-DRAFT 3 draft-ietf-ipp-model-08.txt 4 R. deBry 5 IBM Corporation 6 T. Hastings 7 Xerox Corporation 8 R. Herriot 9 Sun Microsystems 10 S. Isaacson 11 Novell, Inc. 12 P. Powell 13 San Diego State University 14 December 19, 1997 16 Internet Printing Protocol/1.0: Model and Semantics 17 Copyright (C) The Internet Society (date). All Rights Reserved. 19 Status of this Memo 21 This document is an Internet-Draft. Internet-Drafts are working 22 documents of the Internet Engineering Task Force (IETF), its areas, 23 and its working groups. Note that other groups may also distribute 24 working documents as Internet-Drafts. 26 Internet-Drafts are draft documents valid for a maximum of six months 27 and may be updated, replaced, or obsoleted by other documents at any 28 time. It is inappropriate to use Internet-Drafts as reference 29 material or to cite them other than as "work in progress". 31 To learn the current status of any Internet-Draft, please check the 32 "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow 33 Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), 34 munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or 35 ftp.isi.edu (US West Coast). 37 This Internet-Draft expires on June 19, 1997. 39 Abstract 41 This document is one of a set of documents, which together describe 42 all aspects of a new Internet Printing Protocol (IPP). IPP is an 43 application level protocol that can be used for distributed printing 44 using Internet tools and technologies. The protocol is heavily 45 influenced by the printing model introduced in the Document Printing 46 Application (DPA) [ISO10175] standard. Although DPA specifies both 47 end user and administrative features, IPP version 1.0 (IPP/1.0) 48 focuses only on end user functionality. 50 Expires June 19, 1998 51 The full set of IPP documents includes: 53 Requirements for an Internet Printing Protocol [IPP-REQ] 54 Rationale for the Structure and Model and Protocol for the Internet 55 Printing Protocol [IPP-RAT] 56 Internet Printing Protocol/1.0: Model and Semantics (this document) 57 Internet Printing Protocol/1.0: Protocol Specification [IPP-PRO] 59 The requirements document, "Requirements for an Internet Printing 60 Protocol", takes a broad look at distributed printing functionality, 61 and it enumerates real-life scenarios that help to clarify the 62 features that need to be included in a printing protocol for the 63 Internet. It identifies requirements for three types of users: end 64 users, operators, and administrators. The requirements document calls 65 out a subset of end user requirements that MUST be satisfied in 66 IPP/1.0. Operator and administrator requirements are out of scope for 67 version 1.0. The rationale document, "Rationale for the Structure and 68 Model and Protocol for the Internet Printing Protocol", describes IPP 69 from a high level view, defines a roadmap for the various documents 70 that form the suite of IPP specifications, and gives background and 71 rationale for the IETF working group's major decisions. This 72 document, "Internet Printing Protocol/1.0: Model and Semantics", 73 describes a simplified model with abstract objects, their attributes, 74 and their operations. The model introduces a Printer and a Job. The 75 Job supports multiple documents per Job. The model document also 76 addresses how security, internationalization, and directory issues are 77 addressed. The protocol specification, " Internet Printing 78 Protocol/1.0: Protocol Specification", is a formal mapping of the 79 abstract operations and attributes defined in the model document onto 80 HTTP/1.1. The protocol specification defines the encoding rules for a 81 new Internet media type called "application/ipp". 83 Expires June 19, 1998 84 Table of Contents 86 1. Introduction ...................................................9 87 1.1 Simplified Printing Model.....................................10 88 2. IPP Objects ...................................................13 89 2.1 Printer Object................................................14 90 2.2 Job Object....................................................15 91 2.3 Object Relationships..........................................16 92 2.4 Object Identity...............................................17 93 3. IPP Operations ................................................18 94 3.1 Common Semantics..............................................19 95 3.1.1 Operation Characteristics................................19 96 3.1.2 Operation Targets........................................21 97 3.1.3 Character Set and Natural Language Operation Attributes..22 98 3.1.3.1 Request Operation Attributes ..........................22 99 3.1.3.2 Response Operation Attributes .........................25 100 3.1.4 Operation Status Codes and Messages......................26 101 3.1.5 Versions.................................................27 102 3.1.6 Job Creation Operations..................................29 103 3.2 Printer Operations............................................31 104 3.2.1 Print-Job Operation......................................31 105 3.2.1.1 Print-Job Request .....................................31 106 3.2.1.2 Print-Job Response ....................................35 107 3.2.2 Print-URI Operation......................................37 108 3.2.3 Validate-Job Operation...................................38 109 3.2.4 Create-Job Operation.....................................38 110 3.2.5 Get-Printer-Attributes Operation.........................39 111 3.2.5.1 Get-Printer-Attributes Request ........................39 112 3.2.5.2 Get-Printer-Attributes Response .......................41 113 3.2.6 Get-Jobs Operation.......................................42 114 3.2.6.1 Get-Jobs Request ......................................42 115 3.2.6.2 Get-Jobs Response .....................................44 116 3.3 Job Operations................................................45 117 3.3.1 Send-Document Operation..................................45 118 3.3.1.1 Send-Document Request .................................46 119 3.3.1.2 Send-Document Response ................................48 120 3.3.2 Send-URI Operation.......................................48 121 3.3.3 Cancel Job Operation.....................................49 122 3.3.3.1 Cancel-Job Request ....................................49 123 3.3.3.2 Cancel-Job Response ...................................49 124 3.3.4 Get-Job-Attributes Operation.............................50 125 3.3.4.1 Get-Job-Attributes Request ............................51 126 3.3.4.2 Get-Job-Attributes Response ...........................51 127 4. Object Attributes .............................................52 128 4.1 Attribute Syntaxes............................................53 129 4.1.1 'text'...................................................54 130 4.1.2 'textWithLanguage'.......................................54 131 4.1.3 'name'...................................................56 133 Expires June 19, 1998 134 4.1.4 'nameWithLanguage'.......................................56 135 4.1.5 'keyword'................................................56 136 4.1.6 'enum'...................................................57 137 4.1.7 'uri'....................................................58 138 4.1.8 'uriScheme'..............................................58 139 4.1.9 'charset'................................................58 140 4.1.10 'naturalLanguage'........................................59 141 4.1.11 'mimeMediaType'..........................................60 142 4.1.12 'octetString'............................................61 143 4.1.13 'boolean'................................................61 144 4.1.14 'integer'................................................61 145 4.1.15 'rangeOfInteger'.........................................62 146 4.1.16 'dateTime'...............................................62 147 4.1.17 'resolution'.............................................62 148 4.1.18 '1setOf X'..............................................63 149 4.2 Job Template Attributes.......................................63 150 4.2.1 job-priority (integer(1:100))............................67 151 4.2.2 job-hold-until (type4 keyword | name (MAX))..............68 152 4.2.3 job-sheets (type4 keyword | name(MAX))...................69 153 4.2.4 multiple-document-handling (type2 keyword)...............70 154 4.2.5 copies (integer(1:MAX))..................................71 155 4.2.6 finishings (1setOf type2 enum)...........................71 156 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))..............72 157 4.2.8 sides (type2 keyword)....................................73 158 4.2.9 number-up (integer(1:MAX))...............................74 159 4.2.10 orientation (type2 enum).................................74 160 4.2.11 media (type4 keyword | name(MAX))........................75 161 4.2.12 printer-resolution (resolution)..........................76 162 4.2.13 print-quality (type2 enum)...............................76 163 4.3 Job Description Attributes....................................76 164 4.3.1 job-uri (uri)............................................79 165 4.3.2 job-id (integer(1:MAX))..................................79 166 4.3.3 job-more-info (uri)......................................79 167 4.3.4 job-name (name(MAX)).....................................79 168 4.3.5 job-originating-user-name (name(MAX))....................80 169 4.3.6 job-state (type1 enum)...................................80 170 4.3.7 job-state-reasons (1setOf type2 keyword)................83 171 4.3.8 job-state-message (text(MAX))............................85 172 4.3.9 number-of-documents (integer(0:MAX)).....................86 173 4.3.10 containing-printer-uri (uri).............................86 174 4.3.11 output-device-assigned (name(127)).......................86 175 4.3.12 time-at-creation (integer(0:MAX))........................86 176 4.3.13 time-at-processing (integer(0:MAX))......................87 177 4.3.14 time-at-completed (integer(0:MAX)).......................87 178 4.3.15 number-of-intervening-jobs (integer(0:MAX))..............87 179 4.3.16 job-message-from-operator (text(127))....................87 180 4.3.17 compression (type3 keyword)..............................87 181 4.3.18 job-k-octets (integer(0:MAX))............................88 183 Expires June 19, 1998 184 4.3.19 job-impressions (integer(0:MAX)).........................88 185 4.3.20 job-media-sheets (integer(0:MAX))........................89 186 4.3.21 job-k-octets-processed (integer(0:MAX))..................89 187 4.3.22 job-impressions-completed (integer(0:MAX))...............90 188 4.3.23 job-media-sheets-completed (integer(0:MAX))..............90 189 4.3.24 attributes-charset (charset).............................90 190 4.3.25 attributes-natural-language (naturalLanguage)............91 191 4.4 Printer Description Attributes................................91 192 4.4.1 printer-uri (uri)........................................93 193 4.4.2 printer-tls-uri (uri)....................................93 194 4.4.3 printer-name (name(127)).................................94 195 4.4.4 printer-location (text(127)).............................94 196 4.4.5 printer-info (text(127)).................................95 197 4.4.6 printer-more-info (uri)..................................95 198 4.4.7 printer-driver-installer (uri)...........................95 199 4.4.8 printer-make-and-model (text(127)).......................95 200 4.4.9 printer-more-info-manufacturer (uri).....................95 201 4.4.10 printer-state (type1 enum)...............................96 202 4.4.11 printer-state-reasons (1setOf type2 keyword).............97 203 4.4.12 printer-state-message (text(MAX))........................99 204 4.4.13 operations-supported (1setOf type2 enum)................100 205 4.4.14 charset-configured (charset)............................100 206 4.4.15 charset-supported (1setOf charset)......................101 207 4.4.16 natural-language-configured (naturalLanguage)...........101 208 4.4.17 generated-natural-language-supported (1setOf 209 naturalLanguage)........................................101 210 4.4.18 document-format-default (mimeMediaType).................102 211 4.4.19 document-format-supported (1setOf mimeMediaType)........102 212 4.4.20 printer-is-accepting-jobs (boolean).....................102 213 4.4.21 queued-job-count (integer(0:MAX)).......................103 214 4.4.22 printer-message-from-operator (text(127))...............103 215 4.4.23 color-supported (boolean)...............................103 216 4.4.24 reference-uri-schemes-supported (1setOf uriScheme)......103 217 4.4.25 pdl-override (type2 keyword)............................104 218 4.4.26 printer-up-time (integer(1:MAX))........................104 219 4.4.27 printer-current-time (dateTime).........................105 220 4.4.28 multiple-operation-time-out (integer(1:MAX))............105 221 5. Conformance ..................................................105 222 5.1 Client Conformance Requirements..............................105 223 5.2 IPP Object Conformance Requirements..........................106 224 5.2.1 Objects.................................................106 225 5.2.2 Operations..............................................106 226 5.2.3 IPP Object Attributes...................................107 227 5.2.4 Extensions..............................................107 228 5.2.5 Attribute Syntaxes......................................107 229 5.3 Charset and Natural Language Requirements....................108 230 5.4 Security Conformance Requirements............................108 231 6. IANA Considerations (registered and private extensions) ......108 233 Expires June 19, 1998 234 6.1 Typed Extensions.............................................108 235 6.2 Registration of MIME types/sub-types for document-formats....110 236 6.3 Attribute Extensibility......................................110 237 6.4 Attribute Syntax Extensibility...............................110 238 7. Internationalization Considerations ..........................111 239 8. Security Considerations ......................................113 240 8.1 Security Scenarios...........................................115 241 8.1.1 Client and Server in the Same Security Domain...........115 242 8.1.2 Client and Server in Different Security Domains.........115 243 8.1.3 Print by Reference......................................116 244 8.2 URIs for TLS and non-TLS access..............................116 245 8.3 The "requesting-user-name" Operation Attribute...............116 246 8.4 Restricted Queries...........................................118 247 8.5 IPP Security Application Profile for TLS.....................118 248 9. References ...................................................118 249 10. Copyright Notice .............................................121 250 11. Author's Address .............................................122 251 12. APPENDIX A: Terminology ......................................125 252 12.1 Conformance Terminology......................................125 253 12.1.1 MUST....................................................125 254 12.1.2 MUST NOT................................................125 255 12.1.3 SHOULD..................................................125 256 12.1.4 SHOULD NOT..............................................125 257 12.1.5 MAY.....................................................126 258 12.1.6 NEED NOT................................................126 259 12.2 Model Terminology............................................126 260 12.2.1 Keyword.................................................126 261 12.2.2 Attributes..............................................126 262 12.2.2.1 Attribute Name .......................................127 263 12.2.2.2 Attribute Group Name .................................127 264 12.2.2.3 Attribute Value ......................................127 265 12.2.2.4 Attribute Syntax .....................................127 266 12.2.3 Supports................................................127 267 12.2.4 print-stream page.......................................129 268 12.2.5 impression..............................................130 269 13. APPENDIX B: Status Codes and Suggested Status Code Messages .130 270 13.1 Status Codes.................................................131 271 13.1.1 Informational...........................................131 272 13.1.2 Successful Status Codes.................................131 273 13.1.2.1 successful-ok (0x0000) ...............................131 274 13.1.2.2 successful-ok-ignored-or-substituted- 275 attributes (0x0001) ..................................132 276 13.1.2.3 successful-ok-conflicting-attributes (0x0002) ........132 277 13.1.3 Redirection Status Codes................................132 278 13.1.4 Client Error Status Codes...............................132 279 13.1.4.1 client-error-bad-request (0x0400) ....................132 280 13.1.4.2 client-error-forbidden (0x0401) ......................132 281 13.1.4.3 client-error-not-authenticated (0x0402) ..............133 283 Expires June 19, 1998 284 13.1.4.4 client-error-not-authorized (0x0403) .................133 285 13.1.4.5 client-error-not-possible (0x0404) ...................133 286 13.1.4.6 client-error-timeout (0x0405) ........................133 287 13.1.4.7 client-error-not-found (0x0406) ......................134 288 13.1.4.8 client-error-gone (0x0407) ...........................134 289 13.1.4.9 client-error-request-entity-too-large (0x0408) .......134 290 13.1.4.10 client-error-request-uri-too-long (0x0409) ...........135 291 13.1.4.11 client-error-document-format-not-supported (0x040A) ..135 292 13.1.4.12 client-error-attributes-or-values-not- 293 supported (0x040B) ...................................135 294 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) .......136 295 13.1.4.14 client-error-charset-not-supported (0x040D) ..........136 296 13.1.4.15 client-error-conflicting-attributes (0x040E) .........136 297 13.1.5 Server Error Status Codes...............................136 298 13.1.5.1 server-error-internal-error (0x0500) .................136 299 13.1.5.2 server-error-operation-not-supported (0x0501) ........136 300 13.1.5.3 server-error-service-unavailable (0x0502) ............137 301 13.1.5.4 server-error-version-not-supported (0x0503) ..........137 302 13.1.5.5 server-error-device-error (0x0504) ...................137 303 13.1.5.6 server-error-temporary-error (0x0505) ................138 304 13.1.5.7 server-error-not-accepting-jobs (0x0506) .............138 305 13.2 Status Codes for IPP Operations..............................139 306 14. APPENDIX C: "media" keyword values ..........................139 307 15. APPENDIX D: Processing IPP Attributes ........................144 308 15.1 Fidelity.....................................................145 309 15.2 Page Description Language (PDL) Override.....................146 310 15.3 Suggested Operation Processing Steps for All Operations......148 311 15.3.1 Validate version number.................................148 312 15.3.2 Validate operation code.................................149 313 15.3.3 Validate attribute group and attribute presence and 314 order...................................................149 315 15.3.3.1 Validate the presence and order of attribute groups ..149 316 15.3.3.2 Ignore unknown attribute groups in the expected 317 position .............................................150 318 15.3.3.3 Validate the presence of a single occurrence of 319 required Operation attributes ........................150 320 15.3.4 Validate the values of the MANDATORY Operation 321 attributes..............................................156 322 15.3.5 Validate the values of the OPTIONAL Operation 323 attributes..............................................159 324 15.4 Suggested Additional Processing Steps for Operations 325 that Create/Validate Jobs and add Documents..................161 326 15.4.1 Default "ipp-attribute-fidelity" if not supplied........161 327 15.4.2 Validate the values of the Job Template attributes......161 328 15.4.3 Check for conflicting Job Template attributes values....166 329 15.4.4 Decide whether to REJECT the request....................167 330 15.4.5 For the Validate-Job operation, RETURN one of 331 the success status codes................................167 333 Expires June 19, 1998 335 15.4.6 Create the Job object with attributes to support........167 336 15.4.7 Return one of the success status codes..................169 337 15.4.8 Accept appended Document Content........................170 338 15.4.9 Scheduling and Starting to Process the Job..............170 339 15.4.10 Completing the Job......................................170 340 15.4.11 Destroying the Job after completion.....................170 341 15.4.12 Interaction with "ipp-attribute-fidelity"...............170 342 15.5 Using Job Template Attributes During Document Processing.....171 343 16. APPENDIX E: Generic Directory Schema .........................172 345 Expires June 19, 1998 346 1. Introduction 348 The Internet Printing Protocol (IPP) is an application level protocol 349 that can be used for distributed printing using Internet tools and 350 technologies. IPP version 1.0 (IPP/1.0) focuses only on end user 351 functionality. This document is just one of a suite of documents that 352 fully define IPP. The full set of IPP documents includes: 354 Requirements for an Internet Printing Protocol [IPP-REQ] 355 Rationale for the Structure and Model and Protocol for the Internet 356 Printing Protocol [IPP-RAT] 357 Internet Printing Protocol/1.0: Model and Semantics (this document) 358 Internet Printing Protocol/1.0: Protocol Specification [IPP-PRO] 360 Anyone reading this document for the first time is strongly encouraged 361 to read the IPP documents in the following order: 363 1. The requirements document, "Requirements for an Internet 364 Printing Protocol". That document takes a broad look at 365 distributed printing functionality, and it enumerates real-life 366 scenarios that help to clarify the features that need to be 367 included in a printing protocol for the Internet. It identifies 368 requirements for three types of users: end users, operators, and 369 administrators. The requirements document calls out a subset of 370 end user requirements that MUST be satisfied in IPP/1.0. 371 Operator and administrator requirements are out of scope for 372 version 1.0. 373 2. The rationale document, "Rationale for the Structure and Model 374 and Protocol for the Internet Printing Protocol". That document 375 describes IPP from a high level view, defines a roadmap for the 376 various documents that form the suite of IPP specifications, and 377 gives background and rationale for the IETF working group's major 378 decisions. 379 3. This document, the "Internet Printing Protocol/1.0: Model and 380 Semantics" document. It describes a simplified model with 381 abstract objects, their attributes, and their operations. The 382 model introduces a Printer and a Job. The Job supports multiple 383 documents per Job. The model document also addresses how 384 security, internationalization, and directory issues are 385 addressed. 386 4. The protocol specification, " Internet Printing Protocol/1.0: 387 Protocol Specification". That document is a formal mapping of 388 the abstract operations and attributes defined in the model 389 document onto HTTP/1.1. The protocol specification defines the 390 encoding rules for a new Internet media type called 391 "application/ipp". 393 Expires June 19, 1998 395 This document is laid out as follows: 397 - The rest of Section 1 is an introduction to the IPP simplified 398 model for distributed printing. 399 - Section 2 introduces the object types in the model and their 400 basic behaviors, attributes, and interactions. 401 - Section 3 defines the operations supported by IPP/1.0. IPP 402 operations are synchronous, therefore, for each operation, there 403 is a both request and a and response. 404 - Section 4 defines the attributes (and their syntaxes) that are 405 used in the model. 406 - Sections 5 - 6 summarizes the implementation conformance 407 requirements for objects that support the protocol and IANA 408 considerations, respectively. 409 - Sections 7 - 11 cover the Internationalization and Security 410 considerations as well as References, Copyright Notice, and 411 Author contact information. 412 - Sections 12 - 14 are appendices that cover Terminology, Status 413 Codes and Messages, and "media" keyword values. 414 - Section 15 is an appendix that defines the rules and suggested 415 techniques for the processing by IPP object of attributes in 416 client requests. This section helps to clarify the affects of 417 interactions between significant attributes and their values. 418 - Section 16 is an appendix that enumerates a subset of Printer 419 attributes that form a generic directory schema. These 420 attributes are useful when registering a Printer so that a client 421 can find the Printer not just by name, but by filtered searches 422 as well. 424 1.1 Simplified Printing Model 426 In order to achieve its goal of realizing a workable printing protocol 427 for the Internet, the Internet Printing Protocol (IPP) is based on a 428 simplified printing model that abstracts the many components of real 429 world printing solutions. The Internet is a distributed computing 430 environment where requesters of print services (clients, applications, 431 printer drivers, etc.) cooperate and interact with print service 432 providers. This model and semantics document describes a simple, 433 abstract model for IPP even though the underlying configurations may 434 be complex "n-tier" client/server systems. An important simplifying 435 step in the IPP model is to expose only the key objects and interfaces 436 required for printing. The model described in this model document 437 does not include features, interfaces, and relationships that are 438 beyond the scope of the first version of IPP (IPP/1.0). IPP/1.0 439 incorporates many of the relevant ideas and lessons learned from other 440 specification and development efforts [HTPP] [ISO10175] [LDPA] 441 [P1387.4] [PSIS] [RFC1179] [SWP]. 443 Expires June 19, 1998 444 The IPP/1.0 model encapsulates the important components of distributed 445 printing into two object types: 447 - Printer (Section 2.1) 448 - Job (Section 2.2) 450 Each object type has an associated set of operations (see section 3) 451 and attributes (see section 4). 453 The terminology used in the remainder of this document is defined in 454 section 12. In the remainder of this document, terms such as 455 "attributes", "keywords", and "support" have special meaning and are 456 defined in the model terminology section. Capitalized terms such as 457 MANDATORY, SHALL, and OPTIONAL have special meaning relating to 458 conformance. These terms are defined in the section on conformance 459 terminology, most of which is taken from RFC 2119 [RFC2119]. 461 It is important, however, to understand that in real system 462 implementations (which lie underneath the abstracted IPP/1.0 model), 463 there are other components of a print service which are not explicitly 464 defined in the IPP/1.0 model. The following figure illustrates where 465 IPP/1.0 fits with respect to these other components. 467 Expires June 19, 1998 468 +--------------+ 469 | Application | 470 o +. . . . . . . | 471 \|/ | Spooler | 472 / \ +. . . . . . . | +---------+ 473 End-User | Print Driver |---| File | 474 +-----------+ +-----+ +------+-------+ +----+----+ 475 | Browser | | GUI | | | 476 +-----+-----+ +--+--+ | | 477 | | | | 478 | +---+------------+---+ | 479 N D S | | IPP Client |------------+ 480 O I E | +---------+----------+ 481 T R C | | 482 I E U | 483 F C R -------------- Transport ------------------ 484 I T I 485 C O T | --+ 486 A R Y +--------+--------+ | 487 T Y | IPP Server | | 488 I +--------+--------+ | 489 O | | 490 N +-----------------+ | IPP Printer 491 | Print Service | | 492 +-----------------+ | 493 | --+ 494 +-----------------+ 495 | Output Device(s)| 496 +-----------------+ 498 An IPP Printer object encapsulates the functions normally associated 499 with physical output devices along with the spooling, scheduling and 500 multiple device management functions often associated with a print 501 server. Printer objects are optionally registered as entries in a 502 directory where end users find and select them based on some sort of 503 filtered and context based searching mechanism (see section 16). The 504 directory is used to store relatively static information about the 505 Printer, allowing end users to search for and find Printers that match 506 their search criteria, for example: name, context, printer 507 capabilities, etc.. The more dynamic information is directly 508 associated with the Printer object itself (as compared to the entry in 509 the directory which only represents the Printer object). This more 510 dynamic information includes state, currently loaded and ready media, 511 number of jobs at the Printer, errors, warnings, and so forth. 513 IPP clients implement the IPP protocol on the client side, and give 514 end users (or programs running on behalf of end users) the ability to 516 Expires June 19, 1998 517 query Printer objects and submit and manage print jobs. An IPP server 518 is just that part of the Printer object that implements the server- 519 side protocol. The rest of the Printer object implements (or gateways 520 into) the application semantics of the print service itself. The 521 Printer objects may be embedded in an output device or may be 522 implemented on a host on the network that communicates with the output 523 device. 525 When a job is submitted to the Printer object and the Printer object 526 validates the attributes in the submission request, the Printer object 527 creates a new Job object. The end user then interacts with this new 528 Job object to query its status and monitor the progress of the job. 529 End users may also cancel the print job by using the Job object's 530 Cancel-Job operation. The notification service(s) are out of scope 531 for IPP/1.0, but using such a notification service, the end user is 532 able to register for and receive Printer specific and Job specific 533 events. An end user can query the status of Printer objects and can 534 follow the progress of Job objects by polling using the Get-Printer- 535 Attributes, Get-Jobs, and Get-Job-Attributes operations. 537 2. IPP Objects 539 The IPP/1.0 model introduces objects of type Printer and Job. Each 540 type of object models relevant aspects of a real-world entity such as 541 a real printer or real print job. Each object type is defined as a 542 set of possible attributes that may be supported by instances of that 543 object type. For each object (instance), the actual set of supported 544 attributes and values describe a specific implementation. The 545 object's attributes and values describe its state, capabilities, 546 realizable features, job processing functions, and default behaviors 547 and characteristics. For example, the Printer object type is defined 548 as a set of attributes that each Printer object potentially supports. 549 In the same manner, the Job object type is defined as a set of 550 attributes that are potentially supported by each Job object. 552 Each attribute included in the set of attributes defining an object 553 type is labeled as: 555 - "MANDATORY": each object SHALL support the attribute. 556 - "OPTIONAL": each object OPTIONALLY supports the attribute. 558 There is no such similar labeling of attribute values. However, if an 559 implementation supports an attribute, it MUST support at least one of 560 the possible values for that attribute. 562 Expires June 19, 1998 563 2.1 Printer Object 565 A major component of the IPP/1.0 model is the Printer object. A 566 Printer object implements the IPP/1.0 protocol. Using the protocol, 567 end users may query the attributes of the Printer object and submit 568 print jobs to the Printer object. The actual implementation 569 components behind the Printer abstraction may take on different forms 570 and different configurations. However, the model abstraction allows 571 the details of the configuration of real components to remain opaque 572 to the end user. Section 3 describes each of the Printer operations 573 in detail. 575 The capabilities and state of a Printer object are described by its 576 attributes. Printer attributes are divided into two groups: 578 - "job-template" attributes: These attributes describe supported 579 job processing capabilities and defaults for the Printer object. 580 (See section 4.2) 581 - "printer-description" attributes: These attributes describe the 582 Printer object's identification, state, location, references to 583 other sources of information about the Printer object, etc. (see 584 section 4.4) 586 Since a Printer object is an abstraction of a generic document output 587 device and print service provider, a Printer object could be used to 588 represent any real or virtual device with semantics consistent with 589 the Printer object, such as a fax device, an imager, or even a CD 590 writer. 592 Some examples of configurations supporting a Printer object include: 594 1) An output device, with no spooling capabilities 595 2) An output device, with a built-in spooler 596 3) A print server supporting IPP with one or more associated output 597 devices 598 3a) The associated output devices might or might not be capable 599 of spooling jobs 600 3b) The associated output devices might or might not support IPP 602 The following figures show some examples of how Printer objects can be 603 realized on top of various distributed printing configurations. The 604 embedded case below represents configurations 1 and 2. The hosted and 605 fan-out figures below represent configuration 3. 607 Expires June 19, 1998 608 Legend: 610 ##### indicates a Printer object which is 611 either embedded in an output device or is 612 hosted in a server. The Printer object 613 might or might not be capable of queuing/spooling. 615 any indicates any network protocol or direct 616 connect, including IPP 618 embedded printer: 619 output device 620 +---------------+ 621 O +--------+ | ########### | 622 /|\ | client |------------IPP------------># Printer # | 623 / \ +--------+ | # Object # | 624 | ########### | 625 +---------------+ 627 hosted printer: 628 +---------------+ 629 O +--------+ ########### | | 630 /|\ | client |--IPP--># Printer #-any->| output device | 631 / \ +--------+ # Object # | | 632 ########### +---------------+ 634 +---------------+ 635 fan out: | | 636 +-->| output device | 637 any/ | | 638 O +--------+ ########### / +---------------+ 639 /|\ | client |-IPP-># Printer #--* 640 / \ +--------+ # Object # \ +---------------+ 641 ########### any\ | | 642 +-->| output device | 643 | | 644 +---------------+ 646 2.2 Job Object 648 A Job object is used to model a print job. A Job can contain one or 649 more documents. The information required to create a Job object is 651 Expires June 19, 1998 652 sent in a create request from the end user via an IPP Client to the 653 Printer object. Section 3 describes each of the Job operations in 654 detail. 656 The characteristics and state of a Job object are described by its 657 attributes. Job attributes are grouped into two groups as follows: 659 - "job-template" attributes: These attributes are OPTIONALLY 660 supplied by the client or end user and include job processing 661 instructions which are intended to override any Printer object 662 defaults and/or instructions embedded within the document data. 663 (See section 4.2) 664 - "job-description" attributes: These attributes describe the Job 665 object's identification, state, size, etc. Except for "job-name", 666 the client does not supply values for these attributes, they are 667 set by the Printer object. (See section 4.3) 669 A Job object contains at least one document, but may contain multiple 670 documents. A document consists of either: 672 - a stream of document data in a format supported by the Printer 673 object (typically a Page Description Language - PDL), or 674 - a reference to such a stream of document data 676 In IPP/1.0, a document is not modeled as an IPP object, therefore it 677 has no object identifier or associated attributes. All job processing 678 instructions are modeled as Job object attributes. These attributes 679 are called Job Template attributes and they apply equally to all 680 documents within a Job object. 682 2.3 Object Relationships 684 IPP objects have relationships that MUST be maintained persistently 685 along with the persistent storage of the object attributes. 687 A Printer object MAY represent one or more output devices. A Printer 688 object MAY represent a logical device which "processes" jobs but never 689 actually uses a physical output device to put marks on paper (for 690 example a Web page publisher or an interface into an online document 691 archive or repository). A Printer object contains zero or more Job 692 objects. 694 A Job object is contained by exactly one Printer object, however the 695 identical document data associated with a Job object could be sent to 696 either the same or a different Printer object. In this case, a new 697 Job object would be created which would be almost identical to the 699 Expires June 19, 1998 700 existing Job object, however it would have new (different) Job object 701 identifiers (see section 2.4). 703 A Job object contains one or more documents. If the contained 704 document is a stream of document data, that stream can be contained in 705 only one document. However, there can be copies of the stream in 706 other documents in the same or different Job objects. If the 707 contained document is a reference to a stream of document data, other 708 documents (in the same or different Job object(s)) may reference the 709 same stream. 711 2.4 Object Identity 713 All Printer and Job objects are identified by an identifier so that 714 they can be persistently and unambiguously referenced. The IPP/1.0 715 model requires that these identifiers be Uniform Resource Identifiers 716 (URIs) [RFC1630]. Often, the URI is a URL [RFC1738] [RFC1808]. 718 IPP/1.0 does not specify how the URI is obtained, but it is 719 RECOMMENDED that a Printer object is registered in a directory service 720 which end users and programs can interrogate. Section 16 defines a 721 generic schema for Printer object entries in the directory service. 723 Allowing Job objects to have URIs allows for flexibility and 724 scalability. In some implementations, the Printer object might create 725 Jobs that are processed in the same local environment as the Printer 726 object itself. In this case, the Job URI might just be a composition 727 of the Printer's URI and some unique component for the Job object, 728 such as the unique 32-bit positive integer mentioned later in this 729 paragraph. In other implementations, the Printer object might be a 730 central clearing-house for validating all Job object creation 731 requests, and the Job object itself might be created in some 732 environment that is remote from the Printer object. In this case, the 733 Job object's URI may have no relationship at all to the Printer 734 object's URI. However, many existing printing systems have local 735 models or interface constraints that force Job objects to be 736 identified using only a 32-bit positive integer rather than a URI. 737 This numeric Job ID is only unique within the context of the Printer 738 object to which the create request was originally submitted. In order 739 to allow both types of client access to Jobs (either by Job URI or by 740 numeric Job ID), when the Printer object successfully processes a 741 create request and creates a new Job, the Printer object SHALL 742 generate both a Job URI and a Job ID for the new Job object. This 743 requirement allows all clients to access Printer objects and Job 744 objects no matter the local constraints imposed on the client 745 implementation. 747 Expires June 19, 1998 748 In addition to a unique identifier, Printer objects and Job objects 749 have names. An object name need not be unique across all instances of 750 all objects. A Printer object's name is chosen and set by an 751 administrator through some mechanism outside the scope of IPP/1.0. A 752 Job object's name is optionally chosen and supplied by the IPP client 753 submitting the job. If the client does not supply a Job object name, 754 the Printer object generates a name for the new Job object. In all 755 cases, the name only has local meaning; the name is not constrained to 756 be unique. 758 To summarize: 760 - Each Printer object is uniquely identified with a URI. The 761 Printer's "printer-uri" attribute contains the URI. 762 - Each Job object is uniquely identified with a URI. The Job's 763 "job-uri" attribute contains the URI. 764 - Each Job object is also uniquely identified with a combination of 765 the URI of the Printer object to which the create request was 766 originally submitted along with a Job ID (a 32-bit, positive 767 integer) that is unique within the context of that Printer 768 object. The Printer object's "printer-uri" contains the Printer 769 URI. The Job object's "job-id" attribute contains the numeric 770 Job ID. 771 - Each Printer object has a name (which is not necessarily unique). 772 The administrator chooses and sets this name through some 773 mechanism outside the scope of IPP/1.0 itself. The Printer 774 object's "printer-name" attribute contains the name. 775 - Each Job object has a name (which is not necessarily unique). 776 The client optionally supplies this name in the create request. 777 If the client does not supply this name, the Printer object 778 generates a name for the Job object. The Job object's "job-name" 779 attribute contains the name. 781 3. IPP Operations 783 IPP objects support operations. An operation consists of a request 784 and a response. When a client communicates with an IPP object, the 785 client issues an operation request to the URI for that object. 786 Operations have attributes that supply information about the operation 787 itself. These attributes are called operation attributes (as compared 788 to object attributes such as Printer object attributes or Job object 789 attributes). Each request carries along with it any operation 790 attributes, object attributes, and/or document data required by the 791 object to perform the operation. Each request requires a response 792 from the object. Each response indicates success or failure of the 793 operation with a status code. The response contains any operation 795 Expires June 19, 1998 796 attributes, object attributes, and/or status messages generated by the 797 execution of the operation request. 799 This section describes the semantics of the IPP operations, both 800 requests and responses, in terms of the attributes and other data 801 associated with each operation. 803 The IPP/1.0 Printer operations are: 805 Print-Job (section 3.2.1) 806 Print-URI (section 3.2.2) 807 Validate-Job (section 3.2.3) 808 Create-Job (section 3.2.4) 809 Get-Printer-Attributes (section 3.2.5) 810 Get-Jobs (section 3.2.6) 812 The Job operations are: 814 Send-Document (section 3.3.1) 815 Send-URI (section 3.3.2) 816 Cancel-Job (section 3.3.3) 817 Get-Job-Attributes (section 3.3.4) 819 The Send-Document and Send-URI Job operations are used to add a new 820 document to an existing multi-document Job object created with the 821 Create-Job operation. 823 3.1 Common Semantics 825 The following sections describe the common elements and features of 826 all IPP operations. 828 3.1.1 Operation Characteristics 830 Each type of IPP operation is identified by an operation code (section 831 4.4.13). Operations are always used in request/response pairs. Each 832 operation request carries with it a request ID. This request id 833 allows clients to manage multiple outstanding requests. For each 834 operation request, the client chooses an integer (possibly unique 835 depending on client requirements) in the range from 0 to 2**31 - 1 836 (inclusive). The receiving IPP object, copies the client supplied 837 request id into the response so that the client can match up the 838 correct response with the right request. In some cases, the transport 839 protocol underneath IPP might be a connection oriented protocol that 840 would make it impossible for a client to receive responses in any 841 order other than the order in which the corresponding requests were 842 sent (in which case the request id would not be essential for correct 844 Expires June 19, 1998 845 protocol operation). However, in other mappings, the operation 846 responses can come back in any order (in which case the request id 847 would be essential). 849 Operation requests and responses are both composed of groups of 850 attributes and/or document data. The attributes groups are: 852 - Operation Attributes: These attributes are passed in the 853 operation and affect the IPP object's behavior while processing 854 the operation request and MAY affect other attributes or groups 855 of attributes. Some operation attributes describe the document 856 data associated with the print job and are associated new Job 857 objects, however most operation attributes do not persist beyond 858 the life of the operation. The description of each operation 859 attribute includes conformance statements indicating which 860 operation attributes are MANDATORY and which are OPTIONAL for an 861 IPP object to support and which attributes a client MUST supply 862 in a request and an IPP object MUST supply in a response. 863 - Job Template Attributes: These attributes affect the processing 864 of a job. A client OPTIONALLY supplies Job Template Attributes 865 in a create request, and the receiving object MUST be prepared to 866 receive all supported attributes. The Job object can later be 867 queried to find out what Job Template attributes were originally 868 requested in the create request, and such attributes are returned 869 in the response as Job Object Attributes. The Printer object can 870 be queried about its Job Template attributes to find out what 871 type of job processing capabilities are supported and/or what the 872 default job processing behaviors are, though such attributes are 873 returned in the response as Printer Object Attributes. The "ipp- 874 attribute-fidelity" operation attribute affects processing of all 875 client supplied Job Template attributes (see section 15 for a 876 full description of "ipp-attribute-fidelity" and its relationship 877 to other attributes). 878 - Job Object Attributes: These attributes are returned in response 879 to a query operation directed at a Job object. 880 - Printer Object Attributes: These attributes are returned in 881 response to a query operation directed at a Printer object. 882 - Unsupported Attributes: In a create request, the client supplies 883 a set of Operation and Job Template attributes. If any of these 884 attributes or their values are unsupported by the Printer object, 885 the Printer object returns the set of unsupported attributes in 886 the response. Section 15 gives a full description of how Job 887 Template attributes supplied by the client in a create request 888 are processed by the Printer object and how unsupported 889 attributes are returned to the client. 890 Because of extensibility, any IPP object might receive a request 891 that contains new (or for any reason unknown) attributes or 892 values that it does not support. In such cases for any operation 894 Expires June 19, 1998 895 request (not just create requests), the IPP object MUST return 896 these unsupported attributes. 898 Later in this section, each operation is formally defined by 899 identifying the allowed and expected groups of attributes for each 900 request and response. The model identifies a specific order for each 901 group in each request or response, but the attributes within each 902 group may be in any order. 904 Each attribute specification includes the attribute's name followed by 905 the name of its attribute syntax(es) in parenthesizes. In addition, 906 the 'integer' attributes are followed by the allowed range in 907 parenthesizes, (m:n), for the integer value. The 'text' and 'name' 908 attributes are followed by the (size) in octets in parenthesizes. For 909 more details on attribute syntax notation, see the descriptions of 910 these attributes syntaxes in section 4.1. It is an operation error 911 for clients to supply in operation requests and/or IPP objects to 912 returns in operations responses attribute value(s) that do not match 913 the syntax(es) defined for that attribute (see section 3 for operation 914 attributes and section 4 for IPP object attributes). 916 Note: Document data included in the operation is not strictly an 917 attribute, but it is treated as a special attribute group for ordering 918 purposes. The only operations that support supplying the document 919 data within an operation request are Print-Job and Send-Document. 920 There are no operation responses that include document data. 922 Note: Some operations are MANDATORY for IPP objects to support; the 923 others are OPTIONAL (see section 5.2.2). Therefore, before using an 924 OPTIONAL operation, a client SHOULD first use the MANDATORY Get- 925 Printer-Attributes operation to query the Printer's "operations- 926 supported" attribute in order to determine which OPTIONAL Printer and 927 Job operations are actually supported. The client SHOULD NOT use an 928 OPTIONAL operation that is not supported. When an IPP object 929 receives a request to perform an operation it does not support, it 930 returns the 'server-error-operation-not-supported' status code (see 931 section 13.1.5.2). It is non-conformance when an object does not 932 support a MANDATORY operation. 934 3.1.2 Operation Targets 936 All IPP operations are directed at IPP objects. For Printer 937 operations, the operation is always directed at a Printer object using 938 its URI (the "printer-uri" attribute). For Job operations, the 939 operation is directed at either: 941 Expires June 19, 1998 942 - the Job object itself using the Job object's URI (the "job-uri" 943 attribute assigned by the Printer object), or 944 - the Printer object to which the job was originally submitted 945 using the URI of the Printer ("printer-uri") in combination with 946 the 32-bit numeric Job ID (the "job-id" attribute assigned by the 947 Printer object). 949 If the operation is directed at the Job object directly using the Job 950 object's URI, the client SHALL NOT include the redundant "job-id" 951 operation attribute. 953 The operation target is a MANDATORY operation attribute that MUST be 954 included in every operation request. 956 The following rules apply to the use of port numbers in URIs that 957 identify IPP objects: 959 1. If the protocol scheme for the URI allows the port number to be 960 explicitly included in the URI string, and an explicit port 961 number is specified within the syntax of the URI, then that port 962 number MUST be used by the client to contact the IPP object. 964 2. If the protocol scheme for the URI does not allow an explicit 965 port number specification, then the default port number for the 966 protocol MUST be used. 968 3.1.3 Character Set and Natural Language Operation Attributes 970 Some Job and Printer attributes have values that are text strings and 971 names intended for human understanding rather than machine 972 understanding (see the 'text' and 'name' attribute syntax descriptions 973 in section 4.1). The following sections describe two MANDATORY 974 operation attributes for every IPP request and response. These 975 attributes are "attributes-charset" and "attributes-natural-language" 976 which SHALL be stored as Job Description attributes. For the sake of 977 brevity in this document, these operation attribute descriptions are 978 not repeated with every operation request and response, but have a 979 reference back to this section instead. 981 3.1.3.1 Request Operation Attributes 983 The client SHALL supply and the Printer object SHALL support the 984 following MANDATORY operation attributes in every IPP/1.0 operation 985 request: 987 Expires June 19, 1998 988 "attributes-charset" (charset): 989 This operation attribute identifies the charset (coded character 990 set and encoding method) used by any 'text' and 'name' attributes 991 that the client is supplying in this request. It also identifies 992 the charset that the Printer object SHALL use (if supported) for 993 all 'text' and 'name' attributes and status messages that the 994 Printer object returns in the response to this request. See 995 Sections 4.1.1 and 4.1.2 for the specification of the 'text' and 996 'name' attribute syntaxes. 998 All IPP objects SHALL support the 'utf-8' charset [RFC2044] and 999 MAY support additional charsets provided that they are registered 1000 with IANA [IANA-CS]. If the Printer object does not support the 1001 client supplied charset value, the Printer object SHALL reject 1002 the request and return the 'client-error-charset-not-supported' 1003 status code. The Printer object SHALL indicate the charset(s) 1004 supported as the values of the "charset-supported" Printer 1005 attribute (see Section 4.4.15), so that the client MAY query 1006 which charset(s) are supported. 1008 Note to client implementers: Since IPP objects are only required 1009 to support the 'utf-8' charset, in order to maximize 1010 interoperability with multiple IPP object implementations, a 1011 client may want to supply 'utf-8' in the "attributes-charset" 1012 operation attribute, even though the client is only passing and 1013 able to present a simpler charset, such as US-ASCII or ISO-8859- 1014 1. Then the client will have to filter out (or charset convert) 1015 those characters that are returned in the response that it cannot 1016 present to its user. On the other hand, if both the client and 1017 the IPP objects also support a charset in common besides utf-8, 1018 the client MAY want to use that charset in order to avoid charset 1019 conversion or data loss. 1021 See the 'charset' attribute syntax description in Section 4.1.9 1022 for the syntax and semantic interpretation of the values of this 1023 attribute and for example values. 1025 "attributes-natural-language" (naturalLanguage): 1026 This operation attribute identifies the natural language used by 1027 any 'text' and 'name' attributes that the client is supplying in 1028 this request. This attribute also identifies the natural 1029 language that the Printer object SHOULD use for all 'text' and 1030 'name' attributes and status messages that the Printer object 1031 returns in the response to this request. 1033 There are no MANDATORY natural languages required for the Printer 1034 object to support. However, the Printer object's "generated- 1035 natural-language-supported" attribute SHALL identify the natural 1037 Expires June 19, 1998 1038 languages supported by the Printer object and any contained Job 1039 objects for all text strings generated by the IPP object. A 1040 client MAY query this attribute to determine which natural 1041 language(s) are supported for generated messages. 1043 For any of the attributes for which the Printer object generates 1044 text, i.e., for the "job-state-message", "printer-state-message", 1045 and status messages (see Section 3.1.4), the Printer object SHALL 1046 be able to generate these text strings in any of its supported 1047 natural languages. If the client requests a natural language 1048 that is not supported, the Printer object SHALL return these 1049 generated messages in the Printer's configured natural language 1050 as specified by the Printer's "natural-language-configured" 1051 attribute" (see Section 4.4.16). 1053 For other 'text' and 'name' attributes supplied by the client, 1054 authentication system, operator, system administrator, or 1055 manufacturer, i.e., for "job-originating-user-name", "printer- 1056 name" (name), "printer-location" (text), "printer-info" (text), 1057 and "printer-make-and-model" (text), the Printer object is only 1058 required to support the configured natural language of the 1059 Printer identified by the Printer object's "natural-language- 1060 configured" attribute, though support of additional natural 1061 languages for these attributes is permitted. 1063 For any 'text' or 'name' attribute in the request that is in a 1064 different natural language than the value supplied in the 1065 "attributes-natural-language", the client SHALL use the Natural 1066 Language Override mechanism (see sections 4.1.2 and 4.1.4) for 1067 each such attribute value supplied. 1069 The IPP object SHALL accept any natural language and any Natural 1070 Language Override, whether the IPP object supports that natural 1071 language or not (and independent of the value of the "ipp- 1072 attribute-fidelity" Operation attribute). That is the IPP object 1073 accepts all client supplied values no matter what the values are 1074 in the Printer object's "generated-natural-language-supported" 1075 attribute. That attribute, "generated-natural-language- 1076 supported", only applies to generated messages, not client 1077 supplied messages. The IPP object SHALL remember that natural 1078 language for all client supplied attributes, and when returning 1079 those attributes in response to a query, the IPP object SHALL 1080 indicate that natural language. 1082 For example, the "job-name" attribute MAY be supplied by the 1083 client in a create request. The text value for this attribute 1084 will be in the natural language identified by the "attribute- 1085 natural-language" attribute, or if different, as identified by 1087 Expires June 19, 1998 1088 the Natural Language Override mechanism. If supplied, the IPP 1089 object will use the value of the "job-name" attribute to populate 1090 the Job object's "job-name" attribute. Whenever any client 1091 queries the Job object's "job-name" attribute, the IPP object 1092 returns the attribute as stored and uses the Natural Language 1093 Override mechanism to specify the natural language, if it is 1094 different from that reported in the "attributes-natural-language" 1095 operation attribute of the response. An IPP object SHALL NOT 1096 reject a request based on a supplied natural language in an 1097 "attributes-natural-language" Operation attribute or in any 1098 attribute that uses the Natural Language Override . 1100 See the 'naturalLanguage' attribute syntax description in Section 1101 4.1.10 for the syntax and semantic interpretation of the values 1102 of this attribute and for example values. 1104 Clients SHOULD NOT request an illegal combination of natural language 1105 and charset. For example, suppose a Printer object supports charsets 1106 'utf-8', 'iso-8859-1', and 'iso-8859-7'. Suppose it also supports 1107 natural languages 'en' (English), 'fr' (French), and 'el' (Greek). If 1108 the client requests 'iso-8859-1' and 'el', it is an invalid 1109 combination of charset and natural language. In this case, the IPP 1110 object SHALL NOT change either of these attribute values and SHALL 1111 accept them as if they were valid. 1113 3.1.3.2 Response Operation Attributes 1115 The Printer object SHALL supply and the client SHALL support the 1116 following MANDATORY operation attributes in every IPP/1.0 operation 1117 response: 1119 "attributes-charset" (charset): 1120 This operation attribute identifies the charset used by any 1121 'text' and 'name' attributes that the Printer object is returning 1122 in this response. The value in this response SHALL be the same 1123 value as the "attributes-charset" operation attribute supplied by 1124 the client in the request. If this is not possible (i.e., the 1125 charset requested is not supported), the request SHALL be 1126 rejected. See "attributes-charset" described in Section 3.1.3.1 1127 above. 1129 If the Printer object supports more than just the 'utf-8' 1130 charset, the Printer object SHALL be able to code convert between 1131 each of the charsets supported on a highest fidelity possible 1132 basis in order to return the 'text' and 'name' attributes in the 1133 charset requested by the client. However, some information loss 1134 MAY occur during the charset conversion depending on the charsets 1136 Expires June 19, 1998 1137 involved. For example, the Printer object may convert from a 1138 UTF-8 'a' to a US-ASCII 'a' (with no loss of information), from 1139 an ISO Latin 1 CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' 1140 (losing the accent), or from a UTF-8 Japanese Kanji character to 1141 some ISO Latin 1 error character indication such as '?', decimal 1142 code equivalent, or to the absence of a character, depending on 1143 implementation. 1145 Note: Whether an implementation that supports more than one 1146 charset stores the data in the charset supplied by the client or 1147 code converts to one of the other supported charsets, depends on 1148 implementation. The strategy SHOULD try to minimize loss of 1149 information during code conversion. On each response, such an 1150 implementation converts from its internal charset to that 1151 requested. 1153 "attributes-natural-language" (naturalLanguage): 1154 This operation attribute identifies the natural language used by 1155 any 'text' and 'name' attributes that the IPP object is returning 1156 in this response. Unlike the "attributes-charset" operation 1157 attribute, the IPP object NEED NOT return the same value as that 1158 supplied by the client in the request. The IPP object MAY return 1159 the natural language of the Job object or the Printer's 1160 configured natural language as identified by the Printer object's 1161 "natural-language-configured" attribute, rather than the natural 1162 language supplied by the client. For any 'text' or 'name' 1163 attribute or status message in the response that is in a 1164 different natural language than the value returned in the 1165 "attributes-natural-language" operation attribute, the IPP object 1166 SHALL use the Natural Language Override mechanism (see sections 1167 4.1.2 and 4.1.4) on each attribute value returned. 1169 3.1.4 Operation Status Codes and Messages 1171 Every operation response returns a MANDATORY status code and an 1172 OPTIONAL status message represented as the "status-message" text(255) 1173 operation attribute. A status code provides information on the 1174 processing of a request. A "status-message" attribute provides a 1175 short textual description of the status of the operation. The status 1176 code is intended for use by automata, and the status message is 1177 intended for the human end user. If a response does include a 1178 "status-message" attribute, an IPP client NEED NOT examine or display 1179 the status message, however it SHOULD do so in some implementation 1180 specific manner. 1182 The status code is a numeric value that has semantic meaning. The 1183 Model specification does not give the status code a name, so it is not 1184 like other attributes; it is only a numeric code by itself. The 1186 Expires June 19, 1998 1187 status code is similar to a "type2 enum" (see section 4.1 on 1188 "Attribute Syntaxes") except that values can range only from 0x0000 to 1189 0x7FFF. Section 13 describes the status codes, assigns the numeric 1190 values, and suggests a corresponding status message for each status 1191 code. 1193 A client implementation of IPP SHOULD convert status code values into 1194 any localized message that has semantic meaning to the end user. If 1195 the Printer object supports the status message, the Printer object 1196 MUST be able to generate this message in any of the natural languages 1197 identified by the Printer object's "generated-natural-language- 1198 supported" attribute (see the "attributes-natural-language" operation 1199 attribute specified in Section 3.1.3.1). As described in Section 1200 3.1.3.1 for any returned 'text' attribute, if there is a choice for 1201 generating this message, the Printer object uses the natural language 1202 indicated by the value of the "attributes-natural-language" in the 1203 client request if supported, otherwise the Printer object uses the 1204 value in the Printer object's own "natural-language-configured" 1205 attribute. 1207 3.1.5 Versions 1209 Each operation request and response carries with it a version number. 1210 Each version number is in the form "X.Y" where X is the major version 1211 number and Y is the minor version number. By including a version 1212 number in the client request, it allows the client (the requester) to 1213 identify which version of IPP it is interested in using. If the IPP 1214 object does not support that version, the object responds with a 1215 status code of 'server-error-version-not-supported'. 1217 There is no version negotiation per se. However, if after receiving a 1218 'server-error-version-not-supported' status code from an IPP object, 1219 there is nothing that prevents a client from trying again with a 1220 different version number. In order to conform to IPP/1.0, an 1221 implementation MUST support at least version '1.0'. 1223 There is only one notion of version that covers both IPP Model and IPP 1224 Protocol changes. Thus the version number MUST change when introducing 1225 a new version of the Model document or a new version of the Protocol 1226 document. 1228 Changes to the major version number indicate structural or syntactic 1229 changes that make it impossible for older version of IPP clients and 1230 Printer objects to correctly parse and process the new or changed 1231 attributes, operations and responses. If the major version number 1232 changes, the minor version numbers is set to zero. As an example, 1233 adding the "ipp-attribute-fidelity" attribute (if it had not been part 1235 Expires June 19, 1998 1236 of version '1.0'), would have required a change to the major version 1237 number. Items that might affect the changing of the major version 1238 number include any changes to the protocol specification itself, such 1239 as: 1241 - reordering of ordered attributes or attribute sets 1242 - changes to the syntax of existing attributes 1243 - changing Operation or Job Template attributes from OPTIONAL to 1244 MANDATORY and vice versa 1245 - adding MANDATORY (for an IPP object to support) operation 1246 attributes 1247 - adding MANDATORY (for an IPP object to support) operation 1248 attribute groups 1249 - adding values to existing operation attributes 1250 - adding MANDATORY operations 1252 Changes to the minor version number indicate the addition of new 1253 features, attributes and attribute values that may not be understood 1254 by all IPP objects, but which can be ignored if not understood. Items 1255 that might affect the changing of the minor version number include any 1256 changes to the model objects and attributes but not the protocol 1257 specification itself (except adding attribute syntaxes), such as: 1259 - grouping all extensions not included in a previous version into a 1260 new version 1261 - adding new attribute values 1262 - adding new object attributes 1263 - adding OPTIONAL (for an IPP object to support) operation 1264 attributes (i.e., those attributes that an IPP object can ignore 1265 without confusing clients) 1266 - adding OPTIONAL (for an IPP object to support) operation 1267 attribute groups (i.e., those attributes that an IPP object can 1268 ignore without confusing clients) 1269 - adding new attribute syntaxes 1270 - adding OPTIONAL operations 1271 - changing Job Description attributes or Printer Description 1272 attributes from OPTIONAL to MANDATORY or vice versa. 1274 The encoding of the operation code, the version number, and the 1275 request id SHALL NOT change over any version number (either major or 1276 minor). This rule guarantees that all future versions will be 1277 backwards compatible with all previous versions (at least for checking 1278 the operation code, the version number, and the request id). In 1279 addition, any protocol elements (attributes, error codes, tags, etc.) 1280 that are not carried forward from one version to the next are 1281 deprecated so that they can never be reused with new semantics. 1283 Expires June 19, 1998 1284 Implementations that support a certain major version NEED NOT support 1285 ALL previous versions. As each new major version is defined (through 1286 the release of a new specification), that major version will specify 1287 which previous major versions MUST be supported in compliant 1288 implementations. 1290 3.1.6 Job Creation Operations 1292 In order to "submit a print job" and create a new Job object, a client 1293 issues a create request. A create request is any one of following 1294 three operation requests: 1296 - The Print-Job Request: A client that wants to submit a print job 1297 with only a single document uses the Print-Job operation. The 1298 operation allows for the client to "push" the document data to 1299 the Printer object by including the document data in the request 1300 itself. 1302 - The Print-URI Request: A client that wants to submit a print job 1303 with only a single document (where the Printer object "pulls" the 1304 document data instead of the client "pushing" the data to the 1305 Printer object) uses the Print-URI operation. In this case, the 1306 client includes in the request only a URI reference to the 1307 document data (not the document data itself). 1309 - The Create-Job Request: A client that wants to submit a print job 1310 with multiple documents uses the Create-Job operation. This 1311 operation is followed by an arbitrary number of Send-Document 1312 and/or Send-URI operations (each creating another document for 1313 the newly create Job object). The Send-Document operation 1314 includes the document data in the request (the client "pushes" 1315 the document data to the printer), and the Send-URI operation 1316 includes only a URI reference to the document data in the request 1317 (the Printer "pulls" the document data from the referenced 1318 location). The last Send-Document or Send-URI request for a 1319 given Job object includes a "last-document" operation attribute 1320 set to 'true' indicating that this is the last request. 1322 Throughout this model specification, the term "create request" is used 1323 to refer to any of these three operation requests. 1325 A Create-Job operation followed by only one Send-Document operation is 1326 semantically equivalent to a Print-Job operation, however, for 1327 performance reasons, the client SHOULD use the Print-Job operation for 1328 all single Document Jobs. Also, Print-Job is a MANDATORY operation 1329 (all implementations MUST support it) whereas Create-Job is an 1330 OPTIONAL operation, hence some implementations might not support it. 1332 Expires June 19, 1998 1333 Job submission time is the point in time when a client issues a create 1334 request. The initial state of every Job object is the 'pending' or 1335 'pending-held' state. Later, the Printer object begins processing the 1336 print job. At this point in time, the Job object's state moves to 1337 'processing'. This is known as job processing time. There are 1338 validation checks that must be done at job submission time and others 1339 that must be performed at job processing time. 1341 At job submission time and at the time a Validate-Job operation is 1342 received, the Printer MUST do the following: 1344 1. Process the client supplied attributes and either accept or 1345 reject the request 1346 2. Validate the syntax of and support for the scheme of any client 1347 supplied URI 1349 Section 15 describes the rules and issues surrounding the processing 1350 of client supplied attributes. Section 15.3 presents suggested steps 1351 for an IPP object to either accept or reject any request. Section 1352 15.4 presents suggested additional steps for processing create 1353 requests. 1355 At job submission time the Printer SHOULD NOT perform the validation 1356 checks reserved for job processing time such as: 1358 1. Validate the document data 1359 2. Validate the actual contents of any client supplied URI (resolve 1360 the reference and follow the link to the document data) 1362 At job submission time, these additional job processing time 1363 validation checks are essentially useless, since they require actually 1364 parsing and interpreting the document data, are not guaranteed to be 1365 100% accurate, and MUST yet be done again at job processing time. 1366 Also, in the case of a URI, checking for availability at job 1367 submission time does not guarantee availability at job processing 1368 time. In addition, at job processing time, the Printer object might 1369 discover any of the following conditions that were not detectable at 1370 job submission time: 1372 - runtime errors in the document data, 1373 - nested document data that is in an unsupported format, 1374 - the URI reference is no longer valid (i.e., the server hosting 1375 the document might be down), or 1376 - any other job processing error 1378 At job processing time, since the Printer object has already responded 1379 with a successful status code in the response to the create request, 1380 if the Printer object detects an error, the Printer object is unable 1382 Expires June 19, 1998 1383 to inform the end user of the error with an operation status code. 1384 In this case, the Printer, depending on the error, can set the "job- 1385 state", "job-state-reasons", or "job-state-message" attributes to the 1386 appropriate value(s) so that later queries can report the correct job 1387 status. 1389 Note: Asynchronous notification of events is outside the scope of 1390 IPP/1.0. 1392 3.2 Printer Operations 1394 All Printer operations are directed at Printer objects. A client MUST 1395 always supply the "printer-uri" attribute in order to identify the 1396 correct target of the operation. 1398 3.2.1 Print-Job Operation 1400 This MANDATORY operation allows a client to submit a print job with 1401 only one document and supply the document data (rather than just a 1402 reference to the data). See Section 15 for a suggested steps for 1403 processing create operations and their Operation and Job Template 1404 attributes. 1406 3.2.1.1 Print-Job Request 1408 The following groups of attributes are supplied as part of the Print- 1409 Job Request: 1411 Group 1: Operation Attributes 1413 Target: 1414 The "printer-uri" target for this operation as described in 1415 section 3.1.2. 1417 Natural Language and Character Set: 1418 The "attributes-charset" and "attributes-natural-language" 1419 attributes as described in section 3.1.3.1. The Printer object 1420 SHALL copy these values to the corresponding Job Description 1421 attributes described in sections 4.3.24 and 4.3.25. 1423 Requesting User Name: 1424 The "requesting-user-name" attribute SHOULD be supplied by the 1425 client as described in section 8.3. 1427 Expires June 19, 1998 1429 "job-name" (name(MAX)): 1430 The client OPTIONALLY supplies this attribute. The Printer 1431 object MUST support this attribute. It contains the client 1432 supplied Job name. If this attribute is supplied by the client, 1433 its value is used for the "job-name" attribute of the newly 1434 created Job object. The client MAY automatically include any 1435 information that will help the end-user distinguish amongst 1436 his/her jobs, such as the name of the application program along 1437 with information from the document, such as the document name, 1438 document subject, or source file name. If this attribute is not 1439 supplied by the client, the Printer generates a name to use in 1440 the "job-name" attribute of the newly created Job object (see 1441 Section 4.3.4). 1443 "ipp-attribute-fidelity" (boolean): 1444 The client OPTIONALLY supplies this attribute. The Printer 1445 object MUST support this attribute. The value 'true' indicates 1446 that total fidelity to client supplied Job Template attributes 1447 and values is required, else the Printer object SHALL reject the 1448 Print-Job request. The value 'false' indicates that a reasonable 1449 attempt to print the Job object is acceptable and the Printer 1450 object SHALL accept the Print-job request. If not supplied, the 1451 Printer object assumes the value is 'false'. All Printer objects 1452 MUST support both types of job processing. See section 15 for a 1453 full description of "ipp-attribute-fidelity" and its relationship 1454 to other attributes, especially the Printer object's "pdl- 1455 override" attribute. 1457 "document-name" (name(MAX)): 1458 The client OPTIONALLY supplies this attribute. The Printer 1459 object MUST support this attribute. It contains the client 1460 supplied document name. The document name MAY be different than 1461 the Job name. Typically, the client software automatically 1462 supplies the document name on behalf of the end user by using a 1463 file name or an application generated name. If this attribute is 1464 supplied, its value can be used in a manner defined by each 1465 implementation. Examples include: printed along with the Job 1466 (job start sheet, page adornments, etc.), used by accounting or 1467 resource tracking management tools, or even stored along with the 1468 document as a document level attribute. IPP/1.0 does not support 1469 the concept of document level attributes. 1471 "document-format" (mimeMediaType) : 1472 The client OPTIONALLY supplies this attribute. The Printer 1473 object MUST support this attribute. The value of this attribute 1474 identifies the format of the supplied document data. If the 1475 client does not supply this attribute, the Printer object assumes 1476 that the document data is in the format defined by the Printer 1478 Expires June 19, 1998 1479 object's "document-format-default" attribute. If the client 1480 supplies this attribute, but the value is not supported by the 1481 Printer object, i.e., the value is not one of the values of the 1482 Printer object's "document-format-supported" attribute, the 1483 Printer object SHALL reject the request and return the 'client- 1484 error-document-format-not-supported' status code. 1486 "document-natural-language" (naturalLanguage): 1487 The client OPTIONALLY supplies this attribute. The Printer 1488 object OPTIONALLY supports this attribute. This attribute 1489 specifies the natural language of the document for those 1490 document-formats that require a specification of the natural 1491 language in order to image the document unambiguously. There are 1492 no particular values required for the Printer object to support. 1494 "compression" (type3 keyword) 1495 The client OPTIONALLY supplies this attribute. The Printer 1496 object OPTIONALLY supports this attribute. It identifies the 1497 compression algorithm used on the document data (see section 1498 4.3.17). If the client omits this attribute, the Printer object 1499 SHALL assume that the data is not compressed. If the client 1500 supplies the attribute and the Printer object supports the 1501 attribute, the value of the attribute is used to populate the Job 1502 object's "compression" Job Description attribute. If the client 1503 supplies this attribute, but the value is not supported by the 1504 Printer object, i.e., the value is not one of the values of the 1505 Printer object's "compression-supported" attribute, the Printer 1506 object SHALL copy the attribute and its value to the Unsupported 1507 Attributes response group, reject the request, and return the 1508 'client-error-attributes-or-values-not-supported' status code. 1510 "job-k-octets" (integer(0:MAX)) 1511 The client OPTIONALLY supplies this attribute. The Printer 1512 object OPTIONALLY supports this attribute. It identifies the 1513 total size of the document(s) in K octets being submitted (see 1514 section 4.3.18 for the complete semantics). If the client 1515 supplies the attribute and the Printer object supports the 1516 attribute, the value of the attribute is used to populate the Job 1517 object's "job-k-octets" Job Description attribute. 1519 Note: For this attribute and the following two attributes ("job- 1520 impressions", and "job-media-sheets"), if the client supplies the 1521 attribute, but the Printer object does not support the attribute, 1522 the Printer object ignores the client-supplied value. If the 1523 client supplies the attribute and the Printer supports the 1524 attribute, but the value is outside the range of the 1525 corresponding Printer object's "xxx-supported" attribute, the 1526 Printer object SHALL use the value to populate the Job object's 1528 Expires June 19, 1998 1529 "xxx" attribute. If the client supplies the attribute and the 1530 Printer supports the attribute, but the value is outside the 1531 range of the corresponding Printer object's "xxx-supported" 1532 attribute, the Printer object SHALL copy the attribute and its 1533 value to the Unsupported Attributes response group, reject the 1534 request, and return the 'client-error-attributes-or-values-not- 1535 supported' status code. If the client does not supply the 1536 attribute, the Printer object might choose to populate the 1537 corresponding Job object attribute depending on whether the 1538 Printer object supports the attribute and is able to calculate or 1539 discern the correct value. 1541 "job-impressions" (integer(0:MAX)) 1542 The client OPTIONALLY supplies this attribute. The Printer 1543 object OPTIONALLY supports this attribute. It identifies the 1544 total size in number of impressions of the document(s) being 1545 submitted (see section 4.3.19 for the complete semantics). 1547 See note under "job-k-octets". 1549 "job-media-sheets" (integer(0:MAX)) 1550 The client OPTIONALLY supplies this attribute. The Printer 1551 object OPTIONALLY supports this attribute. It identifies the 1552 total number of media sheets to be produced for this job (see 1553 section 4.3.20 for the complete semantics). 1555 See note under "job-k-octets". 1557 Group 2: Job Template Attributes 1559 The client OPTIONALLY supplies a set of Job Template attributes 1560 as defined in section 4.2. 1562 Group 3: Document Content 1564 The client MUST supply the document data to be processed. 1566 Note: The simplest Print-Job Request consists of just the Document 1567 Content, the "attributes-charset" and "attributes-natural-language" 1568 operation attributes, and nothing else. In this case, the Printer 1569 object: 1571 - creates a new Job object (the Job object contains a single 1572 document), 1573 - stores a generated Job name in the "job-name" attribute in the 1574 natural language and charset requested (see Section 3.1.3.1) (if 1575 those are supported, otherwise using the Printer object's default 1576 natural language and charset), and 1578 Expires June 19, 1998 1580 - at job processing time, uses its corresponding default value 1581 attributes for the supported Job Template attributes that were 1582 not supplied by the client as IPP attribute or embedded 1583 instructions in the document data. 1585 3.2.1.2 Print-Job Response 1587 The Printer object SHALL return to the client the following sets of 1588 attributes as part of the Print-Job Response: 1590 Group 1: Operation Attributes 1592 Status Code and Message: 1593 The response includes the MANDATORY status code and an OPTIONAL 1594 "status-message" (text) operation attribute as described in 1595 section 3.1.4. If the client supplies unsupported or conflicting 1596 Job Template attributes or values, the Printer object SHALL 1597 reject or accept the Print-Job request depending on the whether 1598 the client supplied a 'true' or 'false' value for the "ipp- 1599 attribute-fidelity" operation attribute. See section 15 for a 1600 complete description of the suggested steps for processing a 1601 create request. 1603 Natural Language and Character Set: 1604 The "attributes-charset" and "attributes-natural-language" 1605 attributes as described in section 3.1.3.2. 1607 Group 2: Unsupported Attributes 1609 This is a set of Operation and Job Template attributes supplied 1610 by the client (in the request) that are not supported by the 1611 Printer object or that conflict with one another (see sections 1612 15.3 and 15.4). 1614 Unsupported attributes fall into three categories: 1616 1. The Printer object does not support the named attribute (no 1617 matter what the value). 1618 2. The Printer object does support the attribute, but does not 1619 support some or all of the particular values supplied by the 1620 client (i.e., the Printer object does not have those values 1621 in the corresponding supported values attribute). 1622 3. The Printer object does support the attributes and values 1623 supplied, but the particular values are in conflict with one 1624 another, because they violate a constraint, such as not 1625 being able to staple transparencies. 1627 Expires June 19, 1998 1629 In the case of an unsupported attribute name, the Printer object 1630 returns the client-supplied attribute with a substituted special 1631 value of 'unsupported' indicating no support for the attribute 1632 itself. 1634 In the case of a supported attribute with one or more unsupported 1635 values, the Printer object simply returns the client-supplied 1636 attribute with the unsupported values as supplied by the client. 1637 This indicates support for the attribute, but no support for that 1638 particular value. If the client supplies a multi-valued attribute 1639 with more than one value and the Printer object supports the 1640 attribute but only supports a subset of the client supplied 1641 values, the Printer object SHALL return only those values that 1642 are unsupported. 1644 In the case of two (or more) supported attribute values that are 1645 in conflict with one another because they cannot be used together 1646 in the same job, the Printer object SHALL return all the values 1647 that it ignores or substitutes to resolve the conflict, but not 1648 any of the values that it is still using. The choice for exactly 1649 how to resolve the conflict is implementation dependent. See 1650 Section 15.4.3 for an example. 1652 In these three cases, the value of the "ipp-attribute-fidelity" 1653 supplied by the client does not affect what the Printer object 1654 returns. The value of "ipp-attribute-fidelity" only affects 1655 whether the Print-Job operation is accepted or rejected. If the 1656 job is accepted, the client may query the job using the Get-Job- 1657 Attributes operation requesting the unsupported attributes that 1658 were returned in the create response to see which attributes were 1659 ignored (not stored on the Job object) and which attributes were 1660 stored with other (substituted) values. 1662 Group 3: Job Object Attributes 1664 "job-uri" (uri): 1665 The Printer object MUST return the Job object's MANDATORY "job- 1666 uri" attribute. 1668 "job-id": 1669 The Printer object MUST return the Job object's MANDATORY "job- 1670 id" attribute. 1672 "job-state": 1673 The Printer object MUST return the Job object's MANDATORY "job- 1674 state" attribute. The value of this attribute (along with the 1675 value of the next attribute "job-state-reasons") is taken from a 1677 Expires June 19, 1998 1678 "snapshot" of the new Job object at some meaningful point in time 1679 (implementation defined) between when the Printer object receives 1680 the Print-Job Request and when the Printer object returns the 1681 response. 1683 "job-state-reasons": 1684 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1685 "job-state-reasons" attribute. If the Printer object supports 1686 this attribute then it MUST be returned in the response. If this 1687 attribute is not returned in the response, the client can assume 1688 that the "job-state-reasons" attribute is not supported and will 1689 not be returned in a subsequent Job object query. 1691 "job-state-message": 1692 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1693 "job-state-message" attribute. If the Printer object supports 1694 this attribute then it MUST be returned in the response. If this 1695 attribute is not returned in the response, the client can assume 1696 that the "job-state-message" attribute is not supported and will 1697 not be returned in a subsequent Job object query. 1699 "number-of-intervening-jobs": 1700 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1701 "number-of-intervening-jobs" attribute. If the Printer object 1702 supports this attribute then it MUST be returned in the response. 1703 If this attribute is not returned in the response, the client can 1704 assume that the "number-of-intervening-jobs" attribute is not 1705 supported and will not be returned in a subsequent Job object 1706 query. 1708 Note: Since any printer state information which affects a job's 1709 state is reflected in the "job-state" and "job-state-reasons" 1710 attributes, it is sufficient to return only these attributes and 1711 no specific printer status attributes. 1713 Note: The simplest response consists of the just the MANDATORY Job 1714 Attributes, the MANDATORY "attributes-charset" and "attributes- 1715 natural-language" operation attributes, and a status code of 1716 "successful-ok". 1718 3.2.2 Print-URI Operation 1720 This OPTIONAL operation is identical to the Print-Job operation 1721 (section 3.2.1) except that a client supplies a URI reference to the 1722 document data using the "document-uri" (uri) operation attribute 1723 rather than including the document data itself. Before returning the 1724 response, the Printer MUST validate that the Printer supports the 1726 Expires June 19, 1998 1727 retrieval method (e.g., http, ftp, etc.) implied by the URI, and MUST 1728 check for valid URI syntax. If the client-supplied URI scheme is not 1729 supported, i.e. the value is not in the Printer object's "referenced- 1730 uri-scheme-supported" attribute, the Printer object SHALL reject the 1731 request and return the 'client-error-uri-scheme-not-supported' status 1732 code. See Section 15.3.4 for suggested additional checks. The 1733 Printer NEED NOT follow the reference and validate the contents of the 1734 reference. 1736 If the Printer object supports this operation, it MUST support the 1737 "reference-uri-schemes-supported" Printer attribute (see section 1738 4.4.24). 1740 It is up to the IPP object to interpret the URI and subsequently 1741 "pull" the document from the source referenced by the URI string. 1743 3.2.3 Validate-Job Operation 1745 This MANDATORY operation is similar to the Print-Job operation 1746 (section 3.2.1) except that a client supplies no document data and the 1747 Printer allocates no resources (i.e., it does not create a new Job 1748 object). This operation is used only to verify capabilities of a 1749 printer object against whatever attributes are supplied by the client 1750 in the Validate-Job request. By using the Validate-Job operation a 1751 client can check that the same Print-Job operation will be accepted 1752 without having to send the document data. The Validate-Job operation 1753 also performs the same security negotiation as the Print-Job operation 1754 (see section 8), so that a client can check that the client and 1755 Printer object security requirements can be met before performing a 1756 Print-Job operation. 1758 Note: The Validate-Job operation does not accept a "document-uri" 1759 attribute in order to allow a client to check that the same Print-URI 1760 operation will be accepted, since the client doesn't send the data 1761 with the Print-URI operation. The client SHOULD just issue the Print- 1762 URI request. 1764 The Printer object returns the same status codes, Operation Attributes 1765 (Group 1) and Unsupported Attributes (Group 2) as the Print-Job 1766 operation. However, no Job Object Attributes (Group 3) are returned, 1767 since no Job object is created. 1769 3.2.4 Create-Job Operation 1771 This OPTIONAL operation is similar to the Print-Job operation (section 1772 3.2.1) except that in the Create-Job request, a client does not supply 1774 Expires June 19, 1998 1775 document data (or any reference to document data). Also, the client 1776 does not supply any of the "document-name", "document-format", or 1777 "document-natural-language" attributes. This operation is followed by 1778 one or more Send-Document or Send-URI operations. In each of those 1779 operation requests, the client OPTIONALLY supplies the "document- 1780 name", "document-format", and "document-natural-language" attributes 1781 for each document in the multi-document Job object. If a Printer 1782 object supports the Create-Job operation, it MUST also support the 1783 Send-Document operation and also MAY support the Send-URI operation. 1785 3.2.5 Get-Printer-Attributes Operation 1787 This MANDATORY operation allows a client to request the values of the 1788 attributes of a Printer or Job object. This section describes the 1789 former and section 3.3.4 describes the latter. In the request, the 1790 client supplies the set of Printer attribute names and/or attribute 1791 group names in which the requester is interested. In the response, 1792 the Printer object returns a corresponding attribute set with the 1793 appropriate attribute values filled in. 1795 For Printer objects, the possible names of attribute groups are: 1797 - 'job-template': all of the Job Template attributes that apply to 1798 a Printer object (the last two columns of the table in Section 1799 4.2). 1800 - 'printer-description': the attributes specified in Section 4.4. 1801 - 'all': the special group 'all' that includes all supported 1802 attributes. 1804 Since a client MAY request specific attributes or named groups, there 1805 is a potential that there is some overlap. For example, if a client 1806 requests, 'printer-name' and 'all', the client is actually requesting 1807 the "printer-name" attribute twice: once by naming it explicitly, and 1808 once by inclusion in the 'all' group. In such cases, the Printer 1809 object NEED NOT return each attribute only once in the response even 1810 if it is requested multiple times. The client SHOULD NOT request the 1811 same attribute in multiple ways. 1813 It is NOT REQUIRED that a Printer object support all attributes 1814 belonging to a group (since some attributes are OPTIONAL). However, 1815 it is MANDATORY that each Printer object support all group names. 1817 3.2.5.1 Get-Printer-Attributes Request 1819 The following sets of attributes are part of the Get-Printer- 1820 Attributes Request when the request is directed to a Printer object: 1822 Expires June 19, 1998 1823 Group 1: Operation Attributes 1825 Target: 1826 The "printer-uri" target for this operation as described in 1827 section 3.1.2. 1829 Natural Language and Character Set: 1830 The "attributes-charset" and "attributes-natural-language" 1831 attributes as described in section 3.1.3.1. 1833 Requesting User Name: 1834 The "requesting-user-name" attribute SHOULD be supplied by the 1835 client as described in section 8.3. 1837 "requested-attributes" (1setOf keyword) : 1838 The client OPTIONALLY supplies a set of attribute names and/or 1839 attribute group names in whose values the requester is 1840 interested. The Printer object MUST support this attribute. If 1841 the client omits this attribute, the Printer SHALL respond as if 1842 this attribute had been supplied with a value of 'all'. 1844 "document-format" (mimeMediaType) : 1845 The client OPTIONALLY supplies this attribute. The Printer 1846 object MUST support this attribute. This attribute is useful for 1847 a Printer object to determine the set of supported attribute 1848 values that relate to the requested document format. The Printer 1849 object SHALL return the attributes and values that it uses to 1850 validate a job on a create or Validate-Job operation in which 1851 this document format is supplied. The Printer object SHOULD 1852 return only (1) those attributes that are supported for the 1853 specified format and (2) the attribute values that are supported 1854 for the specified document format. By specifying the document 1855 format, the client can get the Printer object to eliminate the 1856 attributes and values that are not supported for a specific 1857 document format. For example, a Printer object might have 1858 multiple interpreters to support both 'application/postscript' 1859 (for PostScript) and 'text/plain' (for text) documents. However, 1860 for only one of those interpreters might the Printer object be 1861 able to support "number-up" with values of '1', '2', and '4'. 1862 For the other interpreter it might be able to only support 1863 "number-up" with a value of '1'. 1865 If the Printer object does not distinguish between different 1866 document formats when validating jobs in the create and Validate- 1867 Job operations, it SHALL NOT distinguish between document formats 1868 in the Get-Printer-Attributes operation. Thus a client can use 1869 the Get-Printer-Attributes operation to obtain the attributes and 1870 values that will be used to accept/reject a create job operation. 1872 Expires June 19, 1998 1873 If the client omits this attribute, the Printer object SHALL 1874 respond as if the attribute had been supplied with a value equal 1875 to the value of the Printer object's "document-format-default" 1876 attribute. It is recommended that the client always supply a 1877 value for "document-format", since the Printer object's 1878 "document-format-default" may be 'application/octet-stream', in 1879 which case the returned attributes and values are for the union 1880 of the document formats that the Printer can automatically sense. 1881 For more details, see the description of the 'mimeMediaType' 1882 attribute syntax in section 4.1.11. 1884 If the client supplies a value for the "document-format" 1885 Operation attribute that is not supported by the Printer, i.e., 1886 is not among the values of the Printer object's "document-format- 1887 supported" attribute, the Printer object SHALL reject the 1888 operation and return the 'client-error-document-format-not- 1889 supported' status code. 1891 3.2.5.2 Get-Printer-Attributes Response 1893 The Printer object returns the following sets of attributes as part of 1894 the Get-Printer-Attributes Response: 1896 Group 1: Operation Attributes 1898 Status Code and Message: 1899 The response includes the MANDATORY status code and an OPTIONAL 1900 "status-message" (text) operation attribute as described in 1901 section 3.1.4. 1903 Natural Language and Character Set: 1904 The "attributes-charset" and "attributes-natural-language" 1905 attributes as described in section 3.1.3.2. 1907 Group 2: Unsupported Attributes 1909 This is a set of Operation attributes supplied by the client (in 1910 the request) that are not supported by the Printer object or that 1911 conflict with one another (see sections 3.2.1.2 and 15). 1913 Group 3: Printer Object Attributes 1915 This is the set of requested attributes and their current values. 1916 The Printer object ignores (does not respond with) any requested 1917 attribute which is not supported. However, the Printer object 1918 SHALL respond with the 'unknown' value for any supported 1920 Expires June 19, 1998 1921 attribute (including all MANDATORY attributes) for which the 1922 Printer object does not know the value. Also the Printer object 1923 SHALL respond with the 'no-value' for any supported attribute 1924 (including all MANDATORY attributes) for which the system 1925 administrator has not configured a value. See the description of 1926 the 'out-of-band' values in the beginning of Section 4.1. 1928 3.2.6 Get-Jobs Operation 1930 This MANDATORY operation allows a client to retrieve the list of Job 1931 objects belonging to the target Printer object. The client may also 1932 supply a list of Job attribute names and/or attribute group names. A 1933 group of Job object attributes will be returned for each Job object 1934 that is returned. 1936 This operation is similar Get-Job-Attributes for a Job object, except 1937 that this Get-Jobs operation returns attributes from possibly more 1938 than one object (see the description of Job attribute group names in 1939 section 3.3.4). 1941 3.2.6.1 Get-Jobs Request 1943 The client submits the Get-Jobs request to a Printer object. 1945 The following groups of attributes are part of the Get-Jobs Request: 1947 Group 1: Operation Attributes 1949 Target: 1950 The "printer-uri" target for this operation as described in 1951 section 3.1.2. 1953 Natural Language and Character Set: 1954 The "attributes-charset" and "attributes-natural-language" 1955 attributes as described in section 3.1.3.1. 1957 Requesting User Name: 1958 The "requesting-user-name" attribute SHOULD be supplied by the 1959 client as described in section 8.3. 1961 "limit" (integer(1:MAX)): 1962 The client OPTIONALLY supplies this attribute. The Printer 1963 object MUST support this attribute. It is an integer value that 1964 indicates a limit to the number of Job objects returned. The 1965 limit is a "stateless limit" in that if the value supplied by the 1966 client is 'N', then only the first 'N' jobs are returned in the 1968 Expires June 19, 1998 1969 Get-Jobs Response. There is no mechanism to allow for the next 1970 'M' jobs after the first 'N' jobs. If the client does not supply 1971 this attribute, the Printer object responds with all applicable 1972 jobs. 1974 "requested-attributes" (1setOf keyword): 1975 The client OPTIONALLY supplies this attribute. The Printer 1976 object MUST support this attribute. It is a set of Job attribute 1977 names and/or attribute groups names in whose values the requester 1978 is interested. This set of attributes is returned for each Job 1979 object that is returned. The allowed attribute group names are 1980 the same as those defined in the Get-Job-Attributes operation in 1981 section 3.3.4. If the client does not supply this attribute, the 1982 Printer SHALL respond as if the client had supplied this 1983 attribute with two values: 'job-uri' and 'job-id'. 1985 "which-jobs" (keyword): 1986 The client OPTIONALLY supplies this attribute. The Printer 1987 object MUST support this attribute. It indicates which Job 1988 objects SHALL be returned by the Printer object. The values for 1989 this attribute are: 1991 'completed': This includes any Job object whose state is 1992 'completed', 'canceled', or 'aborted'. 1993 'not-completed': This includes any Job object whose state is 1994 'pending', 'processing', 'processing-stopped', 'pending- 1995 held', 'unknown'. 1997 A Printer object SHALL support both values. However, if the 1998 implementation does not keep jobs in the 'completed', 'canceled', 1999 and 'aborted' states, then it returns no jobs when the 2000 'completed' value is supplied. 2002 If a client supplies some other value, the Printer object SHALL 2003 copy the attribute and the unsupported value to the Unsupported 2004 Attributes response group, reject the request, and return the 2005 'client-error-attributes-or-values-not-supported' status code. 2007 If the client does not supply this attribute, the Printer object 2008 SHALL respond as if the client had supplied the attribute with a 2009 value of 'not-completed'. 2011 "my-jobs" (boolean): 2012 The client OPTIONALLY supplies this attribute. The Printer 2013 object MUST support this attribute. It indicates whether all 2014 jobs or just the jobs submitted by the requesting user of this 2015 request SHALL be returned by the Printer object. If the client 2016 does not supply this attribute, the Printer object SHALL respond 2018 Expires June 19, 1998 2019 as if the client had supplied the attribute with a value of 2020 'false', i.e., all jobs. The means for authenticating the 2021 requesting user and matching the jobs is described in section 8. 2023 3.2.6.2 Get-Jobs Response 2025 The Printer object returns all of the Job objects that match the 2026 criteria as defined by the attribute values supplied by the client in 2027 the request. It is possible that no Job objects are returned since 2028 there may literally be no Job objects at the Printer, or there may be 2029 no Job objects that match the criteria supplied by the client. If the 2030 client requests any Job attributes at all, there is a set of Job 2031 Object Attributes returned for each Job object. 2033 Group 1: Operation Attributes 2035 Status Code and Message: 2036 The response includes the MANDATORY status code and an OPTIONAL 2037 "status-message" (text) operation attribute as described in 2038 section 3.1.4. 2040 Natural Language and Character Set: 2041 The "attributes-charset" and "attributes-natural-language" 2042 attributes as described in section 3.1.3.2. 2044 Group 2: Unsupported Attributes 2046 This is a set of Operation attributes supplied by the client (in 2047 the request) that are not supported by the Printer object or that 2048 conflict with one another (see sections 3.2.1.2 and 15.3). 2050 Groups 3 to N: Job Object Attributes 2052 The Printer object responds with one set of Job Object Attributes 2053 for each returned Job object. The Printer object ignores (does 2054 not respond with) any requested attribute which is not supported 2055 or which is restricted by the security policy in force, including 2056 whether the requesting user is the user that submitted the job 2057 (job originating user) or not (see section 8). However, the 2058 Printer object SHALL respond with the 'unknown' value for any 2059 supported attribute (including all MANDATORY attributes) for 2060 which the Printer object does not know the value, unless it would 2061 violate the security policy. See the description of the 'out-of- 2062 band' values in the beginning of Section 4.1. 2064 For any job submitted in a different natural language than the 2065 natural language that the Printer object is returning in the 2066 "attributes-natural-language" operation attribute in the Get-Jobs 2068 Expires June 19, 1998 2069 response, the Printer SHALL indicate the submitted natural 2070 language by returning the Job object's "attributes-natural- 2071 language" as the first Job object attribute, which overrides the 2072 "attributes-natural-language" operation attribute value being 2073 returned by the Printer object. If any returned 'text' or 'name' 2074 attribute includes a Natural Language Override as described in 2075 the sections 4.1.2 and 4.1.4, the Natural Language Override 2076 overrides the Job object's "attributes-natural-language" value 2077 and/or the "attributes-natural-language" operation attribute 2078 value. 2080 Jobs are returned in the following order: 2082 - If the client requests all 'completed' Jobs (Jobs in the 2083 'completed', 'aborted', or 'canceled' states), then the Jobs 2084 are returned newest to oldest (with respect to actual 2085 completion time) 2086 - If the client requests all 'not-completed' Jobs (Jobs in the 2087 'pending', 'processing', 'pending-held', 'processing- 2088 stopped', and 'unknown' states), then Jobs are returned in 2089 relative chronological order of expected time to complete 2090 (based on whatever scheduling algorithm is configured for 2091 the Printer object). 2093 3.3 Job Operations 2095 All Job operations are directed at Job objects. A client MUST always 2096 supply some means of identifying the Job object in order to identify 2097 the correct target of the operation. That job identification MAY 2098 either be a single Job URI or a combination of a Printer URI with a 2099 Job ID. The IPP object implementation MUST support both forms of 2100 identification for every job. 2102 3.3.1 Send-Document Operation 2104 This OPTIONAL operation allows a client to create a multi-document Job 2105 object that is initially "empty" (contains no documents). In the 2106 Create-Job response, the Printer object returns the Job object's URI 2107 (the "job-uri" attribute) and the Job object's 32-bit identifier (the 2108 "job-id" attribute). For each new document that the client desires to 2109 add, the client uses a Send-Document operation. Each Send-Document 2110 Request contains the entire stream of document data for one document. 2112 Since the Create-Job and the send operations (Send-Document or Send- 2113 URI operations) that follow can occur over arbitrarily long periods of 2114 time, each Printer object must decide how long to "wait" for the next 2116 Expires June 19, 1998 2117 send operation. The Printer object OPTIONALLY supports the "multiple- 2118 operation-timeout" attribute. This attribute indicates the maximum 2119 number of seconds the Printer object will wait for the next send 2120 operation. If the Printer object times-out waiting for the next send 2121 operation, the Printer object MAY decide on any of the following 2122 semantic actions: 2124 1. Assume that the Job is an invalid job, start the process of 2125 changing the job state to 'aborted', and clean up all resources 2126 associated with the Job. In this case, if another send operation 2127 is finally received, the Printer responds with an "client-error- 2128 not-possible" or "client-error-not-found" depending on whether or 2129 not the Job object is still around when it finally arrives. 2130 2. Assume that the last send operation received was in fact the 2131 last document (as if the "last-document" flag had been set to 2132 'true'), close the Job object, and proceed to process it (i.e., 2133 move the Job's state to 'pending'). 2134 3. Assume that the last send operation received was in fact the 2135 last document, close the Job, but move it to the 'pending-held' 2136 to allow an operator to determine whether or not to continue 2137 processing the Job by moving it back to the 'pending' state. 2139 Each implementation is free to decide the "best" action to take 2140 depending on local policy, the value of "ipp-attribute-fidelity", 2141 and/or any other piece of information available to it. If the choice 2142 is to abort the Job object, it is possible that the Job object may 2143 already have been processed to the point that some media sheet pages 2144 have been printed. 2146 3.3.1.1 Send-Document Request 2148 The following attribute sets are part of the Send-Document Request: 2150 Group 1: Operation Attributes 2152 Target: 2153 Either (1) the "printer-uri" plus "job-id" or (2) the "job-uri" 2154 target for this operation as described in section 3.1.2. 2156 Natural Language and Character Set: 2157 The "attributes-charset" and "attributes-natural-language" 2158 attributes as described in section 3.1.3.1. 2160 Requesting User Name: 2161 The "requesting-user-name" attribute SHOULD be supplied by the 2162 client as described in section 8.3. 2164 Expires June 19, 1998 2166 "document-name" (name(MAX)): 2167 The client OPTIONALLY supplies this attribute. The Printer 2168 object MUST support this attribute. It contains the client 2169 supplied document name. The document name MAY be different than 2170 the Job name. It might be helpful, but NEED NOT be unique across 2171 multiple documents in the same Job. Typically, the client 2172 software automatically supplies the document name on behalf of 2173 the end user by using a file name or an application generated 2174 name. See the description of the "document-name" operation 2175 attribute in the Print-Job Request (section 3.2.1.1) for more 2176 information about this attribute. 2178 "document-format" (mimeMediaType) : 2179 The client OPTIONALLY supplies this attribute. The Printer 2180 object MUST support this attribute. The value of this attribute 2181 identifies the format of the supplied document data. If the 2182 client does not supply this attribute, the Printer object assumes 2183 that the document data is in the format defined by the Printer 2184 object's "document-format-default" attribute. If the client 2185 supplies this attribute, but the value is not supported by the 2186 Printer object, i.e., the value is not one of the values of the 2187 Printer object's "document-format-supported" attribute, the 2188 Printer object SHALL reject the request and return the 'client- 2189 error-document-format-not-supported' status code. 2191 "document-natural-language" (naturalLanguage): 2192 The client OPTIONALLY supplies this attribute. The Printer 2193 object OPTIONALLY supports this attribute. This attribute 2194 specifies the natural language of the document for those 2195 document-formats that require a specification of the natural 2196 language in order to image the document Unambiguously. There are 2197 no particular values required for the Printer object to support. 2199 "last-document" (boolean): 2200 The client MUST supply this attribute. The Printer object MUST 2201 support this attribute. It is a boolean flag that is set to 2202 'true' if this is the last document for the Job, 'false' 2203 otherwise. 2205 Group 2: Document Content 2207 The client MUST supply the document data if the "last-document" 2208 flag is set to 'false'. However, since a client might not know 2209 that the previous document sent with a Send-Document operation 2210 was the last document (i.e., the "last-document" attribute was 2211 set to 'false'), it is legal to send a Send-Document request with 2212 no document data where the "last-document" flag is set to 'true'. 2213 Such a request SHALL NOT increment the value of the Job object's 2215 Expires June 19, 1998 2216 "number-of-documents" attribute, since no real document was added 2217 to the job. 2219 3.3.1.2 Send-Document Response 2221 The following sets of attributes are part of the Send-Document 2222 Response: 2224 Group 1: Operation Attributes 2226 Status Code and Message: 2227 The response includes the MANDATORY status code and an OPTIONAL 2228 "status-message" (text) operation attribute as described in 2229 section 3.1.4. 2231 Natural Language and Character Set: 2232 The "attributes-charset" and "attributes-natural-language" 2233 attributes as described in section 3.1.3.2. 2235 Group 2: Unsupported Attributes 2237 This is a set of Operation attributes supplied by the client (in 2238 the request) that are not supported by the Printer object or that 2239 conflict with one another (see sections 3.2.1.2 and 15.3). 2241 Group 3: Job Object Attributes 2243 This is the same set of attributes as described in the Print-Job 2244 response (see section 3.2.1.2). 2246 3.3.2 Send-URI Operation 2248 This OPTIONAL operation is identical to the Send-Document operation 2249 (see section 3.3.1) except that a client MUST supply a URI reference 2250 ("document-uri" operation attribute) rather than the document data 2251 itself. If a Printer object supports this operation, clients can use 2252 both Send-URI or Send-Document operations to add new documents to an 2253 existing multi-document Job object. If a Printer object supports this 2254 operation, it MUST also support the Print-URI operation (see section 2255 3.2.2). 2257 The Printer object MUST validate the syntax and URI scheme of the 2258 supplied URI before returning a response, just as in the Print-URI 2259 operation. 2261 Expires June 19, 1998 2262 3.3.3 Cancel Job Operation 2264 This MANDATORY operation allows a client to cancel a Print Job any 2265 time after a create job operation. Since a Job might already be 2266 printing by the time a Cancel-Job is received, some media sheet pages 2267 might be printed before the job is actually terminated. 2269 3.3.3.1 Cancel-Job Request 2271 The following groups of attributes are part of the Cancel-Job Request: 2273 Group 1: Operation Attributes 2275 Target: 2276 Either (1) the "printer-uri" plus "job-id" or (2) the "job-uri" 2277 target for this operation as described in section 3.1.2. 2279 Natural Language and Character Set: 2280 The "attributes-charset" and "attributes-natural-language" 2281 attributes as described in section 3.1.3.1. 2283 Requesting User Name: 2284 The "requesting-user-name" attribute SHOULD be supplied by the 2285 client as described in section 8.3. 2287 "message" (text(127)): 2288 The client OPTIONALLY supplies this attribute. The Printer 2289 object OPTIONALLY supports this attribute. It is a message to the 2290 operator. This "message" attribute is not the same as the "job- 2291 message-from-operator" attribute. That attribute is used to 2292 report a message from the operator to the end user that queries 2293 that attribute. This "message" operation attribute is used to 2294 send a message from the client to the operator along with the 2295 operation request. It is an implementation decision of how or 2296 where to display this message to the operator (if at all). 2298 3.3.3.2 Cancel-Job Response 2300 The following sets of attributes are part of the Cancel-Job Response: 2302 Group 1: Operation Attributes 2304 Status Code and Message: 2305 The response includes the MANDATORY status code and an OPTIONAL 2306 "status-message" (text) operation attribute as described in 2307 section 3.1.4. 2309 Expires June 19, 1998 2310 If the job is already in the 'completed', 'aborted', or 2311 'canceled' state, or the 'process-to-stop-point' value is set in 2312 the Job's "job-state-reasons" attribute, the Printer object SHALL 2313 reject the request and return the 'client-error-not-possible' 2314 error status code. 2316 Natural Language and Character Set: 2317 The "attributes-charset" and "attributes-natural-language" 2318 attributes as described in section 3.1.3.2. 2320 Group 2: Unsupported Attributes 2322 This is a set of Operation attributes supplied by the client (in 2323 the request) that are not supported by the Printer object or that 2324 conflict with one another (see sections 3.2.1.2 and 15.3). 2326 Once a successful response has been sent, the implementation 2327 guarantees that the Job will eventually end up in the 'canceled' 2328 state. Between the time of the Cancel-Job operation is accepted and 2329 when the job enters the 'canceled' job-state (see section 4.3.6), the 2330 "job-state-reasons" attribute SHOULD contain the ' processing-to-stop- 2331 point ' value which indicates to later queries that although the Job 2332 might still be 'processing', it will eventually end up in the 2333 'canceled' state, not the 'completed' state. 2335 3.3.4 Get-Job-Attributes Operation 2337 This MANDATORY operation allows a client to request the values of 2338 attributes of a Job object and it is almost identical to the Get- 2339 Printer-Attributes operation (see section 3.2.5). The only 2340 differences are that the operation is directed at a Job object rather 2341 than a Printer object, there is no "document-format" operation 2342 attribute used when querying a Job object, and the returned attribute 2343 group is a set of Job object attributes rather than a set of Printer 2344 object attributes. 2346 For Jobs, the possible names of attribute groups are: 2348 - 'job-template': all of the Job Template attributes that apply to 2349 a Job object (the first column of the table in Section 4.2). 2350 - 'job-description': all of the Job Description attributes 2351 specified in Section 4.3. 2352 - 'all': the special group 'all' that includes all supported 2353 attributes. 2355 Expires June 19, 1998 2357 Since a client MAY request specific attributes or named groups, there 2358 is a potential that there is some overlap. For example, if a client 2359 requests, 'job-name' and 'job-description', the client is actually 2360 requesting the "job-name" attribute once by naming it explicitly, and 2361 once by inclusion in the 'job-description' group. In such cases, the 2362 Printer object NEED NOT return the attribute only once in the response 2363 even if it is requested multiple times. The client SHOULD NOT request 2364 the same attribute in multiple ways. 2366 It is NOT REQUIRED that a Job object support all attributes belonging 2367 to a group (since some attributes are OPTIONAL). However it is 2368 MANDATORY that each Job object support all group names. 2370 3.3.4.1 Get-Job-Attributes Request 2372 The following groups of attributes are part of the Get-Job-Attributes 2373 Request when the request is directed at a Job object: 2375 Group 1: Operation Attributes 2377 Target: 2378 Either (1) the "printer-uri" plus "job-id" or (2) the "job-uri" 2379 target for this operation as described in section 3.1.2. 2381 Natural Language and Character Set: 2382 The "attributes-charset" and "attributes-natural-language" 2383 attributes as described in section 3.1.3.1. 2385 Requesting User Name: 2386 The "requesting-user-name" attribute SHOULD be supplied by the 2387 client as described in section 8.3. 2389 "requested-attributes" (1setOf keyword) : 2390 The client OPTIONALLY supplies this attribute. The IPP object 2391 MUST support this attribute. It is a set of attribute names 2392 and/or attribute group names in whose values the requester is 2393 interested. If the client omits this attribute, the IPP object 2394 SHALL respond as if this attribute had been supplied with a value 2395 of 'all'. 2397 3.3.4.2 Get-Job-Attributes Response 2399 The Printer object returns the following sets of attributes as part of 2400 the Get-Job-Attributes Response: 2402 Group 1: Operation Attributes 2404 Expires June 19, 1998 2405 Status Code and Message: 2406 The response includes the MANDATORY status code and an OPTIONAL 2407 "status-message" (text) operation attribute as described in 2408 section 3.1.4. 2410 Natural Language and Character Set: 2411 The "attributes-charset" and "attributes-natural-language" 2412 attributes as described in section 3.1.3.2. The "attributes- 2413 natural-language" MAY be the natural language of the Job object, 2414 rather than the one requested. 2416 Group 2: Unsupported Attributes 2418 This is a set of Operation attributes supplied by the client (in 2419 the request) that are not supported by the Printer object or that 2420 conflict with one another (see sections 3.2.1.2 and 15.3). 2422 Group 3: Job Object Attributes 2424 This is the set of requested attributes and their current values. 2425 The IPP object ignores (does not respond with) any requested 2426 attribute which is not supported or which is restricted by the 2427 security policy in force, including whether the requesting user 2428 is the user that submitted the job (job originating user) or not 2429 (see section 8). However, the IPP object SHALL respond with the 2430 'unknown' value for any supported attribute (including all 2431 MANDATORY attributes) for which the IPP object does not know the 2432 value, unless it would violate the security policy. See the 2433 description of the 'out-of-band' values in the beginning of 2434 Section 4.1. 2436 4. Object Attributes 2438 This section describes the attributes with their corresponding 2439 attribute syntaxes and values that are part of the IPP model. The 2440 sections below show the objects and their associated attributes which 2441 are included within the scope of this protocol. Many of these 2442 attributes are derived from other relevant specifications: 2444 - Document Printing Application (DPA) [ISO10175] 2445 - RFC 1759 Printer MIB [RFC1759] 2447 Each attribute is uniquely identified in this document using a 2448 "keyword" (see section 12.2.1) which is the name of the attribute. 2450 Expires June 19, 1998 2451 The keyword is included in the section header describing that 2452 attribute. 2454 Note: Not only are keywords used to identify attributes, but one of 2455 the attribute syntaxes described below is "keyword" so that some 2456 attributes have keyword values. Therefore, these attributes are 2457 defined as having an attribute syntax that is a set of keywords. 2459 4.1 Attribute Syntaxes 2461 This section defines the basic attribute syntax types that all clients 2462 and IPP objects SHALL be able to accept in responses and accept in 2463 requests, respectively. Each attribute description in sections 3 and 2464 4 includes the name of attribute syntax(es) in the heading (in 2465 parentheses). A conforming implementation of an attribute SHALL 2466 include the semantics of the attribute syntax(es) so identified. 2467 Section 6 describes how the protocol can be extended with new 2468 attribute syntaxes. 2470 The attribute syntaxes are specified in the following sub-sections, 2471 where the sub-section heading is the keyword name of the attribute 2472 syntax inside the single quotes. In operation requests and responses 2473 each attribute value MUST be represented as one of the attribute 2474 syntaxes specified in the sub-section heading for the attribute. In 2475 addition, responses (but not requests) MAY be one of the "out of band" 2476 values. Standard "out-of-band" values are: 2478 'unknown': The attribute is supported by the IPP object, but the 2479 value is unknown to the IPP object for some reason. 2480 'unsupported': The attribute is unsupported by the IPP object. 2481 This value SHALL be returned only as the value of an attribute in 2482 the Unsupported Attributes Group. 2483 'no-value': The attribute is supported by the Printer object, but 2484 the system administrator has not yet configured a value. 2486 The protocol specification defines mechanisms for allowing passing 2487 "out of band" values. All attributes in a request SHALL have one or 2488 more values as defined in Sections 4.2 to 4.4. Thus clients SHALL not 2489 supply attributes with "out-of-band" values. All attribute in a 2490 response SHALL have one or more values as defined in Sections 4.2 to 2491 4.4 or a single "out-of-band" value. 2493 Most attributes are defined to have a single attribute syntax. 2494 However, a few attributes (e.g., "job-sheet", "media", "job-hold- 2495 until") are defined to have several attribute syntaxes, depending on 2496 the value. These multiple attribute syntaxes are separated by the "|" 2498 Expires June 19, 1998 2499 character in the sub-section heading to indicate the choice. Since 2500 each value SHALL be tagged as to its attribute syntax in the protocol, 2501 a single-valued attribute instance may have any one of its attribute 2502 syntaxes and a multi-valued attribute instance may have a mixture of 2503 its defined attribute syntaxes. 2505 4.1.1 'text' 2507 The 'text' attribute syntax is a sequence of one or more characters 2508 encoded in a maximum of 1023 octets which is indicated in sub-section 2509 headers using the notation: text(MAX). If an attribute is specified 2510 to have a smaller maximum in its sub-section header description, the 2511 explicit number of octets is indicated. For example: the "printer- 2512 location" attribute is specified as: printer-location (text(127)). 2514 The Printer object SHALL support the UTF-8 charset [RFC2044] and MAY 2515 support additional charsets provided that they are registered with 2516 IANA [IANA-CS] to represent 'text' values. See Section 4.1.9 for the 2517 specification of the 'charset' attribute syntax, including restricted 2518 semantics and examples of charsets. 2520 In this specification, attributes that are indicated to have the 2521 'text' attribute syntax, also automatically have the 2522 'textWithLanguage' attribute syntax. See section 4.1.2. 2524 If the client needs to supply or the Printer object needs to return a 2525 'text' attribute in a different natural language from the rest of the 2526 'text' attributes in the request or response as indicated by the 2527 "attributes-natural-language" operation attribute (see Section 3.1.3) 2528 or job attribute (see Section 4.3.25), the client or Printer object 2529 SHALL identify the natural language for that attribute. This 2530 MANDATORY mechanism for identifying the natural language of a single 2531 attribute value is called the Natural Language Override mechanism. 2532 This mechanism uses an alternate attribute syntax, called 2533 'textWithLanguage', which is described in section 4.1.2. 2535 4.1.2 'textWithLanguage' 2537 The 'textWithLanguage' attribute syntax is a compound attribute syntax 2538 consisting of two parts: a 'text' part plus an additional 2539 'naturalLanguage' (see section 4.1.10) part that overrides the natural 2540 language in force. The 'naturalLanguage' part explicitly identifies 2541 the natural language that applies to the text part of that value and 2542 that value alone. The 'text' part is limited to 1023 octets, and the 2543 'naturalLanguage' part is limited to 63 octets. If the sub-section 2544 header specifying an attribute with attribute syntax 'text' with a 2546 Expires June 19, 1998 2547 smaller explicit value than MAX, that value applies to the 'text' part 2548 of the 'textWithLanguage' as well. 2550 If the client needs to supply or the Printer object needs to return a 2551 'text' attribute value in a different natural language from the rest 2552 of the 'text' attribute values in the request or response as indicated 2553 by the "attributes-natural-language" operation attribute (see Section 2554 3.1.3) or to the "attributes-natural-language" Job attribute, if 2555 present, in the case of a Get-Jobs response ,the client or IPP object 2556 SHALL identify the natural language for that attribute using the 2557 'textWithLanguage' attribute syntax. 2559 The 'textWithLanguage' attribute syntax is the so-called Natural 2560 Language Override mechanism for the 'text' attribute syntax and MUST 2561 be supported by IPP objects. 2563 If the attribute is multi-valued (1setOf text), then the 2564 'textWithLanguage' attribute syntax MUST be used to explicitly specify 2565 each attribute value whose natural language needs to be overridden. 2566 Other values in a multi-valued 'text' attribute in a request or a 2567 response revert to the natural language of the operation attribute or 2568 to the "attributes-natural-language" Job attribute, if present, in the 2569 case of a Get-Jobs response. 2571 Any attribute that is specified to have the 'text' attribute syntax in 2572 this document, automatically also has the 'textWithLanguage' attribute 2573 syntax. IPP objects SHALL accept, support, and return both the 'text' 2574 and 'textWithLanguage' attribute syntaxes for any attribute in this 2575 specification that is indicated to have the 'text' attribute syntax. 2576 For brevity in this specification, only the 'text' attribute syntax is 2577 indicated for attributes. However, the interpretation of 'text' SHALL 2578 be as if it were: 'text | textWithLanguage'. 2580 In a create request, the Printer object MUST accept and store with the 2581 Job object any natural languages in the "attributes-natural-language" 2582 operation attribute, whether the Printer object supports that natural 2583 language or not. Furthermore, the Printer object MUST accept and 2584 store any 'textWithLanguage' attribute value, whether the Printer 2585 object supports that natural language or not. These requirements are 2586 independent of the value of the "ipp-attribute-fidelity" operation 2587 attribute that the client MAY supply. 2589 Example: If the client supplies the "attributes-natural-language" 2590 operation attribute with the value: 'en' indicating English, but the 2591 value of the "job-name" attribute is in French, the client MUST use 2592 the 'textWithLanguage' attribute syntax with the following two values: 2594 'fr': Natural Language Override indicating French 2596 Expires June 19, 1998 2597 'Rapport Mensuel': the job name in French 2599 See the Protocol document [IPP-PRO] for a detailed example of the 2600 'textWithLanguage' attribute syntax. 2602 4.1.3 'name' 2604 The 'name' attribute syntax is the same as 'text', including the 2605 MANDATORY support of UTF-8 and the Natural Language Override 2606 mechanism, except that the sequence of characters is limited so that 2607 its encoded form is of length 1 to 255 octets which is indicated in 2608 sub-section headers using the notation: name(MAX). If an attribute is 2609 specified to have a smaller maximum, the explicit number of octets is 2610 indicated. For example: the "printer-name" attribute is specified 2611 as: printer-name (name(127)). This syntax type is used for user- 2612 friendly strings, such as a Printer name, that, for humans, are more 2613 meaningful than identifiers. 2615 In this specification, attributes that are indicated to have the 2616 'name' attribute syntax, also automatically have the 2617 'nameWithLanguage' attribute syntax. See section 4.1.4. 2619 Note: Only the 'text' and 'name' attribute syntaxes permit the 2620 Natural Language Override mechanism. 2622 4.1.4 'nameWithLanguage' 2624 The 'nameWithLanguage' attribute syntax is the same as 2625 'textWithLanguage', including the MANDATORY support of UTF-8, except 2626 that the length of the 'name' part SHALL not exceed 255 octets. This 2627 attribute syntax is the so-called Natural Language Override mechanism 2628 for the 'name' attribute syntax and MUST be supported by IPP objects. 2630 Example: If the client supplies the "attributes-natural-language" 2631 operation attribute with the value: 'en' indicating English, but the 2632 "printer-name" attribute is in German, the client MUST use the 2633 'nameWithLanguage' attribute syntax as follows: 2635 'de': Natural Language Override indicating German 2636 'Farbdrucker': the Printer name in German 2638 4.1.5 'keyword' 2640 The 'keyword' attribute syntax is a sequence of characters, length: 1 2641 to 255, containing only the US-ASCII [ASCII] encoded values for 2643 Expires June 19, 1998 2644 lowercase letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot 2645 ("."), and underscore ("_"). The first character MUST be a lowercase 2646 letter. Furthermore, keywords SHALL be in U.S. English. 2648 This syntax type is used for enumerating semantic identifiers of 2649 entities in the abstract protocol, i.e., entities identified in this 2650 document. Keywords are used as attribute names or values of 2651 attributes. Unlike 'text' and 'name' attribute values, 'keyword' 2652 values SHALL NOT use the Natural Language Override mechanism, since 2653 they SHALL always be US-ASCII and U.S. English. 2655 Keywords are for use in the protocol. A user interface will likely 2656 provide a mapping between protocol keywords and displayable user- 2657 friendly words and phrases which are localized to the natural language 2658 of the user. While the keywords specified in this document MAY be 2659 displayed to users whose natural language is U.S. English, they MAY be 2660 mapped to other U.S. English words for U.S. English users, since the 2661 user interface is outside the scope of this document. 2663 In the definition for each attribute of this syntax type, the full set 2664 of defined keyword values for that attribute are listed. 2666 When a keyword is used to represent an attribute (its name), it MUST 2667 be unique within the full scope of all IPP objects and attributes. 2668 When a keyword is used to represent a value of an attribute, it MUST 2669 be unique just within the scope of that attribute. That is, the same 2670 keyword SHALL not be used for two different values within the same 2671 attribute to mean two different semantic ideas. However, the same 2672 keyword MAY be used across two or more attributes, representing 2673 different semantic ideas for each attribute. Section 6 describes how 2674 the protocol can be extended with new keyword values. Examples of 2675 attribute name keywords: 2677 "job-name" 2678 "attributes-charset" 2680 4.1.6 'enum' 2682 The 'enum' attribute syntax is an enumerated integer value that is in 2683 the range from -2**31 (MIN) to 2**31 - 1 (MAX). Each value has an 2684 associated 'keyword' name. In the definition for each attribute of 2685 this syntax type, the full set of possible values for that attribute 2686 are listed. This syntax type is used for attributes for which there 2687 are enum values assigned by other standards, such as SNMP MIBs. A 2688 number of attribute enum values in this specification are also used 2689 for corresponding attributes in other standards [RFC1759]. This 2690 syntax type is not used for attributes to which the system 2692 Expires June 19, 1998 2693 administrator may assign values. Section 6 describes how the protocol 2694 can be extended with new enum values. 2696 Enum values are for use in the protocol. A user interface will 2697 provide a mapping between protocol enum values and displayable user- 2698 friendly words and phrases which are localized to the natural language 2699 of the user. While the enum symbols specified in this document MAY be 2700 displayed to users whose natural language is U.S. English, they MAY be 2701 mapped to other U.S. English words for U.S. English users, since the 2702 user interface is outside the scope of this document. 2704 Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP out 2705 of band value 'unknown'. See the description of the "out-of-band" 2706 values at the beginning of Section 4.1. Therefore, most attributes of 2707 type 'enum' often start at '3'. 2709 4.1.7 'uri' 2711 The 'uri' attribute syntax is any valid Uniform Resource Identifier or 2712 URI [RFC1630]. Most often, URIs are simply Uniform Resource Locators 2713 or URLs [RFC1738] [RFC1808]. The maximum length of URIs used within 2714 IPP is 1023 octets. 2716 4.1.8 'uriScheme' 2718 The 'uriScheme' attribute syntax is a sequence of characters 2719 representing a URI scheme according to RFC 1738 [RFC1738]. Though RFC 2720 1736 requires that the values be case-insensitive, IPP requires all 2721 lower case to simplify comparing by IPP clients and Printer objects. 2722 Standard values for this syntax type are the following keywords: 2724 'http': for HTTP schemed URIs (e.g., "http://_") 2725 'https': for HTTPS schemed URIs (e.g., "https://...") 2726 'ftp': for FTP schemed URIs (e.g., "ftp://...") 2727 'mailto': for SMTP schemed URIs (e.g., "mailto:...") 2728 'file': for file schemed URIs (e.g., "file:...") 2730 A Printer object MAY support any URI scheme that has been registered 2731 with IANA [IANA-MT]. The maximum length of URI schemes used within IPP 2732 is 63 octets. 2734 4.1.9 'charset' 2736 The 'charset' attribute syntax is a standard identifier for a charset. 2737 A charset is a coded character set and encoding scheme. Charsets are 2739 Expires June 19, 1998 2740 used for labeling certain document contents and 'text' and 'name' 2741 attribute values. The syntax and semantics of this attribute syntax 2742 are specified in RFC 2046 [RFC2046] and contained in the IANA 2743 character-set Registry [IANA-CS] according to the IANA procedures 2744 [IANA-CSa]. Though RFC 2046 requires that the values be case- 2745 insensitive US-ASCII, IPP requires all lower case to simplify 2746 comparing by IPP clients and Printer objects. When a character-set in 2747 the IANA registry has more than one name (alias), the name labeled as 2748 "(preferred MIME name)", if present, SHALL be used. 2750 The maximum length of charset values used within IPP is 63 octets. 2752 Some examples are: 2754 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set 2755 (UCS) represented as the UTF-8 [RFC2044] transfer encoding scheme 2756 in which US-ASCII is a subset charset. The 'utf-8' charset value 2757 supplied in the "attributes-charset" operation attribute (see 2758 Section 3.1.3), which is used to identify the charset of 'text' 2759 and 'name' attributes, SHALL be restricted to any characters 2760 defined by ISO 10646 [ISO10646-1]. 2761 'us-ascii': 7-bit American Standard Code for Information 2762 Interchange (ASCII), ANSI X3.4-1986 [ASCII]. That standard 2763 defines US-ASCII, but RFC 2045 [46] eliminates most of the 2764 control characters from conformant usage in MIME and IPP. 2765 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet 2766 Nr 1 [ISO8859-1]. That standard defines a coded character set 2767 that is used by Latin languages in the Western Hemisphere and 2768 Western Europe. US-ASCII is a subset charset. 2769 'iso-10646-ucs-2': ISO 10646 Universal Multiple-Octet Coded 2770 Character Set (UCS) represented as two octets (UCS-2), with the 2771 high order octet of each pair coming first (so-called Big Endian 2772 integer). 2774 Some attribute descriptions MAY place additional requirements on 2775 charset values that may be used, such as MANDATORY values that MUST be 2776 supported or additional restrictions, such as requiring that the 2777 charset have US-ASCII as a subset charset. 2779 4.1.10 'naturalLanguage' 2781 The 'naturalLanguage' attribute syntax is a standard identifier for a 2782 natural language and optionally a country. The values for this syntax 2783 type are taken from RFC 1766 [RFC1766]. Though RFC 1766 requires that 2784 the values be case-insensitive US-ASCII, IPP requires all lower case 2785 to simplify comparing by IPP clients and Printer objects. Examples 2786 include: 2788 Expires June 19, 1998 2789 'en': for English 2790 'en-us': for US English 2791 'fr': for French 2792 'de': for German 2794 The maximum length of naturalLanguage values used within IPP is 63 2795 octets. 2797 4.1.11 'mimeMediaType' 2799 The 'mimeMediaType' attribute syntax is the Internet Media Type 2800 (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and 2801 registered according to the procedures of RFC 2048 [RFC2048] for 2802 identifying a document format. The value MAY include a charset 2803 parameter, depending on the specification of the Media Type in the 2804 IANA Registry [IANA-MT]. Examples: 2806 'text/html': An HTML document 2807 'text/plain': A plain text document in US-ASCII (RFC 2046 indicates 2808 that in the absence of the charset parameter SHALL mean US-ASCII 2809 rather than simply unspecified) [RFC2046]. 2810 'text/plain; charset=US-ASCII': A plain text document in US-ASCII 2811 [52, 56]. 2812 'text/plain; charset=ISO-8859-1': A plain text document in ISO 2813 8859-1 (Latin 1) [ISO8859-1]. 2814 'text/plain; charset=utf-8': A plain text document in ISO 10646 2815 represented as UTF-8 [RFC2044] 2816 'text/plain, charset=iso-10646-ucs-2': A plain text document in 2817 ISO 10646 represented in two octets (UCS-2) [ISO10646-1] 2818 'application/postscript': A PostScript document [RFC2046] 2819 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape 2820 sequence embedded in the document data) 2821 'application/octet-stream': Auto-sense - see below 2823 One special type is 'application/octet-stream'. If the Printer object 2824 supports this value, the Printer object SHALL be capable of auto- 2825 sensing the format of the document data. If the Printer object's 2826 default value attribute "document-format-default" is set to 2827 'application/octet-stream', the Printer object not only supports auto- 2828 sensing of the document format, but will depend on the result of 2829 applying its auto-sensing when the client does not supply the 2830 "document-format" attribute. If the client supplies a document format 2831 value, the Printer SHALL rely on the supplied attribute, rather than 2832 trust its auto-sensing algorithm. To summarize: 2834 Expires June 19, 1998 2835 1. If the client does not supply a document format value, the 2836 Printer MUST rely on its default value setting (which may be 2837 'application/octet-stream' indicating an auto-sensing mechanism). 2838 2. If the client supplies a value other than 'application/octet- 2839 stream', the client is supplying valid information about the 2840 format of the document data and the Printer object SHALL trust 2841 the client supplied value more than the outcome of applying an 2842 automatic format detection mechanism. For example, the client 2843 may be requesting the printing of a PostScript file as a 2844 'text/plain' document. The Printer object SHALL print a text 2845 representation of the PostScript commands rather than interpret 2846 the stream of PostScript commands and print the result. 2847 3. If the client supplies a value of 'application/octet-stream', 2848 the client is indicating that the Printer object SHALL use its 2849 auto-sensing mechanism on the client supplied document data 2850 whether auto-sensing is the Printer object's default or not. 2852 Note: Since the auto-sensing algorithm is probabilistic, if the 2853 client requests both auto-sensing ("document-format" set to 2854 'application/octet-stream') and true fidelity ("ipp-attribute- 2855 fidelity" set to 'true'), the Printer object might not be able to 2856 guarantee exactly what the end user intended (the auto-sensing 2857 algorithm might mistake one document format for another ), but it is 2858 able to guarantee that its auto-sensing mechanism be used. 2860 The maximum length of a 'mimeMediaType' value in IPP is 63 octets. 2862 4.1.12 'octetString' 2864 The 'octetString' attribute syntax is a sequence of octets encoded in 2865 a maximum of 1023 octets which is indicated in sub-section headers 2866 using the notation: octetString(MAX). This syntax type is used for 2867 opaque data. 2869 4.1.13 'boolean' 2871 The 'boolean' attribute syntax is similar to an enum with only two 2872 values: 'true' and 'false'. 2874 4.1.14 'integer' 2876 The 'integer' attribute syntax is an integer value that is in the 2877 range from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual attribute 2878 may specify the range constraint explicitly in sub-section headers if 2879 the range is different from the full range of possible integer values. 2881 Expires June 19, 1998 2882 For example: job-priority (integer(1:100)) for the "job-priority" 2883 attribute. However, the enforcement of that additional constraint is 2884 up to the IPP objects, not the protocol. 2886 4.1.15 'rangeOfInteger' 2888 The 'rangeOfInteger' attribute syntax is an ordered pair of integers 2889 that defines an inclusive range of integer values. The first integer 2890 specifies the lower bound and the second specifies the upper bound. 2891 If a range constraint is specified in the header description for an 2892 attribute in this document whose attribute syntax is 'rangeOfInteger' 2893 (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum 2894 value), then the constraint applies to both integers. 2896 4.1.16 'dateTime' 2898 The 'dateTime' attribute syntax is a standard, fixed length, 11 octet 2899 representation of the "DateAndTime" syntax as defined in RFC 1903 2900 [RFC1903]. RFC 1903 also identifies an 8 octet representation of a 2901 "DateAndTime" value, but IPP objects MUST use the 11 octet 2902 representation. A user interface will provide a mapping between 2903 protocol dateTime values and displayable user-friendly words or 2904 presentation values and phrases which are localized to the natural 2905 language and date format of the user. 2907 4.1.17 'resolution' 2909 The 'resolution' attribute syntax specifies a two-dimensional 2910 resolution in the indicated units. It consists of 3 integers: a cross 2911 feed direction resolution (positive integer value), a feed direction 2912 resolution (positive integer value), and a units value. The semantics 2913 of these three components are taken from the Printer MIB [RFC1759] 2914 suggested values. That is, the cross feed direction component 2915 resolution component is the same as the 2916 prtMarkerAddressabilityXFeedDir object in the Printer MIB, the feed 2917 direction component resolution component is the same as the 2918 prtMarkerAddressabilityFeedDir in the Printer MIB, and the units 2919 component is the same as the prtMarkerAddressabilityUnit object in the 2920 Printer MIB (namely, '3' indicates dots per inch and '4' indicates 2921 dots per centimeter). All three values MUST be present even if the 2922 first two values are the same. Example: '300', '600', '3' indicates 2923 a 300 dpi cross-feed direction resolution, a 600 dpi feed direction 2924 resolution, since a '3' indicates dots per inch (dpi). 2926 Expires June 19, 1998 2927 4.1.18 '1setOf X' 2929 The '1setOf X' attribute syntax is 1 or more values of attribute 2930 syntax type X. This syntax type is used for multi-valued attributes. 2931 The syntax type is called '1setOf' rather than just 'setOf' as a 2932 reminder that the set of values SHALL NOT be empty (i.e., a set of 2933 size 0). Sets are normally unordered. However each attribute 2934 description of this type may specify that the values MUST be in a 2935 certain order for that attribute. 2937 4.2 Job Template Attributes 2939 Job Template attributes describe job processing behavior. Support for 2940 Job Template attributes by a Printer object is OPTIONAL (see section 2941 12.2.3 for a description of support for OPTIONAL attributes). Also, 2942 clients OPTIONALLY supply Job Template attributes in create requests. 2944 Job Template attributes conform to the following rules. For each Job 2945 Template attribute called "xxx": 2947 1. If the Printer object supports "xxx" then it SHALL support both 2948 a "xxx-default" attribute (unless there is a "No" in the table 2949 below) and a "xxx-supported" attribute. 2951 2. "xxx" is OPTIONALLY supplied by the client in a create request. 2952 If "xxx" is supplied, the client is indicating a desired job 2953 processing behavior for this Job. When "xxx" is not supplied, 2954 the client is indicating that the Printer object apply its 2955 default job processing behavior at job processing time if the 2956 document content does not contain an embedded instruction 2957 indicating an xxx-related behavior. 2959 Note: Since an administrator MAY change the default value 2960 attribute after a Job object has been submitted but before it has 2961 been processed, the default value used by the Printer object at 2962 job processing time may be different that the default value in 2963 effect at job submission time. 2965 3. The "xxx-supported" attribute is a Printer object attribute that 2966 describes which job processing behaviors are supported by that 2967 Printer object. A client can query the Printer object to find 2968 out what xxx-related behaviors are supported by inspecting the 2969 returned values of the "xxx-supported" attribute. 2971 Note: The "xxx" in each "xxx-supported" attribute name is 2972 singular, even though an "xxx-supported" attribute usually has 2973 more than one value, such as "job-sheet-supported", unless the 2975 Expires June 19, 1998 2976 "xxx" Job Template attribute is plural, such as "finishings" or 2977 "sides". In such cases the "xxx-supported" attribute names are: 2978 "finishings-supported" and "sides-supported". 2980 4. The "xxx-default" default value attribute describes what will be 2981 done at job processing time when no other job processing 2982 information is supplied by the client (either explicitly as an 2983 IPP attribute in the create request or implicitly as an embedded 2984 instruction within the document data). 2986 If an application wishes to present an end user with a list of 2987 supported values from which to choose, the application SHOULD query 2988 the Printer object for its supported value attributes. The 2989 application SHOULD also query the default value attributes. If the 2990 application then limits selectable values to only those value that are 2991 supported, the application can guarantee that the values supplied by 2992 the client in the create request all fall within the set of supported 2993 values at the Printer. When querying the Printer, the client MAY 2994 enumerate each attribute by name in the Get-Printer-Attributes 2995 Request, or the client MAY just name the "job-template" group in order 2996 to get the complete set of supported attributes (both supported and 2997 default attributes). 2999 The "finishings" attribute is an example of a Job Template attribute. 3000 It can take on a set of values such as 'staple', 'punch', and/or 3001 'cover'. A client can query the Printer object for the "finishings- 3002 supported" attribute and the "finishings-default" attribute. The 3003 supported attribute contains a set of supported values. The default 3004 value attribute contains the finishing value(s) that will be used for 3005 a new Job if the client does not supply a "finishings" attribute in 3006 the create request and the document data does not contain any 3007 corresponding finishing instructions. If the client does supply the 3008 "finishings" attribute in the create request, the IPP object validates 3009 the value or values to make sure that they are a subset of the 3010 supported values identified in the Printer object's "finishings- 3011 supported" attribute. See section 3.2.1.2. 3013 The table below summarizes the names and relationships for all Job 3014 Template attributes. The first column of the table (labeled "Job 3015 Attribute") shows the name and syntax for each Job Template attribute 3016 in the Job object. These are the attributes that can optionally be 3017 supplied by the client in a create request. The last two columns 3018 (labeled "Printer: Default Value Attribute" and "Printer: Supported 3019 Values Attribute") shows the name and syntax for each Job Template 3020 attribute in the Printer object (the default value attribute and the 3021 supported values attribute). A "No" in the table means the Printer 3022 SHALL NOT support the attribute (that is, the attribute is simply not 3024 Expires June 19, 1998 3025 applicable). For brevity in the table, the 'text' and 'name' entries 3026 do not show (MAX). 3028 Expires June 19, 1998 3029 +===================+======================+======================+ 3030 | Job Attribute |Printer: Default Value| Printer: Supported | 3031 | | Attribute | Values Attribute | 3032 +===================+======================+======================+ 3033 | job-priority | job-priority-default |job-priority-supported| 3034 | (integer 1:100) | (integer 1:100) |(integer 1:100) | 3035 +-------------------+----------------------+----------------------+ 3036 | job-hold-until | job-hold-until- |job-hold-until- | 3037 | (type4 keyword | | default | supported | 3038 | name) | (type4 keyword | |(1setOf | 3039 | | name) | type4 keyword | name)| 3040 +-------------------+----------------------+----------------------+ 3041 | job-sheets | job-sheets-default |job-sheets-supported | 3042 | (type4 keyword | | (type4 keyword | |(1setOf | 3043 | name) | name) | type4 keyword | name)| 3044 +-------------------+----------------------+----------------------+ 3045 |multiple-document- |multiple-document- |multiple-document- | 3046 | handling | handling-default |handling-supported | 3047 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 3048 +-------------------+----------------------+----------------------+ 3049 | copies | copies-default | copies-supported | 3050 | (integer (1:MAX)) | (integer (1:MAX)) | (integer (1:MAX)) | 3051 +-------------------+----------------------+----------------------+ 3052 | finishings | finishings-default | finishings-supported | 3053 |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | 3054 +-------------------+----------------------+----------------------+ 3055 | page-ranges | No | page-ranges- | 3056 | (1setOf | | supported (boolean) | 3057 | rangeOfInteger | | | 3058 | (1:MAX)) | | | 3059 +-------------------+----------------------+----------------------+ 3060 | sides | sides-default | sides-supported | 3061 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 3062 +-------------------+----------------------+----------------------+ 3063 | number-up | number-up-default | number-up-supported | 3064 | (integer (0:MAX)) | (integer (0:MAX)) |(1setOf integer | 3065 | | | (0:MAX) | | 3066 | | | rangeOfInteger | 3067 | | | (0:MAX)) | 3068 +-------------------+----------------------+----------------------+ 3069 | orientation | orientation-default | orientation- | 3070 | (type2 enum) | (type2 enum) | supported | 3071 | | | (1setOf type2 enum) | 3072 +-------------------+----------------------+----------------------+ 3073 | media | media-default | media-supported | 3074 | (type4 keyword | | (type4 keyword | |(1setOf | 3075 | name) | name) | type4 keyword | name)| 3076 | | | | 3078 Expires June 19, 1998 3079 | | | media-ready | 3080 | | |(1setOf | 3081 | | | type4 keyword | name)| 3082 +-------------------+----------------------+----------------------+ 3083 | printer-resolution| printer-resolution- | printer-resolution- | 3084 | (resolution) | default | supported | 3085 | | (resolution) |(1setOf resolution) | 3086 +-------------------+----------------------+----------------------+ 3087 | print-quality | print-quality-default| print-quality- | 3088 | (type2 enum) | (type2 enum) | supported | 3089 | | |(1setOf type2 enum) | 3090 +-------------------+----------------------+----------------------+ 3091 | compression | No | compression-supported| 3092 | (type3 keyword) | |(1setOf type3 keyword)| 3093 +-------------------+----------------------+----------------------+ 3094 | job-k-octets | No |job-k-octets-supported| 3095 | (integer (0:MAX)) | | (rangeOfInteger | 3096 | | | (0:MAX)) | 3097 +-------------------+----------------------+----------------------+ 3098 | job- | No | job-impressions- | 3099 | impressions | | supported | 3100 | (integer (0:MAX)) | | (rangeOfInteger | 3101 | | | (0:MAX)) | 3102 +-------------------+----------------------+----------------------+ 3103 | job-media- | No | job-media-sheets- | 3104 | sheets | | supported | 3105 | (integer (0:MAX)) | | (rangeOfInteger) | 3106 | | | (0:MAX)) | 3107 +-------------------+----------------------+----------------------+ 3109 4.2.1 job-priority (integer(1:100)) 3111 This attribute specifies a priority for scheduling the Job. A higher 3112 value specifies a higher priority. The value 1 indicates the lowest 3113 possible priority. The value 100 indicates the highest possible 3114 priority. Among those jobs that are ready to print, a Printer SHALL 3115 print all jobs with a priority value of n before printing those with a 3116 priority value of n-1 for all n. 3118 If the Printer object supports this attribute, it SHALL always support 3119 the full range from 1 to 100. No administrative restrictions are 3120 permitted. This way an end-user can always make full use of the 3121 entire range with any Printer object. If privileged jobs are 3122 implemented outside IPP/1.0, they SHALL have priorities higher than 3123 100, rather than restricting the range available to end-users. 3125 Expires June 19, 1998 3126 If the client does not supply this attribute and this attribute is 3127 supported by the Printer object, the Printer object SHALL use the 3128 value of the Printer object's "job-priority-default" at job submission 3129 time (unlike most Job Template attributes that are used if necessary 3130 at job processing time). 3132 The syntax for the "job-priority-supported" is also integer(1:100). 3133 This single integer value indicates the number of priority levels 3134 supported. The Printer object SHALL take the value supplied by the 3135 client and map it to the closest integer in a sequence of n integers 3136 values that are evenly distributed over the range from 1 to 100 using 3137 the formula: 3139 roundToNearestInt((100x+50)/n) 3141 where n is the value of "job-priority-supported" and x ranges from 0 3142 through n-1. 3144 For example, if n=1 the sequence of values is 50; if n=2, the 3145 sequence of values is: 25 and 75; if n = 3, the sequence of values 3146 is: 17, 50 and 83; if n = 10, the sequence of values is: 5, 15, 25, 3147 35, 45, 55, 65, 75, 85, and 95; if n = 100, the sequence of values 3148 is: 1, 2, 3, _ 100. 3150 If the value of the Printer object's "job-priority-supported" is 10 3151 and the client supplies values in the range 1 to 10, the Printer 3152 object maps them to 5, in the range 11 to 20, the Printer object maps 3153 them to 15, etc. 3155 4.2.2 job-hold-until (type4 keyword | name (MAX)) 3157 This attribute specifies the named time period during which the Job 3158 SHALL become a candidate for printing. 3160 Standard values for named time periods are: 3162 'no-hold': immediately, if there are not other reasons to hold the 3163 job 3164 'day-time': during the day 3165 'evening': evening 3166 'night': night 3167 'weekend': weekend 3168 'second-shift': second-shift (after close of business) 3169 'third-shift': third-shift (after midnight) 3171 Expires June 19, 1998 3173 An administrator SHALL associate allowable print times with a named 3174 time period (by means outside IPP/1.0). An administrator is 3175 encouraged to pick names that suggest the type of time period. An 3176 administrator MAY define additional values using the 'name' or 3177 'keyword' attribute syntax, depending on implementation. 3179 If the value of this attribute specifies a time period that is in the 3180 future, the Printer SHALL add the 'job-hold-until-specified' value to 3181 the job's "job-state-reasons" attribute, move the job to the 'pending- 3182 held' state, and SHALL NOT schedule the job for printing until the 3183 specified time-period arrives. When the specified time period 3184 arrives, the Printer SHALL remove the 'job-hold-until-specified' value 3185 from the job's "job-state-reason" attribute and, if there are no other 3186 job state reasons that keep the job in the 'pending-held' state, the 3187 Printer SHALL consider the job as a candidate for processing by moving 3188 the job to the 'pending' state. 3190 If this job attribute value is the named value 'no-hold', or the 3191 specified time period has already started, the job SHALL be a 3192 candidate for processing immediately. 3194 If the client does not supply this attribute and this attribute is 3195 supported by the Printer object, the Printer object SHALL use the 3196 value of the Printer object's "job-hold-until-default" at job 3197 submission time (unlike most Job Template attributes that are used if 3198 necessary at job processing time). 3200 4.2.3 job-sheets (type4 keyword | name(MAX)) 3202 This attribute determines which job start/end sheet(s), if any, SHALL 3203 be printed with a job. 3205 Standard values are: 3207 'none': no job sheet is printed 3208 'standard': one or more site specific standard job sheets are 3209 printed, e.g. a single start sheet or both start and end sheet is 3210 printed 3212 An administrator MAY define additional values using the 'name' or 3213 'keyword' attribute syntax, depending on implementation. 3215 Note: The effect of this attribute on jobs with multiple documents MAY 3216 be affected by the "multiple-document-handling" job attribute (section 3217 4.2.4), depending on the job sheet semantics. 3219 Expires June 19, 1998 3220 4.2.4 multiple-document-handling (type2 keyword) 3222 This attribute is relevant only if a job consists of two or more 3223 documents. The attribute controls finishing operations and the 3224 placement of one or more print-stream pages into impressions and onto 3225 media sheets. When the value of the "copies" attribute exceeds 1, it 3226 also controls the order in which the copies that result from 3227 processing the documents are produced. For the purposes of this 3228 explanations, if "a" represents an instance of document data, then the 3229 result of processing the data in document "a" is a sequence of media 3230 sheets represented by "a(*)". 3232 Standard values are: 3234 'single-document': If a Job object has multiple documents, say, the 3235 document data is called a and b, then the result of processing 3236 all the document data (a and then b) SHALL be treated as a single 3237 sequence of media sheets for finishing operations; that is, 3238 finishing would be performed on the concatenation of the 3239 sequences a(*),b(*). The Printer object SHALL NOT force the data 3240 in each document instance to be formatted onto a new print-stream 3241 page, nor to start a new impression on a new media sheet. If more 3242 than one copy is made, the ordering of the sets of media sheets 3243 resulting from processing the document data SHALL be a(*), b(*), 3244 a(*), b(*), ..., and the Printer object SHALL force each copy 3245 (a(*),b(*)) to start on a new media sheet. 3246 'separate-documents-uncollated-copies': If a Job object has 3247 multiple documents, say, the document data is called a and b, 3248 then the result of processing the data in each document instance 3249 SHALL be treated as a single sequence of media sheets for 3250 finishing operations; that is, the sets a(*) and b(*) would each 3251 be finished separately. The Printer object SHALL force each copy 3252 of the result of processing the data in a single document to 3253 start on a new media sheet. If more than one copy is made, the 3254 ordering of the sets of media sheets resulting from processing 3255 the document data SHALL be a(*), a(*), ..., b(*), b(*) ... . 3256 'separate-documents-collated-copies': If a Job object has multiple 3257 documents, say, the document data is called a and b, then the 3258 result of processing the data in each document instance SHALL be 3259 treated as a single sequence of media sheets for finishing 3260 operations; that is, the sets a(*) and b(*) would each be 3261 finished separately. The Printer object SHALL force each copy of 3262 the result of processing the data in a single document to start 3263 on a new media sheet. If more than one copy is made, the 3264 ordering of the sets of media sheets resulting from processing 3265 the document data SHALL be a(*), b(*), a(*), b(*), ... . 3267 Expires June 19, 1998 3269 The 'single-document' value is the same as 'separate-documents- 3270 collated-copies' with respect to ordering of print-stream pages, but 3271 not media sheet generation, since 'single-document' will put the first 3272 page of the next document on the back side of a sheet if an odd number 3273 of pages have been produced so far for the job, while 'separate- 3274 documents-collated-copies' always forces the next document or document 3275 copy on to a new sheet. In addition, if the _finishings_ attribute 3276 specifies `staple', then with 'single-document', documents a and b are 3277 stapled together as a single document, but with 'separate-documents- 3278 uncollated-copies' and 'separate-documents-collated-copies', documents 3279 a and b are stapled separately. 3281 Note: None of these values provide means to produce uncollated sheets 3282 within a document, i.e., where multiple copies of sheet n are produced 3283 before sheet n+1 of the same document. 3285 The relationship of this attribute and the other attributes that 3286 control document processing is described in section 15.5. 3288 4.2.5 copies (integer(1:MAX)) 3290 This attribute specifies the number of copies to be printed. 3292 On many devices the supported number of collated copies will be 3293 limited by the number of physical output bins on the device, and may 3294 be different from the number of uncollated copies which can be 3295 supported. 3297 Note: The effect of this attribute on jobs with multiple documents is 3298 controlled by the "multiple-document-handling" job attribute (section 3299 4.2.4) and the relationship of this attribute and the other attributes 3300 that control document processing is described in section 15.5. 3302 4.2.6 finishings (1setOf type2 enum) 3304 This attribute identifies the finishing operations that the Printer 3305 uses for each copy of each printed document in the Job. For Jobs with 3306 multiple documents, the "multiple-document-handling" attribute 3307 determines what constitutes a "copy" for purposes of finishing. 3309 Standard values are: 3311 Value Symbolic Name and Description 3313 '3' 'none': Perform no finishing 3315 Expires June 19, 1998 3316 '4' 'staple': Bind the document(s) with one or more staples. 3317 The exact number and placement of the staples is site- 3318 defined. 3319 '5' 'punch': This value indicates that holes are required in 3320 the finished document. The exact number and placement 3321 of the holes is site-defined The punch specification 3322 MAY be satisfied (in a site- and implementation- 3323 specific manner) either by drilling/punching, or by 3324 substituting pre-drilled media. 3325 '6' 'cover': This value is specified when it is desired to 3326 select a non-printed (or pre-printed) cover for the 3327 document. This does not supplant the specification of a 3328 printed cover (on cover stock medium) by the document 3329 itself. 3330 '7' 'bind': This value indicates that a binding is to be 3331 applied to the document; the type and placement of the 3332 binding is site-defined." 3334 Note: The effect of this attribute on jobs with multiple documents is 3335 controlled by the "multiple-document-handling" job attribute (section 3336 4.2.4) and the relationship of this attribute and the other attributes 3337 that control document processing is described in section 15.5. 3339 If the client supplies a value of 'none' along with any other 3340 combination of values, it is the same as if only that other 3341 combination of values had been supplied (that is the 'none' value has 3342 no effect). 3344 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 3346 This attribute identifies the range(s) of print-stream pages that the 3347 Printer object uses for each copy of each document which are to be 3348 printed. Nothing is printed for any pages identified that do not 3349 exist in the document(s). Ranges SHALL be in ascending order, for 3350 example: 1-3, 5-7, 15-19 and SHALL NOT overlap, so that a non-spooling 3351 Printer object can process the job in a single pass. If the ranges 3352 are not ascending or are overlapping, the IPP object SHALL reject the 3353 request and return the 'client-error-bad-request' status code. 3355 For Jobs with multiple documents, the "multiple-document-handling" 3356 attribute determines what constitutes a "copy" for purposes of the 3357 specified page range(s). When "multiple-document-handling" is 3358 'single-document', the Printer object SHALL apply each supplied page 3359 range once to the concatenation of the print-stream pages. For 3360 example, if there are 8 documents of 10 pages each, the page-range 3361 '41:60' prints the pages in the 5th and 6th documents as a single 3362 document and none of the pages of the other documents are printed. 3364 Expires June 19, 1998 3365 When "multiple-document-handling" is 'separate-document-uncollated- 3366 copies' or 'separate-document-collated-copies', the Printer object 3367 SHALL apply each supplied page range repeatedly to each document copy. 3368 For the same job, the page-range '1:3, 10:10' would print the first 3 3369 pages and the 10th page of each of the 8 documents in the Job, as 8 3370 separate documents. 3372 In most cases, the exact pages to be printed will be generated by a 3373 device driver and this attribute would not be required. However, when 3374 printing an archived document which has already been formatted, the 3375 end user may elect to print just a subset of the pages contained in 3376 the document. In this case, if page-range = n.m is specified, the 3377 first page to be printed will be page n. All subsequent pages of the 3378 document will be printed through and including page m. 3380 "page-ranges-supported" is a boolean value indicating whether or not 3381 the printer is capable of supporting the printing of page ranges. 3382 This capability may differ from one PDL to another. There is no "page- 3383 ranges-default" attribute. If the "page-ranges" attribute is not 3384 supplied by the client, all pages of the document will be printed. 3386 Note: The effect of this attribute on jobs with multiple documents is 3387 controlled by the "multiple-document-handling" job attribute (section 3388 4.2.4) and the relationship of this attribute and the other attributes 3389 that control document processing is described in section 15.5. 3391 4.2.8 sides (type2 keyword) 3393 This attribute specifies how print-stream pages are to be imposed upon 3394 the sides of an instance of a selected medium, i.e., an impression. 3396 The standard values are: 3398 'one-sided': imposes each consecutive print-stream page upon the 3399 same side of consecutive media sheets. 3400 'two-sided-long-edge': imposes each consecutive pair of print- 3401 stream pages upon front and back sides of consecutive media 3402 sheets, such that the orientation of each pair of print-stream 3403 pages on the medium would be correct for the reader as if for 3404 binding on the long edge. This imposition is sometimes called 3405 'duplex' or 'head-to-head'. 3406 'two-sided-short-edge': imposes each consecutive pair of print- 3407 stream pages upon front and back sides of consecutive media 3408 sheets, such that the orientation of each pair of print-stream 3409 pages on the medium would be correct for the reader as if for 3410 binding on the short edge. This imposition is sometimes called 3411 'tumble' or 'head-to-toe'. 3413 Expires June 19, 1998 3415 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 3416 all work the same for portrait or landscape. However 'head-to-toe' is 3417 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 3418 switches between 'duplex' and 'tumble' when using portrait and 3419 landscape modes. 3421 Note: The effect of this attribute on jobs with multiple documents is 3422 controlled by the "multiple-document-handling" job attribute (section 3423 4.2.4) and the relationship of this attribute and the other attributes 3424 that control document processing is described in section 15.5. 3426 4.2.9 number-up (integer(1:MAX)) 3428 This attribute specifies the number of print-stream pages to impose 3429 upon a single side of an instance of a selected medium. For example, 3430 if the value is 3432 Value Description 3434 '1' The Printer SHALL place one print-stream page on a single 3435 side of an instance of the selected medium (MAY add 3436 some sort of translation, scaling, or rotation). 3437 '2' The Printer SHALL place two print-stream pages on a single 3438 side of an instance of the selected medium (MAY add 3439 some sort of translation, scaling, or rotation). 3440 '4' The Printer SHALL place four print-stream pages on a single 3441 side of an instance of the selected medium (MAY add 3442 some sort of translation, scaling, or rotation). 3444 This attribute primarily controls the translation, scaling and 3445 rotation of print-stream pages. 3447 Note: The effect of this attribute on jobs with multiple documents is 3448 controlled by the "multiple-document-handling" job attribute (section 3449 4.2.4) and the relationship of this attribute and the other attributes 3450 that control document processing is described in section 15.5. 3452 4.2.10 orientation (type2 enum) 3454 This attribute specifies the orientation of the content of the print- 3455 stream pages to be printed. In most cases, the orientation of the 3456 content is specified within the document format generated by the 3457 device driver at print time. However, some document formats (such as 3458 'text/plain') do not support the notion of page orientation, and it is 3459 possible to bind the orientation after the document content has been 3461 Expires June 19, 1998 3462 generated. This attribute provides an end user with the means to 3463 specify orientation for such documents. 3465 Standard values are: 3467 Value Symbolic Name and Description 3469 '1' 'portrait': The content will be imaged across the short 3470 edge of the medium. 3471 '2' 'landscape': The content will be imaged across the long 3472 edge of the medium. Landscape is defined to be a 3473 rotation of the print-stream page to be imaged by +90 3474 degrees with respect to the medium (i.e. anti- 3475 clockwise) from the portrait orientation. Note: The 3476 +90 direction was chosen because simple finishing on 3477 the long edge is the same edge whether portrait or 3478 landscape 3479 '3' 'reverse-landscape': The content will be imaged across the 3480 long edge of the medium. Reverse-landscape is defined 3481 to be a rotation of the print-stream page to be imaged 3482 by -90 degrees with respect to the medium (i.e. 3483 clockwise) from the portrait orientation. Note: The 3484 'reverse-landscape' value was added because some 3485 applications rotate landscape -90 degrees from 3486 portrait, rather than +90 degrees. 3488 Note: The effect of this attribute on jobs with multiple documents is 3489 controlled by the "multiple-document-handling" job attribute (section 3490 4.2.4) and the relationship of this attribute and the other attributes 3491 that control document processing is described in section 15.5. 3493 4.2.11 media (type4 keyword | name(MAX)) 3495 This attribute identifies the medium that the Printer uses for all 3496 impressions of the Job. 3498 The values for "media" include medium-names, medium-sizes, input-trays 3499 and electronic forms so that one attribute specifies the media. If a 3500 Printer object supports a medium name as a value of this attribute, 3501 such a medium name implicitly selects an input-tray that contains the 3502 specified medium. If a Printer object supports a medium size as a 3503 value of this attribute, such a medium size implicitly selects a 3504 medium name that in turn implicitly selects an input-tray that 3505 contains the medium with the specified size. If a Printer object 3506 supports an input-tray as the value of this attribute, such an input- 3507 tray implicitly selects the medium that is in that input-tray at the 3508 time the job prints. This case includes manual-feed input-trays. If 3510 Expires June 19, 1998 3511 a Printer object supports an electronic form as the value of this 3512 attribute, such an electronic form implicitly selects a medium-name 3513 that in turn implicitly selects an input-tray that contains the medium 3514 specified by the electronic form. The electronic form also implicitly 3515 selects an image that the Printer SHALL merge with the document data 3516 as its prints each page. 3518 Standard values are (taken from ISO DPA and the Printer MIB) and are 3519 listed in section 14. An administrator MAY define additional values 3520 using the 'name' or 'keyword' attribute syntax, depending on 3521 implementation. 3523 There is also an additional Printer attribute named "media-ready" 3524 which differs from "media-supported" in that legal values only include 3525 the subset of "media-supported" values that are physically loaded and 3526 ready for printing with no operator intervention required. If an IPP 3527 object supports "media-supported", it NEED NOT support "media-ready". 3529 The relationship of this attribute and the other attributes that 3530 control document processing is described in section 15.5. 3532 4.2.12 printer-resolution (resolution) 3534 This attribute identifies the resolution that Printer uses for the 3535 Job. 3537 4.2.13 print-quality (type2 enum) 3539 This attribute specifies the print quality that the Printer uses for 3540 the Job. 3542 The standard values are: 3544 Value Symbolic Name and Description 3546 '3' 'draft': lowest quality available on the printer 3547 '4' 'normal': normal or intermediate quality on the printer 3548 '5' 'high': highest quality available on the printer 3550 4.3 Job Description Attributes 3552 The attributes in this section form the attribute group called "job- 3553 description". The following table summarizes these attributes. The 3554 third column indicates whether the attribute is a MANDATORY attribute 3556 Expires June 19, 1998 3557 that MUST be supported by Printer objects. If it is not indicated as 3558 MANDATORY, then it is OPTIONAL. The maximum size in octets for 'text' 3559 and 'name' attributes is indicated in parenthesizes. 3561 Expires June 19, 1998 3562 +----------------------------+----------------------+----------------+ 3563 | Attribute | Syntax | MANDATORY? | 3564 +----------------------------+----------------------+----------------+ 3565 | job-uri | uri | MANDATORY | 3566 +----------------------------+----------------------+----------------+ 3567 | job-id | integer(1:MAX) | MANDATORY | 3568 +----------------------------+----------------------+----------------+ 3569 | job-more-info | uri | | 3570 +----------------------------+----------------------+----------------+ 3571 | job-name | name (MAX) | MANDATORY | 3572 +----------------------------+----------------------+----------------+ 3573 | job-originating-user-name | name (MAX) | MANDATORY | 3574 +----------------------------+----------------------+----------------+ 3575 | job-state | type1 enum | MANDATORY | 3576 +----------------------------+----------------------+----------------+ 3577 | job-state-reasons | 1setOf type2 keyword | | 3578 +----------------------------+----------------------+----------------+ 3579 | job-state-message | text (MAX) | | 3580 +----------------------------+----------------------+----------------+ 3581 | number-of-documents | integer (0-MAX) | | 3582 +----------------------------+----------------------+----------------+ 3583 | containing-printer-uri | uri | MANDATORY | 3584 +----------------------------+----------------------+----------------+ 3585 | output-device-assigned | name (127) | | 3586 +----------------------------+----------------------+----------------+ 3587 | time-at-creation | integer (0:MAX) | | 3588 +----------------------------+----------------------+----------------+ 3589 | time-at-processing | integer (0:MAX) | | 3590 +----------------------------+----------------------+----------------+ 3591 | time-at-completed | integer (0:MAX) | | 3592 +----------------------------+----------------------+----------------+ 3593 | number-of-intervening-jobs | integer (0:MAX) | | 3594 +----------------------------+----------------------+----------------+ 3595 | job-message-from-operator | text (127) | | 3596 +----------------------------+----------------------+----------------+ 3597 | compression | type3 keyword | | 3598 +----------------------------+----------------------+----------------+ 3599 | job-k-octets | integer (0:MAX) | | 3600 +----------------------------+----------------------+----------------+ 3601 | job-impressions | integer (0:MAX) | | 3602 +----------------------------+----------------------+----------------+ 3603 | job-media-sheets | integer (0:MAX) | | 3604 +----------------------------+----------------------+----------------+ 3605 | job-k-octets-processed | integer (0:MAX) | | 3606 +----------------------------+----------------------+----------------+ 3607 | job-impressions-completed | integer (0:MAX) | | 3608 +----------------------------+----------------------+----------------+ 3609 | job-media-sheets-completed | integer (0:MAX) | | 3611 Expires June 19, 1998 3612 +----------------------------+----------------------+----------------+ 3613 | attributes-charset | charset | MANDATORY | 3614 +----------------------------+----------------------+----------------+ 3615 | attributes-natural-language| naturalLanguage | MANDATORY | 3616 +----------------------------+----------------------+----------------+ 3618 4.3.1 job-uri (uri) 3620 This MANDATORY attribute contains the URI for the job. The Printer 3621 object, on receipt of a new job, generates a URI which identifies the 3622 new Job on that Printer object. The Printer object returns the value 3623 of the "job-uri" attribute as part of the response to a create 3624 request. The precise format of a Job URI is implementation dependent. 3626 For a description of this attribute and its relationship to the 3627 following "job-id" attribute, see the discussion in section 2.4 on 3628 "Object Identity". 3630 4.3.2 job-id (integer(1:MAX)) 3632 This MANDATORY attribute contains the ID of the job. The Printer, on 3633 receipt of a new job, generates an ID which identifies the new Job on 3634 that Printer. The Printer returns the value of the "job-id" attribute 3635 as part of the response to a create request. The 0 value is not used 3636 for compatibility with SNMP index values which cannot be 0. 3638 For a description of this attribute and its relationship to the 3639 previous "job-uri" attribute, see the discussion in section 2.4 on 3640 "Object Identity". 3642 4.3.3 job-more-info (uri) 3644 Similar to "printer-more-info", this attribute contains the URI 3645 referencing some resource with more information about this Job object, 3646 perhaps an HTML page containing information about the Job. 3648 4.3.4 job-name (name(MAX)) 3650 This MANDATORY attribute is the name of the job. It is a name that is 3651 more user friendly than the "job-uri" attribute value. It does not 3652 need to be unique between Jobs. The Job's "job-name" attribute is set 3653 to the value supplied by the client in the "job-name" operation 3654 attribute in the create request (see Section 3.2.1.1). If, however, 3656 Expires June 19, 1998 3657 the "job-name" operation attribute is not supplied by the client in 3658 the create request, the Printer object, on creation of the Job, SHALL 3659 generate a name. The printer SHOULD generate the value of the Job's 3660 "job-name" attribute from the first of the following sources that 3661 produces a value: 1) the "document-name" operation attribute of the 3662 first (or only) document, 2) the "document-URI" attribute of the first 3663 (or only) document, or 3) any other piece of Job specific and/or 3664 Document Content information. 3666 4.3.5 job-originating-user-name (name(MAX)) 3668 This MANDATORY attribute contains the name of the end user that 3669 submitted the print job. The Printer object sets this attribute to 3670 the most authenticated printable name that it can obtain from the 3671 authentication service over which the IPP operation was received. 3672 Only if such is not available, does the Printer object use the value 3673 supplied by the client in the "requesting-user-name" operation 3674 attribute of the create operation (see Section 8). 3676 Note: The Printer object needs to keep an internal originating user 3677 id of some form, typically as a credential of a principal, with the 3678 Job object. Since such an internal attribute is implementation- 3679 dependent and not of interest to clients, it is not specified as a Job 3680 Description attribute. This originating user id is used for 3681 authorization checks (if any) on all subsequent operation. 3683 4.3.6 job-state (type1 enum) 3685 This MANDATORY attribute identifies the current state of the job. 3686 Even though the IPP protocol defines eight values for job states, 3687 implementations only need to support those states which are 3688 appropriate for the particular implementation. In other words, a 3689 Printer supports only those job states implemented by the output 3690 device and available to the Printer object implementation. 3692 Standard values are: 3694 Values Symbolic Name and Description 3696 '3' 'pending': The job is a candidate to start processing, but 3697 is not yet processing. 3699 '4' 'pending-held': The job is not a candidate for processing 3700 for any number of reasons but will return to the 3701 'pending' state as soon as the reasons are no longer 3702 present. The job's "job-state-reason" attribute SHALL 3704 Expires June 19, 1998 3705 indicate why the job is no longer a candidate for 3706 processing. 3708 '5' 'processing': One or more of: 3710 1. the job is using, or is attempting to use, one or 3711 more purely software processes that are analyzing, 3712 creating, or interpreting a PDL, etc., 3713 2. the job is using, or is attempting to use, one or 3714 more hardware devices that are interpreting a PDL, 3715 making marks on a medium, and/or performing finishing, 3716 such as stapling, etc., 3717 3. the Printer object has made the job ready for 3718 printing, but the output device is not yet printing it, 3719 either because the job hasn't reached the output device 3720 or because the job is queued in the output device or 3721 some other spooler, awaiting the output device to print 3722 it. 3724 When the job is in the 'processing' state, the entire 3725 job state includes the detailed status represented in 3726 the printer's "printer-state", "printer-state-reasons", 3727 and "printer-state-message" attributes. 3728 Implementations MAY, though they NEED NOT, include 3729 additional values in the job's "job-state-reasons" 3730 attribute to indicate the progress of the job, such as 3731 adding the 'job-printing' value to indicate when the 3732 output device is actually making marks on paper and/or 3733 the 'processing-to-stop-point' value to indicate that 3734 the IPP object is in the process of canceling or 3735 aborting the job. Most implementations won't bother 3736 with this nuance. 3738 '6' 'processing-stopped': The job has stopped while processing 3739 for any number of reasons and will return to the 3740 'processing' state as soon as the reasons are no longer 3741 present. 3743 The job's "job-state-reason" attribute MAY indicate why 3744 the job has stopped processing. For example, if the 3745 output device is stopped, the 'printer-stopped' value 3746 MAY be included in the job's "job-state-reasons" 3747 attribute. 3749 Note: When an output device is stopped, the device 3750 usually indicates its condition in human readable form 3751 locally at the device. A client can obtain more 3752 complete device status remotely by querying the Printer 3754 Expires June 19, 1998 3755 object's "printer-state", "printer-state-reasons" and 3756 "printer-state-message" attributes. 3758 '7' 'canceled': The job has been canceled by a Cancel-Job 3759 operation and the Printer object has completed 3760 canceling the job and all job status attributes have 3761 reached their final values for the job. While the 3762 Printer object is canceling the job, the job remains in 3763 its current state, but the job's "job-state-reasons" 3764 attribute SHOULD contain the 'processing-to-stop-point' 3765 value and one of the 'canceled-by-user', 'canceled-by- 3766 operator', or 'canceled-at-device' value. When the job 3767 moves to the 'canceled' state, the 'processing-to- 3768 stop-point' value, if present, SHALL be removed, but 3769 the `canceled-by-xxx', if present, SHALL remain. 3771 '8' 'aborted': The job has been aborted by the system, usually 3772 while the job was in the 'processing' or 'processing- 3773 stopped' state and the Printer has completed aborting 3774 the job and all job status attributes have reached 3775 their final values for the job. While the Printer 3776 object is aborting the job, the job remains in its 3777 current state, but the job's "job-state-reasons" 3778 attribute SHOULD contain the 'processing-to-stop-point' 3779 and 'aborted-by-system' values. When the job moves to 3780 the 'aborted' state, the 'processing-to-stop-point' 3781 value, if present, SHALL be removed, but the 'aborted- 3782 by-system' value, if present, SHALL remain. 3784 '9' 'completed': The job has completed successfully or with 3785 warnings or errors after processing and all of the job 3786 media sheets have been successfully stacked in the 3787 appropriate output bin(s) and all job status attributes 3788 have reached their final values for the job. The job's 3789 "job-state-reasons" attribute SHOULD contain one of: 3790 'completed-successfully', 'completed-with-warnings', or 3791 'completed-with-errors' values. 3793 The final value for this attribute SHALL be one of: 'completed', 3794 'canceled', or 'aborted' before the Printer removes the job 3795 altogether. The length of time that jobs remain in the 'canceled', 3796 'aborted', and 'completed' states depends on implementation. 3798 The following figure shows the normal job state transitions. 3800 Expires June 19, 1998 3801 +----> canceled 3802 / 3803 +----> pending --------> processing ---------+------> completed 3804 | ^ ^ \ 3805 --->+ | | +----> aborted 3806 | v v / 3807 +----> pending-held processing-stopped ---+ 3809 Normally a job progresses from left to right. Other state transitions 3810 are unlikely, but are not forbidden. Not shown are the transitions to 3811 the 'canceled' state from the 'pending', 'pending-held', and 3812 'processing-stopped' states. 3814 Jobs reach one of the three terminal states: 'completed', 'canceled', 3815 or 'aborted', after the jobs have completed all activity, including 3816 stacking output media, after the jobs have completed all activity, and 3817 all job status attributes have reached their final values for the job. 3819 4.3.7 job-state-reasons (1setOf type2 keyword) 3821 This attribute provides additional information about the job's current 3822 state, i.e., information that augments the value of the job's "job- 3823 state" attribute. 3825 Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT 3826 implement them, even if (1) the output device supports the 3827 functionality represented by the reason and (2) is available to the 3828 Printer object implementation. These values MAY be used with any job 3829 state or states for which the reason makes sense. Furthermore, when 3830 implemented, the Printer SHALL return these values when the reason 3831 applies and SHALL NOT return them when the reason no longer applies 3832 whether the value of the Job's "job-state" attribute changed or not. 3833 When the Job does not have any reasons for being in its current state, 3834 the value of the Job's "job-state-reasons" attribute SHALL be 'none'. 3836 Note: While values cannot be added to the 'job-state' attribute 3837 without impacting deployed clients that take actions upon receiving 3838 "job-state" values, it is the intent that additional "job-state- 3839 reasons" values can be defined and registered without impacting such 3840 deployed clients. In other words, the "job-state-reasons" attribute 3841 is intended to be extensible. 3843 The following standard values are defined. For ease of understanding, 3844 the values are presented in the order in which the reasons are likely 3845 to occur (if implemented), starting with the 'job-incoming' value: 3847 'none': There are no reasons for the job's current state. 3849 Expires June 19, 1998 3850 'job-incoming': The CreateJob operation has been accepted by the 3851 Printer, but the Printer is expecting additional Send-Document 3852 and/or Send-URI operations and/or is accessing/accepting document 3853 data. 3854 'submission-interrupted': The job was not completely submitted for 3855 some unforeseen reason, such as: (1) the Printer has crashed 3856 before the job was closed by the client, (2) the Printer or the 3857 document transfer method has crashed in some non-recoverable way 3858 before the document data was entirely transferred to the Printer, 3859 (3) the client crashed or failed to close the job before the 3860 time-out period. 3861 'job-outgoing': The Printer is transmitting the job to the output 3862 device. 3863 'job-hold-until-specified': The value of the job's "job-hold- 3864 until" attribute was specified with a time period that is still 3865 in the future. The job SHALL NOT be a candidate for processing 3866 until this reason is removed and there are no other reasons to 3867 hold the job. 3868 'resources-are-not-ready': At least one of the resources needed by 3869 the job, such as media, fonts, resource objects, etc., is not 3870 ready on any of the physical printer's for which the job is a 3871 candidate. This condition MAY be detected when the job is 3872 accepted, or subsequently while the job is pending or processing, 3873 depending on implementation. The job may remain in its current 3874 state or be moved to the 'pending-held' state, depending on 3875 implementation and/or job scheduling policy. 3876 'printer-stopped-partly': The value of the Printer's "printer- 3877 state-reasons" attribute contains the value 'stopped-partly'. 3878 'printer-stopped': The value of the Printer's "printer-state" 3879 attribute is 'stopped'. 3880 'job-interpreting': Job is in the 'processing' state, but more 3881 specifically, the Printer is interpreting the document data. 3882 'job-queued': Job is in the 'processing' state, but more 3883 specifically, the Printer has queued the document data. 3884 'job-transforming': Job is in the 'processing' state, but more 3885 specifically, the Printer is interpreting document data and 3886 producing another electronic representation. 3887 'job-printing': The output device is marking media. This value is 3888 useful for Printers which spend a great deal of time processing 3889 (1) when no marking is happening and then want to show that 3890 marking is now happening or (2) when the job is in the process of 3891 being canceled or aborted while the job remains in the 3892 'processing' state, but the marking has not yet stopped so that 3893 impression or sheet counts are still increasing for the job. 3894 'job-canceled-by-user': The job was canceled by the owner of the 3895 job using the Cancel-Job request, i.e., by a user whose 3896 authenticated identity is the same as the value of the 3897 originating user that created the Job object, or by some other 3899 Expires June 19, 1998 3900 authorized end-user, such as a member of the job owner's security 3901 group. 3902 'job-canceled-by-operator': The job was canceled by the operator 3903 using the Cancel-Job request, i.e., by a user who has been 3904 authenticated as having operator privileges (whether local or 3905 remote). If the security policy is to allow anyone to cancel 3906 anyone's job, then this value may be used when the job is 3907 canceled by other than the owner of the job. For such a security 3908 policy, in effect, everyone is an operator as far as canceling 3909 jobs with IPP is concerned. 3910 'job-canceled-at-device': The job was canceled by an unidentified 3911 local user, i.e., a user at a console at the device. 3912 'aborted-by-system': The job (1) is in the process of being 3913 aborted, (2) has been aborted by the system and placed in the 3914 'aborted' state, or (3) has been aborted by the system and placed 3915 in the 'pending-held' state, so that a user or operator can 3916 manually try the job again. 3917 'processing-to-stop-point': The requester has issued a Cancel-job 3918 operation or the Printer object has aborted the job, but is still 3919 performing some actions on the job until a specified stop point 3920 occurs or job termination/cleanup is completed. 3922 This reason is recommended to be used in conjunction with the 3923 'processing' job state to indicate that the Printer object is 3924 still performing some actions on the job while the job remains in 3925 the 'processing' state. After all the job's job description 3926 attributes have stopped incrementing, the Printer object moves 3927 the job from the 'processing' state to the 'canceled' or 3928 'aborted' job states. 3930 'service-off-line': The Printer is off-line and accepting no jobs. 3931 All 'pending' jobs are put into the 'pending-held' state. This 3932 situation could be true if the service's or document transform's 3933 input is impaired or broken. 3934 'job-completed-successfully': The job completed successfully. 3935 'job-completed-with-warnings': The job completed with warnings. 3936 'job-completed-with-errors': The job completed with errors (and 3937 possibly warnings too). 3939 4.3.8 job-state-message (text(MAX)) 3941 This attribute specifies information about the "job-state" and "job- 3942 state-reasons" attributes in human readable text. If the Printer 3943 object supports this attribute, the Printer object SHALL be able to 3944 generate this message in any of the natural languages identified by 3945 the Printer's "generated-natural-language-supported" attribute (see 3947 Expires June 19, 1998 3948 the "attributes-natural-language" operation attribute specified in 3949 Section 3.1.3.1). 3951 Note: the value SHOULD NOT contain additional information not 3952 contained in the values of the "job-state" and "job-states-reasons" 3953 attributes, such as interpreter error information. Otherwise, 3954 application programs might attempt to parse the (localized text). For 3955 such additional information such as interpreter errors for application 3956 program consumption, a new attribute with keyword values, needs to be 3957 developed and registered. 3959 4.3.9 number-of-documents (integer(0:MAX)) 3961 This attribute indicates the number of documents in the job, i.e., the 3962 number of Send-Document, Send-URI, Print-Job, or Print-URI operations 3963 that the Printer has accepted for this job, regardless of whether the 3964 document data has reached the Printer object or not. 3966 Implementations supporting the OPTIONAL Create-Job/Send-Document/Send- 3967 URI operations SHOULD support this attribute so that clients can query 3968 the number of documents in each job. 3970 4.3.10 containing-printer-uri (uri) 3972 This MANDATORY attribute identifies the Printer object that contains 3973 this Job object, i.e., the URI of the Printer object to which the job 3974 was submitted. This attribute permits a client to query the Printer 3975 object to which the job was submitted given only the Job URI. 3977 4.3.11 output-device-assigned (name(127)) 3979 This attribute identifies the output device to which the Printer 3980 object has assigned this job. If an output device implements an 3981 embedded Printer object, the Printer object NEED NOT set this 3982 attribute. If a print server implements a Printer object, the value 3983 MAY be empty (zero-length string) or not returned until the Printer 3984 object assigns an output device to the job. This attribute is 3985 particularly useful when a single Printer object support multiple 3986 devices (so called "fan-out"). 3988 4.3.12 time-at-creation (integer(0:MAX)) 3990 This attribute indicates the point in time at which the Job object was 3991 created. In order to populate this attribute, the Printer object uses 3993 Expires June 19, 1998 3994 the value in its "printer-up-time" attribute at the time the Job 3995 object is created. 3997 4.3.13 time-at-processing (integer(0:MAX)) 3999 This attribute indicates the point in time at which the Job object 4000 began processing. In order to populate this attribute, the Printer 4001 object uses the value in its "printer-up-time" attribute at the time 4002 the Job object is moved into the 'processing' state for the first 4003 time. 4005 4.3.14 time-at-completed (integer(0:MAX)) 4007 This attribute indicates the point in time at which the Job object 4008 completed (or was cancelled or aborted). In order to populate this 4009 attribute, the Printer object uses the value in its "printer-up-time" 4010 attribute at the time the Job object is moved into the 'completed' or 4011 'canceled' or 'aborted' state. 4013 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 4015 This attribute indicates the number of jobs that are "ahead" of this 4016 job in the relative chronological order of expected time to complete 4017 (i.e., the current scheduled order). For efficiency, it is only 4018 necessary to calculate this value when an operation is performed that 4019 requests this attribute. 4021 4.3.16 job-message-from-operator (text(127)) 4023 This attribute provides a message from an operator, system 4024 administrator or "intelligent" process to indicate to the end user the 4025 reasons for modification or other management action taken on a job. 4027 4.3.17 compression (type3 keyword) 4029 This attribute identifies the compression algorithm used on the 4030 document data. The value of this attribute does not apply to the 4031 encoding of the IPP operation itself. 4033 Standard values are : 4035 'none': no compression is used. 4037 Expires June 19, 1998 4038 'deflate': ZIP public domain inflate/deflate) compression 4039 technology 4040 `gzip' GNU zip compression technology described in RFC 1952. 4041 'compress': UNIX compression technology 4043 4.3.18 job-k-octets (integer(0:MAX)) 4045 This attribute specifies the total size of the document(s) in K 4046 octets, i.e., in units of 1024 octets requested to be processed in the 4047 job. The value SHALL be rounded up, so that a job between 1 and 1024 4048 octets SHALL be indicated as being 1, 1025 to 2048 SHALL be 2, etc. 4050 This value SHALL not include the multiplicative factors contributed by 4051 the number of copies specified by the "copies" attribute, independent 4052 of whether the device can process multiple copies without making 4053 multiple passes over the job or document data and independent of 4054 whether the output is collated or not. Thus the value is independent 4055 of the implementation and indicates the size of the document(s) 4056 measured in K octets independent of the number of copies. 4058 This value SHALL also not include the multiplicative factor due to a 4059 copies instruction embedded in the document data. If the document 4060 data actually includes replications of the document data, this value 4061 will include such replication. In other words, this value is always 4062 the size of the source document data, rather than a measure of the 4063 hardcopy output to be produced. 4065 Note: This attribute and the following two attributes ("job- 4066 impressions" and "job-media-sheets") are not intended to be counters; 4067 they are intended to be useful routing and scheduling information if 4068 known. For these three attributes, the Printer object may try to 4069 compute the value if it is not supplied in the create request. Even 4070 if the client does supply a value for these three attributes in the 4071 create request, the Printer object MAY choose to change the value if 4072 the Printer object is able to compute a value which is more accurate 4073 than the client supplied value. The Printer object may be able to 4074 determine the correct value for these three attributes either right at 4075 job submission time or at any later point in time. 4077 4.3.19 job-impressions (integer(0:MAX)) 4079 This attribute specifies the total size in number of impressions of 4080 the document(s) being submitted. 4082 As with "job-k-octets", this value SHALL not include the 4083 multiplicative factors contributed by the number of copies specified 4085 Expires June 19, 1998 4086 by the "copies" attribute, independent of whether the device can 4087 process multiple copies without making multiple passes over the job or 4088 document data and independent of whether the output is collated or 4089 not. Thus the value is independent of the implementation and reflects 4090 the size of the document(s) measured in impressions independent of the 4091 number of copies. 4093 As with "job-k-octets", this value SHALL also not include the 4094 multiplicative factor due to a copies instruction embedded in the 4095 document data. If the document data actually includes replications of 4096 the document data, this value will include such replication. In other 4097 words, this value is always the number of impressions in the source 4098 document data, rather than a measure of the number of impressions to 4099 be produced by the job. 4101 See the Note in the "job-k-octets" attribute that also applies to this 4102 attribute. 4104 4.3.20 job-media-sheets (integer(0:MAX)) 4106 This attribute specifies the total number of media sheets to be 4107 produced for this job. 4109 Unlike the "job-k-octets" and the "job-impressions" attributes, this 4110 value SHALL include the multiplicative factors contributed by the 4111 number of copies specified by the "copies" attribute and a 'number of 4112 copies' instruction embedded in the document data, if any. This 4113 difference allows the system administrator to control the lower and 4114 upper bounds of both (1) the size of the document(s) with "job-k- 4115 octets-supported" and "job-impressions-supported" and (2) the size of 4116 the job with "job-media-sheets-supported". 4118 See the Note in the "job-k-octets" attribute that also applies to this 4119 attribute. 4121 4.3.21 job-k-octets-processed (integer(0:MAX)) 4123 This attribute specifies the total number of octets processed in K 4124 octets, i.e., in units of 1024 octets so far. The value SHALL be 4125 rounded up, so that a job between 1 and 1024 octets inclusive SHALL be 4126 indicated as being 1, 1025 to 2048 inclusive SHALL be 2, etc. 4128 For implementations where multiple copies are produced by the 4129 interpreter with only a single pass over the data, the final value 4130 SHALL be equal to the value of the "job-k-octets" attribute. For 4131 implementations where multiple copies are produced by the interpreter 4133 Expires June 19, 1998 4134 by processing the data for each copy, the final value SHALL be a 4135 multiple of the value of the "job-k-octets" attribute. 4137 Note: This attribute and the following two attributes ("job- 4138 impressions-completed" and "job-sheets-completed") are intended to be 4139 counters. That is, the value for a job that has not started processing 4140 SHALL be 0. When the job's "job-state" is 'processing' or 4141 'processing-stopped', this value is intended to contain the amount of 4142 the job that has been processed to the time at which the attributes 4143 are requested. 4145 4.3.22 job-impressions-completed (integer(0:MAX)) 4147 This job attribute specifies the number of impressions completed for 4148 the job so far. For printing devices, the impressions completed 4149 includes interpreting, marking, and stacking the output. 4151 See the note in "job-k-octets-processed" which also applies to this 4152 attribute. 4154 4.3.23 job-media-sheets-completed (integer(0:MAX)) 4156 This job attribute specifies the media-sheets completed marking and 4157 stacking for the entire job so far whether those sheets have been 4158 processed on one side or on both. 4160 See the note in "job-k-octets-processed" which also applies to this 4161 attribute. 4163 4.3.24 attributes-charset (charset) 4165 This MANDATORY attribute is populated using the value in the client 4166 supplied "attributes-charset" attribute in the create request. It 4167 identifies the charset (coded character set and encoding method) used 4168 by any Job attributes with attribute syntax 'text' and 'name' that 4169 were supplied by the client in the create request. See Section 3.1.3 4170 for a complete description of the "attributes-charset" operation 4171 attribute. 4173 This attribute does not indicate the charset in which the 'text' and 4174 'name' values are stored internally in the Job object. The internal 4175 charset is implementation-defined. The IPP object SHALL convert from 4176 whatever the internal charset is to that being requested in an 4177 operation as specified in Section 3.1.3. 4179 Expires June 19, 1998 4180 4.3.25 attributes-natural-language (naturalLanguage) 4182 This MANDATORY attribute is populated using the value in the client 4183 supplied "attributes-natural-language" attribute in the create 4184 request. It identifies the natural language used for any Job 4185 attributes with attribute syntax 'text' and 'name' that were supplied 4186 by the client in the create request. See Section 3.1.3 for a complete 4187 description of the "attributes-natural-language" operation attribute. 4188 See Section 3.2.6 for how this attribute is returned in a Get-Jobs 4189 operation when jobs with different natural languages are returned. 4190 See Sections 4.1.2 and 4.1.4 for how a Natural Language Override may 4191 be supplied explicitly for each 'text' and 'name' attribute value that 4192 differs from the value identified by the "attributes-natural-language" 4193 attribute. 4195 4.4 Printer Description Attributes 4197 These attributes form the attribute group called "printer- 4198 description". The following table summarizes these attributes, their 4199 syntax, and whether or not they are MANDATORY for a Printer object to 4200 support. If they are not indicated as MANDATORY, they are OPTIONAL. 4201 The maximum size in octets for 'text' and 'name' attributes is 4202 indicated in parenthesizes. 4204 Note: How these attributes are set by an Administrator is outside the 4205 scope of this specification. 4207 Expires June 19, 1998 4208 +----------------------------+----------------------+----------------+ 4209 | Attribute | Syntax | MANDATORY? | 4210 +----------------------------+----------------------+----------------+ 4211 | printer-uri | uri | MANDATORY | 4212 +----------------------------+----------------------+----------------+ 4213 | printer-tls-uri | uri | MANDATORY | 4214 +----------------------------+----------------------+----------------+ 4215 | printer-name | name (127) | MANDATORY | 4216 +----------------------------+----------------------+----------------+ 4217 | printer-location | text (127) | | 4218 +----------------------------+----------------------+----------------+ 4219 | printer-info | text (127) | | 4220 +----------------------------+----------------------+----------------+ 4221 | printer-more-info | uri | | 4222 +----------------------------+----------------------+----------------+ 4223 | printer-driver-installer | uri | | 4224 +----------------------------+----------------------+----------------+ 4225 | printer-make-and-model | text (127) | | 4226 +----------------------------+----------------------+----------------+ 4227 | printer-more-info- | uri | | 4228 | manufacturer | | | 4229 +----------------------------+----------------------+----------------+ 4230 | printer-state | type1 enum | MANDATORY | 4231 +----------------------------+----------------------+----------------+ 4232 | printer-state-reasons | 1setOf type2 keyword | | 4233 +----------------------------+----------------------+----------------+ 4234 | printer-state-message | text (MAX) | | 4235 +----------------------------+----------------------+----------------+ 4236 | operations-supported | 1setOf type2 enum | MANDATORY | 4237 +----------------------------+----------------------+----------------+ 4238 | charset-configured | charset | MANDATORY | 4239 +----------------------------+----------------------+----------------+ 4240 | charset-supported | 1setOf charset | MANDATORY | 4241 +----------------------------+----------------------+----------------+ 4242 | natural-language-configured| naturalLanguage | MANDATORY | 4243 +----------------------------+----------------------+----------------+ 4244 | generated-natural-language-| 1setOf | MANDATORY | 4245 | supported | naturalLanguage | | 4246 +----------------------------+----------------------+----------------+ 4247 | document-format-default | mimeMediaType | MANDATORY | 4248 +----------------------------+----------------------+----------------+ 4249 | document-format- | 1setOf | MANDATORY | 4250 | supported | mimeMediaType | | 4251 +----------------------------+----------------------+----------------+ 4252 | printer-is-accepting-jobs | boolean | MANDATORY | 4253 +----------------------------+----------------------+----------------+ 4254 | queued-job-count | integer (0:MAX) | | 4255 +----------------------------+----------------------+----------------+ 4257 Expires June 19, 1998 4258 | printer-message-from- | text (127) | | 4259 | operator | | | 4260 +----------------------------+----------------------+----------------+ 4261 | color-supported | boolean | | 4262 +----------------------------+----------------------+----------------+ 4263 | reference-uri-schemes- | 1setOf uriScheme | | 4264 | supported | | | 4265 +----------------------------+----------------------+----------------+ 4266 | pdl-override | type2 keyword | MANDATORY | 4267 +----------------------------+----------------------+----------------+ 4268 | printer-up-time | integer (1:MAX) | MANDATORY | 4269 +----------------------------+----------------------+----------------+ 4270 | printer-current-time | dateTime | | 4271 +----------------------------+----------------------+----------------+ 4272 | multiple-operation-time-out| integer (1:MAX) | | 4273 +----------------------------+----------------------+----------------+ 4274 | compression-supported | 1setOf type3 keyword | | 4275 +----------------------------+----------------------+----------------+ 4276 | job-k-octets-supported | rangeOfInteger | | 4277 | | (0:MAX) | | 4278 +----------------------------+----------------------+----------------+ 4279 | job-impressions-supported | rangeOfInteger | | 4280 | | (0:MAX) | | 4281 +----------------------------+----------------------+----------------+ 4282 | job-media-sheets-supported | rangeOfInteger | | 4283 | | (0:MAX) | | 4284 +----------------------------+----------------------+----------------+ 4286 4.4.1 printer-uri (uri) 4288 This MANDATORY Printer attribute contains the URI for the Printer 4289 object when not using Transport Layer Security (TLS). An 4290 administrator determines a printer's URI and configures this attribute 4291 to that URI (by means outside of IPP/1.0). The precise format of this 4292 URI is implementation dependent and depends on the protocol. See 4293 section 8.2. See the "printer-tls-uri" attribute in 4.4.2. 4295 4.4.2 printer-tls-uri (uri) 4297 This MANDATORY Printer attribute contains the URI for the Printer 4298 object when using Transport Layer Security (TLS). An administrator 4299 determines a printer's URI and configures this attribute to that URI 4300 (by means outside of IPP/1.0). The precise format of this URI is 4301 implementation dependent and depends on the protocol. See section 4302 8.2. 4304 Expires June 19, 1998 4305 Both the "printer-uri" and the "printer-tls-uri" attributes are 4306 MANDATORY for an IPP Printer to support. However, the system 4307 administrator MAY choose to configure (by means outside the scope of 4308 IPP/1.0) only one of the attributes, depending on site policy.. The 4309 other attribute, which is not configured, SHALL have the special out- 4310 of-band value: 'no-value' (see the beginning of section 4.1). 4312 Note: It is expected that most IPP Printer objects will be configured 4313 for only TLS access or non-TLS access, however the system 4314 administrator MAY choose to configure both the "printer-uri" and 4315 "printer-tls-uri" attributes to allow for both TLS access and non-TLS 4316 access. 4318 Also, for simplicity, the majority of this document uses just the 4319 "printer-uri" attribute when describing the purpose and behavior of a 4320 Printer's identifying attribute no matter its security configuration. 4321 Therefore, anyplace that this document describes a client supplying 4322 the "printer-uri" attribute, the client MUST supply the "printer-tls- 4323 uri" attribute in its place when accessing an IPP object using TLS. 4324 In response to a Get-Printer-Attributes request, the IPP Printer 4325 object returns whichever attribute the client requested. If the 4326 client requested 'all' or 'printer-description' attribute groups, both 4327 the "printer-uri" and the "printer-tls-uri" attributes are returned, 4328 since both are Printer object attributes. The client will be able to 4329 determine the configuration of the IPP Printer by inspecting the 4330 values of the two attributes checking to see if either is un- 4331 configured (i.e., the un-configured attribute is set to the special 4332 out-of-band value 'no-value'). 4334 4.4.3 printer-name (name(127)) 4336 This MANDATORY Printer attribute contains the name of the Printer 4337 object. It is a name that is more user friendly than the value of the 4338 "printer-uri" attribute. An administrator determines a printer's name 4339 and sets this attribute to that name. This name may be the last part 4340 of the printer's URI or it may be unrelated. In non-US-English 4341 locales, a name may contain characters that are not allowed in a URI. 4343 4.4.4 printer-location (text(127)) 4345 This Printer attribute identifies the location of the device. This 4346 could include things like: _in Room 123A, second floor of building 4347 XYZ_. 4349 Expires June 19, 1998 4350 4.4.5 printer-info (text(127)) 4352 This Printer attribute identifies the descriptive information about 4353 this Printer object. This could include things like: "This printer 4354 can be used for printing color transparencies for HR presentations", 4355 or "Out of courtesy for others, please print only small (1-5 page) 4356 jobs at this printer", or even "This printer is going away on July 1, 4357 1997, please find a new printer". 4359 4.4.6 printer-more-info (uri) 4361 This Printer attribute contains a URI used to obtain more information 4362 about this specific Printer object. For example, this could be an 4363 HTTP type URI referencing an HTML page accessible to a Web Browser. 4364 The information obtained from this URI is intended for end user 4365 consumption. Features outside the scope of IPP can be accessed from 4366 this URI. The information is intended to be specific to this printer 4367 instance and site specific services (e.g. job pricing, services 4368 offered, end user assistance). The device manufacturer may initially 4369 populate this attribute. 4371 4.4.7 printer-driver-installer (uri) 4373 This Printer attribute contains a URI to use to locate the driver 4374 installer for this Printer object. This attribute is intended for 4375 consumption by automata. The mechanics of print driver installation 4376 is outside the scope of IPP. The device manufacturer may initially 4377 populate this attribute. 4379 4.4.8 printer-make-and-model (text(127)) 4381 This Printer attribute identifies the make and model of the device. 4382 The device manufacturer may initially populate this attribute. 4384 4.4.9 printer-more-info-manufacturer (uri) 4386 This Printer attribute contains a URI used to obtain more information 4387 about this type of device. The information obtained from this URI is 4388 intended for end user consumption. Features outside the scope of IPP 4389 can be accessed from this URI (e.g., latest firmware, upgrades, print 4390 drivers, optional features available, details on color support). The 4391 information is intended to be germane to this printer without regard 4392 to site specific modifications or services. The device manufacturer 4393 may initially populate this attribute. 4395 Expires June 19, 1998 4396 4.4.10 printer-state (type1 enum) 4398 This MANDATORY Printer attribute identifies the current state of the 4399 device. The "printer-state reasons" attribute augments the "printer- 4400 state" attribute to give more detailed information about the Printer 4401 in the given printer state. 4403 A Printer object need only update this attribute before responding to 4404 an operation which requests the attribute; the Printer object NEED NOT 4405 update this attribute continually, since asynchronous event 4406 notification is not part of IPP/1.0. A Printer NEED NOT implement all 4407 values if they are not applicable to a given implementation. 4409 The following standard values are defined: 4411 Value Symbolic Name and Description 4413 '3' 'idle': If a Printer receives a job (whose required 4414 resources are ready) while in this state, such a job 4415 SHALL transit into the processing state immediately. 4416 If the printer-state-reasons attribute contains any 4417 reasons, they SHALL be reasons that would not prevent a 4418 job from transiting into the processing state 4419 immediately, e.g., toner-low. Note: if a Printer 4420 controls more than one output device, the above 4421 definition implies that a Printer is idle if at least 4422 one output device is idle. 4424 '4' 'processing': If a Printer receives a job (whose required 4425 resources are ready) while in this state, such a job 4426 SHALL transit into the pending state immediately. Such 4427 a job SHALL transit into the processing state only 4428 after jobs ahead of it complete. If the printer-state- 4429 reasons attribute contains any reasons, they SHALL be 4430 reasons that do not prevent the current job from 4431 printing, e.g. toner-low. Note: if a Printer controls 4432 more than one output device, the above definition 4433 implies that a Printer is processing if at least one 4434 output device is processing, and none is idle. 4436 '5' 'stopped': If a Printer receives a job (whose required 4437 resources are ready) while in this state, such a job 4438 SHALL transit into the pending state immediately. Such 4439 a job SHALL transit into the processing state only 4440 after some human fixes the problem that stopped the 4441 printer and after jobs ahead of it complete printing. 4442 The "printer-state-reasons" attribute SHALL contain at 4443 least one reason, e.g. media-jam, which prevents it 4445 Expires June 19, 1998 4446 from either processing the current job or transitioning 4447 a pending job to the processing state. 4449 Note: if a Printer controls more than one output device, the above 4450 definition implies that a Printer is stopped only if 4451 all output devices are stopped. Also, it is tempting 4452 to define stopped as when a sufficient number of output 4453 devices are stopped and leave it to an implementation 4454 to define the sufficient number. But such a rule 4455 complicates the definition of stopped and processing. 4456 For example, with this alternate definition of stopped, 4457 a job can move from idle to processing without human 4458 intervention, even though the Printer is stopped. 4460 4.4.11 printer-state-reasons (1setOf type2 keyword) 4462 This Printer attribute supplies additional detail about the device's 4463 state. 4465 Each keyword value MAY have a suffix to indicate its level of 4466 severity. The three levels are: report (least severe), warning, and 4467 error (most severe). 4469 - '-report': This suffix indicates that the reason is a "report". 4470 An implementation may choose to omit some or all reports. Some 4471 reports specify finer granularity about the printer state; others 4472 serve as a precursor to a warning. A report SHALL contain nothing 4473 that could affect the printed output. 4474 - '-warning': This suffix indicates that the reason is a "warning". 4475 An implementation may choose to omit some or all warnings. 4476 Warnings serve as a precursor to an error. A warning SHALL 4477 contain nothing that prevents a job from completing, though in 4478 some cases the output may be of lower quality. 4479 - '-error': This suffix indicates that the reason is an "error". 4480 An implementation SHALL include all errors. If this attribute 4481 contains one or more errors, printer SHALL be in the stopped 4482 state. 4484 If the implementation does not add any one of the three suffixes, all 4485 parties SHALL assume that the reason is an "error". 4487 If a Printer object controls more than one output device, each value 4488 of this attribute MAY apply to one or more of the output devices. An 4489 error on one output device that does not stop the Printer object as a 4490 whole MAY appear as a warning in the Printer's "printer-state-reasons 4491 attribute". If the "printer-state" for such a Printer has a value of 4493 Expires June 19, 1998 4494 'stopped', then there MUST be an error reason among the values in the 4495 "printer-state-reasons" attribute. 4497 The following standard values are defined: 4499 'other': The device has detected an error other than one listed in 4500 this document. 4501 'none': There are not reasons. This state reason is semantically 4502 equivalent to "printer-state-reasons" without any value. 4503 'media-needed': A tray has run out of media. 4504 'media-jam': The device has a media jam. 4505 'paused': Someone has paused the Printer object. In this state, a 4506 Printer SHALL not produce printed output, but it SHALL perform 4507 other operations requested by a client. If a Printer had been 4508 printing a job when the Printer was paused, the Printer SHALL 4509 resume printing that job when the Printer is no longer paused and 4510 leave no evidence in the printed output of such a pause. 4511 'shutdown': Someone has removed a Printer object from service, and 4512 the device may be powered down or physical removed. In this 4513 state, a Printer object SHALL not produce printed output, and 4514 unless the Printer object is realized by a print server that is 4515 still active, the Printer object SHALL perform no other 4516 operations requested by a client, including returning this value. 4517 If a Printer object had been printing a job when it was shutdown, 4518 the Printer need not resume printing that job when the Printer is 4519 no longer shutdown. If the Printer resumes printing such a job, 4520 it may leave evidence in the printed output of such a shutdown, 4521 e.g. the part printed before the shutdown may be printed a second 4522 time after the shutdown. 4523 'connecting-to-device': The Printer object has scheduled a job on 4524 the output device and is in the process of connecting to a shared 4525 network output device (and might not be able to actually start 4526 printing the job for an arbitrarily long time depending on the 4527 usage of the output device by other servers on the network). 4528 'timed-out': The server was able to connect to the output device 4529 (or is always connected), but was unable to get a response from 4530 the output device. 4531 'stopping': The Printer object is in the process of stopping the 4532 device and will be stopped in a while. When the device is 4533 stopped, the Printer object will change the Printer object's 4534 state to 'stopped'. The 'stopping-warning' reason is never an 4535 error, even for a Printer with a single output device. When an 4536 output-device ceases accepting jobs, the Printer will have this 4537 reason while the output device completes printing. 4538 'stopped-partly': When a Printer object controls more than one 4539 output device, this reason indicates that one or more output 4540 devices are stopped. If the reason is a report, fewer than half 4542 Expires June 19, 1998 4543 of the output devices are stopped. If the reason is a warning, 4544 fewer than all of the output devices are stopped. 4545 'toner-low': The device is low on toner. 4546 'marker-supply-low': The device is low on marker supply (ink, 4547 paint, etc.). 4548 'spool-area-full': The limit of persistent storage allocated for 4549 spooling has been reached. 4550 'cover-open': One or more covers on the device are open. 4551 'interlock-open': One or more interlock devices on the printer are 4552 unlocked. 4553 'door-open': One or more doors on the device are open. 4554 'input-tray-missing': One or more input trays are not in the 4555 device. 4556 'media-low': At least one input tray is low on media. 4557 'media-empty': At least one input tray is empty. 4558 'output-tray-missing': One or more output trays are not in the 4559 device 4560 'output-area-almost-full': One or more output area is almost full 4561 (e.g. tray, stacker, collator). 4562 'output-area-full': One or more output area is full. (e.g. tray, 4563 stacker, collator) 4564 'marker-supply-low': The device is low on at least one marker 4565 supply. (e.g. toner, ink, ribbon) 4566 'marker-supply-empty: The device is out of at least one marker 4567 supply. (e.g. toner, ink, ribbon) 4568 'marker-waste-almost-full': The device marker supply waste 4569 receptacle is almost full. 4570 'marker-waste-full': The device marker supply waste receptacle is 4571 full. 4572 'fuser-over-temp': The fuser temperature is above normal. 4573 'fuser-under-temp': The fuser temperature is below normal. 4574 'opc-near-eol': The optical photo conductor is near end of life. 4575 'opc-life-over': The optical photo conductor is no longer 4576 functioning. 4577 'developer-low': The device is low on developer. 4578 'developer-empty: The device is out of developer. 4579 'interpreter-resource-unavailable': An interpreter resource is 4580 unavailable (i.e. font, form) 4582 4.4.12 printer-state-message (text(MAX)) 4584 This Printer attribute specifies the additional information about the 4585 printer state and printer state reasons in human readable text. If 4586 the Printer object supports this attribute, the Printer object SHALL 4587 be able to generate this message in any of the natural languages 4588 identified by the Printer's "generated-natural-language-supported" 4590 Expires June 19, 1998 4591 attribute (see the "attributes-natural-language" operation attribute 4592 specified in Section 3.1.3.1). 4594 4.4.13 operations-supported (1setOf type2 enum) 4596 This MANDATORY Printer attribute specifies the set of supported 4597 operations for this Printer object and contained Job objects. No 32- 4598 bit enum value for this attribute SHALL exceed 0x8FFF, since these 4599 values are passed in two octets in each Protocol request [IPP-PRO]. 4601 The following standard values are defined: 4603 Value Operation Name 4605 0x0000 reserved, not used 4606 0x0001 reserved, not used 4607 0x0002 Print-Job 4608 0x0003 Print-URI 4609 0x0004 Validate-Job 4610 0x0005 Create-Job 4611 0x0006 Send-Document 4612 0x0007 Send-URI 4613 0x0008 Cancel-Job 4614 0x0009 Get-Job-Attributes 4615 0x000A Get-Jobs 4616 0x000B Get-Printer-Attributes 4617 0x000C-0x3FFF reserved for future operations 4618 0x4000-0x8FFF reserved for private extensions 4620 This allows for certain vendors to implement private extensions that 4621 are guaranteed to not conflict with future registered extensions. 4622 However, there is no guarantee that two or more private extensions 4623 will not conflict. 4625 4.4.14 charset-configured (charset) 4627 This MANDATORY Printer attribute identifies the charset that the 4628 Printer object has been configured to represent 'text' and 'name' 4629 Printer attributes that are set by the operator, system administrator, 4630 or manufacturer, i.e., for "printer-name" (name), "printer-location" 4631 (text), "printer-info" (text), and "printer-make-and-model" (text). 4632 Therefore, the value of the Printer object's "charset-configured" 4633 attribute SHALL also be among the values of the Printer object's 4634 "charset-supported" attribute. 4636 Expires June 19, 1998 4637 4.4.15 charset-supported (1setOf charset) 4639 This MANDATORY Printer attribute identifies the set of charsets that 4640 the Printer and contained Job objects support in attributes with 4641 attribute syntax 'text' and 'name'. At least the value 'utf-8' SHALL 4642 be present, since IPP objects MUST support the UTF-8 [RFC2044] 4643 charset. If a Printer object supports a charset, it means that for 4644 all attributes of syntax 'text' and 'name' the IPP object SHALL (1) 4645 accept the charset in requests and return the charset in responses as 4646 needed. 4648 If more charsets than UTF-8 are supported, the IPP object SHALL 4649 perform charset conversion between the charsets as described in 4650 Section 3.2.1.2. 4652 4.4.16 natural-language-configured (naturalLanguage) 4654 This MANDATORY Printer attribute identifies the natural language that 4655 the Printer object has been configured to represent 'text' and 'name' 4656 Printer attributes that are set by the operator, system administrator, 4657 or manufacturer, i.e., for "printer-name" (name), "printer-location" 4658 (text), "printer-info" (text), and "printer-make-and-model" (text). 4659 When returning these Printer attributes, the Printer object MAY return 4660 them in the configured natural language specified by this attribute, 4661 instead of the natural language requested by the client in the 4662 "attributes-natural-language" operation attribute. See Section 4663 3.1.3.1 for the specification of the OPTIONAL multiple natural 4664 language support. Therefore, the value of the Printer object's 4665 "natural-language-configured" attribute SHALL also be among the values 4666 of the Printer object's "generated-natural-language-supported" 4667 attribute. 4669 4.4.17 generated-natural-language-supported (1setOf naturalLanguage) 4671 This MANDATORY Printer attribute identifies the natural language(s) 4672 that the Printer object and contained Job objects support in 4673 attributes with attribute syntax 'text' and 'name'. The natural 4674 language(s) supported depends on implementation and/or configuration. 4675 Unlike charsets, IPP objects SHALL accept in requests any natural 4676 language or any Natural Language Override whether the natural language 4677 is supported or not. 4679 If a Printer object supports a natural language, it means that for any 4680 of the attributes for which the Printer or Job object generates 4681 messages, i.e., for the "job-state-message" and "printer-state- 4682 message" attributes and Operation Messages (see Section 3.1.4) in 4684 Expires June 19, 1998 4685 operation responses, the Printer and Job objects SHALL be able to 4686 generate messages in any of the Printer's supported natural languages. 4687 See section 3.1.3 for the specification of 'text' and 'name' 4688 attributes in operation requests and responses. 4690 Note: A Printer object that supports multiple natural languages, often 4691 has separate catalogs of messages, one for each natural language 4692 supported. 4694 4.4.18 document-format-default (mimeMediaType) 4696 This Printer attribute identifies the document format that the Printer 4697 object has been configured to assume if the client does not supply a 4698 "document-format" operation attribute in any of the operation requests 4699 that supply document data. The standard values for this attribute are 4700 Internet Media types (sometimes called MIME types). For further 4701 details see the description of the 'mimeMediaType' attribute syntax in 4702 Section 4.1.11. 4704 4.4.19 document-format-supported (1setOf mimeMediaType) 4706 This Printer attribute identifies the set of document formats that the 4707 Printer object and contained Job objects can support. For further 4708 details see the description of the 'mimeMediaType' attribute syntax in 4709 Section 4.1.11. 4711 4.4.20 printer-is-accepting-jobs (boolean) 4713 This MANDATORY Printer attribute indicates whether the printer is 4714 currently able to accept jobs, i.e., is accepting Print-Job, Print- 4715 URI, and Create-Job requests. If the value is 'true', the printer is 4716 accepting jobs. If the value is 'false', the Printer object is 4717 currently rejecting any jobs submitted to it. In this case, the 4718 Printer object returns the 'server-error-not-accepting-jobs' status 4719 code. 4721 Note: This value is independent of the "printer-state" and "printer- 4722 state-reasons" attributes because its value does not affect the 4723 current job; rather it affects future jobs. This attribute may cause 4724 the Printer to reject jobs when the "printer-state" is 'idle' or it 4725 may cause the Printer object to accepts jobs when the "printer-state" 4726 is 'stopped'. 4728 Expires June 19, 1998 4729 4.4.21 queued-job-count (integer(0:MAX)) 4731 This Printer attribute contains a count of the number of jobs that are 4732 either 'pending', 'processing', 'pending-held', or 'processing- 4733 stopped' and is set by the Printer object. 4735 4.4.22 printer-message-from-operator (text(127)) 4737 This Printer attribute provides a message from an operator, system 4738 administrator or "intelligent" process to indicate to the end user 4739 information or status of the printer, such as why it is unavailable or 4740 when it is expected to be available. 4742 4.4.23 color-supported (boolean) 4744 This Printer attribute identifies whether the device is capable of any 4745 type of color printing at all, including highlight color. All 4746 document instructions having to do with color are embedded within the 4747 document PDL (none are external IPP attributes in IPP/1.0). 4749 Note: end-users are able to determine the nature and details of the 4750 color support by querying the "printer-more-info-manufacturer" Printer 4751 attribute. 4753 4.4.24 reference-uri-schemes-supported (1setOf uriScheme) 4755 This Printer attribute specifies which URI schemes are supported for 4756 use in the "document-uri" operation attribute of the Print-URI or 4757 Send-URI operation. If a Printer object supports these optional 4758 operations, it MUST support the "reference-uri-schemes-supported" 4759 Printer attribute with at least the following schemed URI values: 4761 'ftp': The Printer object will use an FTP 'get' operation. If the 4762 URI does not indicate a name or password in the URI itself, the 4763 Printer object will use anonymous FTP generating (if prompted) a 4764 password. Since many FTP servers require that anonymous FTP 4765 logins supply a password in the form a valid Internet email 4766 address, the Printer object MUST be able to generate such a 4767 password (syntactically correct, yet perhaps semantically 4768 meaningless) if needed. 4770 The Printer object MAY OPTIONALLY support other URI schemes (see 4771 section 4.1.8). 4773 Expires June 19, 1998 4774 4.4.25 pdl-override (type2 keyword) 4776 This MANDATORY Printer attribute expresses the ability for a 4777 particular Printer implementation to either attempt to override 4778 document data instructions with IPP attributes or not. 4780 This attribute takes on the following values: 4782 - 'attempted': This value indicates that the Printer object 4783 attempts to make the IPP attribute values take precedence over 4784 embedded instructions in the document data, however there is no 4785 guarantee. 4786 - 'not-attempted': This value indicates that the Printer object 4787 makes no attempt to make the IPP attribute values take precedence 4788 over embedded instructions in the document data. 4790 Section 15 contains a full description of how this attribute interacts 4791 with and affects other IPP attributes, especially the "ipp-attribute- 4792 fidelity" attribute. 4794 4.4.26 printer-up-time (integer(1:MAX)) 4796 This MANDATORY Printer attribute indicates the amount of time (in 4797 seconds) that this instance of this Printer implementation has been up 4798 and running. This value is used to populate the Job attributes "time- 4799 at-creation", "time-at-processing", and "time-at-completed". These 4800 time values are all measured in seconds and all have meaning only 4801 relative to this attribute, "printer-up-time". The value is a 4802 monotonically increasing value starting from 1 when the Printer object 4803 is started-up (initialized, booted, etc.). 4805 If the Printer object goes down at some value 'n', and comes back up, 4806 the implementation MAY: 4808 1. Know how long it has been down, and resume at some value greater 4809 than 'n', or 4810 2. Restart from 1. 4812 In the first case, the Printer SHOULD not tweak any existing related 4813 Job attributes ("time-at-creation", "time-at-processing", and "time- 4814 at-completed"). In the second case, the Printer object SHOULD reset 4815 those attributes to 0. If a client queries a time-related Job 4816 attribute and finds the value to be 0, the client MUST assume that the 4817 Job was submitted in some life other than the Printer's current life. 4819 Expires June 19, 1998 4820 4.4.27 printer-current-time (dateTime) 4822 This Printer attribute indicates the current absolute wall-clock time. 4823 If an implementation supports this attribute, then a client could 4824 calculate the absolute wall-clock time each Job's "time-at-creation", 4825 "time-at-processing", and "time-at-completed" attributes by using both 4826 "printer-up-time" and this attribute, "printer-current-time". If an 4827 implementation does not support this attribute, a client can only 4828 calculate the relative time of certain events based on the MANDATORY 4829 "printer-up-time" attribute. 4831 4.4.28 multiple-operation-time-out (integer(1:MAX)) 4833 This Printer attributes identifies how long (in seconds) the Printer 4834 object waits for additional Send-Document or Send-URI operations to 4835 follow a still-open multi-document Job object before taking one of the 4836 actions indicated in section 3.3.1. 4838 5. Conformance 4840 This section describes conformance issues and requirements. This 4841 document introduces model entities such as objects, operations, 4842 attributes, attribute syntaxes, and attribute values. These 4843 conformance sections describe the conformance requirements which apply 4844 to these model entities. 4846 5.1 Client Conformance Requirements 4848 A conforming client SHALL support all MANDATORY operations as defined 4849 in this document. For each attribute included in an operation 4850 request, a conforming client SHALL supply a value whose type and value 4851 syntax conforms to the requirements of the Model document as specified 4852 in Sections 3 and 4. A conforming client MAY supply any registered 4853 extensions and/or private extensions in an operation request, as long 4854 as they meet the requirements in Section 6. 4856 Otherwise, there are no conformance requirements placed on the user 4857 interfaces provided by IPP clients or their applications. For 4858 example, one application might not allow an end user to submit 4859 multiple documents per job, while another does. One application might 4860 first query a Printer object in order to supply a graphical user 4861 interface (GUI) dialogue box with supported and default values whereas 4862 a different implementation might not. 4864 Expires June 19, 1998 4865 When sending a request, an IPP client NEED NOT supply any attributes 4866 that are indicated as OPTIONALLY supplied by the client. 4868 A client SHALL be able to accept any of the attribute syntaxes defined 4869 in Section 4.1, including their full range, that may be returned to it 4870 in a response from a Printer object. For presentation purposes, 4871 truncation of long attribute values is not recommended. A recommended 4872 approach would be for the client implementation to allow the user to 4873 scroll through long attribute values. 4875 A query response may contain attribute groups, attributes, and values 4876 that the client does not expect. Therefore, a client implementation 4877 MUST gracefully handle such responses and not refuse to inter-operate 4878 with a conforming Printer that is returning extended registered or 4879 private attributes and/or attribute values that conform to Section 6. 4880 Clients may choose to ignore any parameters, attributes, or values 4881 that it does not understand. 4883 5.2 IPP Object Conformance Requirements 4885 This section specifies the conformance requirements for conforming 4886 implementations with respect to objects, operations, and attributes. 4888 5.2.1 Objects 4890 Conforming implementations SHALL implement all of the model objects as 4891 defined in this specification in the indicated sections: 4893 Section 2.1 - Printer Object 4894 Section 2.2 - Job Object 4896 5.2.2 Operations 4898 Conforming IPP object implementations SHALL implement all of the 4899 MANDATORY model operations, including mandatory responses, as defined 4900 in this specification in the indicated sections: 4902 For a Printer object: 4903 Print-Job (section 3.2.1) MANDATORY 4904 Print-URI (section 3.2.2) OPTIONAL 4905 Validate-Job (section 3.2.3) MANDATORY 4906 Create-Job (section 3.2.4) OPTIONAL 4907 Get-Printer-Attributes (section 3.2.5) MANDATORY 4908 Get-Jobs (section 3.2.6) MANDATORY 4910 Expires June 19, 1998 4912 For a Job object: 4913 Send-Document (section 3.3.1) OPTIONAL 4914 Send-URI (section 3.3.2) OPTIONAL 4915 Cancel-Job (section 3.3.3) MANDATORY 4916 Get-Job-Attributes (section 3.3.4) MANDATORY 4918 Conforming IPP objects SHALL support all MANDATORY operation 4919 attributes and all values of such attributes if so indicated in the 4920 description. Conforming IPP objects SHALL ignore all unsupported or 4921 unknown operation attributes or operation attribute groups received in 4922 a request, but SHALL reject a request that contains a supported 4923 operation attribute that contains an unsupported value. 4925 The following section on object attributes specifies the support 4926 required for object attributes. 4928 5.2.3 IPP Object Attributes 4930 Conforming IPP objects SHALL support all of the MANDATORY object 4931 attributes, as defined in this specification in the indicated 4932 sections. 4934 If an object supports an attribute, it SHALL support only those values 4935 specified in this document or through the extension mechanism 4936 described in section 5.2.4. It MAY support any non-empty subset of 4937 these values. That is, it SHALL support at least one of the specified 4938 values and at most all of them. 4940 5.2.4 Extensions 4942 A conforming IPP object MAY support registered extensions and private 4943 extensions, as long as they meet the requirements specified in Section 4944 6. 4946 For each attribute included in an operation response, a conforming IPP 4947 object SHALL return a value whose type and value syntax conforms to 4948 the requirement of the Model document as specified in Sections 3 and 4949 4. 4951 5.2.5 Attribute Syntaxes 4953 An IPP object SHALL be able to accept any of the attribute syntaxes 4954 defined in Section 4.1, including their full range, in any operation 4955 in which a client may supply attributes or the system administrator 4956 may configure attributes (by means outside the scope of IPP/1.0). 4958 Expires June 19, 1998 4959 Furthermore, an IPP object SHALL return attributes to the client in 4960 operation responses that conform to the syntax specified in Section 4961 4.1, including their full range if supplied previously by a client. 4963 5.3 Charset and Natural Language Requirements 4965 All clients and IPP objects SHALL support the 'utf-8' charset as 4966 defined in section 4.1.9. 4968 IPP objects MUST be able to accept any client request which correctly 4969 uses the "attributes-natural-language" operation attribute or the 4970 Natural Language Override mechanism on any individual attribute 4971 whether or not the natural language is supported by the IPP object. 4972 If an IPP object supports a natural language, then it MUST be able to 4973 translate (perhaps by table lookup) all generated 'text' or 'name' 4974 attribute values into one of the supported languages (see section 4975 3.1.3). That is, the IPP object that supports a natural language NEED 4976 NOT be a general purpose translator of any arbitrary 'text' or 'name' 4977 value supplied by the client into that natural language. However, the 4978 object MUST be able to translate (automatically generate) any of its 4979 own attribute values and messages into that natural language. 4981 5.4 Security Conformance Requirements 4983 Conforming IPP Printer objects MAY support Transport Layer Security 4984 (TLS) access, support access without TLS or support both means of 4985 access. 4987 Conforming IPP clients MUST support TLS access and non-TLS access. 4988 Note: This client requirement to support both means that conforming 4989 IPP clients will be able to inter-operate with any IPP Printer object. 4991 For a detailed discussion of security considerations and the IPP 4992 application security profile required for TLS support, see section 8. 4994 6. IANA Considerations (registered and private extensions) 4996 This section describes how IPP can be extended. 4998 6.1 Typed Extensions 5000 This document uses prefixes to the "keyword" and "enum" basic syntax 5001 type in order to communicate extra information to the reader through 5003 Expires June 19, 1998 5004 its name. This extra information need not be represented in an 5005 implementation because it is unimportant to a client or Printer. The 5006 list below describes the prefixes and their meaning. 5008 "type1": The IPP standard must be revised to add a new keyword or 5009 a new enum. No private keywords or enums are allowed. 5011 "type2": Implementers can, at any time, add new keyword or enum 5012 values by proposing the specification to: 5014 - the IPP working group while it is still chartered, or 5015 - the Printer Working Group [PWG] after the IPP working group is 5016 disbanded 5018 who will review the proposal and work with IANA to register the 5019 additional keywords and enums. IANA assigns the number for enum 5020 values and keeps the registry of keywords and enums. 5022 "type3": Implementers can, at any time, add new keyword and enum 5023 values by submitting the complete specification directly to IANA, 5024 no IPP working group or Printer Working Group review is required. 5025 IANA assigns the number for enum values and keeps the registry of 5026 keywords and enums. IANA is responsible for ensuring new 5027 keywords are unique. 5029 "type4": Anyone (system administrators, system integrators, site 5030 managers, etc.) can, at any time, add new installation-defined 5031 values (keywords, but not enum values) to a local system. Care 5032 SHOULD be taken by the implementers to see that keywords do not 5033 conflict with other keywords defined by the standard or as 5034 defined by the implementing product. There is no registration or 5035 approval procedure for type 4 keywords. 5037 Note: Attributes with type 4 keywords also allow the 'name' 5038 attribute syntax for administrator defined names. Such names are 5039 not registered. 5041 By definition, each of the four types above assert some sort of 5042 registry or review process in order for extensions to be considered 5043 valid. Each higher level (1, 2, 3, 4) tends to be decreasingly less 5044 stringent than the previous level. Therefore, any typeN value MAY be 5045 registered using a process for some typeM where M is less than N, 5046 however such registration is NOT REQUIRED. For example, a type4 value 5047 MAY be registered in a type 1 manner (by being included in a future 5048 version of an IPP specification) however it is NOT REQUIRED. 5050 This specification defines keyword and enum values for all of the 5051 above types, including type4 keywords. 5053 Expires June 19, 1998 5054 For private (unregistered) keyword extensions, implementers SHOULD use 5055 keywords with a suitable distinguishing prefix, such as "xxx-" where 5056 xxx is the (lowercase) fully qualified company name registered with 5057 IANA for use in domain names [RFC1035]. For example, if the company 5058 XYZ Corp. had obtained the domain name "XYZ.com", then a private 5059 keyword 'abc' would be: 'xyz.com-abc'. 5061 Note: RFC 1035 [RFC1035] indicates that while upper and lower case 5062 letters are allowed in domain names, no significance is attached to 5063 the case. That is, two names with the same spelling but different 5064 case are to be treated as if identical. Also, the labels in a domain 5065 name must follow the rules for ARPANET host names: They must start 5066 with a letter, end with a letter or digit, and have as interior 5067 characters only letters, digits, and hyphen. Labels must be 63 5068 characters or less. Labels are separated by the "." character. 5070 For private (unregistered) enum extension, implementers SHALL use 5071 values in the reserved integer range which is 2**30 to 2**31-1. 5073 6.2 Registration of MIME types/sub-types for document-formats 5075 The "document-format" attribute's syntax is 'mimeMediaType'. This 5076 means that valid values are Internet Media Types. RFC 2045 [RFC2045] 5077 defines the syntax for valid Internet media types. IANA is the 5078 registry for all Internet media types. 5080 6.3 Attribute Extensibility 5082 Attribute names are type2 keywords. Therefore, new attributes may be 5083 registered and have the same status as attributes in this document by 5084 following the type2 extension rules. 5086 6.4 Attribute Syntax Extensibility 5088 Attribute syntaxes are like type2 enums. Therefore, new attribute 5089 syntaxes may be registered and have the same status as attribute 5090 syntaxes in this document by following the type2 extension rules. The 5091 value codes that identify each of the attribute syntaxes are assigned 5092 in the protocol specification [IPP-PRO]. 5094 Expires June 19, 1998 5095 7. Internationalization Considerations 5097 Some of the attributes have values that are text strings and names 5098 which are intended for human understanding rather than machine 5099 understanding (see the 'text' and 'name' attribute syntaxes in 5100 Sections 4.1.1 and 4.1.2.). 5102 In each operation request, the client 5104 - identifies the charset and natural language of the request which 5105 affects each supplied 'text' and 'name' attribute value, and 5106 - requests the charset and natural language for attributes returned 5107 by the IPP object in operation responses (as described in Section 5108 3.1.3.1). 5110 In addition, the client MAY separately and individually identify the 5111 Natural Language Override of a supplied 'text' or 'name' attribute 5112 using the technique described for the 'text' attribute syntax in 5113 Section 4.1.1. 5115 All IPP objects SHALL support the UTF-8 [RFC2044] charset in all 5116 'text' and 'name' attributes supported. If an IPP object supports 5117 more than the UTF-8 charset, the object SHALL convert between them in 5118 order to return the requested charset to the client according to 5119 Section 3.1.3.2. If an IPP object supports more than one natural 5120 language, the object SHOULD return 'text' and 'name' values in the 5121 natural language requested where those values are generated by the 5122 Printer (see Section 3.1.3.1). 5124 For Printers that support multiple charsets and/or multiple natural 5125 languages in 'text' and 'name' attributes, different jobs may have 5126 been submitted in differing charsets and/or natural languages. All 5127 responses SHALL be returned in the charset requested by the client. 5128 However, the Get-Jobs operation uses the 'textWithLanguage' and 5129 'nameWithLanguage' mechanism to identify the differing natural 5130 languages with each job returned. 5132 The Printer object also has configured charset and natural language 5133 attributes. The client can query the Printer object to determine the 5134 list of charsets and natural languages supported by the Printer object 5135 and what the Printer object's configured values are. See the 5136 "charset-configured", "charset-supported", "natural-language- 5137 configured", and "generated-natural-language-supported" Printer 5138 description attributes for more details. 5140 The "charset-supported" attributed identifies the supported charsets. 5141 If a charset is supported, the IPP object MUST be capable of 5142 converting to and from that charset into any other supported charset. 5144 Expires June 19, 1998 5145 In many cases, an IPP object will support only one charset and it MUST 5146 be the UTF-8 charset. 5148 The "charset-configured" attribute identifies the one supported 5149 charset which is the native charset given the current configuration of 5150 the IPP object (administrator defined). 5152 The "generated-natural-language-supported" attribute identifies the 5153 set of supported natural languages for generated messages; it is not 5154 related to the set of natural languages that must be accepted for 5155 client supplied 'text' and 'name' attributes. For client supplied 5156 'text' and 'name' attributes, an IPP object MUST accept ALL supplied 5157 natural languages. Just because a Printer object is currently 5158 configured to support 'en-US" natural language does not mean that the 5159 Printer object should reject a job if the client supplies a job name 5160 that is in 'fr-CA'. 5162 The "natural-language-configured" attribute identifies the one 5163 supported natural language for generated messages which is the native 5164 natural language given the current configuration of the IPP object 5165 (administrator defined). 5167 Attributes of type 'text' and 'name' are populated from different 5168 sources. These attributes can be categorized into following groups 5169 (depending on the source of the attribute): 5171 1. Some attributes are supplied by the client (i.e., the client 5172 supplied "job-name", "document-name", and "requesting-user-name" 5173 operation attributes along with the corresponding Job object's 5174 "job-name" and "job-originating-user-name" attributes). The IPP 5175 object MUST accept these attributes in any natural language no 5176 matter what the set of supported languages for generated messages 5177 2. Some attributes are supplied by the system administrator (i.e., 5178 the Printer object's "printer-name" attribute). These too can be 5179 in any natural language. If the natural language for these 5180 attributes is different than what a client requests, then they 5181 must be reported using the Natural Language Override mechanism. 5182 3. Some attributes are supplied by the device manufacturer (i.e., 5183 the Printer object's "printer-make-and-model" attribute). These 5184 too can be in any natural language. If the natural language for 5185 these attributes is different than what a client requests, then 5186 they must be reported using the Natural Language Override 5187 mechanism. 5188 4. Some attributes are supplied by the operator (i.e., the Job 5189 object's "job-message-from-operator" attribute). These too can be 5190 in any natural language. If the natural language for these 5191 attributes is different than what a client requests, then they 5192 must be reported using the Natural Language Override mechanism. 5194 Expires June 19, 1998 5196 5. Some attributes are generated by the IPP object (i.e., the Job 5197 object's "job-state-message" attribute, the Printer object's 5198 "printer-state-message" attribute, and the "status-message" 5199 operation attribute). These attributes can only be in one of 5200 the "generated-natural-language-supported" natural languages. If 5201 a client requests some natural language for these attributes 5202 other than one of the supported values, the IPP object SHOULD 5203 respond in using the value of the "natural-language-configured" 5204 attribute (using the Natural Language Override mechanism if 5205 needed). 5207 The 'text' and 'name' attributes specified in this version of this 5208 document (additional ones will be registered according to the 5209 procedures in Section 6) are: 5211 Attributes Source 5212 -------------------------- ---------- 5213 Operation Attributes 5214 job-name (name) client 5215 document-name (name) client 5216 requesting-user-name (name) client 5218 Job Attributes: 5219 job-name (name) client or Printer object 5220 job-originating-user-name (name) Printer object 5221 job-state-message (text) Job or Printer object 5222 job-message-from-operator (text) operator 5224 Printer Attributes: 5225 printer-name (name) administrator 5226 printer-location (text) administrator 5227 printer-info (text) administrator 5228 printer-make-and-model (text) administrator or 5229 manufacturer 5230 printer-state-message (text) Printer object 5231 printer-message-from-operator (text) operator 5233 8. Security Considerations 5235 Some IPP objects MAY be deployed over protocol stacks that support 5236 Transport Layer Security (TLS) Version 1.0. Other IPP objects MAY be 5237 deployed over protocol stacks that do not support TLS. Some IPP 5238 objects MAY be deployed over both types of protocol stacks. Those IPP 5239 objects that support TLS, are capable of supporting mutual 5240 authentication as well as privacy of messages via multiple encryption 5242 Expires June 19, 1998 5243 schemes. TLS 1.0 also supports a backwards compatibility mode for 5244 negotiating down to SSL3 which leverages the vast installed base of 5245 SSL3 aware clients and servers. An important point about security 5246 related information for TLS access to an IPP object, is that the 5247 security-related parameters (authentication, encryption keys, etc.) 5248 are "out-of-band" to the actual IPP protocol. 5250 An IPP object that does not support TLS MAY elect to support a 5251 transport layer that provides other security mechanisms. For example, 5252 in a mapping of IPP over HTTP/1.1 [IPP-PRO], if the IPP object does 5253 not support TLS, HTTP still allows for client authentication. 5255 It is difficult to anticipate the security risks that might exist in 5256 any given IPP environment. For example, if IPP is used within a given 5257 corporation over a private network, the risks of exposing document 5258 data may be low enough that the corporation will choose not to use 5259 encryption on that data. However, if the connection between the 5260 client and the IPP object is over a public network, the client may 5261 wish to protect the content of the information during transmission 5262 through the network with encryption. 5264 Furthermore, the value of the information being printed may vary from 5265 one IPP environment to the next. Printing payroll checks, for example, 5266 would have a different value than printing public information from a 5267 file. There is also the possibly of denial-of-service attacks, but 5268 denial-of-service attacks against printing resources are not well 5269 understood and there is no published precedents regarding this 5270 scenario. 5272 Once the authenticated identity of the requester has been supplied to 5273 the IPP object, the object uses that identity to enforce any 5274 authorization policy that might be in place. For example, one site's 5275 policy might be that only the job owner is allowed to cancel a job. 5276 The details and mechanisms to set up a particular access control 5277 policy are not part of IPP/1.0, and must be established via some other 5278 type of administrative or access control framework. However, there 5279 are operation status codes that allow an IPP server to return 5280 information back to a client about any potential access control 5281 violations for an IPP object. 5283 During a create operation, the client's identity is recorded in the 5284 Job object in an implementation-defined attribute. This information 5285 can be used to verify a client's identity for subsequent operations on 5286 that Job object in order to enforce any access control policy that 5287 might be in effect. See section 8.3 below for more details. 5289 Since the security levels or the specific threats that any given IPP 5290 system administrator may be concerned with cannot be anticipated, IPP 5292 Expires June 19, 1998 5293 MUST be capable of operating with different security mechanisms and 5294 security policies as required by the individual installation. Security 5295 policies might vary from very strong, to very weak, to none at all, 5296 and corresponding security mechanisms will be required. TLS Version 5297 1.0 supports the type of negotiated levels of security required by 5298 most, if not all, potential IPP environments. IPP environments that 5299 require no security can elect to deploy IPP objects that do not 5300 utilize the optional TLS security mechanisms. 5302 8.1 Security Scenarios 5304 The following sections describe specific security attacks for IPP 5305 environments. Where examples are provided they should be considered 5306 illustrative of the environment and not an exhaustive set. Not all of 5307 these environments will necessarily be addressed in initial 5308 implementations of IPP. 5310 8.1.1 Client and Server in the Same Security Domain 5312 This environment is typical of internal networks where traditional 5313 office workers print the output of personal productivity applications 5314 on shared work-group printers, or where batch applications print their 5315 output on large production printers. Although the identity of the user 5316 may be trusted in this environment, a user might want to protect the 5317 content of a document against such attacks as eavesdropping, replaying 5318 or tampering. 5320 8.1.2 Client and Server in Different Security Domains 5322 Examples of this environment include printing a document created by 5323 the client on a publicly available printer, such as at a commercial 5324 print shop; or printing a document remotely on a business associate's 5325 printer. This latter operation is functionally equivalent to sending 5326 the document to the business associate as a facsimile. Printing 5327 sensitive information on a Printer in a different security domain 5328 requires strong security measures. In this environment authentication 5329 of the printer is required as well as protection against unauthorized 5330 use of print resources. Since the document crosses security domains, 5331 protection against eavesdropping and document tampering are also 5332 required. It will also be important in this environment to protect 5333 Printers against "spamming" and malicious document content. 5335 Expires June 19, 1998 5336 8.1.3 Print by Reference 5338 When the document is not stored on the client, printing can be done by 5339 reference. That is, the print request can contain a reference, or 5340 pointer, to the document instead of the actual document itself. 5341 Standard methods currently do not exist for remote entities to 5342 "assume" the credentials of a client for forwarding requests to a 3rd 5343 party. It is anticipated that Print-By-Reference will be used to 5344 access "public" documents and that sophisticated methods for 5345 authenticating "proxies" will not be specified for version 1 of IPP. 5347 8.2 URIs for TLS and non-TLS Access 5349 As described earlier, an IPP object can provide TLS access, non-TLS 5350 access, or both. The "printer-uri" attribute contains the Printer 5351 object's URI for non-TLS access. A different attribute, the "printer- 5352 tls-uri" attribute, contains the Printer object's URI for TLS access. 5353 This duality is not needed for Job objects, since the Printer objects 5354 is the factory for Job objects, and the Printer object will generate 5355 the correct URI for new Job objects depending on the Printer object's 5356 security configuration. 5358 8.3 The "requesting-user-name" Operation Attribute 5360 Each operation SHALL specify the user who is performing the operation 5361 in both of the following two ways: 5363 1) via the MANDATORY "requesting-user-name" operation attribute 5364 that a client SHOULD supply in all operations. The client SHALL 5365 obtain the value for this attribute from an environmental or 5366 network login name for the user, rather than allowing the user to 5367 supply any value. If the client does not supply a value for 5368 "requesting-user-name", the printer SHALL assume that the client 5369 is supplying some anonymous name, such as "anonymous". 5370 2) via an authentication mechanism of the underlying transport 5371 which may be configured to give no authentication information. 5373 There are six cases to consider: 5375 a) the authentication mechanism gives no information, and the 5376 client doesn't specify "requesting-user-name". 5377 b) the authentication mechanism gives no information, but the 5378 client specifies "requesting-user-name". 5379 c) the authentication mechanism specifies a user which has no 5380 human readable representation, and the client doesn't specify 5381 "requesting-user-name". 5383 Expires June 19, 1998 5385 d) the authentication mechanism specifies a user which has no 5386 human readable representation, but the client specifies 5387 "requesting-user-name". 5388 e) the authentication mechanism specifies a user which has a human 5389 readable representation. The Printer object ignores the 5390 "requesting-user-name". 5391 f) the authentication mechanism specifies a user who is trusted 5392 and whose name means that the value of the "requesting-user- 5393 name", which MUST be present, is treated as the authenticated 5394 name. 5396 The user-name has two forms: 5398 - one that is human readable: it is held in the MANDATORY "job- 5399 originating-user-name" Job Description attribute which is set 5400 during the job creation operations. It is used for presentation 5401 only, such as returning in queries or printing on start sheets 5402 - one for authorization: it is held in an undefined (by IPP) Job 5403 object attribute which is set by the job creation operation. It 5404 is used to authorize other operations, such as Send-Document, 5405 Send-URI, Cancel-Job, to determine the user when the my-jobs' 5406 attribute is specified with Get-Jobs, and to limit what 5407 attributes to return with Get-Job-Attributes and Get-Jobs. 5409 The human readable user name: 5411 - is the value of the "requesting-user-name" for cases b, d and f. 5412 - comes from the authentication mechanism for case e 5413 - is some anonymous name, such as "anonymous" for cases a and c. 5415 The user name used for authorization: 5417 - is the value of the "requesting-user-name" for cases b and f. 5418 - comes from the authentication mechanism for cases c, d and e 5419 - is some anonymous name, such as "anonymous" for case a. 5421 The essence of these rules for resolving conflicting sources of user- 5422 names is that a printer implementation is free to pick either source 5423 as long as it achieves consistent results. That is, if a user uses 5424 the same path for a series of requests, the requests MUST appear to 5425 come from the same user from the standpoint of both the human-readable 5426 user name and the user name for authorization. This rule MUST 5427 continue to apply even if a request could be authenticated by two or 5428 more mechanisms. It doesn't matter which the several authentication 5429 mechanism a Printer uses as long as it achieves consistent results. 5430 If a client uses more than one authentication mechanism, it is 5431 recommended that an administrator make all credentials resolve to the 5432 same user and user-name as much as possible. 5434 Expires June 19, 1998 5435 8.4 Restricted Queries 5437 In many IPP operations, a client supplies a list of attributes to be 5438 returned in the response. For security reasons, an IPP object may be 5439 configured not to return all attributes that a client requests. The 5440 job attributes returned MAY depend on whether the requesting user is 5441 the same as the user that submitted the job. The IPP object MAY even 5442 return none of the requested attributes. In such cases, the status 5443 returned is the same as if the object had returned all requested 5444 attributes. The client cannot tell by such a response whether the 5445 requested attribute was present or absent on the object. 5447 8.5 IPP Security Application Profile for TLS 5449 The IPP application profile for TLS follows the standard "Mandatory 5450 Cipher Suites" requirement as documented in the TLS specification 5451 [TLS]. Client implementations MUST NOT assume any other cipher suites 5452 are supported by an IPP Printer object. 5454 If a conforming IPP object supports TLS, it MUST implement and support 5455 the "Mandatory Cipher Suites" as specified in the TLS specification 5456 and MAY support additional cipher suites. 5458 A conforming IPP client SHOULD support TLS, and it MUST implement and 5459 support the "Mandatory Cipher Suites" as specified in the TLS 5460 specification and MAY support additional cipher suites. 5462 It is possible that due to certain government export restrictions some 5463 non-compliant versions of this extension could be deployed. 5464 Implementations wishing to inter-operate with such non-compliant 5465 versions MAY offer the TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA 5466 mechanism. However, since 40 bit ciphers are known to be vulnerable 5467 to attack by current technology, any client which actives a 40 bit 5468 cipher MUST NOT indicate to the user that the connection is completely 5469 secure from eavesdropping. 5471 9. References 5473 [ASCII] 5474 Coded Character Set - 7-bit American Standard Code for 5475 Information Interchange (ASCII), ANSI X3.4-1986. This standard is 5476 the specification of the US-ASCII charset. 5478 Expires June 19, 1998 5480 [CS-POL] 5481 H. Alvestrand, "IETF Policy on Character Sets and Languages, work 5482 in progress , August 29, 5483 1997. 5485 [HTPP] 5486 J. Barnett, K. Carter, R. DeBry, "Initial Draft - Hypertext 5487 Printing Protocol - HTPP/1.0", October 1996, 5488 ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/ overview.ps.gz 5490 [IANA-CS] 5491 IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- 5492 notes/iana/assignments/character-sets 5494 [IANA-CSa] 5495 N. Freed, J. Postel: IANA CharSet Registration Procedures, Work 5496 in Progress (draft-freed-charset-reg-02.txt). 5498 [IANA-MT] 5499 IANA Registry of Media Types: ftp://ftp.isi.edu/in- 5500 notes/iana/assignments/media-types/ 5502 [IPP-PRO] 5503 Herriot, R., Butler, S., Moore, P., Tuner, R., " Internet 5504 Printing Protocol/1.0: Protocol Specifications", draft-ipp-pro- 5505 03.txt, November, 1997. 5507 [IPP-RAT] 5508 Zilles, S., "Rationale for the Structure and Model and Protocol 5509 for the Internet Printing Protocol", draft-ipp-rat-01.txt, 5510 November, 1997. 5512 [IPP-REQ] 5513 Wright, D., "Requirements for an Internet Printing Protocol", 5514 draft-ipp-req-01.txt, November, 1997. 5516 [ISO10646-1] 5517 ISO/IEC 10646-1:1993, "Information technology -- Universal 5518 Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture 5519 and Basic Multilingual Plane, JTC1/SC2." 5521 [ISO8859-1] 5522 ISO/IEC 8859-1:1987, "Information technology -- 8-bit One-Byte 5523 Coded Character Set - Part 1: Latin Alphabet Nr 1", 1987, 5524 JTC1/SC2. 5526 [ISO10175] 5527 ISO/IEC 10175 Document Printing Application (DPA), June 1996. 5529 Expires June 19, 1998 5531 [LDPA] 5532 T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. Taylor, P. 5533 Zehler, "LDPA - Lightweight Document Printing Application", 5534 October 1996, 5535 ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz 5537 [P1387.4] 5538 Kirk, M. (editor), POSIX System Administration - Part 4: Printing 5539 Interfaces, POSIX 1387.4 D8, 1994. 5541 [PSIS] Herriot, R. (editor), X/Open A Printing System 5542 Interoperability Specification (PSIS), August 1995. 5544 [PWG] 5545 Printer Working Group, http://www.pwg.org. 5547 [RFC1035] 5548 P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND 5549 SPECIFICATION", RFC 1035, November 1987. 5551 [RFC1179] 5552 McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 5553 1179, August 1990. 5555 [RFC1630] 5556 T. Berners-Lee, "Universal Resource Identifiers in WWW: A 5557 Unifying Syntax for the Expression of Names and Addresses of 5558 Objects on the Network as used in the World-Wide Web", RFC 1630, 5559 June 1994. 5561 [RFC1738] 5562 Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource 5563 Locators (URL)", RFC 1738, December, 1994. 5565 [RFC1759] 5566 Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 5567 J., "Printer MIB", RFC 1759, March 1995. 5569 [RFC1766] 5570 H. Alvestrand, " Tags for the Identification of Languages", RFC 5571 1766, March 1995. 5573 [RFC2044] 5574 F. Yergeau, "UTF-8, a transformation format of Unicode and ISO 5575 10646", RFC 2044, October 1996. 5577 Expires June 19, 1998 5579 [RFC2068] 5580 R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee, 5581 "Hypertext Transfer Protocol - HTTP/1.1", RFC 2068, January 1997 5583 [RFC2069] 5584 J. Franks, P. Hallam-Baker, J. Hostetler, P. Leach, A. Luotonen, 5585 E. Sink, L. Stewart, "An Extension to HTTP: Digest Access 5586 Authentication", RFC-2069, Jan 1997. 5588 [RFC2045] 5589 N. Fried, N. Borenstein, ", Multipurpose Internet Mail Extensions 5590 (MIME) Part One: Format of Internet Message Bodies " RFC 2045, 5591 November 1996. 5593 [RFC2046] 5594 Multipurpose Internet Mail Extensions (MIME) Part Two: Media 5595 Types. N. Freed & N. Borenstein. November 1996. (Obsoletes 5596 RFC1521, RFC1522, RFC1590), RFC 2046. 5598 [RFC2048] 5599 Multipurpose Internet Mail Extension (MIME) Part Four: 5600 Registration Procedures. N. Freed, J. Klensin & J. Postel. 5601 November 1996. (Format: TXT=45033 bytes) (Obsoletes RFC1521, 5602 RFC1522, RFC1590) (Also BCP0013), RFC 2048. 5604 [RFC2119] 5605 S. Bradner, "Key words for use in RFCs to Indicate Requirement 5606 Levels", RFC 2119 , March 1997 5608 [SWP] 5609 P. Moore, B. Jahromi, S. Butler, "Simple Web Printing SWP/1.0", 5610 May 7, 1997, ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf 5612 10. Copyright Notice 5614 This document and translations of it may be copied and furnished to 5615 others, and derivative works that comment on or otherwise explain it 5616 or assist in its implementation may be prepared, copied, published and 5617 distributed, in whole or in part, without restriction of any kind, 5618 provided that the above copyright notice and this paragraph are 5619 included on all such copies and derivative works. However, this 5620 document itself may not be modified in any way, such as by removing 5621 the copyright notice or references to the Internet Society or other 5622 Internet organizations, except as needed for the purpose of 5623 developing Internet standards in which case the procedures for 5625 Expires June 19, 1998 5626 copyrights defined in the Internet Standards process must be followed, 5627 or as required to translate it into languages other than English. 5629 The limited permissions granted above are perpetual and will not be 5630 revoked by the Internet Society or its successors or assigns. 5632 This document and the information contained herein is provided on an 5633 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 5634 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT 5635 NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN 5636 WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 5637 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 5639 11. Author's Address 5641 Scott A. Isaacson (Editor) 5642 Novell, Inc. 5643 122 E 1700 S 5644 Provo, UT 84606 5646 Phone: 801-861-7366 5647 Fax: 801-861-2517 5648 e-mail: sisaacson@novell.com 5650 Tom Hastings 5651 Xerox Corporation 5652 701 S. Aviation Blvd. 5653 El Segundo, CA 90245 5655 Phone: 310-333-6413 5656 Fax: 310-333-5514 5657 e-mail: hastings@cp10.es.xerox.com 5659 Robert Herriot 5660 Sun Microsystems Inc. 5661 901 San Antonio.Road, MPK-17 5662 Palo Alto, CA 94303 5664 Phone: 650-786-8995 5665 Fax: 650-786-7077 5666 e-mail: robert.herriot@eng.sun.com 5668 Roger deBry 5669 HUC/003G 5670 IBM Corporation 5671 P.O. Box 1900 5673 Expires June 19, 1998 5674 Boulder, CO 80301-9191 5676 Phone: (303) 924-4080 5677 Fax: (303) 924-9889 5678 e-mail: debry@vnet.ibm.com 5680 Patrick Powell 5681 San Diego State University 5682 9475 Chesapeake Dr., Suite D 5683 San Diego, CA 95123 5685 Phone: (619) 874-6543 5686 Fax: (619) 279-8424 5687 e-mail: papowell@sdsu.edu 5689 IPP Mailing List: ipp@pwg.org 5690 IPP Mailing List Subscription: ipp-request@pwg.org 5691 IPP Web Page: http://www.pwg.org/ipp/ 5693 Other Participants: 5695 Chuck Adams - Tektronix 5696 Jeff Barnett - IBM 5697 Ron Bergman - Dataproducts Corp. 5698 Sylvan Butler, HP 5699 Keith Carter, IBM Corporation 5700 Jeff Copeland - QMS 5701 Andy Davidson - Tektronix 5702 Mabry Dozier - QMS 5703 Lee Farrell - Canon Information Systems 5704 Steve Gebert - IBM 5705 Babek Jahromi, Microsoft 5706 David Kellerman - Northlake Software 5707 Rick Landau - Digital 5708 Greg LeClair - Epson 5709 Harry Lewis - IBM 5710 Pete Loya - HP 5711 Ray Lutz - Cognisys 5712 Mike MacKay, Novell, Inc. 5713 Carl-Uno Manros, Xerox, Corp. 5714 Jay Martin - Underscore 5715 Stan McConnell - Xerox 5716 Ira McDonald, High North Inc. 5717 Paul Moore, Microsoft 5718 Tetsuya Morita - Ricoh 5719 Yuichi Niwa - Ricoh 5720 Pat Nogay - IBM 5721 Ron Norton - Printronics 5723 Expires June 19, 1998 5724 Bob Pentecost - HP 5725 Rob Rhoads - Intel 5726 Xavier Riley - Xerox, Corp. 5727 David Roach - Unisys 5728 Stuart Rowley, Kyocera 5729 Hiroyuki Sato - Canon 5730 Bob Setterbo - Adobe 5731 Devon Taylor, Novell, Inc. 5732 Mike Timperman - Lexmark 5733 Randy Turner - Sharp 5734 Atsushi Yuki - Kyocera 5735 Rick Yardumian - Xerox, Corp. 5736 Lloyd Young - Lexmark 5737 Bill Wagner - DPI 5738 Jim Walker - DAZEL 5739 Chris Wellens - Interworking Labs 5740 Rob Whittle - Novell 5741 Don Wright - Lexmark 5742 Peter Zehler, Xerox, Corp. 5743 Steve Zilles, Adobe 5745 Expires June 19, 1998 5747 12. APPENDIX A: Terminology 5749 This specification uses the terminology defined in this section. 5751 12.1 Conformance Terminology 5753 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 5754 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 5755 document are to be interpreted as described in RFC 2119 [RFC2119]. The 5756 sections below reiterate these definitions and include some additional 5757 ones. 5759 12.1.1 MUST 5761 This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", means 5762 that the definition is an absolute requirement of the specification. 5764 12.1.2 MUST NOT 5766 This phrase, or the phrase "SHALL NOT", means that the definition is 5767 an absolute prohibition of the specification. 5769 12.1.3 SHOULD 5771 This word, or the adjective "RECOMMENDED", means that there may exist 5772 valid reasons in particular circumstances to ignore a particular item, 5773 but the full implications must be understood and carefully weighed 5774 before choosing a different course. 5776 12.1.4 SHOULD NOT 5778 This phrase, or the phrase "NOT RECOMMENDED" means that there may 5779 exist valid reasons in particular circumstances when the particular 5780 behavior is acceptable or even useful, but the full implications 5781 should be understood and the case carefully weighed before 5782 implementing any behavior described with this label. 5784 Expires June 19, 1998 5785 12.1.5 MAY 5787 This word, or the adjective "OPTIONAL", means that an item is truly 5788 optional. One vendor may choose to include the item because a 5789 particular marketplace requires it or because the vendor feels that it 5790 enhances the product while another vendor may omit the same item. An 5791 implementation which does not include a particular option MUST be 5792 prepared to inter-operate with another implementation which does 5793 include the option, though perhaps with reduced functionality. In the 5794 same vein an implementation which does include a particular option 5795 MUST be prepared to inter-operate with another implementation which 5796 does not include the option (except, of course, for the feature the 5797 option provides.) 5799 12.1.6 NEED NOT 5801 The verb "NEED NOT" indicates an action that the subject of the 5802 sentence does not have to implement in order to claim conformance to 5803 the standard. The verb "NEED NOT" is used instead of "MAY NOT" since 5804 "MAY NOT" sounds like a prohibition. 5806 12.2 Model Terminology 5808 12.2.1 Keyword 5810 Keywords are used within this document as identifiers of semantic 5811 entities within the abstract model (see section 4.1.5). Attribute 5812 names, some attribute values, attribute syntaxes, and attribute group 5813 names are represented as keywords. 5815 12.2.2 Attributes 5817 An attribute is an item of information that is associated with an 5818 instance of an IPP object. An attribute consists of an attribute name 5819 and one or more attribute values. Each attribute has a specific 5820 attribute syntax. All object attributes are defined in section 4 and 5821 all operation attributes are defined in section 3. 5823 Job Template Attributes described in section 4.2. The client 5824 optionally supplies Job Template attributes in a create request 5825 (operation requests that create Job objects). The Printer object has 5826 associated attributes which define supported and default values for 5827 the Printer. 5829 Expires June 19, 1998 5830 12.2.2.1 Attribute Name 5832 Each attribute is uniquely identified in this document by its 5833 attribute name. An attribute name is a keyword. The keyword 5834 attribute name is given in the section header describing that 5835 attribute. In running text in this document, attribute names are 5836 indicated inside double quotation marks (") where the quotation marks 5837 are not part of the keyword itself. 5839 12.2.2.2 Attribute Group Name 5841 Related attributes are grouped into named groups. The name of the 5842 group is a keyword. The group name may be used in place of naming all 5843 the attributes in the group explicitly. Attribute groups are defined 5844 in section 3. 5846 12.2.2.3 Attribute Value 5848 Each attribute has one or more values. Attribute values are 5849 represented in the syntax type specified for that attribute. In 5850 running text in this document, attribute values are indicated inside 5851 single quotation marks ('), whether their attribute syntax is keyword, 5852 integer, text, etc. where the quotation marks are not part of the 5853 value itself. 5855 12.2.2.4 Attribute Syntax 5857 Each attribute is defined using an explicit syntax type. In this 5858 document, each syntax type is defined as a keyword with specific 5859 meaning. The protocol specification document [IPP-PRO] indicates the 5860 actual "on-the-wire" encoding rules for each syntax type. Attribute 5861 syntax types are defined in section 4.1. 5863 12.2.3 Supports 5865 By definition, a Printer object supports an attribute only if that 5866 Printer object responds with the corresponding attribute populated 5867 with some value(s) in a response to a query for that attribute. A 5868 Printer object supports an attribute value if the value is one of the 5869 Printer object's "supported values" attributes. The device behind a 5870 Printer object may exhibit a behavior that corresponds to some IPP 5871 attribute, but if the Printer object, when queried for that attribute, 5872 doesn't respond with the attribute, then as far as IPP is concerned, 5873 that implementation does not support that feature. If the Printer 5875 Expires June 19, 1998 5876 object's "xxx-supported" attribute is not populated with a particular 5877 value (even if that value is a legal value for that attribute), then 5878 that Printer object does not support that particular value. 5880 A conforming implementation SHALL support all MANDATORY attributes. 5881 However, even for MANDATORY attributes, conformance to IPP does not 5882 mandate that all implementations support all possible values 5883 representing all possible job processing behaviors and features. For 5884 example, if a given instance of a Printer supports only certain 5885 document formats, then that Printer responds with the "document- 5886 format-supported" attribute populated with a set of values, possibly 5887 only one, taken from the entire set of possible values defined for 5888 that attribute. This limited set of values represents the Printer's 5889 set of supported document formats. Supporting an attribute and some 5890 set of values for that attribute enables IPP end users to be aware of 5891 and make use of those features associated with that attribute and 5892 those values. If an implementation chooses to not support an 5893 attribute or some specific value, then IPP end users would have no 5894 ability to make use of that feature within the context of IPP itself. 5895 However, due to existing practice and legacy systems which are not IPP 5896 aware, there might be some other mechanism outside the scope of IPP to 5897 control or request the "unsupported" feature (such as embedded 5898 instructions within the document data itself). 5900 For example, consider the "finishings-supported" attribute. 5902 1) If a Printer object is not physically capable of stapling, the 5903 "finishings-supported" attribute MUST NOT be populated with the 5904 value of 'staple'. 5905 2) A Printer object is physically capable of stapling, however an 5906 implementation chooses not to support stapling in the IPP 5907 "finishings" attribute. In this case, 'staple' SHALL NOT be a 5908 value in the "finishings-supported" Printer object attribute. 5909 Without support for the value 'staple', an IPP end user would 5910 have no means within the protocol itself to request that a Job be 5911 stapled. However, an existing document data formatter might be 5912 able to request that the document be stapled directly with an 5913 embedded instruction within the document data. In this case, the 5914 IPP implementation does not "support" stapling, however the end 5915 user is still able to have some control over the stapling of the 5916 completed job. 5917 3) A Printer object is physically capable of stapling, and an 5918 implementation chooses to support stapling in the IPP 5919 "finishings" attribute. In this case, 'staple' SHALL be a value 5920 in the "finishings-supported" Printer object attribute. Doing so, 5921 would enable end users to be aware of and make use of the 5922 stapling feature using IPP attributes. 5924 Expires June 19, 1998 5926 Even though support for Job Template attributes by a Printer object is 5927 OPTIONAL, it is RECOMMENDED that if the device behind a Printer object 5928 is capable of realizing any feature or function that corresponds to an 5929 IPP attribute and some associated value, then that implementation 5930 SHOULD support that IPP attribute and value. 5932 The set of values in any of the supported value attributes is set 5933 (populated) by some administrative process or automatic sensing 5934 mechanism that is outside the scope of IPP. For administrative policy 5935 and control reasons, an administrator may choose to make only a subset 5936 of possible values visible to the end user. In this case, the real 5937 output device behind the IPP Printer abstraction may be capable of a 5938 certain feature, however an administrator is specifying that access to 5939 that feature not be exposed to the end user through the IPP protocol. 5940 Also, since a Printer object may represent a logical print device (not 5941 just a physical device) the actual process for supporting a value is 5942 undefined and left up to the implementation. However, if a Printer 5943 object supports a value, some manual human action may be needed to 5944 realize the semantic action associated with the value, but no end user 5945 action is required. 5947 For example, if one of the values in the "finishings-supported" 5948 attribute is 'staple', the actual process might be an automatic staple 5949 action by a physical device controlled by some command sent to the 5950 device. Or, the actual process of stapling might be a manual action 5951 by an operator at an operator attended Printer object. 5953 For another example of how supported attributes function, consider a 5954 system administrator who desires to control all print jobs so that no 5955 job sheets are printed in order to conserve paper. To force no job 5956 sheets, the system administrator sets the only supported value for the 5957 "job-sheets-supported" attribute to 'none'. In this case, if a client 5958 requests anything except 'none', the create request is rejected or the 5959 "job-sheets" value is ignored (depending on the value of "ipp- 5960 attribute-fidelity"). To force the use of job start/end sheets on all 5961 jobs, the administrator does not include the value 'none' in the "job- 5962 sheets-supported" attribute. In this case, if a client requests 5963 'none', the create request is rejected or the "job-sheets" value is 5964 ignored (again depending on the value of "ipp-attribute-fidelity"). 5966 12.2.4 print-stream page 5968 A "print-stream page" is a page according to the definition of pages 5969 in the language used to express the document data. 5971 Expires June 19, 1998 5972 12.2.5 impression 5974 An "impression" is the image (possibly many print-stream pages in 5975 different configurations) imposed onto a single media page. 5977 13. APPENDIX B: Status Codes and Suggested Status Code Messages 5979 This section defines status code enum keywords and values that are 5980 used to provide semantic information on the results of an operation 5981 request. Each operation response MUST include a status code. For 5982 error type status codes, the response MAY also contain a status 5983 message that provides a short textual description of the status. The 5984 status code is intended for use by automata, and the status message is 5985 intended for the human end user. Since the status message is an 5986 OPTIONAL component of the operation response, an IPP application 5987 (i.e., a browser, GUI, print driver or gateway) is NOT REQUIRED to 5988 examine or display the status message, since it MAY not be returned to 5989 the application. 5991 The prefix of the status keyword defines the class of response as 5992 follows: 5994 "informational" - Request received, continuing process 5995 "successful" - The action was successfully received, understood, 5996 and accepted 5997 "redirection" - Further action must be taken in order to complete 5998 the request 5999 "client-error" - The request contains bad syntax or cannot be 6000 fulfilled 6001 "server-error" - The IPP object failed to fulfill an apparently 6002 valid request 6004 Since IPP status codes are type2 enums, they are extensible. IPP 6005 clients are NOT REQUIRED to understand the meaning of all registered 6006 status codes, though such understanding is obviously desirable. 6007 However, applications SHALL understand the class of any status code, 6008 as indicated by the prefix, and treat any unrecognized response as 6009 being equivalent to the first status code of that class, with the 6010 exception that an unrecognized response shall not be cached. For 6011 example, if an unrecognized status code of "client-error-xxx-yyy" is 6012 received by the client, it can safely assume that there was something 6013 wrong with its request and treat the response as if it had received a 6014 "client-error-bad-request" status code. In such cases, IPP 6015 applications SHOULD present the OPTIONAL message (if present) to the 6016 end user since the message is likely to contain human readable 6018 Expires June 19, 1998 6019 information which will help to explain the unusual status. The name 6020 of the enum is the suggested status message for US English. 6022 The status code values range from 0x0000 to 0x7FFF. The value ranges 6023 for each status code class are as follows: 6025 "successful" - 0x0000 to 0x00FF 6026 "informational" - 0x0100 to 0x01FF 6027 "redirection" - 0x0200 to 0x02FF 6028 "client-error" - 0x0400 to 0x04FF 6029 "server-error" - 0x0500 to 0x05FF 6031 The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 6032 to 5) is reserved for private use within each status code class. 6033 Values 0x0600 to 0x7FFF are reserved for future assignment and SHALL 6034 not be used. 6036 13.1 Status Codes 6038 Each status code is described below. Section 13.2 contains a table 6039 that indicates which status codes apply to which operations. Sections 6040 15.3 and 15.4 describe the suggested steps for processing IPP 6041 attributes for all operations, including returning status codes. 6043 13.1.1 Informational 6045 This class of status code indicates a provisional response and is to 6046 be used for informational purposes only. 6048 There are no status codes defined in IPP/1.0 for this class of status 6049 code. 6051 13.1.2 Successful Status Codes 6053 This class of status code indicates that the client's request was 6054 successfully received, understood, and accepted. 6056 13.1.2.1 successful-ok (0x0000) 6058 The request has succeeded. 6060 Expires June 19, 1998 6061 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) 6063 The request has succeeded, but some attributes were ignored or 6064 unsupported values were substituted with supported values in order to 6065 process the job without rejecting it. 6067 13.1.2.3 successful-ok-conflicting-attributes (0x0002) 6069 The request has succeeded, but some attribute values conflicted with 6070 the values of other attributes. These conflicting values were either 6071 (1) substituted with (supported) values or (2) the attributes were 6072 removed in order to process the job without rejecting it. 6074 13.1.3 Redirection Status Codes 6076 This class of status code indicates that further action needs to be 6077 taken to fulfill the request. 6079 There are no status codes defined in IPP/1.0 for this class of status 6080 code. 6082 13.1.4 Client Error Status Codes 6084 This class of status code is intended for cases in which the client 6085 seems to have erred. The IPP object SHOULD return a message 6086 containing an explanation of the error situation and whether it is a 6087 temporary or permanent condition. 6089 13.1.4.1 client-error-bad-request (0x0400) 6091 The request could not be understood by the IPP object due to malformed 6092 syntax. The IPP application SHOULD NOT repeat the request without 6093 modifications. 6095 13.1.4.2 client-error-forbidden (0x0401) 6097 The IPP object understood the request, but is refusing to fulfill it. 6098 Additional authentication information or authorization credentials 6099 will not help and the request SHOULD NOT be repeated. This status 6100 code is commonly used when the IPP object does not wish to reveal 6101 exactly why the request has been refused or when no other response is 6102 applicable. 6104 Expires June 19, 1998 6105 13.1.4.3 client-error-not-authenticated (0x0402) 6107 The request requires user authentication. The IPP client may repeat 6108 the request with suitable authentication information. If the request 6109 already included authentication information, then this status code 6110 indicates that authorization has been refused for those credentials. 6111 If this response contains the same challenge as the prior response, 6112 and the user agent has already attempted authentication at least once, 6113 then the response message may contain relevant diagnostic information. 6114 This status codes reveals more information than "client-error- 6115 forbidden". 6117 13.1.4.4 client-error-not-authorized (0x0403) 6119 The requester is not authorized to perform the request. Additional 6120 authentication information or authorization credentials will not help 6121 and the request SHOULD NOT be repeated. This status code is used when 6122 the IPP object wishes to reveal that the authentication information is 6123 understandable, however, the requester is explicitly not authorized to 6124 perform the request. This status codes reveals more information than 6125 "client-error-forbidden" and "client-error-not-authenticated". 6127 13.1.4.5 client-error-not-possible (0x0404) 6129 This status code is used when the request is for something that can 6130 not happen. For example, there might be a request to cancel a job 6131 that has already been canceled or aborted by the system. The IPP 6132 client SHOULD NOT repeat the request. 6134 13.1.4.6 client-error-timeout (0x0405) 6136 The client did not produce a request within the time that the IPP 6137 object was prepared to wait. For example, a client issued a Create- 6138 Job operation and then, after a long period of time, issued a Send- 6139 Document operation and this error status code was returned in response 6140 to the Send-Document request (see section 3.3.1). The IPP object 6141 might have been forced to clean up resources that had been held for 6142 the waiting additional Documents. The IPP object was forced to close 6143 the Job since the client took too long. The client SHOULD NOT repeat 6144 the request without modifications. 6146 Expires June 19, 1998 6147 13.1.4.7 client-error-not-found (0x0406) 6149 The IPP object has not found anything matching the request URI. No 6150 indication is given of whether the condition is temporary or 6151 permanent. For example, a client with an old reference to a Job (a 6152 URI) tries to cancel the Job, however in the mean time the Job might 6153 have been completed and all record of it at the Printer has been 6154 deleted. This status code, 'client-error-not-found' is returned 6155 indicating that the referenced Job can not be found. This error 6156 status code is also used when a client supplies a URI as a reference 6157 to the document data in either a Print-URI or Send-URI operation, but 6158 the document can not be found. 6160 In practice, an IPP application should avoid a not found situation by 6161 first querying and presenting a list of valid Printer URIs and Job 6162 URIs to the end-user. 6164 13.1.4.8 client-error-gone (0x0407) 6166 The requested object is no longer available and no forwarding address 6167 is known. This condition should be considered permanent. Clients 6168 with link editing capabilities should delete references to the request 6169 URI after user approval. If the IPP object does not know or has no 6170 facility to determine, whether or not the condition is permanent, the 6171 status code "client-error-not-found" should be used instead. 6173 This response is primarily intended to assist the task of maintenance 6174 by notifying the recipient that the resource is intentionally 6175 unavailable and that the IPP object administrator desires that remote 6176 links to that resource be removed. It is not necessary to mark all 6177 permanently unavailable resources as "gone" or to keep the mark for 6178 any length of time -- that is left to the discretion of the IPP object 6179 administrator. 6181 13.1.4.9 client-error-request-entity-too-large (0x0408) 6183 The IPP object is refusing to process a request because the request 6184 entity is larger than the IPP object is willing or able to process. 6185 An IPP Printer returns this status code when it limits the size of 6186 print jobs and it receives a print job that exceeds that limit or when 6187 the attributes are so many that their encoding causes the request 6188 entity to exceed IPP object capacity. 6190 Expires June 19, 1998 6191 13.1.4.10 client-error-request-uri-too-long (0x0409) 6193 The IPP object is refusing to service the request because the request 6194 URI or the "document-uri" is longer than the IPP object is willing to 6195 interpret. This rare condition is only likely to occur when a client 6196 has improperly submitted a request with long query information (e.g. 6197 an IPP application allows an end-user to enter an invalid URI), when 6198 the client has descended into a URI "black hole" of redirection (e.g., 6199 a redirected URI prefix that points to a suffix of itself), or when 6200 the IPP object is under attack by a client attempting to exploit 6201 security holes present in some IPP objects using fixed-length buffers 6202 for reading or manipulating the Request-URI. 6204 13.1.4.11 client-error-document-format-not-supported (0x040A) 6206 The IPP object is refusing to service the request because the document 6207 data is in a format, as specified in the "document-format" operation 6208 attribute, that is not supported by the Printer object. This error is 6209 returned independent of the client-supplied "ipp-attribute-fidelity". 6210 The Printer object SHALL return this status code, even if there are 6211 other attributes that are not supported as well, since this error is a 6212 bigger problem than with Job Template attributes. 6214 13.1.4.12 client-error-attributes-or-values-not-supported (0x040B) 6216 In a create request, if the Printer object does not support one or 6217 more attributes or attribute values supplied in the request and the 6218 client supplied the "ipp-attributes-fidelity" operation attribute with 6219 the 'true' value, the Printer object shall return this status code. 6220 For example, if the request indicates 'iso-a4' media, but that media 6221 type is not supported by the Printer object. Or, if the client 6222 supplies an optional attribute and the attribute itself is not even 6223 supported by the Printer. If the "ipp-attribute-fidelity" attribute 6224 is 'false', the Printer SHALL ignore or substitute values for 6225 unsupported attributes and values rather than reject the request and 6226 return this status code. 6228 For any operation where a client requests attributes (such as a Get- 6229 Jobs, Get-Printer-Attributes, or Get-Job-Attributes operation), if the 6230 IPP object does not support one or more of the requested attributes, 6231 the IPP object simply ignores the unsupported requested attributes and 6232 processes the request as if they had not been supplied, rather than 6233 returning this status code. 6235 Expires June 19, 1998 6236 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) 6238 The type of the client supplied URI in a Print-URI or a Send-URI 6239 operation is not supported. 6241 13.1.4.14 client-error-charset-not-supported (0x040D) 6243 For any operation, if the IPP Printer does not support the charset 6244 supplied by the client in the "attributes-charset" operation 6245 attribute, the Printer SHALL reject the operation and return this 6246 status (see Section 3.1.3.1). 6248 13.1.4.15 client-error-conflicting-attributes (0x040E) 6250 The request is rejected because some attribute values conflicted with 6251 the values of other attributes. 6253 13.1.5 Server Error Status Codes 6255 This class of status codes indicates cases in which the IPP object is 6256 aware that it has erred or is incapable of performing the request. 6257 The IPP object SHOULD include a message containing an explanation of 6258 the error situation, and whether it is a temporary or permanent 6259 condition. 6261 13.1.5.1 server-error-internal-error (0x0500) 6263 The IPP object encountered an unexpected condition that prevented it 6264 from fulfilling the request. This error status code differs from 6265 "server-error-temporary-error" in that it implies a more permanent 6266 type of internal error. It also differs from "server-error-device- 6267 error" in that it implies an unexpected condition (unlike a paper-jam 6268 or out-of-toner problem which is undesirable but expected). This 6269 error status code indicates that probably some knowledgeable human 6270 intervention is required. 6272 13.1.5.2 server-error-operation-not-supported (0x0501) 6274 The IPP object does not support the functionality required to fulfill 6275 the request. This is the appropriate response when the IPP object does 6276 not recognize an operation or is not capable of supporting it. 6278 Expires June 19, 1998 6279 13.1.5.3 server-error-service-unavailable (0x0502) 6281 The IPP object is currently unable to handle the request due to a 6282 temporary overloading or maintenance of the IPP object. The 6283 implication is that this is a temporary condition which will be 6284 alleviated after some delay. If known, the length of the delay may be 6285 indicated in the message. If no delay is given, the IPP application 6286 should handle the response as it would for a "server-error-temporary- 6287 internal-error" response. If the condition is more permanent, the 6288 error status codes "client-error-gone" or "client-error-not-found" 6289 could be used. 6291 13.1.5.4 server-error-version-not-supported (0x0503) 6293 The IPP object does not support, or refuses to support, the IPP 6294 protocol version that was used in the request message. The IPP object 6295 is indicating that it is unable or unwilling to complete the request 6296 using the same version as supplied in the request other than with this 6297 error message. The response should contain a Message describing why 6298 that version is not supported and what other versions are supported by 6299 that IPP object. 6301 A conforming IPP/1.0 client SHALL specify the valid version ('1.0') on 6302 each request. A conforming IPP/1.0 object SHALL NOT return this 6303 status code to a conforming IPP/1.0 client. An IPP object SHALL 6304 return this status code to a non-conforming IPP client. The response 6305 SHALL identify a version that the IPP object does support. 6307 13.1.5.5 server-error-device-error (0x0504) 6309 A printer error, such as a paper jam, occurs while the IPP object 6310 processes a Print or Send operation. The response contains the true 6311 Job Status (the values of the "job-state" and "job-state-reasons" 6312 attributes). Additional information can be returned in the optional 6313 "job-state-message" attribute value or in the OPTIONAL status message 6314 that describes the error in more detail. This error status code is 6315 only returned in situations where the Printer is unable to accept the 6316 create request because of such a device error. For example, if the 6317 Printer is unable to spool, and can only accept one job at a time, the 6318 reason it might reject a create request is that the printer currently 6319 has a paper jam. In many cases however, where the Printer object can 6320 accept the request even though the Printer has some error condition, 6321 the 'successful-ok' status code will be returned. In such a case, the 6322 client would look at the returned Job Object Attributes or later query 6323 the Printer to determine its state and state reasons. 6325 Expires June 19, 1998 6326 13.1.5.6 server-error-temporary-error (0x0505) 6328 A temporary error such as a buffer full write error, a memory overflow 6329 (i.e. the document data exceeds the memory of the Printer), or a disk 6330 full condition, occurs while the IPP Printer processes an operation. 6331 The client MAY try the unmodified request again at some later point in 6332 time with an expectation that the temporary internal error condition 6333 may have been cleared. Alternatively, as an implementation option, a 6334 Printer object MAY delay the response until the temporary condition is 6335 cleared so that no error is returned. 6337 13.1.5.7 server-error-not-accepting-jobs (0x0506) 6339 A temporary error indicating that the Printer is not currently 6340 accepting jobs, because the administrator has set the value of the 6341 Printer's "printer-is-not-accepting-jobs" attribute to 'false' (by 6342 means outside of IPP/1.0). 6344 Expires June 19, 1998 6345 13.2 Status Codes for IPP Operations 6347 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 6348 SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and 6349 Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job 6351 IPP Operations 6352 IPP Status Keyword PJ PU CJ SD SU V GA GJ C 6353 ------------------ -- -- -- -- -- - -- -- - 6354 successful-ok x x x x x x x x x 6355 successful-ok-ignored-or-substituted- x x x x x x x x x 6356 attributes 6357 successful-ok-conflicting-attributes x x x x x x x x x 6358 client-error-bad-request x x x x x x x x x 6359 client-error-forbidden x x x x x x x x x 6360 client-error-not-authenticated x x x x x x x x x 6361 client-error-not-authorized x x x x x x x x x 6362 client-error-not-possible x x x x x x x x x 6363 client-error-timeout x x x x x x x x x 6364 client-error-not-found x x x x x x x x x 6365 client-error-gone x x x x x x x x x 6366 client-error-request-entity-too-large x x x x x x x x x 6367 client-error-request-uri-too-long x x x x x x x x x 6368 client-error-document-format-not- x x x x x x 6369 supported 6370 client-error-attributes-or-values-not- x x x x x x x x x 6371 supported 6372 client-error-uri-scheme-not-supported x x 6373 client-error-charset-not-supported x x x x x x x x x 6374 client-error-conflicting-attributes x x x x x x x x x 6375 server-error-internal-error x x x x x x x x x 6376 server-error-operation-not-supported x x x x 6377 server-error-service-unavailable x x x x x x x x x 6378 server-error-version-not-supported x x x x x x x x x 6379 server-error-device-error x x x x x 6380 server-error-temporary-error x x x x x 6381 server-error-not-accepting-jobs x x x x x x 6383 14. APPENDIX C: "media" keyword values 6385 Standard keyword values are taken from several sources. 6387 Standard values are defined (taken from DPA[ISO10175] and the Printer 6388 MIB[RFC1759]): 6390 Expires June 19, 1998 6391 'default': The default medium for the output device 6392 'iso-a4-white': Specifies the ISO A4 white medium 6393 'iso-a4-colored': Specifies the ISO A4 colored medium 6394 'iso-a4-transparent' Specifies the ISO A4 transparent medium 6395 'iso-a3-white': Specifies the ISO A3 white medium 6396 'iso-a3-colored': Specifies the ISO A3 colored medium 6397 'iso-a5-white': Specifies the ISO A5 white medium 6398 'iso-a5-colored': Specifies the ISO A5 colored medium 6399 'iso-b4-white': Specifies the ISO B4 white medium 6400 'iso-b4-colored': Specifies the ISO B4 colored medium 6401 'iso-b5-white': Specifies the ISO B5 white medium 6402 'iso-b5-colored': Specifies the ISO B5 colored medium 6403 'jis-b4-white': Specifies the JIS B4 white medium 6404 'jis-b4-colored': Specifies the JIS B4 colored medium 6405 'jis-b5-white': Specifies the JIS B5 white medium 6406 'jis-b5-colored': Specifies the JIS B5 colored medium 6408 The following standard values are defined for North American media: 6410 'na-letter-white': Specifies the North American letter white medium 6411 'na-letter-colored': Specifies the North American letter colored 6412 medium 6413 'na-letter-transparent': Specifies the North American letter 6414 transparent medium 6415 'na-legal-white': Specifies the North American legal white medium 6416 'na-legal-colored': Specifies the North American legal colored 6417 medium 6419 The following standard values are defined for envelopes: 6421 'iso-b4-envelope': Specifies the ISO B4 envelope medium 6422 'iso-b5-envelope': Specifies the ISO B5 envelope medium 6423 'iso-c3-envelope': Specifies the ISO C3 envelope medium 6424 'iso-c4-envelope': Specifies the ISO C4 envelope medium 6425 'iso-c5-envelope': Specifies the ISO C5 envelope medium 6426 'iso-c6-envelope': Specifies the ISO C6 envelope medium 6427 'iso-designated-long-envelope': Specifies the ISO Designated Long 6428 envelope medium 6429 'na-10x13-envelope': Specifies the North American 10x13 envelope 6430 medium 6431 'na-9x12-envelope': Specifies the North American 9x12 envelope 6432 medium 6433 'monarch-envelope': Specifies the Monarch envelope 6434 'na-number-10-envelope': Specifies the North American number 10 6435 business envelope medium 6436 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 6438 Expires June 19, 1998 6439 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 6440 'na-10x14-envelope': Specifies the North American 10x14 inch 6441 envelope 6442 'na-number-9-envelope': Specifies the North American number 9 6443 business envelope 6444 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 6445 'na-10x15-envelope': Specifies the North American 10x15 inch 6446 envelope 6448 The following standard values are defined for the less commonly used 6449 media (white-only): 6451 'executive-white': Specifies the white executive medium 6452 'folio-white': Specifies the folio white medium 6453 'invoice-white': Specifies the white invoice medium 6454 'ledger-white': Specifies the white ledger medium 6455 'quarto-white': Specified the white quarto medium 6456 'iso-a0-white': Specifies the ISO A0 white medium 6457 'iso-a1-white': Specifies the ISO A1 white medium 6458 'iso-a2-white': Specifies the ISO A2 white medium 6459 'iso-a6-white': Specifies the ISO A6 white medium 6460 'iso-a7-white': Specifies the ISO A7 white medium 6461 'iso-a8-white': Specifies the ISO A8 white medium 6462 'iso-a9-white': Specifies the ISO A9 white medium 6463 'iso-10-white': Specifies the ISO A10 white medium 6464 'iso-b0-white': Specifies the ISO B0 white medium 6465 'iso-b1-white': Specifies the ISO B1 white medium 6466 'iso-b2-white': Specifies the ISO B2 white medium 6467 'iso-b3-white': Specifies the ISO B3 white medium 6468 'iso-b6-white': Specifies the ISO B6 white medium 6469 'iso-b7-white': Specifies the ISO B7 white medium 6470 'iso-b8-white': Specifies the ISO B8 white medium 6471 'iso-b9-white': Specifies the ISO B9 white medium 6472 'iso-b10-white': Specifies the ISO B10 white medium 6473 'jis-b0-white': Specifies the JIS B0 white medium 6474 'jis-b1-white': Specifies the JIS B1 white medium 6475 'jis-b2-white': Specifies the JIS B2 white medium 6476 'jis-b3-white': Specifies the JIS B3 white medium 6477 'jis-b6-white': Specifies the JIS B6 white medium 6478 'jis-b7-white': Specifies the JIS B7 white medium 6479 'jis-b8-white': Specifies the JIS B8 white medium 6480 'jis-b9-white': Specifies the JIS B9 white medium 6481 'jis-b10-white': Specifies the JIS B10 white medium 6483 The following standard values are defined for engineering media: 6485 Expires June 19, 1998 6486 'a': Specifies the engineering A size medium 6487 'b': Specifies the engineering B size medium 6488 'c': Specifies the engineering C size medium 6489 'd': Specifies the engineering D size medium 6490 'e': Specifies the engineering E size medium 6492 The following standard values are defined for input-trays (from ISO 6493 DPA and the Printer MIB): 6495 'top': The top input tray in the printer. 6496 'middle': The middle input tray in the printer. 6497 'bottom': The bottom input tray in the printer. 6498 'envelope': The envelope input tray in the printer. 6499 'manual': The manual feed input tray in the printer. 6500 'large-capacity': The large capacity input tray in the printer. 6501 'main': The main input tray 6502 'side': The side input tray 6504 The following standard values are defined for media sizes (from ISO 6505 DPA): 6507 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined 6508 in ISO 216 6509 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 6510 ISO 216 6511 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 6512 ISO 216 6513 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 6514 ISO 216 6515 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 6516 ISO 216 6517 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 6518 ISO 216 6519 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 6520 ISO 216 6521 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 6522 ISO 216 6523 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in 6524 ISO 216 6525 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in 6526 ISO 216 6527 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 6528 ISO 216 6529 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined 6530 in ISO 216 6532 Expires June 19, 1998 6534 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined 6535 in ISO 216 6536 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 6537 ISO 216 6538 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 6539 ISO 216 6540 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 6541 ISO 216 6542 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 6543 ISO 216 6544 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 6545 ISO 216 6546 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 6547 ISO 216 6548 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in 6549 ISO 216 6550 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in 6551 ISO 216 6552 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 6553 ISO 216 6554 'na-letter': Specifies the North American letter size: 8.5 inches 6555 by 11 inches 6556 'na-legal': Specifies the North American legal size: 8.5 inches by 6557 14 inches 6558 'executive': Specifies the executive size (7.25 X 10.5 in) 6559 'folio': Specifies the folio size (8.5 X 13 in) 6560 'invoice': Specifies the invoice size (5.5 X 8.5 in) 6561 'ledger': Specifies the ledger size (11 X 17 in) 6562 'quarto': Specifies the quarto size (8.5 X 10.83 in) 6563 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 6564 ISO 269 6565 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 6566 ISO 269 6567 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 6568 ISO 269 6569 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 6570 ISO 269 6571 'iso-designated-long': Specifies the ISO Designated Long size: 110 6572 mm by 220 mm as defined in ISO 269 6573 'na-10x13-envelope': Specifies the North American 10x13 size: 10 6574 inches by 13 inches 6575 'na-9x12-envelope': Specifies the North American 9x12 size: 9 6576 inches by 12 inches 6577 'na-number-10-envelope': Specifies the North American number 10 6578 business envelope size: 4.125 inches by 9.5 inches 6579 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 6580 size 6582 Expires June 19, 1998 6584 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 6585 size 6586 'na-10x14-envelope': Specifies the North American 10x14 inch 6587 envelope size 6588 'na-number-9-envelope': Specifies the North American number 9 6589 business envelope size 6590 'na-6x9-envelope': Specifies the North American 6x9 envelope size 6591 'na-10x15-envelope': Specifies the North American 10x15 envelope 6592 size 6593 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 6594 in) 6595 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 6596 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 6597 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 6598 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 6599 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 6600 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 6601 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 6602 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 6603 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 6604 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 6605 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 6607 15. APPENDIX D: Processing IPP Attributes 6609 When submitting a print job to a Printer object, the IPP model allows 6610 a client to supply operation and Job Template attributes along with 6611 the document data. These Job Template attributes in the create 6612 request affect the rendering, production and finishing of the 6613 documents in the job. Similar types of instructions may also be 6614 contained in the document to be printed, that is, embedded within the 6615 print data itself. In addition, the Printer has a set of attributes 6616 that describe what rendering and finishing options which are supported 6617 by that Printer. This model, which allows for flexibility and power, 6618 also introduces the potential that at job submission time, these 6619 client-supplied attributes may conflict with either: 6621 - what the implementation is capable of realizing (i.e., what the 6622 Printer supports), as well as 6623 - the instructions embedded within the print data itself. 6625 The following sections describe how these two types of conflicts are 6626 handled in the IPP model. 6628 Expires June 19, 1998 6629 15.1 Fidelity 6631 If there is a conflict between what the client requests and what a 6632 Printer object supports, the client may request one of two possible 6633 conflict handling mechanisms: 6635 1) either reject the job since the job can not be processed exactly 6636 as specified, or 6637 2) allow the Printer to make any changes necessary to proceed with 6638 processing the Job the best it can. 6640 In the first case the client is indicating to the Printer object: 6641 "Print the job exactly as specified with no exceptions, and if that 6642 can't be done, don't even bother printing the job at all." In the 6643 second case, the client is indicating to the Printer object: "It is 6644 more important to make sure the job is printed rather than be 6645 processed exactly as specified; just make sure the job is printed even 6646 if client supplied attributes need to be changed or ignored." 6648 The IPP model accounts for this situation by introducing an "ipp- 6649 attribute-fidelity" attribute. 6651 In a create request, "ipp-attribute-fidelity" is a boolean operation 6652 attribute that is OPTIONALLY supplied by the client. The value 'true' 6653 indicates that total fidelity to client supplied Job Template 6654 attributes and values is required. The client is requesting that the 6655 Job be printed exactly as specified, and if that is not possible then 6656 the job MUST be rejected rather than processed incorrectly. The value 6657 'false' indicates that a reasonable attempt to print the Job is 6658 acceptable. If a Printer does not support some of the client supplied 6659 Job Template attributes or values, the Printer SHALL ignore them or 6660 substitute any supported value for unsupported values, respectively. 6661 The Printer may choose to substitute the default value associated with 6662 that attribute, or use some other supported value that is similar to 6663 the unsupported requested value. For example, if a client supplies a 6664 "media" value of 'na-letter', the Printer may choose to substitute 6665 'iso-a4' rather than a default value of 'envelope'. If the client does 6666 not supply the "ipp-attribute-fidelity" attribute, the Printer assumes 6667 a value of 'false'. 6669 Each Printer implementation MUST support both types of "fidelity" 6670 printing (that is whether the client supplies a value of 'true' or 6671 'false'): 6673 - If the client supplies 'false' or does not supply the attribute, 6674 the Printer object SHALL always accept the request by ignoring 6675 unsupported Job Template attributes and by substituting 6677 Expires June 19, 1998 6678 unsupported values of supported Job Template attributes with 6679 supported values. 6680 - If the client supplies 'true', the Printer object SHALL reject 6681 the request if the client supplies unsupported Job Template 6682 attributes. 6684 Since a client can always query a Printer to find out exactly what is 6685 and is not supported, "ipp-attribute-fidelity" set to 'false' is 6686 useful when: 6688 1) The End-User uses a command line interface to request attributes 6689 that might not be supported. 6690 2) In a GUI context, if the End User expects the job might be moved 6691 to another printer and prefers a sub-optimal result to nothing at 6692 all. 6693 3) The End User just wants something reasonable in lieu of nothing 6694 at all. 6696 15.2 Page Description Language (PDL) Override 6698 If there is a conflict between the value of an IPP Job Template 6699 attribute and a corresponding instruction in the document data, the 6700 value of the IPP attribute SHOULD take precedence over the document 6701 instruction. Consider the case where a previously formatted file of 6702 document data is sent to an IPP Printer. In this case, if the client 6703 supplies any attributes at job submission time, the client desires 6704 that those attributes override the embedded instructions. Consider 6705 the case were a previously formatted document has embedded in it 6706 commands to load 'iso-a4' media. However, the document is passed to 6707 an end user that only has access to a printer with 'na-letter' media 6708 loaded. That end user most likely wants to submit that document to an 6709 that IPP Printer with the "media" Job Template attribute set to 'na- 6710 letter'. The job submission attribute should take precedence over the 6711 embedded PDL instruction. However, until companies that supply 6712 document data interpreters allow a way for external IPP attributes to 6713 take precedence over embedded job production instructions, a Printer 6714 might not be able to support the semantics that IPP attributes 6715 override the embedded instructions. 6717 The IPP model accounts for this situation by introducing a "pdl- 6718 override-supported" attribute that describes the Printer objects 6719 capabilities to override instructions embedded in the PDL data stream. 6720 The value of the "pdl-override-supported" attribute is configured by 6721 means outside IPP/1.0. 6723 This MANDATORY Printer attribute takes on the following values: 6725 Expires June 19, 1998 6726 - 'attempted': This value indicates that the Printer object 6727 attempts to make the IPP attribute values take precedence over 6728 embedded instructions in the document data, however there is no 6729 guarantee. 6730 - 'not-attempted': This value indicates that the Printer object 6731 makes no attempt to make the IPP attribute values take precedence 6732 over embedded instructions in the document data. 6734 At job processing time, an implementation that supports the value of 6735 'attempted' might do one of several different actions: 6737 1) generate an output device specific command sequence to realize 6738 the feature represented by the IPP attribute value 6739 2) parse the document data itself and replace the conflicting 6740 embedded instruction with a new embedded instruction that matches 6741 the intent of the IPP attribute value 6742 3) indicate to the Printer that external supplied attributes take 6743 precedence over embedded instructions and then pass the external 6744 IPP attribute values to the document data interpreter 6745 4) anything else that allows for the semantics that IPP attributes 6746 override embedded document data instructions. 6748 Since 'attempted' does not offer any type of guarantee, even though a 6749 given Printer object might not do a very "good" job of attempting to 6750 ensure that IPP attributes take a higher precedence over instructions 6751 embedded in the document data, it would still be a conforming 6752 implementation. 6754 At job processing time, an implementation that supports the value of 6755 'not-attempted' might do one of the following actions: 6757 1) Simply pre-pend the document data with the PDL instruction that 6758 corresponds to the client-supplied PDL attribute, such that if 6759 the document data also has the same PDL instruction, it will 6760 override what the Printer object pre-pended. In other words, 6761 this implementation is using the same implementation semantics 6762 for the client-supplied IPP attributes as for the Printer object 6763 defaults. 6764 2) Actually modify the embedded instructions to correspond to the 6765 semantics of the client-supplied IPP attributes. 6767 Note: The "ipp-attribute-fidelity" attribute applies to the Printer's 6768 ability to either accept or reject other unsupported Job Template 6769 attributes. In other words, if "ipp-attribute-fidelity" is set to 6770 'true', a Job is accepted if and only if the client supplied Job 6771 Template attributes and values are supported by the Printer. Whether 6772 these attributes actually affect the processing of the Job when the 6773 document data contains embedded instructions depends on the ability of 6775 Expires June 19, 1998 6776 the Printer to override the instructions embedded in the document data 6777 with the semantics of the IPP attributes. If the document data 6778 attributes can be overridden ("pdl-override-supported" set to 6779 'attempted'), the Printer makes an attempt to use the IPP attributes 6780 when processing the Job. If the document data attributes can not be 6781 overridden ("pdl-override-supported" set to 'not-attempted'), the 6782 Printer makes no attempt to override the embedded document data 6783 instructions with the IPP attributes when processing the Job, and 6784 hence, the IPP attributes may fail to affect the Job processing and 6785 output when the corresponding instruction is embedded in the document 6786 data. 6788 15.3 Suggested Operation Processing Steps for All Operations 6790 When an IPP object receives a request, the IPP object either accepts 6791 or rejects the request. In order to determine whether or not to accept 6792 or reject the request, the IPP object SHOULD execute the following 6793 steps. The order of the steps may be rearranged and/or combined, 6794 including making one or multiple passes over the request. Therefore, 6795 the error status codes returned may differ between implementations. 6796 The next section contains the additional steps for the Print-Job, 6797 Validate-Job, Print-URI, Create-Job, Send-Document, and Send-URI 6798 operations that create jobs, adds documents, and validates jobs. 6800 In the following, processing continues step by step until a "RETURNS 6801 the xxx status code _" statement is encountered. Error returns are 6802 indicated by the verb: "REJECTS". Since clients have difficulty 6803 getting the status code, before sending all of the document data in a 6804 Print-Job request, clients SHOULD use the Validate-Job operation 6805 before sending large documents to be printed, in order to validate 6806 whether the IPP Printer will accept the job or not. 6808 It is assumed that security authentication and authorization has 6809 already taken place at a lower layer. 6811 15.3.1 Validate version number 6813 Every request and every response contains the major and minor version 6814 number of the syntax and semantics that the client and IPP object is 6815 using, respectively, in a fixed position that is the same for all 6816 versions. The IPP object checks to see if the major version number 6817 supplied in the request is supported. If not, the Printer object 6818 REJECTS the request and RETURNS the 'server-error-version-not- 6819 supported' status code in the response. The IPP object returns in the 6820 fixed version number field in the response what the major and minor 6821 version is for the error response. Thus the client can learn at least 6823 Expires June 19, 1998 6824 one major and minor version that the IPP object supports. The IPP 6825 object is encouraged to return the closest version number to the one 6826 supplied by the client. 6828 The checking of the minor version number is implementation dependent, 6829 however if the client supplied minor version is explicitly supported, 6830 the IPP object SHALL respond using that identical minor version 6831 number. If the requested minor version is either higher or lower than 6832 the highest supported version, the IPP object SHOULD return the 6833 highest supported minor version. In either case, both the client and 6834 the IPP object are guaranteed to communicated up to at least the level 6835 of the common major version. 6837 15.3.2 Validate operation code 6839 The Printer object checks to see if the operation is supported as 6840 indicated in the Printer object's "printer-operations-supported" 6841 attribute. If not, the Printer REJECTS the request and returns the 6842 'server-error-operation-not-supported' status code in the response. 6844 Note: Validating the version number and operation code requires that 6845 these fields be in the same fixed octet positions in all versions of 6846 the protocol. These fields are validated before proceeding with the 6847 rest of the validation. 6849 15.3.3 Validate attribute group and attribute presence and order 6851 The order of the following validation steps depends on implementation. 6853 15.3.3.1 Validate the presence and order of attribute groups 6855 Client requests and IPP object responses contain attribute groups that 6856 Section 3 requires to be present and in a specified order. An IPP 6857 object verifies that the attribute groups are present and in the 6858 correct order in requests supplied by clients (attribute groups 6859 without an * in the following tables). 6861 If an IPP object receives a request with (1) required attribute groups 6862 missing, or (2) the attributes groups are out of order, or (3) the 6863 groups are repeated, the IPP object REJECTS the request and RETURNS 6864 the 'client-error-bad-request' status code. For example, it is an 6865 error for the Job Template Attributes group to occur before the 6866 Operation Attributes group, for the Operation Attributes group to be 6867 omitted, or for an attribute group to occur more than once, except in 6868 the Get-Jobs response. 6870 Expires June 19, 1998 6871 Since this kind of attribute group error is most likely to be an error 6872 detected by a client developer rather than by a customer, the IPP 6873 object NEED NOT return an indication of which attribute group was in 6874 error in either the Unsupported Attributes group or the Status 6875 Message. Also, the IPP object NEED NOT find all attribute group 6876 errors before returning this error. 6878 15.3.3.2 Ignore unknown attribute groups in the expected position 6880 Future attribute groups may be added to the specification at the end 6881 of requests just before the Document Content and at the end of 6882 response, except for the Get-Jobs response, where it maybe there or 6883 before the first job attributes returned. If an IPP object receives 6884 an unknown attribute group in these positions, it ignores the entire 6885 group, rather than returning an error, since that group may be a new 6886 group in a later minor version of the protocol that can be ignored. 6887 (If the new attribute group cannot be ignored without confusing the 6888 client, the major version number would have been increased in the 6889 protocol document and in the request). If the unknown group occurs in 6890 a different position, the IPP object REJECTS the request and RETURNS 6891 the 'client-error-bad-request' status code. 6893 Clients also ignore unknown attribute groups returned in a response. 6895 Note: By validating that requests are in the proper form, IPP objects 6896 force clients to use the proper form which, in turn, increases the 6897 chances that customers will be able to use such clients from multiple 6898 vendors with IPP objects from other vendors. 6900 15.3.3.3 Validate the presence of a single occurrence of required 6901 Operation attributes 6903 Client requests and IPP object responses contain Operation attributes 6904 that Section 4 requires to be present. Attributes may be in any order 6905 within a group. An IPP object verifies that the attributes that 6906 Section 4 requires to be supplied by the client have been supplied in 6907 the request (attributes without an * in the following tables). An 6908 asterisk (*) indicates groups and Operation attributes that the client 6909 may omit in a request or an IPP object may omit in a response. 6911 If an IPP object receives a request with required attributes missing 6912 or repeated from a group, the IPP object REJECTS the request and 6913 RETURNS the 'client-error-bad-request' status code. For example, it 6914 is an error for the "attributes-charset" or "attributes-natural- 6915 language" attribute to be omitted in any operation request, or for an 6916 Operation attribute to be supplied in a Job Template group or a Job 6918 Expires June 19, 1998 6919 Template attribute to be supplied in an Operation Attribute group in a 6920 create request. It is also an error to supply the "attributes- 6921 charset" attribute twice. 6923 Since these kinds of attribute errors are most likely to be detected 6924 by a client developer rather than by a customer, the IPP object NEED 6925 NOT return an indication of which attribute was in error in either the 6926 Unsupported Attributes group or the Status Message. Also, the IPP 6927 object NEED NOT find all attribute errors before returning this error. 6929 The following tables list all the attributes for all the operations by 6930 attribute group in each request and each response. The left to right 6931 order of the groups is the order that the client supplies the groups 6932 as specified in Section 3. The order of the attributes within a group 6933 is arbitrary, though the tables below lists the attributes in the 6934 following order with the following notation: 6936 (M) MANDATORY attributes that an IPP object MUST support and 6937 that a client MUST supply 6938 (M*) MANDATORY attributes that an IPP object MUST support, but 6939 that a client may omit in a request or an IPP object 6940 may omit in a response 6941 (O) OPTIONAL attributes that an IPP object NEED NOT support 6942 (O*) OPTIONAL attributes that an IPP object NEED NOT support and 6943 a client may omit in a request or an IPP object may 6944 omit in a response 6946 Operation Requests 6948 The tables below show the attributes in their proper attribute groups 6949 for operation requests: 6951 Print-Job Request: 6952 Group 1: Operation Attributes (M) 6953 printer-uri (M) 6954 attributes-charset (M) 6955 attributes-natural-language (M) 6956 requesting-user-name (M*) 6957 job-name (M*) 6958 ipp-attribute-fidelity (M*) 6959 document-name (M*) 6960 document-format (M*) 6961 document-natural-language (O*) 6962 compression (O*) 6963 job-k-octets (O*) 6964 job-impressions (O*) 6965 job-media-sheets (O*) 6967 Expires June 19, 1998 6969 Group 2: Job Template Attributes (M) 6970 Job Template attributes (M*) (see Section 4.2) 6971 Group 3: Document Content (M) 6972 document content 6974 Validate-Job Request: 6975 Group 1: Operation Attributes (M) 6976 printer-uri (M) 6977 attributes-charset (M) 6978 attributes-natural-language (M) 6979 requesting-user-name (M*) 6980 job-name (M*) 6981 ipp-attribute-fidelity (M*) 6982 document-name (M*) 6983 document-format (M*) 6984 document-natural-language (O*) 6985 compression (O*) 6986 job-k-octets (O*) 6987 job-impressions (O*) 6988 job-media-sheets (O*) 6989 Group 2: Job Template Attributes (M) 6990 Job Template attributes (M*) (see Section 4.2) 6992 Create-Job Request: 6993 Group 1: Operation Attributes (M) 6994 printer-uri (M) 6995 attributes-charset (M) 6996 attributes-natural-language (M) 6997 requesting-user-name (M*) 6998 job-name (M*) 6999 ipp-attribute-fidelity (M*) 7000 compression (O*) 7001 job-k-octets (O*) 7002 job-impressions (O*) 7003 job-media-sheets (O*) 7004 Group 2: Job Template Attributes (M) 7005 Job Template attributes (M*) (see Section 4.2) 7007 Print-URI Request: 7008 Group 1: Operation Attributes (M) 7009 printer-uri (M) 7010 attributes-charset (M) 7011 attributes-natural-language (M) 7012 document-uri (M) 7013 requesting-user-name (M*) 7014 job-name (M*) 7015 ipp-attribute-fidelity (M*) 7016 document-name (M*) 7018 Expires June 19, 1998 7019 document-format (M*) 7020 document-natural-language (O*) 7021 compression (O*) 7022 job-k-octets (O*) 7023 job-impressions (O*) 7024 job-media-sheets (O*) 7025 Group 2: Job Template Attributes (M) 7026 Job Template attributes (M*) (see Section 4.2) 7028 Send-Document Request: 7029 Group 1: Operation Attributes (M) 7030 (printer-uri & job-id) | job-uri (M) 7031 attributes-charset (M) 7032 attributes-natural-language (M) 7034 last-document (M) 7035 requesting-user-name (M*) 7036 document-name (M*) 7037 document-format (M*) 7038 document-natural-language (O*) 7039 Group 2: Document Content (M) 7040 document content 7042 Send-URI Request: 7043 Group 1: Operation Attributes (M) 7044 (printer-uri & job-id) | job-uri (M) 7045 attributes-charset (M) 7046 attributes-natural-language (M) 7048 last-document (M) 7049 document-uri (M) 7050 requesting-user-name (M*) 7051 document-name (M*) 7052 document-format (M*) 7053 document-natural-language (O*) 7055 Cancel-Job Request: 7056 Group 1: Operation Attributes (M) 7057 (printer-uri & job-id) | job-uri (M) 7058 attributes-charset (M) 7059 attributes-natural-language (M) 7061 requesting-user-name (M*) 7062 message (O*) 7064 Get-Printer-Attributes Request: 7065 Group 1: Operation Attributes (M) 7066 printer-uri (M) 7068 Expires June 19, 1998 7069 attributes-charset (M) 7070 attributes-natural-language (M) 7071 requesting-user-name (M*) 7072 requested-attributes (M*) 7073 document-format (M*) 7075 Get-Job-Attributes Request: 7076 Group 1: Operation Attributes (M) 7077 (printer-uri & job-id) | job-uri (M) 7078 attributes-charset (M) 7079 attributes-natural-language (M) 7081 requesting-user-name (M*) 7082 requested-attributes (M*) 7084 Get-Jobs Request: 7085 Group 1: Operation Attributes (M) 7086 printer-uri (M) 7087 attributes-charset (M) 7088 attributes-natural-language (M) 7089 requesting-user-name (M*) 7090 limit (M*) 7091 requested-attributes (M*) 7092 which-jobs (M*) 7093 my-jobs (M*) 7095 Operation Responses 7097 The tables below show the response attributes in their proper 7098 attribute groups for responses. 7100 Print-Job Response: 7101 Print-URI Response: 7102 Create-Job Response: 7103 Send-Document Response: 7104 Send-URI Response: 7105 Group 1: Operation Attributes (M) 7106 attributes-charset (M) 7107 attributes-natural-language (M) 7108 status-message (O*) 7109 Group 2: Unsupported Attributes (M*) (see Note 3) 7110 unsupported attributes (M*) 7111 Group 3: Job Object Attributes(M*) (see Note 2) 7112 job-uri (M) 7113 job-id (M) 7114 job-state (M) 7116 Expires June 19, 1998 7117 job-state-reasons (O) 7118 job-state-message (O) 7119 number-of-intervening-jobs (O) 7121 Validate-Job Response: 7122 Cancel-Job Response: 7123 Group 1: Operation Attributes (M) 7124 attributes-charset (M) 7125 attributes-natural-language (M) 7126 status-message (O*) 7127 Group 2: Unsupported Attributes (M*) (see Note 3) 7128 unsupported attributes (M*) 7130 Note 2 - the Job Object Attributes and Printer Object Attributes are 7131 returned only if the IPP object returns one of the success status 7132 codes. 7134 Note 3 - the Unsupported Attributes Group is present only if the 7135 client included some Operation and/or Job Template attributes that the 7136 Printer doesn't support whether a success or an error return. 7138 Get-Printer-Attributes Response: 7139 Group 1: Operation Attributes (M) 7140 attributes-charset (M) 7141 attributes-natural-language (M) 7142 status-message (O*) 7143 Group 2: Unsupported Attributes (M*) (see Note 4) 7144 unsupported attributes (M*) 7145 Group 3: Printer Object Attributes(M*) (see Note 2) 7146 (M*) 7148 Note 4 - the Unsupported Attributes Group is present only if the 7149 client included some Operation attributes that the Printer doesn't 7150 support whether a success or an error return. 7152 Get-Job-Attributes Response: 7153 Group 1: Operation Attributes (M) 7154 attributes-charset (M) 7155 attributes-natural-language (M) 7156 status-message (O*) 7157 Group 2: Unsupported Attributes (M*) (see Note 4) 7158 unsupported attributes (M*) 7159 Group 3: Job Object Attributes(M*) (see Note 2) 7160 (M*) 7162 Get-Jobs Response: 7163 Group 1: Operation Attributes (M) 7164 attributes-charset (M) 7166 Expires June 19, 1998 7167 attributes-natural-language (M) 7168 status-message (O*) 7169 Group 2: Unsupported Attributes (M*) (see Note 4) 7170 unsupported attributes (M*) 7171 Group 3: Job Object Attributes(M*) (see Note 2) 7172 (M*) 7174 Note 5: for the Get-Jobs operation the response contains a separate 7175 Job Object Attributes group 2 to N-1 containing requested-attributes 7176 for each job object in the response. 7178 15.3.4 Validate the values of the MANDATORY Operation attributes 7180 An IPP object validates the values supplied by the client of the 7181 MANDATORY Operation attribute that the IPP object MUST support. The 7182 next section specifies the validation of the values of the OPTIONAL 7183 Operation attributes that IPP objects MAY support. 7185 The IPP object performs the following syntactic validation checks of 7186 each Operation attribute value: 7188 a) 7189 that the length of each Operation attribute value is correct 7190 for the attribute syntax tag supplied by the client according 7191 to Section 4.1. 7192 b) 7193 that the attribute syntax tag is correct for that Operation 7194 attribute according to Section 3, 7195 c) 7196 that the value is in the range specified for that Operation 7197 attribute according to Section 3, 7198 d) 7199 that multiple values are supplied for multi-valued Operation 7200 attributes, i.e., that are 1setOf X according to Section 3. 7202 If any of these checks fail, the IPP object REJECTS the request and 7203 RETURNS the 'client-error-bad-request' status code. Since such an 7204 error is most likely to be an error detected by a client developer, 7205 rather than by an end-user, the IPP object NEED NOT return an 7206 indication of which attribute had the error in either the Unsupported 7207 Attributes Group or the Status Message. The description for each of 7208 these syntactic checks is explicitly expressed in the first IF 7209 statement in the following table. 7211 In addition, the IPP object checks each Operation attribute value 7212 against some Printer object attribute or some hard-coded value if 7213 there is no "xxx-supported" Printer object attribute defined. If its 7214 value is not among those supported or is not in the range supported, 7215 then the IPP object REJECTS the request and RETURNS the error status 7216 code indicated in the table by the second IF statement. If the value 7217 of the Printer object's "xxx-supported" attribute is 'no-value' 7219 Expires June 19, 1998 7220 (because the system administrator hasn't configured a value), the 7221 check always fails. 7223 ----------------------------------------------- 7224 attributes-charset (charset) 7225 IF NOT any single non-empty 'charset' value less than 64 octets, 7226 REJECT/RETURN 'client-error-bad-request'. 7227 IF NOT in the Printer object's "charset-supported" attribute, 7228 REJECT/RETURN "client-error-charset-not-supported". 7230 attributes-natural-language(naturalLanguage) 7231 IF NOT any single non-empty 'naturalLanguage' value less than 64 7232 octets, REJECT/RETURN 'client-error-bad-request'. 7233 ACCEPT the request even if not a member of the set in the Printer 7234 object's "generated-natural-language-supported" attribute. 7236 requesting-user-name 7237 IF NOT any single non-empty 'name' value less than 256 octets, 7238 REJECT/RETURN 'client-error-bad-request'. 7239 IF the IPP object can obtain a better authenticated name, use it 7240 instead. 7242 job-name(name) 7243 IF NOT any single non-empty 'name' value less than 256 octets, 7244 REJECT/RETURN 'client-error-bad-request'. 7245 IF NOT supplied by the client, the Printer object creates a name 7246 from the document-name or document-uri. 7248 document-name (name) 7249 IF NOT any single non-empty 'name' value less than 256 octets, 7250 REJECT/RETURN 'client-error-bad-request'. 7252 ipp-attribute-fidelity (boolean) 7253 IF NOT either a single 'true' or 'false' 'boolean' value equal to 1 7254 octet, REJECT/RETURN 'client-error-bad-request'. 7255 IF NOT supplied by the client, the IPP object assumes the value 7256 'false'. 7258 document-format (mimeMediaType) 7259 IF NOT any single non-empty 'mimeMediaType' value less than 64 7260 octets, REJECT/RETURN 'client-error-bad-request'. 7261 IF NOT in the Printer object's "document-format-supported" 7262 attribute, REJECT/RETURN 'client-error-document-format-not- 7263 supported' 7264 IF NOT supplied by the client, the IPP object assumes the value of 7265 the Printer object's "document-format-default" attribute. 7267 document-uri (uri) 7269 Expires June 19, 1998 7270 IF NOT any single non-empty 'uri' value less than 1024 octets, 7271 REJECT/RETURN 'client-error-request-uri-too-long'. 7272 IF the URI syntax is not valid, REJECT/RETURN 'client-error-bad- 7273 request'. 7274 IF scheme is NOT in the Printer object's "reference-uri-schemes- 7275 supported" attribute, REJECT/RETURN 'client-error'-uri-scheme- 7276 not-supported'. 7278 last-document (boolean) 7279 IF NOT either a single 'true' or 'false' 'boolean' value equal to 1 7280 octet, REJECT/RETURN 'client-error-bad-request'. 7282 job-id (integer(1:MAX)) 7283 IF NOT any single 'integer' value equal to 4 octets AND in the 7284 range 1 to MAX, REJECT/RETURN 'client-error-bad-request'. 7285 IF NOT a job-id of an existing Job object, REJECT/RETURN 'client- 7286 error-not-found' or 'client-error-gone' status code, if keep 7287 track of recently deleted jobs. 7289 requested-attributes (1setOf keyword) 7290 IF NOT any number of 'keyword' values less than 256 octets, 7291 REJECT/RETURN 'client-error-bad-request'. 7292 Ignore unsupported values which are the keyword names of 7293 unsupported attributes. Don't bother to copy such requested 7294 (unsupported) attributes to the Unsupported Attribute response 7295 group since the response will not return them. 7297 which-jobs (type2 keyword) 7298 IF NOT a single 'keyword' value less than 256 octets, REJECT/RETURN 7299 'client-error-bad-request'. 7300 IF NEITHER 'completed' NOR 'not-completed', copy the attribute and 7301 the unsupported value to the Unsupported Attributes response 7302 group and REJECT/RETURN 'client-error-attributes-or-values-not- 7303 supported'. 7304 Note: a Printer still supports the 'completed' value even if it 7305 keeps no completed/canceled/aborted jobs: by returning no jobs 7306 when so queried. 7307 IF NOT supplied by the client, the IPP object assumes the 'not- 7308 completed' value. 7310 my-jobs (boolean) 7311 IF NOT either a single 'true' or 'false' 'boolean' value equal to 1 7312 octet, REJECT/RETURN 'client-error-bad-request'. 7313 IF NOT supplied by the client, the IPP object assumes the 'false' 7314 value. 7316 limit (integer(1:MAX)) 7318 Expires June 19, 1998 7319 IF NOT any single 'integer' value equal to 4 octets AND in the 7320 range 1 to MAX, REJECT/RETURN 'client-error-bad-request'. 7321 IF NOT supplied by the client, the IPP object returns all jobs, no 7322 matter how many. 7323 ----------------------------------------------- 7325 15.3.5 Validate the values of the OPTIONAL Operation attributes 7327 OPTIONAL Operation attributes are those that an IPP object MAY or MAY 7328 NOT support. An IPP object validates the values of the OPTIONAL 7329 attributes supplied by the client. The IPP object performs the same 7330 syntactic validation checks for each OPTIONAL attribute value as in 7331 Section 15.3.4. As in Section 15.3.4, if any fail, the IPP object 7332 REJECTS the request and RETURNS the 'client-error-bad-request' status 7333 code. 7335 In addition, the IPP object checks each Operation attribute value 7336 against some Printer attribute or some hard-coded value if there is no 7337 "xxx-supported" Printer attribute defined. If its value is not among 7338 those supported or is not in the range supported, then the IPP object 7339 REJECTS the request and RETURNS the error status code indicated in the 7340 table. If the value of the Printer object's "xxx-supported" attribute 7341 is 'no-value' (because the system administrator hasn't configured a 7342 value), the check always fails. 7344 If the IPP object doesn't recognize/support an attribute, the IPP 7345 object treats the attribute as an unknown or unsupported attribute 7346 (see the last row in the table below). 7348 ----------------------------------------------- 7349 document-natural-language (naturalLanguage) 7350 IF NOT any single non-empty 'naturalLanguage' value less than 64 7351 octets, REJECT/RETURN 'client-error-bad-request'. 7352 IF NOT a value that the Printer object supports in document 7353 formats, (no standard "xxx-supported" Printer attribute), 7354 REJECT/RETURN 'client-error-natural-language-not-supported'. 7356 compression (type3 keyword) 7357 IF NOT any single 'keyword' values less than 256 octets, 7358 REJECT/RETURN 'client-error-bad-request'. 7359 IF NOT in the Printer object's "compression-supported" attribute, 7360 copy the attribute and the unsupported value to the Unsupported 7361 Attributes response group and REJECT/RETURN 'client-error- 7362 attributes-or-values-not-supported'. 7364 job-k-octets (integer(0:MAX)) 7365 IF NOT any single 'integer' value equal to 4 octets, 7367 Expires June 19, 1998 7368 REJECT/RETURN 'client-error-bad-request'. 7369 IF NOT in the range of the Printer object's "job-k-octets- 7370 supported" attribute, copy the attribute and the unsupported 7371 value to the Unsupported Attributes response group and 7372 REJECT/RETURN 'client-error-attributes-or-values-not-supported'. 7374 job-impressions (integer(0:MAX)) 7375 IF NOT any single 'integer' value equal to 4 octets, 7376 REJECT/RETURN 'client-error-bad-request'. 7377 IF NOT in the range of the Printer object's "job-impressions- 7378 supported" attribute, copy the attribute and the unsupported 7379 value to the Unsupported Attributes response group and 7380 REJECT/RETURN 'client-error-attributes-or-values-not-supported'. 7382 job-media-sheets (integer(0:MAX)) 7383 IF NOT any single 'integer' value equal to 4 octets, 7384 REJECT/RETURN 'client-error-bad-request'. 7385 IF NOT in the range of the Printer object's "job-media-supported" 7386 attribute, copy the attribute and the unsupported value to the 7387 Unsupported Attributes response group and REJECT/RETURN 'client- 7388 error-attributes-or-values-not-supported'. 7390 message (text(127)) 7391 IF NOT any single non-empty 'text' value less than 128 octets, 7392 REJECT/RETURN 'client-error-bad-request'. 7394 unknown or unsupported attribute 7395 IF the attribute syntax supplied by the client is supported but the 7396 length is not legal for that attribute syntax, REJECT/RETURN 7397 'client-error-bad-request'. 7398 ELSE copy the attribute and value to the Unsupported Attributes 7399 response group and change the attribute value to the out-of-band 7400 'unsupported' value, but otherwise ignore the attribute. 7402 Note: Future Operation attributes may be added to the protocol 7403 specification that may occur anywhere in the specified group. 7404 When the operation is otherwise successful, the IPP object 7405 returns the 'successful-ok-ignored-or-substituted-attributes' 7406 status code. Ignoring unsupported Operation attributes in all 7407 operations is analogous to the handling of unsupported Job 7408 Template attributes in the create and Validate-Job operations 7409 when the client supplies the "ipp-attribute-fidelity" Operation 7410 attribute with the 'false' value. 7411 ----------------------------------------------- 7413 This last rule is so that we can add OPTIONAL Operation attributes to 7414 future versions of IPP so that older clients can inter-work with new 7415 IPP objects and newer clients can inter-work with older IPP objects. 7417 Expires June 19, 1998 7418 (If the new attribute cannot be ignored without performing 7419 unexpectedly, the major version number would have been increased in 7420 the protocol document and in the request). This rule for Operation 7421 attributes is independent of the value of the "ipp-attribute-fidelity" 7422 attribute. 7424 For example, if an IPP object doesn't support the OPTIONAL "job-k- 7425 octets" attribute (because of the implementation or because of some 7426 administrator's choice not to configure a value for the Printer 7427 object's "job-k-octets-supported" attribute, leaving it with a 'no- 7428 value' out-of-band value), the IPP object treats "job-k-octets" as an 7429 unknown attribute and only checks the length for the 'integer' 7430 attribute syntax supplied by the client. If it is not four octets, 7431 the IPP object REJECTS the request and RETURNS the 'client-error-bad- 7432 request' status code, else the IPP object copies the attribute to the 7433 Unsupported Attribute response group, setting the value to the out-of- 7434 band 'unsupported' value, but otherwise ignores the attribute. 7436 15.4 Suggested Additional Processing Steps for Operations that 7437 Create/Validate Jobs and Add Documents 7439 This section in combination with the previous section recommends the 7440 processing steps for the Print-Job, Validate-Job, Print-URI, Create- 7441 Job, Send-Document, and Send-URI operations that IPP objects SHOULD 7442 use. These are the operations that create jobs, validate a Print-Job 7443 request, and add documents to a job. 7445 15.4.1 Default "ipp-attribute-fidelity" if not supplied 7447 The Printer object checks to see if the client supplied an "ipp- 7448 attribute-fidelity" Operation attribute. If the attribute is not 7449 supplied by the client, the IPP object assumes that the value is 7450 'false'. 7452 15.4.2 Validate the values of the Job Template attributes 7454 An IPP object validates the values of all Job Template attribute 7455 supplied by the client. The IPP object performs the analogous 7456 syntactic validation checks of each Job Template attribute value that 7457 it performs for Operation attributes (see Section 15.3.4.): 7459 a) 7460 that the length of each value is correct for the attribute 7461 syntax tag supplied by the client according to Section 4.1. 7462 b) 7463 that the attribute syntax tag is correct for that attribute 7464 according to Sections 4.2 to 4.6, 7466 Expires June 19, 1998 7468 c) 7469 that multiple values are supplied for multi-valued attributes, 7470 i.e., that are 1setOf X according to Sections 4.2 to 4.6 7472 As in Section 15.3.4, if any of these syntactic checks fail, the IPP 7473 object REJECTS the request and RETURNS the 'client-error-bad-request', 7474 independent of the value of the "ipp-attribute-fidelity". Since such 7475 an error is most likely to be an error detected by a client developer, 7476 rather than by an end-user, the IPP object NEED NOT return an 7477 indication of which attribute had the error in either the Unsupported 7478 Attributes Group or the Status Message. The description for each of 7479 these syntactic checks is explicitly expressed in the first IF 7480 statement in the following table. 7482 In addition, the IPP object loops through all the client-supplied Job 7483 Template attributes, checking to see if the supplied attribute 7484 value(s) are supported or in the range supported, i.e., the value of 7485 the "xxx" attribute in the request is (1) a member of the set of 7486 values or is in the range of values of the Printer' objects "xxx- 7487 supported" attribute. If the value of the Printer object's "xxx- 7488 supported" attribute is 'no-value' (because the system administrator 7489 hasn't configured a value), the check always fails. If the check 7490 fails, the IPP object copies the attribute to the Unsupported 7491 Attributes response group with its unsupported value. If the 7492 attribute contains more than one value, each value is checked and each 7493 unsupported value is separately copied, while supported values are not 7494 copied. If an IPP object doesn't recognize/support a Job Template 7495 attribute, i.e., there is no corresponding Printer object "xxx- 7496 supported" attribute, the IPP object treats the attribute as an 7497 unknown or unsupported attribute (see the last row in the table 7498 below). 7500 If some Job Template attributes are supported for some document 7501 formats and not for others or the values are different for different 7502 document formats, the IPP object SHOULD take that into account in this 7503 validation using the value of the "document-format" supplied by the 7504 client (or defaulted to the value of the Printer's "document-format- 7505 default" attribute, if not supplied by the client). For example, if 7506 "number-up" is supported for the 'text/plain' document format, but not 7507 for the 'application/postscript' document format, or if only the '0' 7508 (none) value is supported for 'application/postscript', the check 7509 SHOULD (though it NEED NOT) depend on the value of the "document- 7510 format" operation attribute. See "document-format" in section 7511 3.2.1.1. 7513 Note: whether the request is accepted or rejected is determined by the 7514 value of the "ipp-attribute-fidelity" attribute in a subsequent step, 7515 so that all Job Template attribute supplied are examined and all 7517 Expires June 19, 1998 7518 unsupported attributes and/or values are copied to the Unsupported 7519 Attributes response group. 7521 ----------------------------------------------- 7522 job-priority (integer(1:100)) 7523 IF NOT any single 'integer' value equal to 4 octets, REJECT/RETURN 7524 'client-error-bad-request'. 7525 IF NOT supplied by the client, use the value of the Printer 7526 object's "job-priority-default" attribute at job submission time. 7527 IF NOT in the range 1 to 100, inclusive, copy the attribute and the 7528 unsupported value to the Unsupported Attributes response group. 7529 Map the value to the nearest supported value in the range 1:100 as 7530 specified by the number of discrete values indicated by the value 7531 of the Printer's "job-priority-supported" attribute. See the 7532 formula in Section 4.2.1. 7534 job-hold-until (type4 keyword | name) 7535 IF NOT any single 'keyword' or 'name' value less than 256 octets, 7536 REJECT/RETURN 'client-error-bad-request'. 7537 IF NOT supplied by the client, use the value of the Printer 7538 object's "job-hold-until" attribute at job submission time. 7539 IF NOT in the Printer object's "job-hold-until-supported" 7540 attribute, copy the attribute and the unsupported value to the 7541 Unsupported Attributes response group. 7543 job-sheets (type4 keyword | name) 7544 IF NOT any single 'keyword' or 'name' value less than 256 octets, 7545 REJECT/RETURN 'client-error-bad-request'. 7546 IF NOT in the Printer object's "job-sheets-supported" attribute, 7547 copy the attribute and the unsupported value to the Unsupported 7548 Attributes response group. 7550 multiple-document-handling (type2 keyword) 7551 IF NOT any single 'keyword' value less than 256 octets, 7552 REJECT/RETURN 'client-error-bad-request'. 7553 IF NOT in the Printer object's "multiple-document-handling- 7554 supported" attribute, copy the attribute and the unsupported 7555 value to the Unsupported Attributes response group. 7557 copies (integer(1:MAX)) 7558 IF NOT any single 'integer' value equal to 4 octets, 7559 REJECT/RETURN 'client-error-bad-request'. 7560 IF NOT in range of the Printer object's "copies-supported" 7561 attribute 7562 copy the attribute and the unsupported value to the Unsupported 7563 Attributes response group. 7565 finishings (1setOf type2 enum) 7567 Expires June 19, 1998 7568 IF NOT any 'keyword' or 'name' value(s) each less than 256 octets, 7569 REJECT/RETURN 'client-error-bad-request'. 7570 IF NOT in the Printer object's "finishings-supported" attribute, 7571 copy the attribute and the unsupported value(s), but not any 7572 supported values, to the Unsupported Attributes response group. 7574 page-ranges (1setOf rangeOfInteger(1:MAX)) 7575 IF NOT any 'rangeOfInteger' value(s) each equal to 8 octets, 7576 REJECT/RETURN 'client-error-bad-request'. 7577 IF first value is greater than second value in any range, the 7578 ranges are not in ascending order, or ranges overlap, 7579 REJECT/RETURN 'client-error-bad-request'. 7580 IF the value of the Printer object's "page-ranges-supported" 7581 attribute is 'false', copy the attribute to the Unsupported 7582 Attributes response group and set the value to the out-of-band 7583 'unsupported' value. 7585 sides (type2 keyword) 7586 IF NOT any single 'keyword' value less than 256 octets, 7587 REJECT/RETURN 'client-error-bad-request'. 7588 IF NOT in the Printer object's "sides-supported" attribute, copy 7589 the attribute and the unsupported value to the Unsupported 7590 Attributes response group. 7592 number-up (integer(0:MAX)) 7593 IF NOT any single 'integer' value equal to 4 octets, 7594 REJECT/RETURN 'client-error-bad-request'. 7595 IF NOT a value or in the range of one of the values of the Printer 7596 object's "number-up" attribute, copy the attribute and value to 7597 the Unsupported Attribute response group. 7599 orientation (type2 enum) 7600 IF NOT any single 'enum' value equal to 4 octets, 7601 REJECT/RETURN 'client-error-bad-request'. 7602 IF NOT in the Printer object's "orientation-supported" attribute, 7603 copy the attribute and the unsupported value to the Unsupported 7604 Attributes response group. 7606 media (type4 keyword | name) 7607 IF NOT any single 'keyword' or 'name' value less than 256 octets, 7608 REJECT/RETURN 'client-error-bad-request'. 7609 IF NOT in the Printer object's "media-supported" attribute, copy 7610 the attribute and the unsupported value to the Unsupported 7611 Attributes response group. 7613 printer-resolution (resolution) 7614 IF NOT any single 'resolution' value equal to 9 octets, 7615 REJECT/RETURN 'client-error-bad-request'. 7617 Expires June 19, 1998 7618 IF NOT in the Printer object's "multiple-document-handling- 7619 supported" attribute, copy the attribute and the unsupported 7620 value to the Unsupported Attributes response group. 7622 print-quality (type2 enum) 7623 IF NOT any single 'enum' value equal to 4 octets, 7624 REJECT/RETURN 'client-error-bad-request'. 7625 IF NOT in the Printer object's "print-quality-supported" attribute, 7626 copy the attribute and the unsupported value to the Unsupported 7627 Attributes response group. 7629 unknown or unsupported attribute (i.e., there is no corresponding 7630 Printer object "xxx-supported" attribute) 7631 IF the attribute syntax supplied by the client is supported but the 7632 length is not legal for that attribute syntax, 7633 REJECT/RETURN 'client-error-bad-request'. 7634 ELSE copy the attribute and value to the Unsupported Attributes 7635 response group and change the attribute value to the out-of-band 7636 'unsupported' value. Any remaining Job Template Attributes are 7637 either unknown or unsupported Job Template attributes and are 7638 validated algorithmically according to their attribute syntax for 7639 proper length (see below). 7640 ----------------------------------------------- 7642 If the attribute syntax is supported AND the length check fails, the 7643 IPP object REJECTS the request and RETURNS the 'client-error-bad- 7644 request' status code, else the IPP object copies the unsupported Job 7645 Template attribute to the Unsupported Attributes response group and 7646 changes the attribute value to the out-of-band 'unsupported' value. 7647 The following table shows the length checks for all attribute 7648 syntaxes. In the following table: "<=" means less than or equal, "=" 7649 means equal to: 7651 Expires June 19, 1998 7652 Name Octet length check for read-write attributes 7653 ----------- -------------------------------------------- 7654 'text' <= 1023 7655 'name' <= 255 7656 'keyword' <= 255 7657 'keyword'|'name' <= 255 7658 'enum' = 4 7659 'uri' <= 1023 7660 'uriScheme' <= 63 7661 'charset' <= 63 7662 'naturalLanguage' <= 63 7663 'mimeMediaType' <= 63 7664 'octetString' <= 1023 7665 'boolean' = 1 7666 'integer' = 4 7667 'rangeOfInteger' = 8 7668 'dateTime' = 11 7669 'resolution' = 9 7670 '1setOf X' 7672 15.4.3 Check for conflicting Job Template attributes values 7674 Once all the Operation and Job Template attributes have been checked 7675 individually, the Printer object SHOULD check for any conflicting 7676 values among all the supported values supplied by the client. For 7677 example, a Printer object might be able to staple and to print on 7678 transparencies, however due to physical stapling constraints, the 7679 Printer object might not be able to staple transparencies. The IPP 7680 object copies the supported attributes and their conflicting attribute 7681 values to the Unsupported Attributes response group. The Printer 7682 object only copies over those attributes that the Printer object 7683 either ignores or substitutes in order to resolve the conflict, and it 7684 returns the original values which were supplied by the client. For 7685 example suppose the client supplies "finishings" equals 'staple' and 7686 "media" equals 'transparency', but the Printer object does not support 7687 stapling transparencies. If the Printer chooses to ignore the 7688 stapling request in order to resolve the conflict, the Printer objects 7689 returns "finishings" equal to 'staple' in the Unsupported Attributes 7690 response group. If any attributes are multi-valued, only the 7691 conflicting values of the attributes are copied. 7693 Note: The decisions made to resolve the conflict (if there is a 7694 choice) is implementation dependent. 7696 Expires June 19, 1998 7697 15.4.4 Decide whether to REJECT the request 7699 If there were any unsupported Job Template attributes or 7700 unsupported/conflicting Job Template attribute values and the client 7701 supplied the "ipp-attribute-fidelity" attribute with the 'true' value, 7702 the Printer object REJECTS the request and return the status code: 7704 (1) 'client-error-conflicting-attributes' status code, if there 7705 were any conflicts between attributes supplied by the client. 7706 (2) 'client-error-attributes-or-values-not-supported' status code, 7707 otherwise. 7709 Note: Unsupported Operation attributes or values that are returned do 7710 not affect the status returned in this step. If the unsupported 7711 Operation attribute was a serious error, the above already rejected 7712 the request in a previous step. If control gets to this step with 7713 unsupported Operation attributes being returned, they are not serious 7714 errors. 7716 15.4.5 For the Validate-Job operation, RETURN one of the success 7717 status codes 7719 If the requested operation is the Validate-Job operation, the Printer 7720 object returns: 7722 (1) the "successful-ok" status code, if there are no unsupported or 7723 conflicting Job Template attributes or values. 7724 (2) the "successful-ok-conflicting-attributes, if there are any 7725 conflicting Job Template attribute or values. 7726 (3) the "successful-ok-ignored-or-substituted-attributes, if there 7727 are only unsupported Job Template attributes or values. 7729 Note: Unsupported Operation attributes or values that are returned do 7730 not affect the status returned in this step. If the unsupported 7731 Operation attribute was a serious error, the above already rejected 7732 the request in a previous step. If control gets to this step with 7733 unsupported Operation attributes being returned, they are not serious 7734 errors. 7736 15.4.6 Create the Job object with attributes to support 7738 If "ipp-attribute-fidelity" is set to 'false' (or it was not supplied 7739 by the client), the Printer object: 7741 Expires June 19, 1998 7742 (1) creates a Job object, assigns a unique value to the job's "job- 7743 uri" and "job-id" attributes, and initializes all of the job's 7744 other supported Job Description attributes. 7745 (2) removes all unsupported attributes from the Job object. 7746 (3) for each unsupported value, removes either the unsupported 7747 value or substitutes the unsupported attribute value with some 7748 supported value. If an attribute has no values after removing 7749 unsupported values from it, the attribute is removed from the Job 7750 object (so that the normal default behavior at job processing 7751 time will take place for that attribute). 7752 (4) for each conflicting value, removes either the conflicting 7753 value or substitutes the conflicting attribute value with some 7754 other supported value. If an attribute has no values after 7755 removing conflicting values from it, the attribute is removed 7756 from the Job object (so that the normal default behavior at job 7757 processing time will take place for that attribute). 7759 If there were no attributes or values flagged as unsupported, or the 7760 value of 'ipp-attribute-fidelity" was 'false', the Printer object is 7761 able to accept the create request and create a new Job object. If the 7762 "ipp-attribute-fidelity" attribute is set to 'true', the Job Template 7763 attributes that populate the new Job object are necessarily all the 7764 Job Template attributes supplied in the create request. If the "ipp- 7765 attribute-fidelity" attribute is set to 'false', the Job Template 7766 attributes that populate the new Job object are all the client 7767 supplied Job Template attributes that are supported or that have value 7768 substitution. Thus, some of the requested Job Template attributes may 7769 not appear in the Job object because the Printer object did not 7770 support those attributes. The attributes that populate the Job object 7771 are persistently stored with the Job object for that Job. A Get-Job- 7772 Attributes operation on that Job object will return only those 7773 attributes that are persistently stored with the Job object. 7775 Note: All Job Template attributes that are persistently stored with 7776 the Job object are intended to be "override values"; that is, they 7777 that take precedence over whatever other embedded instructions might 7778 be in the document data itself. However, it is not possible for all 7779 Printer objects to realize the semantics of "override". End users may 7780 query the Printer's "pdl-override" attribute to determine if the 7781 Printer either attempts or does not attempt to override document data 7782 instructions with IPP attributes. 7784 There are some cases, where a Printer supports a Job Template 7785 attribute and has an associated default value set for that attribute. 7786 In the case where a client does not supply the corresponding 7787 attribute, the Printer does not use its default values to populate Job 7788 attributes when creating the new Job object; only Job Template 7789 attributes actually in the create request are used to populate the Job 7791 Expires June 19, 1998 7792 object. The Printer's default values are only used later at Job 7793 processing time if no other IPP attribute or instruction embedded in 7794 the document data is present. 7796 Note: If the default values associated with Job Template attributes 7797 that the client did not supply were to be used to populate the Job 7798 object, then these values would become "override values" rather than 7799 defaults. If the Printer supports the 'attempted' value of the "pdl- 7800 override" attribute, then these override values could replace values 7801 specified within the document data. This is not the intent of the 7802 default value mechanism. A default value for an attribute is used only 7803 if the create request did not specify that attribute (or it was 7804 ignored when allowed by "ipp-attribute-fidelity" being 'false') and no 7805 value was provided within the content of the document data. 7807 If the client does not supply a value for some Job Template attribute, 7808 and the Printer does not support that attribute, as far as IPP is 7809 concerned, the result of processing that Job (with respect to the 7810 missing attribute) is undefined. 7812 15.4.7 Return one of the success status codes 7814 Once the Job object has been created, the Printer object accepts the 7815 request and returns to the client: 7817 (1) the 'successful-ok' status code, if there are no unsupported or 7818 conflicting Job Template attributes or values. 7819 (2) the 'successful-ok-conflicting-attributes' status code, if 7820 there are any conflicting Job Template attribute or values. 7821 (3) the 'successful-ok-ignored-or-substituted-attributes' status 7822 code, if there are only unsupported Job Template attributes or 7823 values. 7825 Note: Unsupported Operation attributes or values that are returned do 7826 not affect the status returned in this step. If the unsupported 7827 Operation attribute was a serious error, the above already rejected 7828 the request in a previous step. If control gets to this step with 7829 unsupported Operation attributes being returned, they are not serious 7830 errors. 7832 The Printer object also returns Job status attributes that indicate 7833 the initial state of the Job ('pending', 'pending-held', 'processing', 7834 etc.), etc. See Print-Job Response, section 3.2.1.2. 7836 Expires June 19, 1998 7837 15.4.8 Accept appended Document Content 7839 The Printer object accepts the appended Document Content data and 7840 either starts it printing, or spools it for later processing. 7842 15.4.9 Scheduling and Starting to Process the Job 7844 The Printer object uses its own configuration and implementation 7845 specific algorithms for scheduling the Job in the correct processing 7846 order. Once the Printer object begins processing the Job, the Printer 7847 changes the Job's state to 'processing'. If the Printer object 7848 supports PDL override (the "pdl-override" attribute set to 7849 'attempted'), the implementation does its best to see that IPP 7850 attributes take precedence over embedded instructions in the document 7851 data. 7853 15.4.10 Completing the Job 7855 The Printer object continues to process the Job until it can move the 7856 Job into the 'completed' state. If an Cancel-Job operation is 7857 received, the implementation eventually moves the Job into the 7858 'canceled' state. If the system encounters errors during processing 7859 that do not allow it to progress the Job into a completed state, the 7860 implementation halts all processing, cleans up any resources, and 7861 moves the Job into the 'aborted' state. 7863 15.4.11 Destroying the Job after completion 7865 Once the Job moves to the 'completed', 'aborted', or 'canceled' state, 7866 it is an implementation decision as to when to destroy the Job object 7867 and release all associated resources. Once the Job has been 7868 destroyed, the Printer would return either the "client-error-not- 7869 found" or "client-error-gone" status codes for operations directed at 7870 that Job. 7872 Note: the Printer object SHOULD NOT re-use a "job-uri" or "job-id" 7873 value for a sufficiently long time after a job has been destroyed, so 7874 that stale references kept by clients are less likely to access the 7875 wrong (newer) job. 7877 15.4.12 Interaction with "ipp-attribute-fidelity" 7879 Some Printer object implementations may support "ipp-attribute- 7880 fidelity" set to 'true' and "pdl-override" set to 'attempted' and yet 7882 Expires June 19, 1998 7883 still not be able to realize exactly what the client specifies in the 7884 create request. This is due to legacy decisions and assumptions that 7885 have been made about the role of job instructions embedded within the 7886 document data and external job instructions that accompany the 7887 document data and how to handle conflicts between such instructions. 7888 The inability to be 100% precise about how a given implementation will 7889 behave is also compounded by the fact that the two special attributes, 7890 "ipp-attribute-fidelity" and "pdl-override", apply to the whole job 7891 rather than specific values for each attribute. For example, some 7892 implementations may be able to override almost all Job Template 7893 attributes except for "number-up". 7895 15.5 Using Job Template Attributes During Document Processing. 7897 The Printer object uses some of the Job object's Job Template 7898 attributes during the processing of the document data associated with 7899 that job. These include, but are not limited to, "orientation", 7900 "number-up", "sides", "media", and "copies". The processing of each 7901 document in a Job Object SHALL follow the steps below. These steps are 7902 intended only to identify when and how attributes are to be used in 7903 processing document data and any alternative steps that accomplishes 7904 the same effect can be used to implement this specification. 7906 1. Using the client supplied "document-format" attribute or some 7907 form of document format detection algorithm (if the value of 7908 "document-format" is not specific enough), determine whether or 7909 not the document data has already been formatted for printing. If 7910 the document data has been formatted, then go to step 2. 7911 Otherwise, the document data SHALL be formatted. The formatting 7912 detection algorithm is implementation defined and is not 7913 specified by this specification. The formatting of the document 7914 data uses the "orientation" attribute to determine how the 7915 formatted print data is placed on a print-stream page, see 7916 section 4.2.15 for the details. 7918 2. The document data is in the form of a print-stream in a known 7919 media type. The "page-range" attribute is used to select, as 7920 specified in section 4.2.14, a sub-sequence of the pages in the 7921 print-stream that are to be processed and images. 7923 3. The input to this step is a sequence of print-stream pages. This 7924 step is controlled by the "number-up" attribute. If the value of 7925 "number-up" is N, then during the processing of the print-stream 7926 pages, each N print-stream pages are positioned, as specified in 7927 section 4.2.8, to create a single impression. If a given document 7928 does not have N more print-stream pages, then the completion of 7929 the impression is controlled by the "multiple-document-handling" 7931 Expires June 19, 1998 7932 attribute as described in section 4.2.6; when the value of this 7933 attribute is 'single-document', the print-stream pages of 7934 document data from subsequent documents is used to complete the 7935 impression. 7937 The size(scaling), position(translation) and rotation of the 7938 print-stream pages on the impression is implementation defined. 7939 Note that during this process the print-stream pages may be 7940 rendered to a form suitable for placing on the impression; this 7941 rendering is controlled by the values of the "printer-resolution" 7942 and "print-quality" attributes as described in sections 4.2.10 7943 and 4.2.11. In the case N=1, the impression is nearly the same as 7944 the print-stream page; the differences would only be in the size, 7945 position and rotation of the print-stream page and/or any 7946 decoration, such as a frame to the page, that is added by the 7947 implementation. 7949 4. The collection of impressions is placed, in sequence, onto sides 7950 of the media sheets. This placement is controlled by the "sides" 7951 attribute and the orientation of the print-stream page, as 7952 described in section 4.2.9. The orientation of the print-stream 7953 pages affects the orientation of the impression; for example, if 7954 "number-up" equals 2, then, typically, two portrait print-stream 7955 pages become one landscape impression. Note that the placement of 7956 impressions onto media sheets is also controlled by the 7957 "multiple-document-handling" attribute as described in section 7958 4.2.6. 7960 5. The "copies" and "multiple-document-handling" attributes are 7961 used to determine how many copies of each media instance are 7962 created and in what order. See sections 4.2.6 and 4.2.13 for the 7963 details. 7965 6. When the correct number of copies are created, the media 7966 instances are finished according to the values of the 7967 "finishings" attribute as described in 4.2.12. Note that 7968 sometimes finishing operations may require manual intervention to 7969 perform the finishing operations on the copies, especially 7970 uncollated copies. This specification allows any or all of the 7971 processing steps to be performed automatically or manually at the 7972 discretion of the Printer object. 7974 16. APPENDIX E: Generic Directory Schema 7976 This section defines a generic schema for an entry in a directory 7977 service. A directory service is a means by which service users can 7978 locate service providers. In IPP environments, this means that IPP 7980 Expires June 19, 1998 7981 Printers can be registered (either automatically or with the help of 7982 an administrator) as entries of type printer in the directory. IPP 7983 clients can search or browse for entries of type printer. Clients use 7984 the directory service to find entries based on naming, organizational 7985 contexts, or filtered searches on attribute values of entries. For 7986 example, a client can find all printers in the "Local Department" 7987 context. Authentication and authorization are also often part of a 7988 directory service so that an administrator can place limits on end 7989 users so that they are only allowed to find entries to which they have 7990 certain access rights. IPP itself does not require any specific 7991 directory service protocol or provider. 7993 Note: Some directory implementations allow for the notion of 7994 "aliasing". That is, one directory entry object can appear as 7995 multiple directory entry object with different names for each object. 7996 In each case, each alias refers to the same directory entry object 7997 which refers to a single IPP Printer object. 7999 The generic schema is a subset of IPP Printer Job Template and Printer 8000 Description attributes (sections 4.2 and 4.4). These attributes are 8001 identified as either MANDATORY or OPTIONAL for the directory entry 8002 itself. This conformance labeling is NOT the same conformance 8003 labeling applied to the attributes of IPP Printers themselves. 8004 MANDATORY attributes MUST be associated with each directory entry. 8005 OPTIONAL attributes SHOULD be associated with the directory entry (if 8006 known or supported). In addition, all directory entry attributes 8007 SHOULD reflect the current attribute values for the corresponding 8008 Printer object. 8010 In order to bridge between the directory service protocol and IPP, one 8011 of the MANDATORY attributes is the "printer-uri" attribute. The IPP 8012 client addresses an IPP Printer using its URI and so the directory 8013 entry's "printer-uri" becomes the link between the directory entry and 8014 the corresponding IPP Printer. 8016 The following attributes define the generic schema for directory 8017 entries of type printer: 8019 printer-uri (see note below) Section 4.4.1 8020 printer-tls-uri (see note below) Section 4.4.2 8021 Note: Both "printer-uri" and "printer-tls-uri" are allowed 8022 in a directory entry, but at least one of "printer-uri" or 8023 "printer-tls-uri" is MANDATORY 8024 printer-name OPTIONAL Section 4.4.3 8025 printer-location OPTIONAL Section 4.4.4 8026 printer-info OPTIONAL Section 4.4.5 8027 printer-more-info OPTIONAL Section 4.4.6 8028 printer-make-and-model OPTIONAL Section 4.4.8 8030 Expires June 19, 1998 8031 color-supported OPTIONAL Section 4.4.23 8033 finishings-supported OPTIONAL Section 4.2.6 8034 number-up-supported OPTIONAL Section 4.2.7 8035 sides-supported OPTIONAL Section 4.2.8 8036 media-supported OPTIONAL Section 4.2.11 8037 printer-resolution-supported OPTIONAL Section 4.2.12 8038 print-quality-supported OPTIONAL Section 4.2.13 8039 document-format-supported OPTIONAL Section 4.4.19 8041 Expires June 19, 1998