idnits 2.17.1 draft-ietf-ipp-model-07.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** Missing document type: Expected "INTERNET-DRAFT" in the upper left hand corner of the first page ** 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. ** The document is more than 15 pages and seems to lack a Table of Contents. == No 'Intended status' indicated for this document; assuming Proposed Standard Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) (A line matching the expected section header was found, but with an unexpected indentation: ' 6. IANA Considerations (registered and private extensions)' ) ** The document seems to lack an Authors' Addresses Section. ** There are 3377 instances of too long lines in the document, the longest one being 9 characters in excess of 72. ** The abstract seems to contain references ([RFC2069], [RFC2046], [RFC1035], [PWG], [RFC1179], [IPP-PRO], [RFC2048], [ASCII], [HTPP], [46], [IANA-CSa], [RFC2119], [IPP-RAT], [ISO10175], [ISO10646-1], [RFC1759], [SWP], [IPP-REQ], [CS-POL], [RFC1766], [ISO8859-1], [IANA-MT], [RFC1808], [RFC1738], [RFC1903], [52,56], [IANA-CS], [LDPA], [RFC2044], [PSIS], [RFC2045], [RFC2068], [RFC1630]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 1 instance of lines with non-RFC2606-compliant FQDNs in the document. == There are 95 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. -- The abstract seems to indicate that this document obsoletes RFC1521, but the header doesn't have an 'Obsoletes:' line to match this. -- The abstract seems to indicate that this document obsoletes RFC1522, but the header doesn't have an 'Obsoletes:' line to match this. -- The abstract seems to indicate that this document obsoletes RFC2069, but the header doesn't have an 'Obsoletes:' line to match this. -- The abstract seems to indicate that this document obsoletes RFC1590, but the header doesn't have an 'Obsoletes:' line to match this. -- The abstract seems to indicate that this document obsoletes RFC2046, but the header doesn't have an 'Obsoletes:' line to match this. Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 168 has weird spacing: '...(1setOf type2...' == Line 499 has weird spacing: '... any indi...' == Line 953 has weird spacing: '...anguage when ...' == Line 1167 has weird spacing: '...objects to co...' == Line 1660 has weird spacing: '...e names and/o...' == (12 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: 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 document data and independent of whether the output is collated or not. Thus the value is independent of the implementation. == 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 document data and independent of whether the output is collated or not. Thus the value is independent of the implementation. == 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: '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 of the output devices are stopped. If the reason is a warning, fewer than all of the output devices are stopped. 'toner-low': The device is low on toner. 'marker-supply-low': The device is low on marker supply (ink, paint, etc.). 'spool-area-full': The limit of persistent storage allocated for spooling has been reached. 'cover-open': One or more covers on the device are open. == 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 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 (November 7, 1997) is 9666 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 section? 'ISO10175' on line 5850 looks like a reference -- Missing reference section? 'IPP-REQ' on line 4983 looks like a reference -- Missing reference section? 'IPP-PRO' on line 5325 looks like a reference -- Missing reference section? 'IPP-RAT' on line 4978 looks like a reference -- Missing reference section? 'HTPP' on line 4954 looks like a reference -- Missing reference section? 'LDPA' on line 5000 looks like a reference -- Missing reference section? 'PSIS' on line 5010 looks like a reference -- Missing reference section? 'RFC1179' on line 5022 looks like a reference -- Missing reference section? 'SWP' on line 5079 looks like a reference -- Missing reference section? 'RFC2119' on line 5224 looks like a reference -- Missing reference section? 'RFC1630' on line 5026 looks like a reference -- Missing reference section? 'RFC1738' on line 5032 looks like a reference -- Missing reference section? 'RFC1808' on line 2383 looks like a reference -- Missing reference section? 'RFC2044' on line 5044 looks like a reference -- Missing reference section? 'IANA-CS' on line 4959 looks like a reference -- Missing reference section? 'RFC1759' on line 5851 looks like a reference -- Missing reference section? 'ASCII' on line 4944 looks like a reference -- Missing reference section? 'IANA-MT' on line 4969 looks like a reference -- Missing reference section? 'RFC2046' on line 5062 looks like a reference -- Missing reference section? 'IANA-CSa' on line 4963 looks like a reference -- Missing reference section? 'ISO10646-1' on line 4987 looks like a reference -- Missing reference section? '46' on line 2428 looks like a reference -- Missing reference section? 'ISO8859-1' on line 4992 looks like a reference -- Missing reference section? 'RFC1766' on line 5040 looks like a reference -- Missing reference section? 'RFC2048' on line 5069 looks like a reference -- Missing reference section? '52' on line 2470 looks like a reference -- Missing reference section? '56' on line 2470 looks like a reference -- Missing reference section? 'RFC1903' on line 2555 looks like a reference -- Missing reference section? 'RFC2068' on line 5048 looks like a reference -- Missing reference section? 'RFC2069' on line 5052 looks like a reference -- Missing reference section? 'PWG' on line 5013 looks like a reference -- Missing reference section? 'RFC1035' on line 5018 looks like a reference -- Missing reference section? 'RFC2045' on line 5057 looks like a reference -- Missing reference section? 'CS-POL' on line 4949 looks like a reference Summary: 11 errors (**), 0 flaws (~~), 17 warnings (==), 43 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTERNET-DRAFT 3 draft-ietf-ipp-model-07.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 November 7, 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 Abstract 39 This document is one of a set of documents, which together describe 40 all aspects of a new Internet Printing Protocol (IPP). IPP is an 41 application level protocol that can be used for distributed printing 42 using Internet tools and technologies. The protocol is heavily 43 influenced by the printing model introduced in the Document Printing 44 Application (DPA) [ISO10175] standard. Although DPA specifies both 45 end user and administrative features, IPP version 1.0 (IPP/1.0) 46 focuses only on end user functionality. 48 Expires May 7, 1998 49 The full set of IPP documents includes: 51 Requirements for an Internet Printing Protocol [IPP-REQ] 52 Internet Printing Protocol/1.0: Model and Semantics (this document) 53 Internet Printing Protocol/1.0: Protocol Specification [IPP-PRO] 54 Rationale for the Structure and Model and Protocol for the Internet 55 Printing Protocol [IPP-RAT] 57 The requirements document, ''Requirements for an Internet Printing 58 Protocol'', takes a broad look at distributed printing functionality, 59 and it enumerates real-life scenarios that help to clarify the 60 features that need to be included in a printing protocol for the 61 Internet. It identifies requirements for three types of users: end 62 users, operators, and administrators. The requirements document calls 63 out a subset of end user requirements that MUST be satisfied in 64 IPP/1.0. Operator and administrator requirements are out of scope for 65 version 1.0. This document, ''Internet Printing Protocol/1.0: Model and 66 Semantics'', describes a simplified model with abstract objects, their 67 attributes, and their operations. The model introduces a Printer and 68 a Job. The Job supports multiple documents per Job. The model 69 document also addresses how security, internationalization, and 70 directory issues are addressed. The protocol specification, '' 71 Internet Printing Protocol/1.0: Protocol Specification'', is a formal 72 mapping of the abstract operations and attributes defined in the model 73 document onto HTTP/1.1. The protocol specification defines the 74 encoding rules for a new Internet media type called ''application/ipp''. 76 Expires May 7, 1998 77 Table of Contents 79 1. Simplified Printing Model ......................................8 80 2. IPP Objects ...................................................10 81 2.1 Printer Object................................................11 82 2.2 Job Object....................................................12 83 2.3 Object Relationships..........................................13 84 2.4 Object Identity...............................................14 85 3. IPP Operations ................................................15 86 3.1 General Semantics.............................................16 87 3.1.1 Operation Characteristics................................16 88 3.1.2 Operation Targets........................................18 89 3.1.3 Character Set and Natural Language Operation Attributes..19 90 3.1.3.1 Request Operation Attributes ..........................19 91 3.1.3.2 Response Operation Attributes .........................22 92 3.1.4 Operation Status Codes and Messages......................23 93 3.1.5 Security Concerns for IPP Operations.....................23 94 3.1.5.1 Authenticated Requester Identity ......................23 95 3.1.5.2 The "requesting-user-name" Operation Attribute ........24 96 3.1.5.3 Restricted Queries ....................................25 97 3.1.6 Versions.................................................25 98 3.1.7 Job Creation Operations..................................26 99 3.2 Printer Operations............................................28 100 3.2.1 Print-Job Operation......................................29 101 3.2.1.1 Print-Job Request .....................................29 102 3.2.1.2 Print-Job Response ....................................31 103 3.2.2 Print-URI Operation......................................34 104 3.2.3 Validate-Job Operation...................................34 105 3.2.4 Create-Job Operation.....................................35 106 3.2.5 Get-Attributes Operation (for Printer objects)...........35 107 3.2.5.1 Get-Attributes Request ................................36 108 3.2.5.2 Get-Attributes Response ...............................37 109 3.2.6 Get-Jobs Operation.......................................37 110 3.2.6.1 Get-Jobs Request ......................................38 111 3.2.6.2 Get-Jobs Response .....................................39 112 3.3 Job Operations................................................40 113 3.3.1 Send-Document Operation..................................41 114 3.3.1.1 Send-Document Request .................................42 115 3.3.1.2 Send-Document Response ................................43 116 3.3.2 Send-URI Operation.......................................43 117 3.3.3 Cancel Job Operation.....................................44 118 3.3.3.1 Cancel-Job Request ....................................44 119 3.3.3.2 Cancel-Job Response ...................................45 120 3.3.4 Get-Attributes Operation (for Job objects)...............45 121 3.3.4.1 Get-Attributes Request ................................46 122 3.3.4.2 Get-Attributes Response ...............................46 123 4. Object Attributes .............................................47 124 4.1 Attribute Syntaxes............................................47 126 Expires May 7, 1998 127 4.1.1 'text'...................................................48 128 4.1.2 'name'...................................................49 129 4.1.3 'keyword'................................................50 130 4.1.4 'enum'...................................................50 131 4.1.5 'uri'....................................................51 132 4.1.6 'uriScheme'..............................................51 133 4.1.7 'charset'................................................52 134 4.1.8 'naturalLanguage'........................................52 135 4.1.9 'mimeMediaType'..........................................53 136 4.1.10 'octetString'............................................54 137 4.1.11 'boolean'................................................54 138 4.1.12 'integer'................................................54 139 4.1.13 'rangeOfInteger'.........................................54 140 4.1.14 'dateTime'...............................................55 141 4.1.15 'resolution'.............................................55 142 4.1.16 '1setOf X'..............................................55 143 4.2 Job Template Attributes.......................................56 144 4.2.1 job-priority (integer(1:100))............................59 145 4.2.2 job-hold-until (type4 keyword | name)....................60 146 4.2.3 job-sheets (type4 keyword | name)........................61 147 4.2.4 multiple-document-handling (type2 keyword)...............61 148 4.2.5 copies (integer(1:MAX))..................................63 149 4.2.6 finishings (1setOf type2 enum)...........................63 150 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))..............64 151 4.2.8 sides (type2 keyword)....................................65 152 4.2.9 number-up (integer(0:MAX))...............................66 153 4.2.10 orientation (type2 enum).................................67 154 4.2.11 media (type4 keyword | name).............................67 155 4.2.12 printer-resolution (resolution)..........................68 156 4.2.13 print-quality (type2 enum)...............................68 157 4.2.14 compression (type3 keyword)..............................69 158 4.2.15 job-k-octets (integer(0:MAX))............................69 159 4.2.16 job-impressions (integer(0:MAX)).........................70 160 4.2.17 job-media-sheets (integer(0:MAX))........................70 161 4.3 Job Description Attributes....................................70 162 4.3.1 job-uri (uri)............................................73 163 4.3.2 job-id (integer(1:MAX))..................................73 164 4.3.3 job-more-info (uri)......................................73 165 4.3.4 job-name (name)..........................................73 166 4.3.5 job-originating-user-name (name).........................74 167 4.3.6 job-state (type1 enum)...................................74 168 4.3.7 job-state-reasons (1setOf type2 keyword)................77 169 4.3.8 job-state-message (text).................................79 170 4.3.9 number-of-documents (integer(0:MAX)).....................80 171 4.3.10 containing-printer-uri (uri).............................80 172 4.3.11 output-device-assigned (name)............................80 173 4.3.12 time-at-creation (integer(0:MAX))........................80 174 4.3.13 time-at-processing (integer(0:MAX))......................80 176 Expires May 7, 1998 177 4.3.14 time-at-completed (integer(0:MAX)).......................81 178 4.3.15 number-of-intervening-jobs (integer(0:MAX))..............81 179 4.3.16 job-message-from-operator (text).........................81 180 4.3.17 job-k-octets-processed (integer(0:MAX))..................81 181 4.3.18 job-impressions-completed (integer(0:MAX))..............82 182 4.3.19 job-media-sheets-completed (integer(0:MAX))..............82 183 4.3.20 attributes-charset (charset).............................82 184 4.3.21 attributes-natural-language (naturalLanguage)............83 185 4.4 Printer Description Attributes................................83 186 4.4.1 printer-uri (uri)........................................85 187 4.4.2 printer-name (name)......................................85 188 4.4.3 printer-location (text)..................................85 189 4.4.4 printer-info (text)......................................85 190 4.4.5 printer-more-info (uri)..................................86 191 4.4.6 printer-driver-installer (uri)...........................86 192 4.4.7 printer-make-and-model (text)............................86 193 4.4.8 printer-more-info-manufacturer (uri).....................86 194 4.4.9 printer-state (type1 enum)...............................86 195 4.4.10 printer-state-reasons (1setOf type2 keyword).............88 196 4.4.11 printer-state-message (text).............................90 197 4.4.12 operations-supported (1setOf type2 enum).................90 198 4.4.13 charset (charset)........................................91 199 4.4.14 charset-supported (1setOf charset).......................91 200 4.4.15 natural-language (naturalLanguage).......................92 201 4.4.16 natural-language-supported (1setOf naturalLanguage)......92 202 4.4.17 document-format (mimeMediaType)..........................93 203 4.4.18 document format-supported (1setOf mimeMediaType).........93 204 4.4.19 printer-is-accepting-jobs (boolean)......................93 205 4.4.20 queued-job-count (integer(0:MAX))........................93 206 4.4.21 printer-message-from-operator (text).....................93 207 4.4.22 color-supported (boolean)................................94 208 4.4.23 reference-uri-schemes-supported (1setOf uriScheme).......94 209 4.4.24 pdl-override (type2 keyword).............................94 210 4.4.25 printer-up-time (integer(1:MAX)).........................95 211 4.4.26 printer-current-time (dateTime)..........................95 212 4.4.27 multiple-operation-time-out (integer(1:MAX)).............95 213 5. Conformance ...................................................96 214 5.1 Client Conformance Requirements...............................96 215 5.2 IPP Object Conformance Requirements...........................97 216 5.2.1 Objects..................................................97 217 5.2.2 Operations...............................................97 218 5.2.3 IPP Object Attributes....................................97 219 5.2.4 Extensions...............................................98 220 5.2.5 Attribute Syntaxes.......................................98 221 5.3 charset and Natural Language Requirements.....................98 222 5.4 Security Conformance Requirements.............................99 223 6. IANA Considerations (registered and private extensions) .......99 224 6.1 Typed Extensions..............................................99 226 Expires May 7, 1998 227 6.2 Registration of MIME types/sub-types for document-formats....101 228 6.3 Attribute Extensibility......................................101 229 6.4 Attribute Syntax Extensibility...............................101 230 7. Internationalization Considerations ..........................101 231 8. Security Considerations ......................................102 232 8.1 Client and Printer in the Same Security Domain...............104 233 8.2 Client and Printer in Different Security Domains.............104 234 8.3 Print by Reference...........................................104 235 8.3.1 Unprotected Documents...................................104 236 8.3.2 Protected Documents.....................................105 237 8.4 Common Security Scenarios....................................105 238 8.4.1 No Security.............................................105 239 8.4.2 Message Protection During Transmission..................105 240 8.4.3 Client Authentication and Authorization.................106 241 8.4.4 Mutual Authentication, Authorization and Message 242 Protection.........................................106 243 8.5 Recommended Security Mechanisms..............................106 244 9. References ...................................................107 245 10. Copyright Notice .............................................110 246 11. Author's Address .............................................110 247 12. APPENDIX A: Terminology ......................................113 248 12.1 Conformance Terminology......................................113 249 12.1.1 MUST....................................................113 250 12.1.2 MUST NOT................................................113 251 12.1.3 SHOULD..................................................113 252 12.1.4 SHOULD NOT..............................................113 253 12.1.5 MAY.....................................................114 254 12.1.6 NEED NOT................................................114 255 12.2 Model Terminology............................................114 256 12.2.1 Keyword.................................................114 257 12.2.2 Attributes..............................................114 258 12.2.2.1 Attribute Name .......................................115 259 12.2.2.2 Attribute Group Name .................................115 260 12.2.2.3 Attribute Value ......................................115 261 12.2.2.4 Attribute Syntax .....................................115 262 12.2.3 Supports................................................115 263 12.2.4 print-stream page.......................................117 264 12.2.5 impression..............................................118 265 13. APPENDIX B: Status Codes and Suggested Status Code Messages .118 266 13.1 Status Codes.................................................119 267 13.1.1 Informational...........................................119 268 13.1.2 Successful Status Codes.................................119 269 13.1.2.1 successful-ok (0x0000) ...............................119 270 13.1.2.2 successful-ok-ignored-or-substituted- 271 attributes (0x0001) .............................120 272 13.1.2.3 successful-ok-conflicting-attributes (0x0002) ........120 273 13.1.3 Redirection Status Codes................................120 274 13.1.4 Client Error Status Codes...............................120 276 Expires May 7, 1998 277 13.1.4.1 client-error-bad-request (0x0400) ....................120 278 13.1.4.2 client-error-forbidden (0x0401) ......................120 279 13.1.4.3 client-error-not-authenticated (0x0402) ..............121 280 13.1.4.4 client-error-not-authorized (0x0403) .................121 281 13.1.4.5 client-error-not-possible (0x0404) ...................121 282 13.1.4.6 client-error-timeout (0x0405) ........................121 283 13.1.4.7 client-error-not-found (0x0406) ......................122 284 13.1.4.8 client-error-gone (0x0407) ...........................122 285 13.1.4.9 client-error-request-entity-too-large (0x0408) .......122 286 13.1.4.10 client-error-request-uri-too-long (0x0409) ...........123 287 13.1.4.11 client-error-document-format-not-supported (0x040A) ..123 288 13.1.4.12 client-error-attribute-not-supported (0x040B) ........123 289 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) .......124 290 13.1.4.14 client-error-charset-not-supported (0x040D) ..........124 291 13.1.4.15 client-error-conflicting-attributes (0x040E) .........124 292 13.1.5 Server Error Status Codes...............................124 293 13.1.5.1 server-error-internal-error (0x0500) .................124 294 13.1.5.2 server-error-operation-not-supported (0x0501) ........124 295 13.1.5.3 server-error-service-unavailable (0x0502) ............125 296 13.1.5.4 server-error-version-not-supported (0x0503) ..........125 297 13.1.5.5 server-error-device-error (0x0504) ...................125 298 13.1.5.6 server-error-temporary-error (0x0505) ................126 299 13.2 Status Codes for IPP Operations..............................127 300 14. APPENDIX C: "media" keyword values ..........................127 301 15. APPENDIX D: Processing IPP Attributes ........................132 302 15.1 Fidelity.....................................................133 303 15.2 Page Description Language (PDL) Override.....................134 304 15.3 Suggested Operation Processing Algorithm for Create and 305 Validate-Job operations.................................136 306 15.4 Using Job Template Attributes During Document Processing.....141 307 16. APPENDIX E: Generic Directory Schema .........................143 309 Expires May 7, 1998 310 1. Simplified Printing Model 312 In order to achieve its goal of realizing a workable printing protocol 313 for the Internet, the Internet Printing Protocol (IPP) is based on a 314 simplified printing model that abstracts the many components of real 315 world printing solutions. The Internet is a distributed computing 316 environment where requesters of print services (clients, applications, 317 printer drivers, etc.) cooperate and interact with print service 318 providers. This model and semantics document describes a simple, 319 abstract model for IPP even though the underlying configurations may 320 be complex "n-tier" client/server systems. An important simplifying 321 step in the IPP model is to expose only the key objects and interfaces 322 required for printing. The model described in this model document 323 does not include features, interfaces, and relationships that are 324 beyond the scope of the first version of IPP (IPP/1.0). IPP/1.0 325 incorporates many of the relevant ideas and lessons learned from other 326 specification and development efforts [HTPP] [ISO10175] [LDPA] 327 [P1387.4] [PSIS] [RFC1179] [SWP]. 329 The IPP/1.0 model encapsulates the important components of distributed 330 printing into two object types: 332 - Printer (Section 2.1) 333 - Job (Section 2.2) 335 Each object type has an associated set of operations (see section 3) 336 and attributes (see section 4). 338 The terminology used in the remainder of this document is defined in 339 section 12. In the remainder of this document, terms such as 340 "attributes", "keywords", and "support" have special meaning and are 341 defined in the model terminology section. Capitalized terms such as 342 MANDATORY, SHALL, and OPTIONAL have special meaning relating to 343 conformance. These terms are defined in the section on conformance 344 terminology, most of which is taken from RFC 2119 [RFC2119]. 346 It is important, however, to understand that in real system 347 implementations (which lie underneath the abstracted IPP/1.0 model), 348 there are other components of a print service which are not explicitly 349 defined in the IPP/1.0 model. The following figure illustrates where 350 IPP/1.0 fits with respect to these other components. 352 Expires May 7, 1998 353 +--------------+ 354 | Application | 355 o +. . . . . . . | 356 \|/ | Spooler | 357 / \ +. . . . . . . | +---------+ 358 End-User | Print Driver |---| File | 359 +-----------+ +-----+ +------+-------+ +----+----+ 360 | Browser | | GUI | | | 361 +-----+-----+ +--+--+ | | 362 | | | | 363 | +---+------------+---+ | 364 N D S | | IPP Client |------------+ 365 O I E | +---------+----------+ 366 T R C | | 367 I E U | 368 F C R -------------- Transport ------------------ 369 I T I 370 C O T | --+ 371 A R Y +--------+--------+ | 372 T Y | IPP Server | | 373 I +--------+--------+ | 374 O | | 375 N +-----------------+ | IPP Printer 376 | Print Service | | 377 +-----------------+ | 378 | --+ 379 +-----------------+ 380 | Output Device(s)| 381 +-----------------+ 383 An IPP Printer object encapsulates the functions normally associated 384 with physical output devices along with the spooling, scheduling and 385 multiple device management functions often associated with a print 386 server. Printer objects are optionally registered as entries in a 387 directory where end users find and select them based on some sort of 388 filtered and context based searching mechanism (see section 16). The 389 directory is used to store relatively static information about the 390 Printer, allowing end users to search for and find Printers that match 391 their search criteria, for example: name, context, printer 392 capabilities, etc.. The more dynamic information is directly 393 associated with the Printer object itself (as compared to the entry in 394 the directory which only represents the Printer object). This more 395 dynamic information includes state, currently loaded and ready media, 396 number of jobs at the Printer, errors, warnings, and so forth. 398 IPP clients implement the IPP protocol on the client side, and give 399 end users (or programs running on behalf of end users) the ability to 401 Expires May 7, 1998 402 query Printer objects and submit and manage print jobs. An IPP server 403 is just that part of the Printer object that implements the server- 404 side protocol. The rest of the Printer object implements (or gateways 405 into) the application semantics of the print service itself. The 406 Printer objects may be embedded in an output device or may be 407 implemented on a host on the network that communicates with the output 408 device. 410 When a job is submitted to the Printer object and the Printer object 411 validates the attributes in the submission request, the Printer object 412 creates a new Job object. The end user then interacts with this new 413 Job object to query its status and monitor the progress of the job. 414 End users may also cancel the print job by using the Job object's 415 Cancel-Job operation. The notification service(s) are out of scope 416 for IPP/1.0, but using such a notification service, the end user is 417 able to register for and receive Printer specific and Job specific 418 events. An end user can query the status of Printer objects and can 419 follow the progress of Job objects by polling using the Get-Attributes 420 and Get-Jobs operations. 422 2. IPP Objects 424 The IPP/1.0 model introduces objects of type Printer and Job. Each 425 type of object models relevant aspects of a real-world entity such as 426 a real printer or real print job. Each object type is defined as a 427 set of possible attributes that may be supported by instances of that 428 object type. For each object (instance), the actual set of supported 429 attributes and values describe a specific implementation. The 430 object's attributes and values describe its state, capabilities, 431 realizable features, job processing functions, and default behaviors 432 and characteristics. For example, the Printer object type is defined 433 as a set of attributes that each Printer object potentially supports. 434 In the same manner, the Job object type is defined as a set of 435 attributes that are potentially supported by each Job object. 437 Each attribute included in the set of attributes defining an object 438 type is labeled as: 440 - "MANDATORY": each object SHALL support the attribute. 441 - "OPTIONAL": each object OPTIONALLY supports the attribute. 443 There is no such similar labeling of attribute values. However, if an 444 implementation supports an attribute, it MUST support at least one of 445 the possible values for that attribute. 447 Expires May 7, 1998 448 2.1 Printer Object 450 A major component of the IPP/1.0 model is the Printer object. A 451 Printer object implements the IPP/1.0 protocol. Using the protocol, 452 end users may query the attributes of the Printer object and submit 453 print jobs to the Printer object. The actual implementation 454 components behind the Printer abstraction may take on different forms 455 and different configurations. However, the model abstraction allows 456 the details of the configuration of real components to remain opaque 457 to the end user. Section 3 describes each of the Printer operations 458 in detail. 460 The capabilities and state of a Printer object are described by its 461 attributes. Printer attributes are divided into two groups: 463 - "job-template" attributes: These attributes describe supported 464 job processing capabilities and defaults for the Printer object. 465 (See section 4.2) 466 - "printer-description" attributes: These attributes describe the 467 Printer object's identification, state, location, references to 468 other sources of information about the Printer object, etc. (see 469 section 4.4) 470 Since a Printer object is an abstraction of a generic document output 471 device and print service provider, a Printer object could be used to 472 represent any real or virtual device with semantics consistent with 473 the Printer object, such as a fax device, an imager, or even a CD 474 writer. 476 Some examples of configurations supporting a Printer object include: 478 1) An output device, with no spooling capabilities 479 2) An output device, with a built-in spooler 480 3) A print server supporting IPP with one or more associated output 481 devices 482 3a) The associated output devices might or might not be capable 483 of spooling jobs 484 3b) The associated output devices might or might not support IPP 486 The following figures show some examples of how Printer objects can be 487 realized on top of various distributed printing configurations. The 488 embedded case below represents configurations 1 and 2. The hosted and 489 fan-out figures below represent configuration 3. 491 Expires May 7, 1998 492 Legend: 494 ##### indicates a Printer object which is 495 either embedded in an output device or is 496 hosted in a server. The Printer object 497 might or might not be capable of queuing/spooling. 499 any indicates any network protocol or direct 500 connect, including IPP 502 embedded printer: 503 output device 504 +---------------+ 505 O +--------+ | ########### | 506 /|\ | client |------------IPP------------># Printer # | 507 / \ +--------+ | # Object # | 508 | ########### | 509 +---------------+ 511 hosted printer: 512 +---------------+ 513 O +--------+ ########### | | 514 /|\ | client |--IPP--># Printer #-any->| output device | 515 / \ +--------+ # Object # | | 516 ########### +---------------+ 518 +---------------+ 519 fan out: | | 520 +-->| output device | 521 any/ | | 522 O +--------+ ########### / +---------------+ 523 /|\ | client |-IPP-># Printer #--* 524 / \ +--------+ # Object # \ +---------------+ 525 ########### any\ | | 526 +-->| output device | 527 | | 528 +---------------+ 530 2.2 Job Object 532 A Job object is used to model a print job. A Job can contain one or 533 more documents. The information required to create a Job object is 535 Expires May 7, 1998 536 sent in a create request from the end user via an IPP Client to the 537 Printer object. Section 3 describes each of the Job operations in 538 detail. 540 The characteristics and state of a Job object are described by its 541 attributes. Job attributes are grouped into two groups as follows: 543 - "job-template" attributes: These attributes are OPTIONALLY 544 supplied by the client or end user and include job processing 545 instructions which are intended to override any Printer object 546 defaults and/or instructions embedded within the document data. 547 (See section 4.2) 548 - "job-description" attributes: These attributes describe the Job 549 object's identification, state, size, etc. Except for "job-name", 550 the client does not supply values for these attributes, they are 551 set by the Printer object. (See section 4.3) 553 A Job object contains at least one document, but may contain multiple 554 documents. A document consists of either: 556 - a stream of document data in a format supported by the Printer 557 object (typically a Page Description Language - PDL), or 558 - a reference to such a stream of document data 560 In IPP/1.0, a document is not modeled as an IPP object, therefore it 561 has no object identifier or associated attributes. All job processing 562 instructions are modeled as Job object attributes. These attributes 563 are called Job Template attributes and they apply equally to all 564 documents within a Job object. 566 2.3 Object Relationships 568 IPP objects have relationships that MUST be maintained persistently 569 along with the persistent storage of the object attributes. 571 A Printer object MAY represent one or more output devices. A Printer 572 object MAY represent a logical device which "processes" jobs but never 573 actually uses a physical output device to put marks on paper (for 574 example a Web page publisher or an interface into an online document 575 archive or repository). A Printer object contains zero or more Job 576 objects. 578 A Job object is contained by exactly one Printer object, however the 579 identical document data associated with a Job object could be sent to 580 either the same or a different Printer object. In this case, a new 581 Job object would be created which would be almost identical to the 583 Expires May 7, 1998 584 existing Job object, however it would have new (different) Job object 585 identifiers (see section 2.4). 587 A Job object contains one or more documents. If the contained 588 document is a stream of document data, that stream can be contained in 589 only one document. However, there can be copies of the stream in 590 other documents in the same or different Job objects. If the 591 contained document is a reference to a stream of document data, other 592 documents (in the same or different Job object(s)) may reference the 593 same stream. 595 2.4 Object Identity 597 All Printer and Job objects be identified by an identifier so that 598 they can be persistently and unambiguously referenced. The IPP/1.0 599 model requires that these identifiers be Uniform Resource Identifiers 600 (URIs) [RFC1630]. Often, the URI is a URL [RFC1738] [RFC1808]. 602 Note: The IPP/1.0 protocol specification [IPP-PRO] defines a mapping 603 of the IPP/1.0 model and semantics onto HTTP/1.1. Therefore, all 604 conforming Printer and Job objects SHALL support HTTP schemed URIs to 605 identify themselves. For example, a Printer object's URI could be 606 "http://www.some-domain.org/printer-one". A Printer object's URI 607 could not be "ftp://ftp.some-domain.org/printer-one". 609 IPP/1.0 does not specify how the URI is obtained, but it is 610 RECOMMENDED that a Printer object is registered in a directory service 611 which end users and programs can interrogate. Section 16 defines a 612 generic schema for Printer object entries in the directory service. 614 Allowing Job objects to have URIs allows for flexibility and 615 scalability. In some implementations, the Printer object might create 616 Jobs that are processed in the same local environment as the Printer 617 object itself. In this case, the Job URI might just be a composition 618 of the Printer's URI and some unique component for the Job object, 619 such as the unique 32-bit positive integer mentioned later in this 620 paragraph. In other implementations, the Printer object might be a 621 central clearing-house for validating all Job object creation 622 requests, and the Job object itself might be created in some 623 environment that is remote from the Printer object. In this case, the 624 Job object's URI may have no relationship at all to the Printer 625 object's URI. However, many existing printing systems have local 626 models or interface constraints that force Job objects to be 627 identified using only a 32-bit positive integer rather than a URI. 628 This numeric Job ID is only unique within the context of the Printer 629 object to which the create request was originally submitted. In order 630 to allow both types of client access to Jobs (either by Job URI or by 632 Expires May 7, 1998 633 numeric Job ID), when the Printer object successfully processes a 634 create request and creates a new Job, the Printer object SHALL 635 generate both a Job URI and a Job ID for the new Job object. This 636 requirement allows all clients to access Printer objects and Job 637 objects no matter the local constraints imposed on the client 638 implementation. 640 In addition to a unique identifier, Printer objects and Job objects 641 have names. An object name need not be unique across all instances of 642 all objects. A Printer object's name is chosen and set by an 643 administrator through some mechanism outside the scope of IPP/1.0. A 644 Job object's name is optionally chosen and supplied by the IPP client 645 submitting the job. If the client does not supply a Job object name, 646 the Printer object generates a name for the new Job object. In all 647 cases, the name only has local meaning; the name is not constrained to 648 be unique. 650 To summarize: 652 - Each Printer object is uniquely identified with a URI. The 653 Printer's "printer-uri" attribute contains the URI. 654 - Each Job object is uniquely identified with a URI. The Job's 655 "job-uri" attribute contains the URI. 656 - Each Job object is also uniquely identified with a combination of 657 the URI of the Printer object to which the create request was 658 originally submitted along with a Job ID (a 32-bit, positive 659 number) that is unique within the context of that Printer object. 660 The Printer object's "printer-uri" contains the Printer URI. The 661 Job object's "job-id" attribute contains the numeric Job ID. 662 - Each Printer object has a name (which is not necessarily unique). 663 The administrator chooses and sets this name through some 664 mechanism outside the scope of IPP/1.0 itself. The Printer 665 object's "printer-name" attribute contains the name. 666 - Each Job object has a name (which is not necessarily unique). 667 The client optionally supplies this name in the create request. 668 If the client does not supply this name, the Printer object 669 generates a name for the Job object. The Job object's "job-name" 670 attribute contains the name. 672 3. IPP Operations 674 IPP objects support operations. An operation consists of a request 675 and a response. When a client communicates with an IPP object, the 676 client issues an operation request to the URI for that object. 677 Operations have attributes that supply information about the operation 678 itself. These attributes are called operation attributes (as compared 680 Expires May 7, 1998 681 to object attributes such as Printer object attributes or Job object 682 attributes). Each request carries along with it any operation 683 attributes, object attributes, and/or document data required by the 684 object to perform the operation. Each request requires a response 685 from the object. Each response indicates success or failure of the 686 operation with a status code. The response contains any operation 687 attributes, object attributes, and/or status messages generated by the 688 execution of the operation request. 690 This section describes the semantics of the IPP operations, both 691 requests and responses, in terms of the attributes and other data 692 associated with each operation. 694 Note: The IPP/1.0 protocol specification [IPP-PRO] describes a mapping 695 and encoding of IPP/1.0 operations onto HTTP/1.1 POST commands. Other 696 mappings for IPP/1.0 operations to additional transport mechanisms are 697 possible. 699 The IPP/1.0 Printer operations are: 701 Print-Job (section 3.2.1) 702 Print-URI (section 3.2.2) 703 Validate-Job (section 3.2.3) 704 Create-Job (section 3.2.4) 705 Get-Attributes (section 3.2.5) 706 Get-Jobs (section 3.2.6) 708 The Job operations are: 710 Send-Document (section 3.3.1) 711 Send-URI (section 3.3.2) 712 Cancel-Job (section 3.3.3) 713 Get-Attributes (section 3.3.4) 715 The Send-Document and Send-URI Job operations are used to add a new 716 document to an existing multi-document Job object created with the 717 Create-Job operation. 719 3.1 General Semantics 721 3.1.1 Operation Characteristics 723 Each IPP operation is defined as both a request and a response. Both 724 requests and responses are composed of groups of attributes and/or 725 document data. The attributes groups are: 727 Expires May 7, 1998 728 - Operation Attributes: These attributes are passed in the 729 operation, and usually do not persist beyond the life of the 730 operation. Operation attributes may also affect other attributes 731 or groups of attributes since values in the operation attributes 732 usually affect the behavior of the object that processes the 733 operation. All IPP objects that accept IPP operation requests 734 MUST support all operation attributes. Some operation attributes 735 are OPTIONAL for the client to supply, but the IPP object MUST 736 support the attribute by being prepared to handle the client 737 supplied operation attribute by realizing the corresponding 738 feature or function. The addition of new operation attributes 739 (either OPTIONAL or MANDATORY for the client to supply) will 740 cause a change to the major version number. Because some 741 operation attributes are MANDATORY for the client to supply, 742 every request and response MUST contain those operation 743 attributes. 744 - Job Template Attributes: These attributes affect the processing 745 of a job. A client OPTIONALLY supplies Job Template Attributes 746 in a create request, and the receiving object MUST be prepared to 747 receive all supported attributes. The Job object can later be 748 queried to find out what Job Template attributes were originally 749 requested in the create request, and such attributes are returned 750 in the response as Job Object Attributes. The Printer object can 751 be queried about its Job Template attributes to find out what 752 type of job processing capabilities are supported and/or what the 753 default job processing behaviors are, though such attributes are 754 returned in the response as Printer Object Attributes.. 755 - Job Object Attributes: These attributes are returned in response 756 to a query operation directed at a Job object. 757 - Printer Object Attributes: These attributes are returned in 758 response to a query operation directed at a Printer object. 759 - Unsupported Attributes: In a create request, the client 760 OPTIONALLY supplies a set of Job Template attributes. If any of 761 these are unsupported by the Printer object, the Printer object 762 returns the set of unsupported attributes in the response. 763 Section 15 gives a full description of how Job Template 764 attributes supplied by the client in a create request are 765 processed by the Printer object and how unsupported attributes 766 are returned to the client. 768 Later in this section, each operation is formally defined by 769 identifying the allowed and expected groups of attributes for each 770 request and response. The model identifies a specific order for each 771 group in each request or response, but the attributes within each 772 group may be in any order. It is an operation error for clients to 773 supply in operation requests and/or IPP objects to returns in 774 operations responses attribute value(s) that do not match the 776 Expires May 7, 1998 777 syntax(es) defined for that attribute (see section 3 for operation 778 attributes and section 4 for IPP object attributes). 780 Note: Document data included in the operation is not strictly an 781 attribute, but it is treated as a special attribute group for ordering 782 purposes. The only operations that support supplying the document 783 data within an operation request are Print-Job and Send-Document. 784 There are no operation responses that include document data. 786 Note: Some operations are MANDATORY for IPP objects to support; the 787 others are OPTIONAL (see section 5.2.2). Therefore, before using an 788 OPTIONAL operation, a client SHOULD first use the MANDATORY Get- 789 Attributes operation to query the Printer's "operations-supported" 790 attribute in order to determine which OPTIONAL Printer and Job 791 operations are actually supported. The client SHOULD NOT use an 792 OPTIONAL operation that is not supported. When an IPP object 793 receives a request to perform an operation it does not support, it 794 returns the 'server-error-operation-not-supported' status code (see 795 section 13.1.5.2). It is non-conformance when an object does not 796 support a MANDATORY operation. 798 3.1.2 Operation Targets 800 All IPP operations are directed at IPP objects. For Printer 801 operations, the operation is always directed at a Printer object using 802 its URI (the "printer-uri" attribute). For Job operations, the 803 operation is directed at either: 805 - the Job object itself using the Job object's URI (the "job-uri" 806 attribute assigned by the Printer object), or 807 - the Printer object to which the job was originally submitted 808 using the URI of the Printer ("printer-uri") in combination with 809 the 32-bit numeric Job ID (the "job-id" attribute assigned by the 810 Printer object). 812 If the operation is directed at the Job object directly using the Job 813 object's URI, the client SHALL NOT include the redundant "job-id" 814 operation attribute. 816 Note: In the mapping of IPP/1.0 over HTTP/1.1, the object's URI is 817 actually encoded as the "request-URI" field of the HTTP POST 818 operation. In the case of Printer operations directed at a Printer 819 object, the Printer object's "printer-uri" attribute is mapped to the 820 "request-URI" attribute in the HTTP header. In the case of Job 821 operations directed at the Job object, the Job object's "job-uri" 822 attribute is mapped to the "request-URI" attribute in the HTTP header. 823 In the case of Job operations directed at the Printer object that 825 Expires May 7, 1998 826 created the Job, the Printer object's "printer-uri" attribute is sent 827 in the HTTP header, and the "job-id" attribute is sent as an operation 828 attribute in the request body. In other mappings of IPP operations 829 onto other transport mechanisms, the target URI is encoded using some 830 other transport specific addressing mechanism. 832 The following rules apply to the use of port numbers in URIs that 833 identify IPP objects: 835 1. If the protocol scheme for the URI allows the port number to be 836 explicitly included in the URI string, and an explicit port 837 number is specified within the syntax of the URI, then that port 838 number MUST be used by the client to contact the IPP object. 840 2. If the protocol scheme for the URI does not allow an explicit 841 port number specification, then the default port number for the 842 protocol MUST be used. 844 3.1.3 Character Set and Natural Language Operation Attributes 846 Some Job and Printer attributes have values that are text strings and 847 names intended for human understanding rather than machine 848 understanding (see the 'text' and 'name' attribute syntax descriptions 849 in section 4.1). The following sections describe two MANDATORY 850 operation attributes for every IPP request and response. These 851 attributes are "attributes-charset" and "attributes-natural-language" 852 which SHALL be stored as Job Description attributes. For the sake of 853 brevity in this document, these operation attribute descriptions are 854 not repeated with every operation request and response, but have a 855 reference back to this section instead. 857 3.1.3.1 Request Operation Attributes 859 The client SHALL supply and the Printer object SHALL support the 860 following MANDATORY operation attributes in every IPP/1.0 operation 861 request: 863 "attributes-charset" (charset): 864 This operation attribute identifies the charset (coded character 865 set and encoding method) used by any 'text' and 'name' attributes 866 that the client is supplying in this request. It also identifies 867 the charset that the Printer object SHALL use (if supported) for 868 all 'text' and 'name' attributes and status messages that the 869 Printer object returns in the response to this request. See 870 Sections 4.1.1 and 4.1.2 for the specification of the 'text' and 871 'name' attribute syntaxes. 873 Expires May 7, 1998 874 All IPP objects SHALL support the 'utf-8' charset [RFC2044] and 875 MAY support additional charsets provided that they are registered 876 with IANA [IANA-CS]. If the Printer object does not support the 877 client supplied charset value, the Printer object SHALL reject 878 the request and return the 'client-error-charset-not-supported' 879 status code. The Printer object SHALL indicate the charset(s) 880 supported as the values of the " charset-supported" Printer 881 attribute (see Section 4.4.14), so that the client MAY query 882 which charset(s) are supported. 884 Note to client implementers: Since IPP objects are only required 885 to support the 'utf-8' charset, in order to maximize 886 interoperability with multiple IPP object implementations, a 887 client may want to supply 'utf-8' in the "attributes-charset" 888 operation attribute, even though the client is only passing and 889 able to present a simpler charset, such as US-ASCII or ISO-8859- 890 1. Then the client will have to filter out (or charset convert) 891 those characters that are returned in the response that it cannot 892 present to its user. On the other hand, if both the client and 893 the IPP objects also support a charset in common besides utf-8, 894 the client MAY want to use that charset in order to avoid charset 895 conversion or data loss. 897 See the 'charset' attribute syntax description in Section 4.1.7 898 for the syntax and semantic interpretation of the values of this 899 attribute and for example values. 901 "attributes-natural-language" (naturalLanguage): 902 This operation attribute identifies the natural language used by 903 any 'text' and 'name' attributes that the client is supplying in 904 this request. This attribute also identifies the natural 905 language that the Printer object SHOULD use for all 'text' and 906 'name' attributes and status messages that the Printer object 907 returns in the response to this request. 909 There are no MANDATORY natural languages required for the Printer 910 object to support. However, the Printer object's "natural- 911 language-supported" attribute SHALL list the natural languages 912 supported by the Printer object and any contained Job objects, so 913 that the client MAY query which natural language(s) are 914 supported. 915 For any of the attributes for which the Printer object generates 916 text, i.e., for the "job-state-message", "printer-state-message", 917 and status messages (see Section 3.1.4), the Printer object SHALL 918 be able to generate these text strings in any of its supported 919 natural languages. If the client requests a natural language 920 that is not supported, the Printer object SHALL return these 922 Expires May 7, 1998 923 generated messages in the Printer's configured natural language 924 as specified by the Printer's "natural-language" attribute" (see 925 Section 4.4.15). 927 For other 'text' and 'name' attributes supplied by the client, 928 authentication system, operator, system administrator, or 929 manufacturer, i.e., for "job-originating-user-name", "printer- 930 name" (name), "printer-location" (text), "printer-info" (text), 931 and "printer-make-and-model" (text), the Printer object is only 932 required to support the configured natural language of the 933 Printer identified by the Printer object's "natural-language" 934 attribute, though support of additional natural languages for 935 these attributes is permitted. 937 For any 'text' or 'name' attribute in the request that is in a 938 different natural language than the value supplied in the 939 "attributes-natural-language", the client SHALL use the Natural 940 Language Override mechanism (see section 4.1.1 on the 'text' 941 attribute syntax) on each attribute value supplied. 943 The IPP object SHALL accept any natural language and any Natural 944 Language Override, whether the IPP object supports that natural 945 language or not (and independent of the value of the "ipp- 946 attribute-fidelity" Operation attribute), i.e., whether the 947 Printer object's "natural-language-supported" contains the value 948 supplied by the client in the "attributes-natural-language" 949 Operation attribute or in a Natural Language Override. In some 950 cases, the client supplies an attribute with a natural language 951 that is not supported. In these cases, the IPP object SHALL 952 remember that natural language for that attribute, and SHALL 953 indicate that natural language when returning the attribute in 954 response to a query. For example, the "job-name" attribute is 955 supplied by the client in a create request, and its value, if 956 supplied, is used to populate the Job objects "job-name" 957 attribute. If the client supplies a Job name in an unsupported 958 natural language, Printer object SHALL accept the create request 959 and remember the client supplied natural language. There is no 960 need for the Printer object to reject the create request just 961 because the client choose to pick some unsupported natural 962 language for the Job name. Whenever a client queries the "job- 963 name" attribute, the IPP object returns the attribute and 964 indicates the natural language of the attribute as a Natural 965 Language Override if it is different than the natural language of 966 the other attributes in the response. 968 See the 'naturalLanguage' attribute syntax description in Section 969 4.1.8 for the syntax and semantic interpretation of the values of 970 this attribute and for example values. 972 Expires May 7, 1998 974 3.1.3.2 Response Operation Attributes 976 The Printer object SHALL supply and the client SHALL support the 977 following MANDATORY operation attributes in every IPP/1.0 operation 978 response: 980 "attributes-charset" (charset): 981 This operation attribute identifies the charset used by any 982 'text' and 'name' attributes that the Printer object is returning 983 in this response. The value in this response SHALL be the same 984 value as the "attributes-charset" operation attribute supplied by 985 the client in the request. See "attributes-charset" described in 986 Section 3.1.3.1 above. 988 If the Printer object supports more than just the 'utf-8' 989 charset, the Printer object SHALL be able to code convert between 990 each of the charsets supported on a highest fidelity possible 991 basis in order to return the 'text' and 'name' attributes in the 992 charset requested by the client. However, some information loss 993 MAY occur during the charset conversion depending on the charsets 994 involved. For example, the Printer object may convert from a 995 UTF-8 'a' to a US-ASCII 'a' (with no loss of information), from 996 an ISO Latin 1 CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' 997 (losing the accent), or from a UTF-8 Japanese Kanji character to 998 some ISO Latin 1 error character indication such as '?', decimal 999 code equivalent, or to the absence of a character, depending on 1000 implementation. 1002 Note: Whether an implementation that supports more than one 1003 charset stores the data in the charset supplied by the client or 1004 code converts to one of the other supported charsets, depends on 1005 implementation. The strategy SHOULD try to minimize loss of 1006 information during code conversion. In any case, responses SHALL 1007 always be in the charset requested. If this is not possible 1008 (i.e., the charset requested is not supported), the request SHALL 1009 be rejected. 1011 "attributes-natural-language" (naturalLanguage): 1012 This operation attribute identifies the natural language used by 1013 any 'text' and 'name' attributes that the IPP object is returning 1014 in this response. Unlike the "attributes-charset" operation 1015 attribute, the IPP object NEED NOT return the same value as that 1016 supplied by the client in the request. The IPP object MAY return 1017 the natural language of the Job object or the Printer's default, 1018 rather than the natural language supplied by the client. For any 1019 'text' or 'name' attribute or status message in the response that 1021 Expires May 7, 1998 1022 is in a different natural language than the value returned in the 1023 "attributes-natural-language" operation attribute, the IPP object 1024 SHALL use the Natural Language Override mechanism (see section 1025 4.1.1 on the 'text' attribute syntax) on each attribute value 1026 returned. 1028 3.1.4 Operation Status Codes and Messages 1030 Every operation response returns a MANDATORY status code and an 1031 OPTIONAL status message. A status code provides information on the 1032 processing of a request. A status message provides a short textual 1033 description of the status of the operation. The status code is 1034 intended for use by automata, and the status message is intended for 1035 the human end user. If a response does include a status message, an 1036 IPP client NEED NOT examine or display the status message, however it 1037 SHOULD do so in some implementation specific manner. 1039 The status code is a numeric value that has semantic meaning. The 1040 status code is similar to a "type2 enum" (see section 4.1 on 1041 "Attribute Syntaxes") except that values can range only from 0x0000 to 1042 0x7FFF. Section 13 describes the status codes, assigns the numeric 1043 values, and suggests a corresponding status message for each status 1044 code. 1046 A client implementation of IPP SHOULD convert status code values into 1047 any localized message that has semantic meaning to the end user. If 1048 the Printer object supports the status message, the Printer object 1049 MUST be able to generate this message in any of the natural languages 1050 identified by the Printer object's "natural-language-supported" 1051 attribute (see the "attributes-natural-language" operation attribute 1052 specified in Section 3.1.3.1). As described in Section 3.1.3.1 for 1053 any returned 'text' attribute, if there is a choice for generating 1054 this message, the Printer object uses the natural language indicated 1055 by the value of the "attributes-natural-language" in the client 1056 request if supported, otherwise the Printer object uses the value in 1057 the Printer object's own "natural-language" attribute. 1059 3.1.5 Security Concerns for IPP Operations 1061 3.1.5.1 Authenticated Requester Identity 1063 IPP is layered on top of security services that supply the requester's 1064 identity. It is assumed that the identity supplied by the 1065 authentication service is the most authenticated identity required by 1066 a given site's configuration and current policy. It is also assumed 1067 that the layering allows for a single IPP implementation to be run 1069 Expires May 7, 1998 1070 over a consistent interface that supplies the authenticated identity. 1071 The authentication interface SHOULD allow for various modular and 1072 extensible authentication service implementations without requiring 1073 changes to the IPP implementation. 1075 Once the authenticated identity of the requester has been supplied to 1076 the IPP implementation, the implementation uses that identity to 1077 enforce any authorization policy(ies) that might be in place. When a 1078 Job object is created, the identity of the requester from the create 1079 request is persistently stored in the Job object in an internal 1080 implementation-dependent attribute. This attribute can be used to 1081 match the requester's identity of subsequent operations on that Job 1082 object in order to enforce the local authorization policy(ies), if 1083 any. For example, one site's policy might be that only the job owner 1084 is allowed to cancel a job. Another site's policy might be that any 1085 end user is allowed to cancel any job. There are operation status 1086 codes that allow an IPP object to return information back to the 1087 operation requester about what has been forbidden, not allowed, or not 1088 authorized. The details of and mechanisms to set up authorization 1089 policy(ies) are not part of IPP/1.0, and must be established via some 1090 mechanism outside the scope of IPP/1.0. 1092 3.1.5.2 The "requesting-user-name" Operation Attribute 1094 A Printer object SHALL support the MANDATORY "requesting-user-name" 1095 operation attribute that a client SHOULD supply in all operations. 1096 This operation attribute is provided in case (1) there is no security 1097 service being used, (2) the client and Printer object negotiate to no 1098 authorization, or (3) the authentication service does not make 1099 available to the Printer object an authenticated printable 1100 representation of the user's name that is making the request. The 1101 client SHALL obtain the value for this attribute from an environmental 1102 or network login name for the user, rather than allowing the user to 1103 supply any value. 1105 For create requests the Printer object, upon creating a new Job 1106 object, SHALL store the originating user's name in the MANDATORY "job- 1107 originating-user-name" Job Description attribute. The "job- 1108 originating-user-name" attribute is used for presentation only, such 1109 as returning in queries or printing on start sheets, and is not used 1110 for matching the authenticated principal of subsequent operations. If 1111 the Printer object has access to a more authenticated printable 1112 representation of the user's name, the Printer object SHALL store that 1113 value instead of the value supplied by the client in the "requesting- 1114 user-name" operation attribute. 1116 Expires May 7, 1998 1117 The Printer object, upon creating a new Job object, SHALL store the 1118 originating user's principal credential in an internal implementation- 1119 dependent Job Description attribute. This attribute is not specified 1120 as part of IPP, since it is not of any interest to clients. However, 1121 the Printer object uses this internal attribute for matching the 1122 authenticated principal id of subsequent operations. If the Printer 1123 object has access to a more authenticated representation of the user's 1124 id, the Printer object SHALL store that value instead of the value 1125 supplied by the client in the "requesting-user-name" operation 1126 attribute. Otherwise, the Printer object SHALL store the value 1127 supplied by the client in the "requesting-user-name" operation 1128 attribute. 1130 3.1.5.3 Restricted Queries 1132 In many of these IPP operations, a client supplies a list of 1133 attributes to be returned in the response. An IPP object may be 1134 configured, for security reasons, not to return all attributes that a 1135 client requests. The job attributes returned MAY depend on whether 1136 the requesting user is the same as the user that submitted the job. 1137 The IPP object MAY even return none of the requested attributes. In 1138 such cases, the status returned is the same as if the object had 1139 returned all requested attributes. The client cannot tell by such a 1140 response whether the requested attribute was present or absent on the 1141 object. 1143 3.1.6 Versions 1145 Each operation request carries with it a version number. Each version 1146 number is in the form "X.Y" where X is the major version number and Y 1147 is the minor version number. By including a version number in the 1148 client request, it allows the client (the requester) to identify which 1149 version of IPP it is interested in using. If the IPP object does not 1150 support that version, the object responds with a status code of 1151 'server-error-version-not-supported'. 1153 There is no version negotiation per se. However, if after receiving a 1154 'server-error-version-not-supported' status code from the Printer, 1155 there is nothing that prevents a client from trying again with a 1156 different version number. In order to conform to IPP/1.0, an 1157 implementation MUST support at least version '1.0'. 1159 There is only one notion of version that covers both IPP Model and IPP 1160 Protocol changes. Thus the version number MUST change when introducing 1161 a new version of the Model document or a new version of the Protocol 1162 document. 1164 Expires May 7, 1998 1165 Changes to the major version number indicate structural or syntactic 1166 changes that make it impossible for older version of IPP clients and 1167 Printer objects to correctly parse and interpret the new or changed 1168 attributes, operations and responses. If the major version number 1169 changes, the minor version numbers is set to zero. As an example, 1170 adding the "ipp-attribute-fidelity" attribute (if it had not been part 1171 of version '1.0'), would have required a change to the major version 1172 number. . Items that might affect the changing of the major version 1173 number include any changes to the protocol specification itself such 1174 as: 1176 - reordering of ordered attributes or attribute sets 1177 - changes to the syntax of existing attributes 1178 - changing OPTIONAL to MANDATORY and vice versa 1179 - adding new operation attributes 1180 - adding values to existing operation attributes 1181 - adding MANDATORY operations 1183 Changes to the minor version number indicate the addition of new 1184 features, attributes and attribute values that may not be understood 1185 by all IPP objects, but which can be ignored if not understood. Items 1186 that might affect the changing of the minor version number include any 1187 changes to the model objects and attributes but not the protocol 1188 specification itself (except adding attribute syntaxes), such as: 1190 - grouping all extensions not included in a previous version into a 1191 new version 1192 - adding new attribute values 1193 - changing any of the type1 attributes 1194 - adding new object attributes 1195 - adding new attribute syntaxes 1196 - adding OPTIONAL operations 1198 3.1.7 Job Creation Operations 1200 In order to "submit a print job" and create a new Job object, a client 1201 issues a create request. A create request is any one of following 1202 three operation requests: 1204 - The Print-Job Request: A client that wants to submit a print job 1205 with only a single document uses the Print-Job operation. The 1206 operation allows for the client to "push" the document data to 1207 the Printer object by including the document data in the request 1208 itself. 1210 - The Print-URI Request: A client that wants to submit a print job 1211 with only a single document (where the Printer object "pulls" the 1213 Expires May 7, 1998 1214 document data instead of the client "pushing" the data to the 1215 Printer object) uses the Print-URI operation. In this case, the 1216 client includes in the request only a URI reference to the 1217 document data (not the document data itself). 1219 - The Create-Job Request: A client that wants to submit a print job 1220 with multiple documents uses the Create-Job operation. This 1221 operation is followed by an arbitrary number of Send-Document 1222 and/or Send-URI operations (each creating another document for 1223 the newly create Job object). The Send-Document operation 1224 includes the document data in the request (the client "pushes" 1225 the document data to the printer), and the Send-URI operation 1226 includes only a URI reference to the document data in the request 1227 (the Printer "pulls" the document data from the referenced 1228 location). The last Send-Document or Send-URI request for a 1229 given Job object includes a "last-document" operation attribute 1230 set to 'true' indicating that this is the last document. 1232 Throughout this model specification, the term "create request" is used 1233 to refer to any of these three operation requests. 1235 A Create-Job operation followed by only one Send-Document operation is 1236 semantically equivalent to a Print-Job operation, however, for 1237 performance reasons, the client SHOULD use the Print-Job operation for 1238 all single Document Jobs. Also, Print-Job is a MANDATORY operation 1239 (all implementations MUST support it) whereas Create-Job is an 1240 OPTIONAL operation, hence some implementations might not support it. 1242 Section 15 describes the rules and issues surrounding the processing 1243 of client supplied attributes and how a Printer object either accepts 1244 or rejects a create request. 1246 Job submission time is the point in time when a client issues a create 1247 request. The initial state of every Job object is the 'pending' or 1248 'pending-held' state. Later, the Printer object begins processing the 1249 print job. At this point in time, the Job object's state moves to 1250 'processing'. This is known as job processing time. There are 1251 validation checks that must be done at job submission time and others 1252 that must be performed at job processing time. 1254 At job submission time and at the time a Validate-Job operation is 1255 received, the Printer MUST do the following: 1257 1. Process the client supplied attributes using the rules supplied 1258 in section 15 and either accept or reject the request 1259 2. Validate the syntax of and support for the scheme of any client 1260 supplied URI 1262 Expires May 7, 1998 1264 At job submission time the Printer SHOULD NOT perform the validation 1265 checks reserved for job processing time such as: 1267 1. Validate the document data 1268 2. Validate the actual contents of any client supplied URI (resolve 1269 the reference and follow the link to the document data) 1271 At job submission time, these additional job processing time 1272 validation checks are essentially useless, since they require actually 1273 parsing and interpreting the document data, are not guaranteed to be 1274 100% accurate, and MUST yet be done again at job processing time. 1275 Also, in the case of a URI, checking for availability at job 1276 submission time does not guarantee availability at job processing 1277 time. In addition, at job processing time, the Printer object might 1278 discover any of the following conditions that were not detectable at 1279 job submission time: 1281 - runtime errors in the document data, 1282 - nested document data that is in an unsupported format, 1283 - the URI reference is no longer valid (i.e., the server hosting 1284 the document might be down), or 1285 - any other job processing error 1287 At job processing time, since the Printer object has already responded 1288 with a successful status code in the response to the create request, 1289 if the Printer object detects an error, the Printer object is unable 1290 to inform the end user of the error with an operation status code. 1291 In this case, the Printer, depending on the error, can set the "job- 1292 state", "job-state-reasons", or "job-state-message" attributes to the 1293 appropriate value(s) so that later queries can report the correct job 1294 status. 1296 Note: Asynchronous notification of events is outside the scope of 1297 IPP/1.0. 1299 3.2 Printer Operations 1301 All Printer operations are directed at Printer objects. A client MUST 1302 always supply the "printer-uri" attribute in order to identify the 1303 correct target of the operation. 1305 Note: In the HTTP/1.1 mapping of IPP/1.0, this attribute is not 1306 supplied in the body of the operation as other operation attributes 1307 are -- it is supplied in the "request-URI" field in the HTTP header. 1309 Expires May 7, 1998 1310 3.2.1 Print-Job Operation 1312 When an end user desires to submit a print job with only one document 1313 and the client supplies the document data (rather than just a 1314 reference to the data), the client uses a Print-Job operation. See 1315 Section 15 for a suggested processing algorithm for the create 1316 operations and their Operation and Job Template attributes. 1318 3.2.1.1 Print-Job Request 1320 The following groups of attributes are supplied as part of the Print- 1321 Job Request: 1323 Group 1: Operation Attributes 1325 Target: 1326 The "printer-uri" target for this operation as described in 1327 section 3.1.2. 1329 Natural Language and Character Set: 1330 The "attributes-charset" and "attributes-natural-language" 1331 attributes as described in section 3.1.3.1. The Printer object 1332 SHALL copy these values to the corresponding Job Description 1333 attributes described in sections 4.3.20 and 4.3.21. 1335 Requesting User Name: 1336 The "requesting-user-name" attribute SHOULD be supplied by the 1337 client as described in section 3.1.5.2. 1339 "job-name" (name): 1340 This attribute is OPTIONALLY supplied by the client, and it 1341 contains the client supplied Job name. If this attribute is 1342 supplied by the client, its value is used for the "job-name" 1343 attribute of the newly created Job object. The client MAY 1344 automatically include any information that will help the end-user 1345 distinguish amongst his/her jobs, such as the name of the 1346 application program along with information from the document, 1347 such as the document name, document subject, or source file name. 1348 If this attribute is not supplied by the client, the Printer 1349 generates a name to use in the "job-name" attribute of the newly 1350 created Job object (see Section 4.3.4). 1352 "document-name" (name): 1353 This attribute is OPTIONALLY supplied by the client, and it 1354 contains the client supplied document name. The document name 1355 MAY be different than the Job name. Typically, the client 1356 software automatically supplies the document name on behalf of 1358 Expires May 7, 1998 1359 the end user by using a file name or an application generated 1360 name. If this attribute is supplied, its value can be used in a 1361 manner defined by each implementation. Examples include: printed 1362 along with the Job (job start sheet, page adornments, etc.), used 1363 by accounting or resource tracking management tools, or even 1364 stored along with the document as a document level attribute. 1365 IPP/1.0 does not support the concept of document level 1366 attributes. 1368 "document-format" (mimeMediaType) : 1369 The client OPTIONALLY supplies this attribute. The value of this 1370 attribute describes the format of the supplied document data. If 1371 the client does not supply this attribute, the Printer object 1372 assumes that the document data is in the format defined by the 1373 Printer object's "document-format" attribute. 1375 "ipp-attribute-fidelity" (boolean): 1376 This attribute is OPTIONALLY supplied by the client. If not 1377 supplied, the Printer object assumes the value is 'false'. The 1378 value 'true' indicates that total fidelity to client supplied 1379 attributes and values is required, else the Printer object SHALL 1380 reject the Print-Job request. The value 'false' indicates that a 1381 reasonable attempt to print the Job object is acceptable and the 1382 Printer object SHALL accept the Print-job request. All Printer 1383 objects MUST support both types of job processing. See section 1384 15 for a full description of "ipp-attribute-fidelity" and its 1385 relationship to other attributes, especially the Printer object's 1386 "pdl-override" attribute. 1388 "document-natural-language" (naturalLanguage): 1389 This attribute is OPTIONALLY supplied by the client. There are 1390 no particular values required for the Printer object to support. 1391 This attribute specifies the natural language of the document for 1392 those document-formats that require a specification of the 1393 natural language in order to image the document unambiguously. 1395 Group 2: Job Template Attributes 1397 The client OPTIONALLY supplies a set of Job Template attributes 1398 as defined in section 4.2. 1400 Group 3: Document Content 1402 The client MUST supply the document data to be processed. 1404 Note: The simplest Print-Job Request consists of just the Document 1405 Content, the "attributes-charset" and "attributes-natural-language" 1407 Expires May 7, 1998 1408 operation attributes, and nothing else. In this case, the Printer 1409 object: 1411 - creates a new Job object (the Job object contains a single 1412 document), 1413 - stores a generated Job name in the "job-name" attribute in the 1414 natural language and charset requested (see Section 3.1.3.1) (if 1415 those are supported, otherwise using the Printer object's default 1416 natural language and charset), and 1417 - at job processing time, uses its corresponding default value 1418 attributes for the supported Job Template attributes that were 1419 not supplied by the client as IPP attribute or embedded 1420 instructions in the document data. 1422 3.2.1.2 Print-Job Response 1424 The Printer object SHALL return to the client the following sets of 1425 attributes as part of the Print-Job Response: 1427 Group 1: Operation Attributes 1429 Status Code and Message: 1430 The response includes the MANDATORY status code and an OPTIONAL 1431 "status-message" (text) operation attribute as described in 1432 section 3.1.4. If the client supplies unsupported or conflicting 1433 attributes or values, the Printer object SHALL reject or accept 1434 the Print-Job request depending on the whether the client 1435 supplied a 'true' or 'false' value for the "ipp-attribute- 1436 fidelity" operation attribute. See section 15 for a complete 1437 description of the processing algorithm. 1439 Natural Language and Character Set: 1440 The "attributes-charset" and "attributes-natural-language" 1441 attributes as described in section 3.1.3.2. 1443 Group 2: Job Object Attributes 1445 "job-uri" (uri): 1446 The Printer object MUST return the Job object's MANDATORY "job- 1447 uri" attribute. 1449 "job-id": 1450 The Printer object MUST return the Job object's MANDATORY "job- 1451 id" attribute. 1453 Expires May 7, 1998 1455 "job-state": 1456 The Printer object MUST return the Job object's MANDATORY "job- 1457 state" attribute. The value of this attribute (along with the 1458 value of the next attribute "job-state-reasons") is taken from a 1459 "snapshot" of the new Job object at some meaningful point in time 1460 (implementation defined) between when the Printer object receives 1461 the Print-Job Request and when the Printer object returns the 1462 response. 1464 "job-state-reasons": 1465 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1466 "job-state-reasons" attribute. If the Printer object supports 1467 this attribute then it MUST be returned in the response. If this 1468 attribute is not returned in the response, the client can assume 1469 that the "job-state-reasons" attribute is not supported and will 1470 not be returned in a subsequent Job object query. 1472 "job-state-message": 1473 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1474 "job-state-message" attribute. If the Printer object supports 1475 this attribute then it MUST be returned in the response. If this 1476 attribute is not returned in the response, the client can assume 1477 that the "job-state-message" attribute is not supported and will 1478 not be returned in a subsequent Job object query. 1480 "number-of-intervening-jobs": 1481 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1482 "number-of-intervening-jobs" attribute. If the Printer object 1483 supports this attribute then it MUST be returned in the response. 1484 If this attribute is not returned in the response, the client can 1485 assume that the "number-of-intervening-jobs" attribute is not 1486 supported and will not be returned in a subsequent Job object 1487 query. 1489 Note: Since any printer state information which affects a job's 1490 state is reflected in the "job-state" and "job-state-reasons" 1491 attributes, it is sufficient to return only these attributes and 1492 no specific printer status attributes. 1494 Group 3: Unsupported Attributes 1496 This is a set of Job Template attributes supplied by the client 1497 (in the request) that are not supported by the Printer object or 1498 that conflict with one another (see section 15). 1500 Unsupported attributes fall into three categories: 1502 Expires May 7, 1998 1503 1. The Printer object does not support the named attribute (no 1504 matter what the value), or 1505 2. The Printer object does support the attribute, but does not 1506 support some or all of the particular values supplied by the 1507 client (i.e., the Printer object does not have those values in 1508 the corresponding supported values attribute). 1509 3. The Printer object does support the attributes and values 1510 supplied, but the particular values are in conflict with one 1511 another, because they violate a constraint, such as not being 1512 able to staple transparencies. 1514 In the case of an unsupported attribute name, the Printer object 1515 returns the client-supplied attribute with a substituted special 1516 value of 'unsupported' indicating no support for the attribute 1517 itself. 1519 In the case of a supported attribute with one or more unsupported 1520 values, the Printer object simply returns the client-supplied 1521 attribute with the unsupported values as supplied by the client. 1522 This indicates support for the attribute, but no support for that 1523 particular value. If the client supplies a multi-valued attribute 1524 with more than one value and the Printer object supports the 1525 attribute but only supports a subset of the client supplied 1526 values, the Printer object SHALL return only those values that 1527 are unsupported. 1529 In the case of two (or more) supported attribute values that are 1530 in conflict because they cannot be used, the Printer object SHALL 1531 return all the values that it ignores or substitutes to resolve 1532 the conflict. 1534 In these three cases, the value of the "ipp-attribute-fidelity" 1535 supplied by the client does not affect what the Printer object 1536 returns. The value of "ipp-attribute-fidelity" only affects 1537 whether the Print-Job operation is accepted or rejected. If the 1538 job is accepted, the client may query the job using the Get- 1539 Attributes operation requesting the attributes returned in the 1540 create response to see which attributes were ignored (not stored 1541 on the Job object) and which attributes were stored with other 1542 (substituted) values. 1544 Note: The simplest response consists of the just the MANDATORY Job 1545 Attributes, the MANDATORY "attributes-charset" and "attributes- 1546 natural-language" operation attributes, and a status code of 1547 "successful-ok". 1549 Expires May 7, 1998 1550 3.2.2 Print-URI Operation 1552 This operation is identical to the Print-Job operation (section 3.2.1) 1553 except that a client supplies a URI reference to the document data 1554 using the "document-uri" (uri) operation attribute rather than 1555 including the document data itself. Before returning the response, 1556 the Printer MUST validate that the Printer supports the retrieval 1557 method (e.g., http, ftp, etc.) implied by the URI, and SHOULD check 1558 for valid URI syntax. The Printer NEED NOT follow the reference and 1559 validate the contents of the reference. 1561 If the Printer object supports this operation, it MUST support the 1562 "reference-uri-schemes-supported" attribute (see section 4.4.23). 1564 It is up to the IPP object to interpret the URI and subsequently 1565 "pull" the document from the source referenced by the URI string. 1567 3.2.3 Validate-Job Operation 1569 This operation is similar to the Print-Job operation (section 3.2.1) 1570 except that a client supplies no document data and the Printer 1571 allocates no resources (i.e., it does not create a new Job object). 1572 This operation is used only to verify capabilities of a printer object 1573 against whatever attributes are supplied by the client in the 1574 Validate-Job request. By using the Validate-Job operation a client 1575 can check that the same Print-Job operation will be accepted without 1576 having to send the document data. The Validate-Job operation also 1577 performs the same security negotiation as the Print-Job operation (see 1578 section 8), so that a client can check that the client and Printer 1579 object security requirements can be met before performing a Print-Job 1580 operation. 1582 Note: The Validate-Job operation does not accept a "document-uri" 1583 attribute in order to allow a client to check that the same Print-URI 1584 operation will be accepted, since the client doesn't send the data 1585 with the Print-URI operation. The client SHOULD just issue the Print- 1586 URI request. 1588 The Printer object returns the same status codes, Operation Attributes 1589 (Group 1) and Unsupported Attributes (Group 3) as the Print-Job 1590 operation. However, no Job Object Attributes (Group 2) are returned, 1591 since no Job object is created. 1593 Expires May 7, 1998 1594 3.2.4 Create-Job Operation 1596 This operation is similar to the Print-Job operation (section 3.2.1) 1597 except that in the Create-Job request , a client does not supply 1598 document data (or any reference to document data). Also, the client 1599 does not supply either of the "document-name" or "document-natural- 1600 language" attributes. This operation is followed by one or more Send- 1601 Document or Send-URI operations. In each of those operation requests, 1602 the client OPTIONALLY supplies the "document-name" and "document- 1603 natural-language" attributes for each document in the multi-document 1604 Job object. If a Printer object supports the Create-Job operation, it 1605 MUST also support the Send-Document operation and also MAY support the 1606 Send-URI operation. 1608 3.2.5 Get-Attributes Operation (for Printer objects) 1610 The Get-Attributes operation allows a client to request the values of 1611 the attributes of a Printer or Job object. This section describes the 1612 former and section 3.3.4 describes the latter. In the request, the 1613 client supplies the set of Printer attribute names and/or attribute 1614 group names in which the requester is interested. In the response, 1615 the Printer object returns a corresponding attribute set with the 1616 appropriate attribute values filled in. 1618 For Printer objects, the possible names of attribute groups are: 1620 - 'job-template': all of the Job Template attributes that apply to 1621 a Printer object (the last two columns of the table in Section 1622 4.2). 1623 - 'printer-description': the attributes specified in Section 4.4. 1625 There is also the special group 'all' that includes all supported 1626 attributes. Since a client MAY request specific attributes or named 1627 groups, there is a potential that there is some overlap. For example, 1628 if a client requests, 'printer-name' and 'all', the client is actually 1629 requesting the "printer-name" attribute twice: once by naming it 1630 explicitly, and once by inclusion in the 'all' group. In such cases, 1631 the Printer object NEED NOT return each attribute only once in the 1632 response even if it is requested multiple times. The client SHOULD 1633 NOT request the same attribute in multiple ways. 1635 It is NOT REQUIRED that a Printer object support all attributes 1636 belonging to a group (since some attributes are OPTIONAL), however, it 1637 is MANDATORY that each Printer object support all group names. 1639 Expires May 7, 1998 1640 3.2.5.1 Get-Attributes Request 1642 The following sets of attributes are part of the Get-Attributes 1643 Request when the request is directed to a Printer object: 1645 Group 1: Operation Attributes 1647 Target: 1648 The "printer-uri" target for this operation as described in 1649 section 3.1.2. 1651 Natural Language and Character Set: 1652 The "attributes-charset" and "attributes-natural-language" 1653 attributes as described in section 3.1.3.1. 1655 Requesting User Name: 1656 The "requesting-user-name" attribute SHOULD be supplied by the 1657 client as described in section 3.1.5.2. 1659 "requested-attributes" (1setOf keyword) : 1660 The client OPTIONALLY supplies a set of attribute names and/or 1661 attribute group names in whose values the requester is 1662 interested. If the client omits this attribute, the Printer 1663 SHALL respond as if this attribute had been supplied with a value 1664 of 'all'. 1666 "document-format" (mimeMediaType) : 1667 The client OPTIONALLY supplies this attribute. This attribute is 1668 useful for a Printer object to determine the set of supported 1669 attribute values that relate to the requested document format. 1670 The Printer object SHOULD return only (1) those attributes that 1671 are supported for that format and (2) the attribute values that 1672 are supported for the specified document format. By specifying 1673 the document format, the client can get the Printer object to 1674 eliminate the attributes and values that are not supported for a 1675 specific document format. For example, a Printer object might 1676 have multiple interpreters to support both 1677 'application/postscript' (for PostScript) and 'text/plain' (for 1678 text) documents. However, for only one of those interpreters 1679 might the Printer object be able to support "number-up" with 1680 values of '1', '2', and '4'. For the other interpreter it might 1681 be able to only support "number-up" with a value of '1'. 1683 If the client omits this attribute, the Printer object SHOULD 1684 respond as if the attribute had been supplied with a value set to 1685 the Printer object's "document-format" default value attribute 1686 (if supported). It is recommended that the client always supply 1687 a value for "document-format", since the Printer object's 1689 Expires May 7, 1998 1690 "document-format" may be 'application/octet-stream', in which 1691 case the returned attributes and values are for the union of the 1692 document formats that the Printer can automatically sense. For 1693 more details, see the description of the 'mimeMediaType' 1694 attribute syntax in section 4.1.9. 1696 Note: The "document-format" operation attribute is a fairly 1697 sophisticated filtering notion that is not supported by many 1698 existing print systems or devices. 1700 3.2.5.2 Get-Attributes Response 1702 The Printer object returns the following sets of attributes as part of 1703 the Get-Attributes Response: 1705 Group 1: Operation Attributes 1707 Status Code and Message: 1708 The response includes the MANDATORY status code and an OPTIONAL 1709 "status-message" (text) operation attribute as described in 1710 section 3.1.4. 1712 Natural Language and Character Set: 1713 The "attributes-charset" and "attributes-natural-language" 1714 attributes as described in section 3.1.3.2. 1716 Group 2: Requested Printer Object Attributes 1718 This is the set of requested attributes and their current values. 1719 The Printer object ignores (does not respond with) any requested 1720 attribute which is not supported. 1722 3.2.6 Get-Jobs Operation 1724 The Get-Jobs operation allows a client to retrieve the list of Job 1725 objects belonging to the target Printer object. The client may also 1726 supply a list of Job attribute names and/or attribute group names. A 1727 group of Job object attributes will be returned for each Job object 1728 that is returned. 1730 This operation is similar Get-Attributes for Job object, except that 1731 this Get-Jobs operation returns attributes from possibly more than one 1732 object (see the description of Job attribute group names in section 1733 3.3.4). 1735 Expires May 7, 1998 1736 3.2.6.1 Get-Jobs Request 1738 The client submits the Get-Jobs request to a Printer object. 1740 The following groups of attributes are part of the Get-Jobs Request: 1742 Group 1: Operation Attributes 1744 Target: 1745 The "printer-uri" target for this operation as described in 1746 section 3.1.2. 1748 Natural Language and Character Set: 1749 The "attributes-charset" and "attributes-natural-language" 1750 attributes as described in section 3.1.3.1. 1752 Requesting User Name: 1753 The "requesting-user-name" attribute SHOULD be supplied by the 1754 client as described in section 3.1.5.2. 1756 "limit" (integer): 1757 The client OPTIONALLY supplies this attribute. It is an integer 1758 value that indicates a limit to the number of Job objects 1759 returned. The limit is a "stateless limit" in that if the value 1760 supplied by the client is 'N', then only the first 'N' jobs are 1761 returned in the Get-Jobs Response. There is no mechanism to 1762 allow for the next 'M' jobs after the first 'N' jobs. If the 1763 client does not supply this attribute, the Printer object 1764 responds will all applicable jobs. 1766 "requested-attributes" (1setOf keyword): 1767 The client OPTIONALLY supplies this attribute. It is a set of 1768 Job attribute names and/or attribute groups names in whose values 1769 the requester is interested. This set of attributes is returned 1770 for each Job object that is returned. The allowed attribute 1771 group names are the same as those defined in the Get-Attributes 1772 operation for Job objects in section 3.3.4. If the client does 1773 not supply this attribute, the Printer SHALL respond as if the 1774 client had supplied this attribute with two values: 'job-uri' and 1775 'job-id'. 1777 "which-jobs" (keyword): 1778 The client OPTIONALLY supplies this attribute. It indicates 1779 which Job objects SHOULD be returned by the Printer object. The 1780 values for this attribute are: 1782 'completed': This includes any Job object whose state is 1783 'completed', 'canceled', or 'aborted'. 1785 Expires May 7, 1998 1787 'not-completed': This includes any Job object whose state is 1788 'pending', 'processing', 'processing-stopped', 'pending- 1789 held', 'unknown'. 1791 If the client does not supply this attribute, the Printer object 1792 SHALL respond as if the client had supplied the attribute with a 1793 value of 'not-completed'. 1795 "my-jobs" (boolean): 1796 The client OPTIONALLY supplies this attribute. It indicates 1797 whether all jobs or just the jobs submitted by the requesting 1798 user of this request SHALL be returned by the Printer object. 1799 If the client does not supply this attribute, the Printer object 1800 SHALL respond as if the client had supplied the attribute with a 1801 value of 'false', i.e., all jobs not just my jobs. The means for 1802 authenticating the requesting user and matching the jobs is 1803 described in section 3.1.5. 1805 3.2.6.2 Get-Jobs Response 1807 The Printer object returns all of the Job objects that match the 1808 criteria as defined by the attribute values supplied by the client in 1809 the request. It is possible that no Job objects are returned since 1810 there may literally be no Job objects at the Printer, or there may be 1811 no Job objects that match the criteria supplied by the client. If the 1812 client requests any Job attributes at all, there is a set of Job 1813 Object Attributes returned for each Job object. 1815 Group 1: Operation Attributes 1817 Status Code and Message: 1818 The response includes the MANDATORY status code and an OPTIONAL 1819 "status-message" (text) operation attribute as described in 1820 section 3.1.4. 1822 Natural Language and Character Set: 1823 The "attributes-charset" and "attributes-natural-language" 1824 attributes as described in section 3.1.3.2. 1826 Groups 2 to N: Job Object Attributes 1828 The Printer object responds with one set of Job Object Attributes 1829 for each returned Job object. The Printer object ignores (does 1830 not respond with) any requested attribute which is not supported 1831 or which is restricted by the security policy in force, including 1832 whether the requesting user is the user that submitted the job 1833 (job originating user) or not (see section 3.1.5). 1835 Expires May 7, 1998 1836 For any job submitted in a different natural language than the 1837 natural language that the Printer object is returning in the 1838 "attributes-natural-language" operation attribute in the Get-Jobs 1839 response, the Printer SHALL indicate the submitted natural 1840 language by returning the Job object's "attributes-natural- 1841 language" as the first Job object attribute, which overrides the 1842 "attributes-natural-language" operation attribute value being 1843 returned by the Printer object. If any returned 'text' or 'name' 1844 attribute includes a Natural Language Override as described in 1845 the 'text' attribute syntax (see Section 4.1.1), the Natural 1846 Language Override overrides the Job object's "attributes-natural- 1847 language" value and/or the "attributes-natural-language" 1848 operation attribute value. 1850 Jobs are returned in the following order: 1852 - If the client requests all 'completed' Jobs (Jobs in the 1853 'completed', 'aborted', or 'canceled' states), then the Jobs are 1854 returned newest to oldest (with respect to actual completion 1855 time) 1856 - If the client requests all 'non-completed' Jobs (Jobs in the 1857 'pending', 'processing', 'pending-held', 'processing-stopped', 1858 and 'unknown' states), then Jobs are returned in relative 1859 chronological order of expected time to complete (based on 1860 whatever scheduling algorithm is configured for the Printer 1861 object). 1863 3.3 Job Operations 1865 All Job operations are directed at Job objects. A client MUST always 1866 supply some means of identifying the Job object in order to identify 1867 the correct target of the operation. Job objects can be identified 1868 with either a single Job URI or a combination of a Printer URI with a 1869 Job ID. 1871 Note: The following rules apply to all Job operation requests mapped 1872 onto HTTP/1.1: 1874 Expires May 7, 1998 1875 - If the client chooses to identify Job objects with just the Job 1876 URI, this "job-uri" attribute is not supplied in the body of the 1877 operation as other operation attributes are. It is supplied in 1878 the "request-URI" field in the HTTP header. 1879 - If the client chooses to identify Job objects with both a Printer 1880 URI and a local Job ID, the "printer-uri" attribute is not 1881 supplied in the body of the operation, but it is supplied in the 1882 "request-URI" field in the HTTP header. The "job-id" attribute 1883 is included as an operation attribute. 1885 Since the Get-Attributes operation can be both a Printer operation and 1886 a Job operation, if a Printer object receives a Get-Attributes 1887 request, the Printer object must check for the existence of the "job- 1888 id" operation attribute. If present, the operation is intended to be 1889 a Job operation on the corresponding Job object. If absent, the 1890 operation is intended to be a Printer operation. 1892 3.3.1 Send-Document Operation 1894 A client uses a Create-Job operation to create a multi-document Job 1895 object that is initially "empty" (contains no documents). In the 1896 Create-Job response, the Printer object returns the Job object's URI 1897 (the "job-uri" attribute) and the Job object's 32-bit identifier (the 1898 "job-id" attribute). For each new document that the client desires to 1899 add, the client uses a Send-Document operation. Each Send-Document 1900 Request contains the entire stream of document data for one document. 1902 Since the Create-Job and the send operations (Send-Document or Send- 1903 URI operations) that follow can occur over arbitrarily long periods of 1904 time, each Printer object must decide how long to "wait" for the next 1905 send operation. The Printer object OPTIONALLY supports the "multiple- 1906 operation-timeout" attribute. This attribute indicates the maximum 1907 number of seconds the Printer object will wait for the next send 1908 operation. If the Printer object times-out waiting for the next send 1909 operation, the Printer object MAY decide on any of the following 1910 semantic actions: 1912 1. Assume that the Job is an invalid job, start the process of 1913 changing the job state to 'aborted', and clean up all resources 1914 associated with the Job. In this case, if another send operation 1915 is finally received, the Printer responds with an "client-error- 1916 not-possible" or "client-error-not-found" depending on whether or 1917 not the Job object is still around when it finally arrives. 1918 2. Assume that the last send operation received was in fact the 1919 last document (as if the "last-document" flag had been set to 1920 'true'), close the Job object, and proceed to process it (i.e., 1921 move the Job's state to 'pending'). 1923 Expires May 7, 1998 1925 3. Assume that the last send operation received was in fact the 1926 last document, close the Job, but move it to the 'pending-held' 1927 to allow an operator to determine whether or not to continue 1928 processing the Job by moving it back to the 'pending' state. 1930 Each implementation is free to decide the "best" action to take 1931 depending on local policy, the value of "ipp-attribute-fidelity", 1932 and/or any other piece of information available to it. If the choice 1933 is to abort the Job object, it is possible that the Job object may 1934 already have been processed to the point that some media sheet pages 1935 have been printed. 1937 3.3.1.1 Send-Document Request 1939 The following attribute sets are part of the Send-Document Request: 1941 Group 1: Operation Attributes 1943 Target: 1944 Either (1) the "printer-uri" plus "job-id" or (2) the "job-uri" 1945 target for this operation as described in section 3.1.2. 1947 Natural Language and Character Set: 1948 The "attributes-charset" and "attributes-natural-language" 1949 attributes as described in section 3.1.3.1. 1951 Requesting User Name: 1952 The "requesting-user-name" attribute SHOULD be supplied by the 1953 client as described in section 3.1.5.2. 1955 "document-name" (name): 1956 The client OPTIONALLY supplies this attribute, and it contains 1957 the client supplied document name. The document name MAY be 1958 different than the Job name. It might be helpful, but NEED NOT 1959 be unique across multiple documents in the same Job. Typically, 1960 the client software automatically supplies the document name on 1961 behalf of the end user by using a file name or an application 1962 generated name. See the description of the "document-name" 1963 operation attribute in the Print-Job Request (section 3.2.1.1) 1964 for more information about this attribute. 1966 "document-format" (mimeMediaType) : 1967 The client OPTIONALLY supplies this attribute. The value of this 1968 attribute describes the format of the supplied document data. If 1969 the client does not supply this attribute, the Printer object 1970 assumes that the document data is in the format defined by the 1971 Printer object's "document-format" attribute. 1973 Expires May 7, 1998 1975 "document-natural-language" (naturalLanguage): 1976 This attribute is OPTIONALLY supplied by the client. There are 1977 no particular values required for the Printer object to support. 1978 This attribute specifies the natural language of the document for 1979 those document-formats that require a specification of the 1980 natural language in order to image the document unambiguously. 1982 "last-document" (boolean): 1983 The client MUST supply this attribute. It is a boolean flag that 1984 is set to 'true' if this is the last document for the Job, 1985 'false' otherwise. 1987 Group 2: Document Content 1989 The client MUST supply the document data if the "last-document" 1990 flag is set to 'false'. However, since a client might not know 1991 that the previous document sent with a Send-Document operation 1992 was the last document (i.e., the "last-document" attribute was 1993 set to 'false'), it is legal to send a Send-Document request with 1994 no document data where the "last-document" flag is set to 'true'. 1996 3.3.1.2 Send-Document Response 1998 The following sets of attributes are part of the Send-Document 1999 Response: 2001 Group 1: Operation Attributes 2003 Status Code and Message: 2004 The response includes the MANDATORY status code and an OPTIONAL 2005 "status-message" (text) operation attribute as described in 2006 section 3.1.4. 2008 Natural Language and Character Set: 2009 The "attributes-charset" and "attributes-natural-language" 2010 attributes as described in section 3.1.3.2. 2012 Group 2: Job Object Attributes 2014 This is the same set of attributes as described in the Print-Job 2015 response (see section 3.2.1.2). 2017 3.3.2 Send-URI Operation 2019 This operation is identical to the Send-Document operation (see 2020 section 3.3.1) except that a client supplies a URI reference 2022 Expires May 7, 1998 2023 ("document-uri" operation attribute) rather than the document data 2024 itself. If a Printer object supports this operation, clients can use 2025 both Send-URI or Send-Document operations to add new documents to an 2026 existing multi-document Job object. 2028 The Printer object MUST validate the syntax of the supplied URI before 2029 returning a response. If the Printer object supports this operation, 2030 it MUST support the URI types defined under the Print-URI operation 2031 (see section 3.2.2) 2033 3.3.3 Cancel Job Operation 2035 This operation allows a client to cancel a Print Job any time after a 2036 create job operation. Since a Job might already be printing by the 2037 time a Cancel-Job is received, some media sheet pages might be printed 2038 before the job is actually terminated. 2040 3.3.3.1 Cancel-Job Request 2042 The following groups of attributes are part of the Cancel-Job Request: 2044 Group 1: Operation Attributes 2046 Target: 2047 Either (1) the "printer-uri" plus "job-id" or (2) the "job-uri" 2048 target for this operation as described in section 3.1.2. 2050 Natural Language and Character Set: 2051 The "attributes-charset" and "attributes-natural-language" 2052 attributes as described in section 3.1.3.1. 2054 Requesting User Name: 2055 The "requesting-user-name" attribute SHOULD be supplied by the 2056 client as described in section 3.1.5.2. 2058 "message" (text): 2059 This attribute is OPTIONALLY supplied by the client. It is a 2060 message to the operator. This "message" attribute is not the 2061 same as the "job-message-from-operator" attribute. That 2062 attribute is used to report a message from the operator to the 2063 end user that queries that attribute. This "message" operation 2064 attribute is used to send a message from the client to the 2065 operator along with the operation request. It is an 2066 implementation decision of how or where to display this message 2067 to the operator (if at all). 2069 Expires May 7, 1998 2071 3.3.3.2 Cancel-Job Response 2073 The following sets of attributes are part of the Cancel-Job Response: 2075 Group 1: Operation Attributes 2077 Status Code and Message: 2078 The response includes the MANDATORY status code and an OPTIONAL 2079 "status-message" (text) operation attribute as described in 2080 section 3.1.4. 2082 If the job is already in the 'completed', 'aborted', or 2083 'canceled' state, or the 'process-to-stop-point' value is set in 2084 the Job's "job-state-reasons" attribute, the Printer object SHALL 2085 reject the request and return the 'client-error-not-possible' 2086 error status code. 2088 Natural Language and Character Set: 2089 The "attributes-charset" and "attributes-natural-language" 2090 attributes as described in section 3.1.3.2. 2092 Once a successful response has been sent, the implementation 2093 guarantees that the Job will eventually end up in the 'canceled' 2094 state. Between the time of the Cancel-Job operation is accepted and 2095 when the job enters the 'canceled' job-state (see section 4.3.6), the 2096 "job-state-reasons" attribute SHOULD contain the ' processing-to-stop- 2097 point ' value which indicates to later queries that although the Job 2098 might still be 'processing', it will eventually end up in the 2099 'canceled' state, not the 'completed' state. 2101 3.3.4 Get-Attributes Operation (for Job objects) 2103 The Get-Attributes operation allows a client to request the values of 2104 attributes of a Job object and it is almost identical to the Get- 2105 Attributes operation for a Printer object (see section 3.2.5). The 2106 only differences are that the operation is directed at a Job object 2107 rather than a Printer object and there is no "document-format" 2108 operation attribute used when querying a Job object. 2110 For Jobs, the attribute groups include: 2112 - 'job-template': all of the Job Template attributes that apply to 2113 a Job object (the first column of the table in Section 4.2). 2114 - 'job-description': all of the Job Description attributes 2115 specified in Section 4.3. 2117 Expires May 7, 1998 2119 There is also the special group 'all' that includes all supported 2120 attributes. Since a client MAY request specific attributes or named 2121 groups, there is a potential that there is some overlap. For example, 2122 if a client requests, 'job-name' and 'job-description', the client is 2123 actually requesting the "job-name" attribute once by naming it 2124 explicitly, and once by inclusion in the 'job-description' group. In 2125 such cases, the Printer object NEED NOT return the attribute only once 2126 in the response even if it is requested multiple times. The client 2127 SHOULD NOT request the same attribute in multiple ways. 2129 It is NOT REQUIRED that a Job object support all attributes belonging 2130 to a group (since some attributes are OPTIONAL), however it is 2131 MANDATORY that each Job object support all group names. 2133 3.3.4.1 Get-Attributes Request 2135 The following groups of attributes are part of the Get-Attributes 2136 Request when the request is directed at a Job object: 2138 Group 1: Operation Attributes 2140 Target: 2141 Either (1) the "printer-uri" plus "job-id" or (2) the "job-uri" 2142 target for this operation as described in section 3.1.2. 2144 Natural Language and Character Set: 2145 The "attributes-charset" and "attributes-natural-language" 2146 attributes as described in section 3.1.3.1. 2148 Requesting User Name: 2149 The "requesting-user-name" attribute SHOULD be supplied by the 2150 client as described in section 3.1.5.2. 2152 "requested-attributes" (1setOf keyword) : 2153 The client OPTIONALLY supplies this attribute. It is a set of 2154 attribute names and/or attribute group names in whose values the 2155 requester is interested. If the client omits this attribute, the 2156 Printer object SHALL respond as if this attribute had been 2157 supplied with a value of 'all'. 2159 3.3.4.2 Get-Attributes Response 2161 The Printer object returns the following sets of attributes as part of 2162 the Get-Attributes Response: 2164 Group 1: Operation Attributes 2166 Expires May 7, 1998 2167 Status Code and Message: 2168 The response includes the MANDATORY status code and an OPTIONAL 2169 "status-message" (text) operation attribute as described in 2170 section 3.1.4. 2172 Natural Language and Character Set: 2173 The "attributes-charset" and "attributes-natural-language" 2174 attributes as described in section 3.1.3.2. The "attributes- 2175 natural-language" MAY be the natural language of the Job object, 2176 rather than the one requested. 2178 Group 2: Requested Job Object Attributes 2180 This is the set of requested attributes and their current values. 2181 The Printer object ignores (does not respond with) any requested 2182 attribute which is not supported or which is restricted by the 2183 security policy in force, including whether the requesting user 2184 is the user that submitted the job (job originating user) or not 2185 (see section 3.1.5). 2187 4. Object Attributes 2189 This section describes the attributes with their corresponding 2190 attribute syntaxes and values that are part of the IPP model. The 2191 sections below show the objects and their associated attributes which 2192 are included within the scope of this protocol. Many of these 2193 attributes are derived from other relevant specifications: 2195 - Document Printing Application (DPA) [ISO10175] 2196 - RFC 1759 Printer MIB [RFC1759] 2198 Each attribute is uniquely identified in this document using a 2199 "keyword" (see section 12.2.1). The keyword is included in the 2200 section header describing that attribute. In addition, one of the 2201 attribute syntaxes described below is "keyword". Therefore, some 2202 attributes can be defined as having an attribute syntax that is a set 2203 of keywords. 2205 4.1 Attribute Syntaxes 2207 This section defines the basic attribute syntax types that all clients 2208 and IPP objects SHALL be able to accept in responses and accept in 2209 requests, respectively. Each attribute description in sections 3 and 2210 4 includes the name of attribute syntax(es) in the heading (in 2211 parentheses). A conforming implementation of an attribute SHALL 2212 include the semantics of the attribute syntax(es) so identified. 2214 Expires May 7, 1998 2215 Section 6 describes how the protocol can be extended with new 2216 attribute syntaxes. 2218 The attribute syntaxes are specified in the following sub-sections, 2219 where the sub-section heading is the keyword name of the attribute 2220 syntax inside the single quotes. In operation requests and responses 2221 each attribute value MUST be represented as one of the attribute 2222 syntaxes specified in the sub-section heading for the attribute or be 2223 one of the "out of band" values. Standard values are: 2225 'unknown': The attribute is supported, but the value is unknown for 2226 some reason. 2227 'unsupported': The attribute is unsupported. 2229 The protocol specification defines mechanisms for allowing passing 2230 "out of band" values. 2232 Most attributes are defined to have a single attribute syntax. 2233 However, a few attributes (e.g., "job-sheet", "media", "job-hold- 2234 until") are defined to have several attribute syntaxes, depending on 2235 the value. These multiple attribute syntaxes are separated by the "|" 2236 character in the sub-section heading to indicate the choice. Since 2237 each value SHALL be tagged as to its attribute syntax in the protocol, 2238 a single-valued attribute instance may have any one of its attribute 2239 syntaxes and a multi-valued attribute instance may have a mixture of 2240 its defined attribute syntaxes. 2242 4.1.1 'text' 2244 The 'text' attribute syntax is a sequence of one or more characters 2245 encoded in a maximum of 4095 octets. The Printer object SHALL support 2246 the UTF-8 charset [RFC2044] and MAY support additional charsets 2247 provided that they are registered with IANA [IANA-CS]. See Section 2248 4.1.7 for the specification of the 'charset' attribute syntax, 2249 including restricted semantics and examples of charsets. 2251 If the client needs to supply or the Printer object needs to return a 2252 'text' attribute in a different natural language from the rest of the 2253 'text' attributes in the request or response as indicated by the 2254 "attributes-natural-language" operation attribute (see Section 3.1.3) 2255 or job attribute (see Section 4.3.21), the client or Printer object 2256 SHALL identify the natural language for that attribute. This 2257 mechanism for identifying the natural language of a single attribute 2258 value is called the Natural Language Override mechanism. 2260 Expires May 7, 1998 2261 If the attribute is multi-valued (1setOf text), then the Natural 2262 Language Override must be explicitly specified with each attribute 2263 value whose natural language needs to be overriden. Other values in a 2264 multi-valued 'text' attribute in a request or a response revert to the 2265 natural language of the operation attribute or to the "attributes- 2266 natural-language" Job attribute, if present, in the case of a Get-Jobs 2267 response. 2269 In a create request, the Printer object MUST accept and store with the 2270 Job object any natural languages in the "attributes-natural-language" 2271 operation attribute, whether the Printer object supports that natural 2272 language or not. Furthermore, the Printer object MUST accept and 2273 store with each attribute value any Natural Language Override, whether 2274 the Printer object supports that natural language or not. These 2275 requirements are independent of the value of the "ipp-attribute- 2276 fidelity" operation attribute that the client supplies. 2278 Example: If the client supplies the "attributes-natural-language" 2279 operation attribute with the value: 'en' indicating English, but the 2280 value of the "job-name" attribute is in French, the client MUST use 2281 the Natural Language Override mechanism as follows: 2283 'fr': Natural Language Override indicating French 2284 'Rapport Mensuel': the job name in French 2286 See the Protocol document [IPP-PRO] for a detailed example of the 2287 Natural Language Override mechanism. 2289 4.1.2 'name' 2291 The 'name' attribute syntax is the same as 'text', including the 2292 MANDATORY support of UTF-8 and the Natural Language Override 2293 mechanism, except that the sequence of characters is limited so that 2294 its encoded form is of length 1 to 255 octets. This syntax type is 2295 used for user-friendly strings, such as a Printer name, that, for 2296 humans, are more meaningful than identifiers. 2298 Note: Only the 'text' and 'name' attribute syntaxes permit the 2299 Natural Language Override mechanism. 2301 Example: If the client supplies the "attributes-natural-language" 2302 operation attribute with the value: 'en' indicating English, but the 2303 "printer-name" attribute is in German, the client MUST use Natural 2304 Language Override as follows: 2306 'de': Natural Language Override indicating German 2307 'Farbdrucker': the Printer name in German 2309 Expires May 7, 1998 2311 4.1.3 'keyword' 2313 The 'keyword' attribute syntax is a sequence of characters, length: 1 2314 to 255, containing only the US-ASCII [ASCII] encoded values for 2315 lowercase letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot 2316 ("."), and underscore ("_"). The first character MUST be a lowercase 2317 letter. Furthermore, keywords SHALL be in U.S. English. 2319 This syntax type is used for enumerating semantic identifiers of 2320 entities in the abstract protocol, i.e., entities identified in this 2321 document. Keywords are used as attribute names or values of 2322 attributes. Unlike 'text' and 'name' attribute values, 'keyword' 2323 values SHALL NOT use the Natural Language Override mechanism, since 2324 they SHALL always be US-ASCII and U.S. English. 2326 Keywords are for use in the protocol. A user interface will likely 2327 provide a mapping between protocol keywords and displayable user- 2328 friendly words and phrases which are localized to the natural language 2329 of the user. While the keywords specified in this document MAY be 2330 displayed to users whose natural language is U.S. English, they MAY be 2331 mapped to other U.S. English words for U.S. English users, since the 2332 user interface is outside the scope of this document. 2334 In the definition for each attribute of this syntax type, the full set 2335 of defined keyword values for that attribute are listed. 2337 When a keyword is used to represent an attribute (its name), it MUST 2338 be unique within the full scope of all IPP objects and attributes. 2339 When a keyword is used to represent a value of an attribute, it MUST 2340 be unique just within the scope of that attribute. That is, the same 2341 keyword SHALL not be used for two different values within the same 2342 attribute to mean two different semantic ideas. However, the same 2343 keyword MAY be used across two or more attributes, representing 2344 different semantic ideas for each attribute. Section 6 describes how 2345 the protocol can be extended with new keyword values. Examples of 2346 attribute name keywords: 2348 "job-name" 2349 "attributes-charset" 2351 4.1.4 'enum' 2353 The 'enum' attribute syntax is an enumerated integer value that is in 2354 the range from -2**31 (MIN) to 2**31 - 1 (MAX). Each value has an 2355 associated 'keyword' name. In the definition for each attribute of 2357 Expires May 7, 1998 2358 this syntax type, the full set of possible values for that attribute 2359 are listed. This syntax type is used for attributes for which there 2360 are enum values assigned by other standards, such as SNMP MIBs. A 2361 number of attribute enum values in this specification are also used 2362 for corresponding attributes in other standards [RFC1759]. This 2363 syntax type is not used for attributes to which the system 2364 administrator may assign values. Section 6 describes how the protocol 2365 can be extended with new enum values. 2367 Enum values are for use in the protocol. A user interface will 2368 provide a mapping between protocol enum values and displayable user- 2369 friendly words and phrases which are localized to the natural language 2370 of the user. While the enum symbols specified in this document MAY be 2371 displayed to users whose natural language is U.S. English, they MAY be 2372 mapped to other U.S. English words for U.S. English users, since the 2373 user interface is outside the scope of this document. 2375 Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP out 2376 of band value 'unknown'. Therefore, most attributes of type 'enum' 2377 often start at '3'. 2379 4.1.5 'uri' 2381 The 'uri' attribute syntax is any valid Uniform Resource Identifier or 2382 URI [RFC1630]. Most often, URIs are simply Uniform Resource Locators 2383 or URLs [RFC1738] [RFC1808]. 2385 4.1.6 'uriScheme' 2387 The 'uriScheme' attribute syntax is a sequence of characters 2388 representing a URI scheme according to RFC 1738 [RFC1738]. Though RFC 2389 1736 requires that the values be case-insensitive, IPP requires all 2390 lower case to simplify comparing by IPP clients and Printer objects. 2391 Standard values for this syntax type are the following keywords: 2393 'http': for HTTP schemed URIs (e.g., "http://...") 2394 'https': for HTTPS schemed URIs (e.g., https://...) 2395 'ftp': for FTP schemed URIs (e.g., "ftp://...") 2396 'mailto': for SMTP schemed URIs (e.g., "mailto:...") 2397 'file': for file schemed URIs (e.g., "file:...") 2399 A Printer object MAY support any URI scheme that has been registered 2400 with IANA [IANA-MT] 2402 Expires May 7, 1998 2403 4.1.7 'charset' 2405 The 'charset' attribute syntax is a standard identifier for a 2406 "charset". A charset is a coded character set and encoding scheme. 2407 Charsets are used for labeling certain document contents and 'text' 2408 and 'name' attribute values. The syntax and semantics of this 2409 attribute syntax are specified in RFC 2046 [RFC2046] and contained in 2410 the IANA character-set Registry [IANA-CS] according to the IANA 2411 procedures [IANA-CSa]. Though RFC 2046 requires that the values be 2412 case-insensitive US-ASCII, IPP requires all lower case to simplify 2413 comparing by IPP clients and Printer objects. When a character-set in 2414 the IANA registry has more than one name (alias), the name labeled as 2415 "(preferred MIME name)", if present, SHALL be used. 2417 Some examples are: 2419 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set 2420 (UCS) represented as the UTF-8 [RFC2044] transfer encoding scheme 2421 in which US-ASCII is a subset charset. The 'utf-8' charset value 2422 supplied in the "attributes-charset" operation attribute (see 2423 Section 3.1.3), which is used to identify the charset of 'text' 2424 and 'name' attributes, SHALL be restricted to any characters 2425 defined by ISO 10646 [ISO10646-1]. 2426 'us-ascii': 7-bit American Standard Code for Information 2427 Interchange (ASCII), ANSI X3.4-1986 [ASCII]. That standard 2428 defines US-ASCII, but RFC 2045 [46] eliminates most of the 2429 control characters from conformant usage in MIME and IPP. 2430 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet 2431 Nr 1 [ISO8859-1]. That standard defines a coded character set 2432 that is used by Latin languages in the Western Hemisphere and 2433 Western Europe. US-ASCII is a subset charset. 2435 Some attribute descriptions MAY place additional requirements on 2436 charset values that may be used, such as MANDATORY values that MUST be 2437 supported or additional restrictions, such as requiring that the 2438 charset have US-ASCII as a subset charset. 2440 4.1.8 'naturalLanguage' 2442 The 'naturalLanguage' attribute syntax is a standard identifier for a 2443 natural language and optionally a country. The values for this syntax 2444 type are taken from RFC 1766 [RFC1766]. Though RFC 1766 requires that 2445 the values be case-insensitive US-ASCII, IPP requires all lower case 2446 to simplify comparing by IPP clients and Printer objects. Examples 2447 include: 2449 'en': for English 2451 Expires May 7, 1998 2452 'en-us': for US English 2453 'fr': for French 2454 'de': for German 2456 4.1.9 'mimeMediaType' 2458 The 'mimeMediaType' attribute syntax is the Internet Media Type 2459 (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and 2460 registered according to the procedures of RFC 2048 [RFC2048] for 2461 identifying a document format. The value MAY include a charset 2462 parameter, depending on the specification of the Media Type in the 2463 IANA Registry [IANA-MT]. Examples: 2465 'text/html': An HTML document 2466 'text/plain': A plain text document in US-ASCII (RFC 2046 indicates 2467 that in the absence of the charset parameter SHALL mean US-ASCII 2468 rather than simply unspecified) [RFC2046]. 2469 'text/plain; charset=US-ASCII': A plain text document in US-ASCII 2470 [52, 56]. 2471 'text/plain; charset=ISO-8859-1': A plain text document in ISO 2472 8859-1 (Latin 1) [ISO8859-1]. 2473 'text/plain; charset=utf-8': A plain text document in ISO 10646 2474 represented as UTF-8 [RFC2044] 2475 'text/plain, charset=iso-10646-ucs-2': A plain text document in 2476 ISO 10646 represented in two octets (UCS-2) [ISO10646-1] 2477 'application/postscript': A PostScript document [RFC2046] 2478 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape 2479 sequence embedded in the document data) 2480 'application/octet-stream': Auto-sense - see below 2482 One special type is 'application/octet-stream'. If the Printer object 2483 supports this value, the Printer object SHALL be capable of auto- 2484 sensing the format of the document data. If the Printer object's 2485 default value attribute "document-format" is set to 2486 'application/octet-stream', the Printer object not only supports auto- 2487 sensing of the document format, but will depend on the result of 2488 applying its auto-sensing when the client does not supply the 2489 "document-format" attribute. If the client supplies a document format 2490 value, the Printer SHOULD rely on the supplied attribute, rather than 2491 trust its auto-sensing algorithm. To summarize: 2493 1. If the client does not supply a document format value, the 2494 Printer MUST rely on its default value setting (which may be 2495 'application/octet-stream' indicating an auto-sensing mechanism). 2496 2. If the client supplies a value other than 'application/octet- 2497 stream', the client is supplying valid information about the 2498 format of the document data and the Printer object SHOULD trust 2500 Expires May 7, 1998 2501 the client supplied value more than the outcome of applying an 2502 automatic format detection mechanism. For example, the client 2503 may be requesting the printing of a PostScript file as a 2504 'text/plain' document. The Printer object SHALL print a text 2505 representation of the PostScript commands rather than interpret 2506 the stream of PostScript commands and print the result. 2507 3. If the client supplies a value of 'application/octet-stream', 2508 the client is indicating that the Printer object SHALL use its 2509 auto-sensing mechanism on the client supplied document data 2510 whether auto-sensing is the Printer object's default or not. 2512 Note: Since the auto-sensing algorithm is probabilistic, if the 2513 client requests both auto-sensing ("document-format" set to 2514 'application/octet-stream') and true fidelity ("ipp-attribute- 2515 fidelity" set to 'true'), the Printer object might not be able to 2516 guarantee exactly what the end user intended (the auto-sensing 2517 algorithm might mistake one document format for another ), but it is 2518 able to guarantee that its auto-sensing mechanism be used. 2520 4.1.10 'octetString' 2522 The 'octetString' attribute syntax is a sequence of octets encoded in 2523 a maximum of 4095 octets. This syntax type is used for opaque data. 2525 4.1.11 'boolean' 2527 The 'boolean' attribute syntax is similar to an enum with only two 2528 values: 'true' and 'false'. 2530 4.1.12 'integer' 2532 The 'integer' attribute syntax is an integer value that is in the 2533 range from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual attribute 2534 may specify the range constraint explicitly if the range is different 2535 from the full range of possible integer values (e.g., 0:100 for the 2536 "job-priority" attribute), however, the enforcement of that additional 2537 constraint is up to the IPP objects, not the protocol. 2539 4.1.13 'rangeOfInteger' 2541 The 'rangeOfInteger' attribute syntax is an ordered pair of integers 2542 that defines an inclusive range of integer values. The first integer 2543 specifies the lower bound and the second specifies the upper bound. 2544 If a range constraint is specified in the header description for an 2546 Expires May 7, 1998 2547 attribute in this document whose attribute syntax is 'rangeOfInteger' 2548 (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum 2549 value), then the constraint applies to both integers. 2551 4.1.14 'dateTime' 2553 The 'dateTime' attribute syntax is a standard, fixed length, 11 octet 2554 representation of the "DateAndTime" syntax as defined in RFC 1903 2555 [RFC1903]. RFC 1903 also identifies an 8 octet representation of a 2556 "DateAndTime" value, but IPP objects MUST use the 11 octet 2557 representation. When accepting 'dateTime' values from users and 2558 displaying 'dateTime' values to users, clients SHOULD localize the 2559 values to the charset and natural language of the user. 2561 4.1.15 'resolution' 2563 The 'resolution' attribute syntax specifies a two-dimensional 2564 resolution in the indicated units. It consists of 3 integers: a cross 2565 feed direction resolution (positive integer value), a feed direction 2566 resolution (positive integer value), and a units value. The semantics 2567 of these three components are taken from the Printer MIB [RFC1759] 2568 suggested values. That is, the cross feed direction component 2569 resolution component is the same as the 2570 prtMarkerAddressabilityXFeedDir object in the Printer MIB, the feed 2571 direction component resolution component is the same as the 2572 prtMarkerAddressabilityFeedDir in the Printer MIB, and the units 2573 component is the same as the prtMarkerAddressabilityUnit object in the 2574 Printer MIB (namely dots per inch and dots per centimeter). All three 2575 values MUST be present even if the first two values are the same. 2576 Example: '300', '600', '3' indicates a 300 dpi cross-feed direction 2577 resolution, a 600 dpi feed direction resolution, since a '3' indicates 2578 dots per inch. 2580 4.1.16 '1setOf X' 2582 The '1setOf X' attribute syntax is 1 or more values of attribute 2583 syntax type X. This syntax type is used for multi-valued attributes. 2584 The syntax type is called '1setOf' rather than just 'setOf' as a 2585 reminder that the set of values SHALL NOT be empty (i.e., a set of 2586 size 0). Sets are normally unordered, however each attribute 2587 description of this type may specify that the values MUST be in a 2588 certain order for that attribute. 2590 Expires May 7, 1998 2591 4.2 Job Template Attributes 2593 Job Template attributes describe job processing behavior. Support for 2594 Job Template attributes by a Printer object is OPTIONAL (see section 2595 12.2.3 for a description of support for OPTIONAL attributes). Also, 2596 clients OPTIONALLY supply Job Template attributes in create requests. 2598 Job Template attributes conform to the following rules. For each Job 2599 Template attribute called "xxx": 2601 1. If the Printer object supports "xxx" then it SHALL support both 2602 a "xxx-default" default value attribute (unless there is a "No" 2603 in the table below) and a "xxx-supported" supported values 2604 attribute. 2606 2. "xxx" is OPTIONALLY supplied by the client in a create request. 2607 If "xxx" is supplied, the client is indicating a desired job 2608 processing behavior for this Job. When "xxx" is not supplied, the 2609 client is indicating that the Printer object apply its default job 2610 processing behavior at job processing time if the document content 2611 does not contain an embedded instruction indicating an xxx-related 2612 behavior. 2614 Note: Since an administrator MAY change the default value 2615 attribute after a Job object has been submitted but before it has 2616 been processed, the default value used by the Printer object at 2617 job processing time may be different that the default value in 2618 effect at job submission time. 2620 The "xxx-supported" attribute is a Printer object attribute that 2621 describes which job processing behaviors are supported by that Printer 2622 object. A client can query the Printer object to find out what xxx- 2623 related behaviors are supported by inspecting the returned values of 2624 the "xxx-supported" attribute. The "xxx-default" default value 2625 attribute describes what will be done at job processing time when no 2626 other job processing information is supplied by the client (either 2627 explicitly as an IPP attribute in the create request or implicitly as 2628 an embedded instruction within the document data). 2630 If an application wishes to present an end user with a list of 2631 supported values from which to choose, the application SHOULD query 2632 the Printer object for its supported value attributes. The 2633 application SHOULD also query the default value attributes. If the 2634 application then limits selectable values to only those value that are 2635 supported, the application can guarantee that the values supplied by 2636 the client in the create request all fall within the set of supported 2637 values at the Printer. When querying the Printer, the client MAY 2638 enumerate each attribute by name in the Get-Attributes Request, or the 2640 Expires May 7, 1998 2641 client MAY just name the "job-template" group in order to get the 2642 complete set of supported attributes (both supported and default 2643 attributes). 2645 The "finishings" attribute is an example of a Job Template attribute. 2646 It can take on a set of values such as 'staple', 'punch', and/or 2647 'cover'. A client can query the Printer object for the "finishings- 2648 supported" attribute and the "finishings-default" attribute. The 2649 supported attribute contains a set of supported values. The default 2650 value attribute contains the finishing value(s) that will be used for 2651 a new Job if the client does not supply a "finishings" attribute in 2652 the create request. If the client does supply the "finishings" 2653 attribute in the create request, the Printer validates the value or 2654 values to make sure that they are a subset of the supported values. 2655 If the client-supplied values are all supported, the Job object is 2656 created with a "finishings" attribute that is populated with the 2657 values supplied by the client. Subsequently, when the Job object is 2658 queried, it returns the values supplied by the client. If the client 2659 does not supply a "finishings" attribute in the create request, the 2660 Job object is created, but no "finishings" attribute is associated 2661 with the new Job object. A subsequent query of the Job object will 2662 return no "finishings" attribute. In this case, the querying client 2663 knows that there were was no client supplied "finishings" attribute. 2664 If the client is interested to know what the default value is that the 2665 Printer will use at job processing time for the missing attribute, the 2666 client can query the Printer object's default value "finishings- 2667 default" attribute to find out how the Job will be finished, unless 2668 the document(s) contain embedded finishing instructions. 2670 The table below summarizes the names and relationships for all Job 2671 Template attributes. The first column of the table (labeled "Job") 2672 shows the name and syntax for each Job Template attribute in the Job 2673 object. These are the attributes that can optionally be supplied by 2674 the client in a create request. The last two columns (labeled 2675 "Printer: Default Value" and "Printer: Supported Values") shows the 2676 name and syntax for each Job Template attribute in the Printer object 2677 (the default value attribute and the supported values attribute). A 2678 "No" in the table means the Printer SHALL NOT support the attribute 2679 (that is the attribute is simply not applicable). 2681 Expires May 7, 1998 2682 +===================+======================+======================+ 2683 | Job Attribute |Printer: Default Value| Printer: Supported | 2684 | | Attribute | Values Attribute | 2685 +===================+======================+======================+ 2686 | job-priority | job-priority-default |job-priority-supported| 2687 | (integer 1:100) | (integer 1:100) |(integer 1:100) | 2688 +-------------------+----------------------+----------------------+ 2689 | job-hold-until | job-hold-until- |job-hold-until- | 2690 | (type4 keyword | | default | supported | 2691 | name) | (type4 keyword | |(1setOf | 2692 | | name) | type4 keyword | name)| 2693 +-------------------+----------------------+----------------------+ 2694 | job-sheets | job-sheets-default |job-sheets-supported | 2695 | (type4 keyword | | (type4 keyword | |(1setOf 2696 | name) | name) | type4 keyword | name)| 2697 +-------------------+----------------------+----------------------+ 2698 |multiple-document- |multiple-document- |multiple-document- | 2699 | handling | handling-default |handling-supported | 2700 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 2701 +-------------------+----------------------+----------------------+ 2702 | copies | copies-default | copies-supported | 2703 | (integer (1:MAX)) | (integer (1:MAX)) | (integer (1:MAX)) | 2704 | | | | 2705 | | copies-collated- | copies-collated- | 2706 | | default | supported | 2707 | | (integer (1:MAX)) | (integer (1:MAX)) | 2708 +-------------------+----------------------+----------------------+ 2709 | finishings | finishings-default | finishings-supported | 2710 |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | 2711 +-------------------+----------------------+----------------------+ 2712 | page-ranges | No | page-ranges- | 2713 | (1setOf | | supported (boolean) | 2714 | rangeOfInteger | | | 2715 | (1:MAX)) | | | 2716 +-------------------+----------------------+----------------------+ 2717 | sides | sides-default | sides-supported | 2718 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 2719 +-------------------+----------------------+----------------------+ 2720 | number-up | number-up-default | number-up-supported | 2721 | (integer (0:MAX)) | (integer (0:MAX)) |(1setOf integer | 2722 | | | (0:MAX) | | 2723 | | | rangeOfInteger | 2724 | | | (0:MAX)) | 2725 +-------------------+----------------------+----------------------+ 2726 | orientation | orientation-default | orientation- | 2727 | (type2 enum) | (type2 enum) | supported | 2728 | | | (1setOf type2 enum) | 2729 +-------------------+----------------------+----------------------+ 2731 Expires May 7, 1998 2732 | media | media-default | media-supported | 2733 | (type4 keyword | | (type4 keyword | |(1setOf | 2734 | name) | name) | type4 keyword | name)| 2735 | | | | 2736 | | | media-ready | 2737 | | |(1setOf | 2738 | | | type4 keyword | name)| 2739 +-------------------+----------------------+----------------------+ 2740 | printer-resolution| printer-resolution- | printer-resolution- | 2741 | (resolution) | default | supported | 2742 | | (resolution) |(1setOf resolution) | 2743 +-------------------+----------------------+----------------------+ 2744 | print-quality | print-quality-default| print-quality- | 2745 | (type2 enum) | (type2 enum) | supported | 2746 | | |(1setOf type2 enum) | 2747 +-------------------+----------------------+----------------------+ 2748 | compression | No | compression-supported| 2749 | (type3 keyword) | |(1setOf type3 keyword)| 2750 +-------------------+----------------------+----------------------+ 2751 | job-k-octets | No |job-k-octets-supported| 2752 | (integer (0:MAX)) | | (rangeOfInteger | 2753 | | | (0:MAX)) | 2754 +-------------------+----------------------+----------------------+ 2755 | job- | No | job-impressions- | 2756 | impressions | | supported | 2757 | (integer (0:MAX)) | | (rangeOfInteger | 2758 | | | (0:MAX)) | 2759 +-------------------+----------------------+----------------------+ 2760 | job-media- | No | job-media-sheets- | 2761 | sheets | | supported | 2762 | (integer (0:MAX)) | | (rangeOfInteger) | 2763 | | | (0:MAX)) | 2764 +-------------------+----------------------+----------------------+ 2766 4.2.1 job-priority (integer(1:100)) 2768 This attribute specifies a priority for scheduling the Job. A higher 2769 value specifies a higher priority. The value 1 indicates the lowest 2770 possible priority. The value 100 indicates the highest possible 2771 priority. Among those jobs that are ready to print, a Printer SHALL 2772 print all jobs with a priority value of n before printing those with a 2773 priority value of n-1 for all n. 2775 If the Printer object supports this attribute, it SHALL always support 2776 the full range from 1 to 100. No administrative restrictions are 2777 permitted. This way an end-user can always make full use of the 2779 Expires May 7, 1998 2780 entire range with any Printer object. If privileged jobs are 2781 implemented outside IPP/1.0, they SHALL have priorities higher than 2782 100, rather than restricting the range available to end-users. 2784 The syntax for the "job-priority-supported" is also integer(1:100). 2785 This single integer value indicates the number of priority levels 2786 supported. The Printer object SHALL take the value supplied by the 2787 client and map it to the closest integer in a sequence of n integers 2788 values that are evenly distributed over the range from 1 to 100 using 2789 the formula: 2791 roundToNearestInt((100x+50)/n) 2793 where n is the value of "job-priority-supported" and x ranges from 0 2794 through n-1. 2796 For example, if n=1 the sequence of values is 50; if n=2, the 2797 sequence of values is: 25 and 75; if n = 3, the sequence of values 2798 is: 17, 50 and 83; if n = 10, the sequence of values is: 5, 15, 25, 2799 35, 45, 55, 65, 75, 85, and 95; if n = 100, the sequence of values 2800 is: 1, 2, 3, _ 100. 2802 If the value of the Printer object's "job-priority-supported" is 10 2803 and the client supplies values in the range 1 to 10, the Printer 2804 object maps them to 5, 11 to 20, the Printer object maps them to 15, 2805 etc. 2807 4.2.2 job-hold-until (type4 keyword | name) 2809 This attribute specifies the named time period during which the Job 2810 SHALL become a candidate for printing. 2812 Standard values for named time periods are: 2814 'no-hold': immediately, if there are not other reasons to hold the 2815 job 2816 'day-time': during the day 2817 'evening': evening 2818 'night': night 2819 'weekend': weekend 2820 'second-shift': second-shift (after close of business) 2821 'third-shift': third-shift (after midnight) 2823 An administrator SHALL associate allowable print times with a named 2824 time period (by means outside IPP/1.0). An administrator is 2825 encouraged to pick names that suggest the type of time period. An 2827 Expires May 7, 1998 2828 administrator MAY define additional values using the 'name' or 2829 'keyword' attribute syntax, depending on implementation. 2831 If the value of this attribute specifies a time period that is in the 2832 future, the Printer SHALL add the 'job-hold-until-specified' value to 2833 the job's "job-state-reasons" attribute, move the job to the 'pending- 2834 held' state, and SHALL NOT schedule the job for printing until the 2835 specified time-period arrives. When the specified time period 2836 arrives, the Printer SHALL remove the 'job-hold-until-specified' value 2837 from the job's "job-state-reason" attribute and, if there are no other 2838 job state reasons that keep the job in the 'pending-held' state 2839 remain, the Printer SHALL consider the job as a candidate for 2840 processing by moving the job to the 'pending' state. 2842 If this job attribute value is the named value 'no-hold', or the 2843 specified time period has already started, the job SHALL be a 2844 candidate for processing immediately. 2846 4.2.3 job-sheets (type4 keyword | name) 2848 This attribute determines which job start/end sheet(s), if any, SHALL 2849 be printed with a job. 2851 Standard values are: 2853 'none': no job sheet is printed 2854 'standard': one or more site specific standard job sheets are 2855 printed, e.g. a single start sheet or both start and end sheet is 2856 printed 2858 An administrator MAY define additional values using the 'name' or 2859 'keyword' attribute syntax, depending on implementation. 2861 Note: The effect of this attribute on jobs with multiple documents MAY 2862 be affected by the "multiple-document-handling" job attribute (section 2863 4.2.4), depending on the job sheet semantics. 2865 4.2.4 multiple-document-handling (type2 keyword) 2867 This attribute is relevant only if a job consists of two or more 2868 documents. The attribute controls finishing operations and the 2869 placement of one or more print-stream pages into impressions and onto 2870 media sheets. When the value of the "copies" attribute exceeds 1, it 2871 also controls the order in which the copies that result from 2872 processing the documents are produced. For the purposes of this 2873 explanations, if "a" represents an instance of document data, then the 2875 Expires May 7, 1998 2876 result of processing the data in document "a" is a sequence of media 2877 sheets represented by "a(*)". 2879 Standard values are: 2881 'single-document': If a Job object has multiple documents, say, the 2882 document data is called a and b, then the result of processing 2883 all the document data (a and then b) SHALL be treated as a single 2884 sequence of media sheets for finishing operations; that is, 2885 finishing would be performed on the concatenation of the 2886 sequences a(*),b(*). The Printer object SHALL NOT force the data 2887 in each document instance to be formatted onto a new print-stream 2888 page, nor to start a new impression on a new media sheet. If more 2889 than one copy is made, the ordering of the sets of media sheets 2890 resulting from processing the document data SHALL be a(*), b(*), 2891 a(*), b(*), ..., and the Printer object SHALL force each copy 2892 (a(*),b(*)) to start on a new media sheet. 2893 'separate-documents-uncollated-copies': If a Job object has 2894 multiple documents, say, the document data is called a and b, 2895 then the result of processing the data in each document instance 2896 SHALL be treated as a single sequence of media sheets for 2897 finishing operations; that is, the sets a(*) and b(*) would each 2898 be finished separately. The Printer object SHALL force each copy 2899 of the result of processing the data in a single document to 2900 start on a new media sheet. If more than one copy is made, the 2901 ordering of the sets of media sheets resulting from processing 2902 the document data SHALL be a(*), a(*), ..., b(*), b(*) ... . 2903 'separate-documents-collated-copies': If a Job object has multiple 2904 documents, say, the document data is called a and b, then the 2905 result of processing the data in each document instance SHALL be 2906 treated as a single sequence of media sheets for finishing 2907 operations; that is, the sets a(*) and b(*) would each be 2908 finished separately. The Printer object SHALL force each copy of 2909 the result of processing the data in a single document to start 2910 on a new media sheet. If more than one copy is made, the 2911 ordering of the sets of media sheets resulting from processing 2912 the document data SHALL be a(*), b(*), a(*), b(*), ... . 2914 The 'single-document' value is the same as 'separate-documents- 2915 collated-copies' with respect to ordering of print-stream pages, but 2916 not media sheet generation, since 'single-document' will put the first 2917 page of the next document on the back side of a sheet if an odd number 2918 of pages have been produced so far for the job, while 'separate- 2919 documents-collated-copies' always forces the next document or document 2920 copy on to a new sheet. In addition, if the _finishings_ attribute 2921 specifies `staple', then with 'single-document', documents a and b are 2922 stapled together as a single document, but with 'separate-documents- 2923 collated-copies', documents a and b are stapled separately. 2925 Expires May 7, 1998 2926 The relationship of this attribute and the other attributes that 2927 control document processing is described in section 15.4. 2929 4.2.5 copies (integer(1:MAX)) 2931 This attribute specifies the number of copies to be printed. 2933 On many devices the supported number of collated copies will be 2934 limited by the number of physical output bins on the device, and may 2935 be different from the number of uncollated copies which can be 2936 supported. 2938 The "copies-supported" attribute is the limit on the number of 2939 uncollated copies supported, i.e., the limit when the value of the 2940 "multiple-document-handling" attribute is 'single-document' or 2941 'separate-documents-uncollated-copies'. The " copies-collated- 2942 supported" attribute is the limit on the number of collated copies 2943 supported, i.e., the limit when the value of the "multiple-document- 2944 handling" attribute is 'separate-documents-collated-copies'. 2946 The "copies-default" attribute is the default for the number of 2947 uncollated copies, i.e., the default when the value of the "multiple- 2948 document-handling" attribute is 'single-document' or 'separate- 2949 documents-uncollated-copies'. The " copies-collated-default" 2950 attribute is the default for the number of collated copies, i.e., the 2951 default when the value of the "multiple-document-handling" attribute 2952 is 'separate-documents-collated-copies'. 2954 Note: The effect of this attribute on jobs with multiple documents is 2955 controlled by the "multiple-document-handling" job attribute (section 2956 4.2.4) and the relationship of this attribute and the other attributes 2957 that control document processing is described in section 15.4. 2959 4.2.6 finishings (1setOf type2 enum) 2961 This attribute identifies the finishing operations that the Printer 2962 uses for each copy of each printed document in the Job. For Jobs with 2963 multiple documents, the "multiple-document-handling" attribute 2964 determines what constitutes a "copy" for purposes of finishing. 2966 Standard values are: 2968 Value Symbolic Name and Description 2970 '3' 'none': Perform no finishing 2972 Expires May 7, 1998 2973 '4' 'staple': Bind the document(s) with one or more staples. 2974 The exact number and placement of the staples is site- 2975 defined. 2976 '5' 'punch': This value indicates that holes are required in 2977 the finished document. The exact number and placement 2978 of the holes is site-defined The punch specification 2979 MAY be satisfied (in a site- and implementation- 2980 specific manner) either by drilling/punching, or by 2981 substituting pre-drilled media. 2982 '6' 'cover': This value is specified when it is desired to 2983 select a non-printed (or pre-printed) cover for the 2984 document. This does not supplant the specification of a 2985 printed cover (on cover stock medium) by the document 2986 itself. 2987 '7' 'bind': This value indicates that a binding is to be 2988 applied to the document; the type and placement of the 2989 binding is site-defined." 2991 Note: The effect of this attribute on jobs with multiple documents is 2992 controlled by the "multiple-document-handling" job attribute (section 2993 4.2.4) and the relationship of this attribute and the other attributes 2994 that control document processing is described in section 15.4. 2996 If the client supplies a value of 'none' along with any other 2997 combination of values, it is the same as if only that other 2998 combination of values had been supplied (that is the 'none' value has 2999 no effect). 3001 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 3003 This attribute identifies the range(s) of print-stream pages that the 3004 Printer object uses for each copy of each document which are to be 3005 printed. Nothing is printed for any pages identified that do not 3006 exist in the document(s). 3008 For Jobs with multiple documents, the "multiple-document-handling" 3009 attribute determines what constitutes a "copy" for purposes of the 3010 specified page range(s). When "multiple-document-handling" is 3011 'single-document', the Printer object SHALL apply each supplied page 3012 range once to the concatenation of the print-stream pages. For 3013 example, if there are 8 documents of 10 pages each, the page-range 3014 '41:60' prints the pages in the 5th and 6th documents as a single 3015 document and none of the pages of the other documents are printed. 3016 When "multiple-document-handling" is 'separate-document-uncollated- 3017 copies' or 'separate-document-collated-copies', the Printer object 3018 SHALL apply each supplied page range repeatedly to each document copy. 3019 For the same job, the page-range '1:3, 10:10' would print the first 3 3021 Expires May 7, 1998 3022 pages and the 10th page of each of the 8 documents in the Job, as 8 3023 separate documents. 3025 In most cases, the exact pages to be printed will be generated by a 3026 device driver and this attribute would not be required. However, when 3027 printing an archived document which has already been formatted, the 3028 end user may elect to print just a subset of the pages contained in 3029 the document. In this case, if page-range = n.m is specified, the 3030 first page to be printed will be page n. All subsequent pages of the 3031 document will be printed through and including page m. 3033 "page-ranges-supported" is a boolean value indicating whether or not 3034 the printer is capable of supporting the printing of page ranges. 3035 This capability may differ from one PDL to another. There is no "page- 3036 ranges-default" attribute. If the "page-ranges" attribute is not 3037 supplied by the client, all pages of the document will be printed. 3039 Note: The effect of this attribute on jobs with multiple documents is 3040 controlled by the "multiple-document-handling" job attribute (section 3041 4.2.4) and the relationship of this attribute and the other attributes 3042 that control document processing is described in section 15.4. 3044 4.2.8 sides (type2 keyword) 3046 This attribute specifies how print-stream pages are to be imposed upon 3047 the sides of an instance of a selected medium (an impression). 3049 The standard values are: 3051 'one-sided': imposes each consecutive print-stream page upon the 3052 same side of consecutive media sheets. 3053 'two-sided-long-edge': imposes each consecutive pair of print- 3054 stream pages upon front and back sides of consecutive media 3055 sheets, such that the orientation of each pair of print-stream 3056 pages on the medium would be correct for the reader as if for 3057 binding on the long edge. This imposition is sometimes called 3058 'duplex' or 'head-to-head'. 3059 'two-sided-short-edge': imposes each consecutive pair of print- 3060 stream pages upon front and back sides of consecutive media 3061 sheets, such that the orientation of each pair of print-stream 3062 pages on the medium would be correct for the reader as if for 3063 binding on the short edge. This imposition is sometimes called 3064 'tumble' or 'head-to-toe'. 3066 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 3067 all work the same for portrait or landscape. However 'head-to-toe' is 3068 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 3070 Expires May 7, 1998 3071 switches between 'duplex' and 'tumble' when using portrait and 3072 landscape modes. 3074 Note: The effect of this attribute on jobs with multiple documents is 3075 controlled by the "multiple-document-handling" job attribute (section 3076 4.2.4) and the relationship of this attribute and the other attributes 3077 that control document processing is described in section 15.4. 3079 4.2.9 number-up (integer(0:MAX)) 3081 This attribute specifies the number of print-stream pages to impose 3082 upon a single side of an instance of a selected medium. For example, 3083 if the value is 3085 Value Description 3087 '0' The Printer SHALL place one print-stream page on a single 3088 side of an instance of the selected medium and SHALL 3089 NOT add any sort of translation, scaling, rotation or 3090 other embellishment). 3091 '1' The Printer SHALL place one print-stream page on a single 3092 side of an instance of the selected medium (MAY add 3093 some sort of translation, scaling, or rotation). 3094 '2' The Printer SHALL place two print-stream pages on a single 3095 side of an instance of the selected medium (MAY add 3096 some sort of translation, scaling, or rotation). 3097 '4' The Printer SHALL place four print-stream pages on a single 3098 side of an instance of the selected medium (MAY add 3099 some sort of translation, scaling, or rotation). 3101 This attribute primarily controls the translation, scaling and 3102 rotation of print-stream pages, but a site may choose to add 3103 embellishments, such as borders, to any non-zero value. 3105 Note: The '0' value is for the protocol. It is expected that a 3106 client would chose some more user-friendly representation for 3107 displaying the value '0' to the end-user, such as 'none', rather than 3108 displaying a zero. 3110 Note: The effect of this attribute on jobs with multiple documents is 3111 controlled by the "multiple-document-handling" job attribute (section 3112 4.2.4) and the relationship of this attribute and the other attributes 3113 that control document processing is described in section 15.4. 3115 Expires May 7, 1998 3116 4.2.10 orientation (type2 enum) 3118 This attribute specifies the orientation of the content of the print- 3119 stream pages to be printed. In most cases, the orientation of the 3120 content is specified within the document format generated by the 3121 device driver at print time. However, some document formats (such as 3122 'text/plain') do not support the notion of page orientation, and it is 3123 possible to bind the orientation after the document content has been 3124 generated. This attribute provides an end user with the means to 3125 specify orientation for such documents. 3127 Standard values are: 3129 Value Symbolic Name and Description 3131 '1' 'portrait': The content will be imaged across the short 3132 edge of the medium. 3133 '2' 'landscape': The content will be imaged across the long 3134 edge of the medium. Landscape is defined to be a 3135 rotation of the print-stream page to be imaged by +90 3136 degrees with respect to the medium (i.e. anti- 3137 clockwise) from the portrait orientation. Note: The 3138 +90 direction was chosen because simple finishing on 3139 the long edge is the same edge whether portrait or 3140 landscape 3141 '3' 'reverse-landscape': The content will be imaged across the 3142 long edge of the medium. Reverse-landscape is defined 3143 to be a rotation of the print-stream page to be imaged 3144 by -90 degrees with respect to the medium (i.e. 3145 clockwise) from the portrait orientation. Note: The 3146 'reverse-landscape' value was added because some 3147 applications rotate landscape -90 degrees from 3148 portrait, rather than +90 degrees. 3150 Note: The effect of this attribute on jobs with multiple documents is 3151 controlled by the "multiple-document-handling" job attribute (section 3152 4.2.4) and the relationship of this attribute and the other attributes 3153 that control document processing is described in section 15.4. 3155 4.2.11 media (type4 keyword | name) 3157 This attribute identifies the medium that the Printer uses for all 3158 impressions of the Job. 3160 The values for "media" include medium-names, medium-sizes, input-trays 3161 and electronic forms so that one attribute specifies the media. If a 3162 Printer object supports a medium name as a value of this attribute, 3164 Expires May 7, 1998 3165 such a medium name implicitly selects an input-tray that contains the 3166 specified medium. If a Printer object supports a medium size as a 3167 value of this attribute, such a medium size implicitly selects a 3168 medium name that in turn implicitly selects an input-tray that 3169 contains the medium with the specified size. If a Printer object 3170 supports an input-tray as the value of this attribute, such an input- 3171 tray implicitly selects the medium that is in that input-tray at the 3172 time the job prints. This case includes manual-feed input-trays. If 3173 a Printer object supports an electronic form as the value of this 3174 attribute, such an electronic form implicitly selects a medium-name 3175 that in turn implicitly selects an input-tray that contains the medium 3176 specified by the electronic form. The electronic form also implicitly 3177 selects an image that the Printer SHALL merge with the document data 3178 as its prints each page. 3180 Standard values are (taken from ISO DPA and the Printer MIB) and are 3181 listed in section 14. An administrator MAY define additional values 3182 using the 'name' or 'keyword' attribute syntax, depending on 3183 implementation. 3185 There is also an additional Printer attribute named "media-ready" 3186 which differs from "media-supported" in that legal values only include 3187 the subset of "media-supported" values that are physically loaded and 3188 ready for printing with no operator intervention required. 3190 The relationship of this attribute and the other attributes that 3191 control document processing is described in section 15.4. 3193 4.2.12 printer-resolution (resolution) 3195 This attribute identifies the resolution that Printer uses for the 3196 Job. 3198 4.2.13 print-quality (type2 enum) 3200 This attribute specifies the print quality that the Printer uses for 3201 the Job. 3203 The standard values are: 3205 Value Symbolic Name and Description 3207 '3' 'draft': lowest quality available on the printer 3208 '4' 'normal': normal or intermediate quality on the printer 3209 '5' 'high': highest quality available on the printer 3211 Expires May 7, 1998 3213 4.2.14 compression (type3 keyword) 3215 This attribute identifies compression algorithms used on compressed 3216 document data. The value of this attribute does not apply to the 3217 encoding of the IPP operation itself. 3219 Standard values are : 3221 'none': no compression is used. 3222 'deflate': ZIP public domain inflate/deflate) compression 3223 technology 3224 `gzip' GNU zip compression technology described in RFC 1952. 3225 'compress': UNIX compression technology 3227 4.2.15 job-k-octets (integer(0:MAX)) 3229 This attribute specifies the total size of the document data in K 3230 octets, i.e., in units of 1024 octets requested to be processed in 3231 the job. The value SHALL be rounded up, so that a job between 1 and 3232 1024 octets SHALL be indicated as being 1, 1025 to 2048 SHALL be 2, 3233 etc. 3235 This value SHALL not include the multiplicative factors contributed by 3236 the number of copies specified by the "copies" attribute, independent 3237 of whether the device can process multiple copies without making 3238 multiple passes over the document data and independent of whether the 3239 output is collated or not. Thus the value is independent of the 3240 implementation. 3242 This value SHALL also not include the multiplicative factor due to a 3243 copies instruction embedded in the document data. If the document 3244 data actually includes replications of the document data, this value 3245 will include such replication. In other words, this value is always 3246 the size of the source document data, rather than a measure of the 3247 hardcopy output to be produced. 3249 Note: This attribute and the following two attributes ("job- 3250 impressions" and "job-media-sheets") are not intended to be counters; 3251 they are intended to be useful routing and scheduling information if 3252 known. For these three attributes, the Printer object may try to 3253 compute the value if it is not supplied in the create request. Even 3254 if the client does supply a value for these three attributes in the 3255 create request, the Printer object MAY choose to change the value if 3256 the Printer object is able to compute a value which is more accurate 3257 than the client supplied value. The Printer object may be able to 3258 determine the correct value for these three attributes either right at 3259 job submission time or at any later point in time. If the value of 3261 Expires May 7, 1998 3262 this attribute is unknown at the moment, the Printer object MAY choose 3263 to respond with a special value of 'unknown' rather than not return 3264 the attribute at all. 3266 4.2.16 job-impressions (integer(0:MAX)) 3268 This attribute specifies the total number of impressions of the 3269 document(s) being requested by this job to produce. 3271 This value SHALL not include the multiplicative factors contributed by 3272 the number of copies specified by the "copies" attribute, independent 3273 of whether the device can process multiple copies without making 3274 multiple passes over the document data and independent of whether the 3275 output is collated or not. Thus the value is independent of the 3276 implementation. 3278 As with "job-k-octets", this value SHALL also not include the 3279 multiplicative factor due to a copies instruction embedded in the 3280 document data. If the document data actually includes replications of 3281 the document data, this value will include such replication. In other 3282 words, this value is always the number of impressions in the source 3283 document data, rather than a measure of the number of impressions to 3284 be produced. 3286 See the Note in the "job-k-octets" attribute that also applies to this 3287 attribute. 3289 4.2.17 job-media-sheets (integer(0:MAX)) 3291 This attribute specifies the total number of media sheets to be 3292 processed for this job. 3294 Unlike the "job-k-octets" and the "job-impressions" attributes, this 3295 value SHALL include the multiplicative factors contributed by the 3296 number of copies specified by the "copies" attribute and number of 3297 copies instructions embedded in the document data, if any. 3299 See the Note in the "job-k-octets" attribute that also applies to this 3300 attribute. 3302 4.3 Job Description Attributes 3304 The attributes in this section form the attribute group called "job- 3305 description". The following table summarizes these attributes. The 3306 third column indicates whether the attribute is a MANDATORY attribute 3308 Expires May 7, 1998 3309 that MUST be supported by Printer objects. If it is not MANDATORY, 3310 then it is OPTIONAL. 3312 Expires May 7, 1998 3313 +----------------------------+----------------------+----------------+ 3314 | Attribute | Syntax | MANDATORY? | 3315 +----------------------------+----------------------+----------------+ 3316 | job-uri | uri | MANDATORY | 3317 +----------------------------+----------------------+----------------+ 3318 | job-id | integer(1:MAX) | MANDATORY | 3319 +----------------------------+----------------------+----------------+ 3320 | job-more-info | uri | | 3321 +----------------------------+----------------------+----------------+ 3322 | job-name | name | MANDATORY | 3323 +----------------------------+----------------------+----------------+ 3324 | job-originating-user-name | name | MANDATORY | 3325 +----------------------------+----------------------+----------------+ 3326 | job-state | type1 enum | MANDATORY | 3327 +----------------------------+----------------------+----------------+ 3328 | job-state-reasons | 1setOf type2 keyword | | 3329 +----------------------------+----------------------+----------------+ 3330 | job-state-message | text | | 3331 +----------------------------+----------------------+----------------+ 3332 | number-of-documents | integer (0-MAX) | | 3333 +----------------------------+----------------------+----------------+ 3334 | containing-printer-uri | uri | MANDATORY | 3335 +----------------------------+----------------------+----------------+ 3336 | output-device-assigned | name | | 3337 +----------------------------+----------------------+----------------+ 3338 | time-at-creation | integer (0:MAX) | | 3339 +----------------------------+----------------------+----------------+ 3340 | time-at-processing | integer (0:MAX) | | 3341 +----------------------------+----------------------+----------------+ 3342 | time-at-completed | integer (0:MAX) | | 3343 +----------------------------+----------------------+----------------+ 3344 | number-of-intervening-jobs | integer (0:MAX) | | 3345 +----------------------------+----------------------+----------------+ 3346 | job-message-from-operator | text | | 3347 +----------------------------+----------------------+----------------+ 3348 | job-k-octets-processed | integer (0:MAX) | | 3349 +----------------------------+----------------------+----------------+ 3350 | job-impressions-completed | integer (0:MAX) | | 3351 +----------------------------+----------------------+----------------+ 3352 | job-media-sheets-completed | integer (0:MAX) | | 3353 +----------------------------+----------------------+----------------+ 3354 | attributes-charset | charset | MANDATORY | 3355 +----------------------------+----------------------+----------------+ 3356 | attributes-natural-language| naturalLanguage | MANDATORY | 3357 +----------------------------+----------------------+----------------+ 3359 Expires May 7, 1998 3360 4.3.1 job-uri (uri) 3362 This MANDATORY attribute contains the URI for the job. The Printer 3363 object, on receipt of a new job, generates a URI which identifies the 3364 new Job on that Printer object. The Printer object returns the value 3365 of the "job-uri" attribute as part of the response to a create 3366 request. This MUST be an HTTP schemed URI, however the precise 3367 format of a Job URI is implementation dependent. 3369 For a description of this attribute and its relationship to the 3370 following "job-id" attribute, see the discussion in section 2.4 on 3371 "Object Identity". 3373 4.3.2 job-id (integer(1:MAX)) 3375 This MANDATORY attribute contains the ID of the job. The Printer, on 3376 receipt of a new job, generates an ID which identifies the new Job on 3377 that Printer. The Printer returns the value of the "job-id" attribute 3378 as part of the response to a create request. The 0 value is not used 3379 for compatibility with SNMP index values which cannot be 0. 3381 For a description of this attribute and its relationship to the 3382 previous "job-uri" attribute, see the discussion in section 2.4 on 3383 "Object Identity". 3385 4.3.3 job-more-info (uri) 3387 Similar to "printer-more-info", this attribute contains the URI 3388 referencing some resource with more information about this Job object, 3389 perhaps an HTML page containing information about the Job. 3391 4.3.4 job-name (name) 3393 This MANDATORY attribute is the name of the job. It is a name that is 3394 more user friendly than the "job-uri" attribute value. It does not 3395 need to be unique between Jobs. The Job's "job-name" attribute is set 3396 to the value supplied by the client in the "job-name" operation 3397 attribute in the create request (see Section 3.2.1.1). If, however, 3398 the "job-name" operation attribute is not supplied by the client in 3399 the create request, the Printer object, on creation of the Job, SHALL 3400 generate a name. The printer SHOULD generate the value of the Job's 3401 "job-name" attribute from the first of the following sources that 3402 produces a value: 1) the "document-name" operation attribute of the 3403 first (or only) document, 2) the "document-URI" attribute of the first 3405 Expires May 7, 1998 3406 (or only) document, or 3) any other piece of Job specific and/or 3407 Document Content information. 3409 4.3.5 job-originating-user-name (name) 3411 This MANDATORY attribute contains the name of the end user that 3412 submitted the print job. The Printer object sets this attribute to 3413 the most authenticated printable name that it can obtain from the 3414 authentication service over which the IPP operation was received. 3415 Only if such is not available, does the Printer object use the value 3416 supplied by the client in the "requesting-user-name" operation 3417 attribute of the create operation. See Section 3.1.5. 3419 Note: The Printer object needs to keep an internal originating user 3420 id of some form, typically as a credential of a principal, with the 3421 Job object. Since such an internal attribute is implementation- 3422 dependent and not of interest to clients, it is not specified as a Job 3423 Description attribute. This originating user id is used for 3424 authorization checks (if any) on all subsequent operation. 3426 4.3.6 job-state (type1 enum) 3428 This MANDATORY attribute identifies the current state of the job. 3429 Even though the IPP protocol defines eight values for job states, 3430 implementations only need to support those states which are 3431 appropriate for the particular implementation. In other words, a 3432 Printer supports only those job states implemented by the output 3433 device and available to the Printer object implementation. 3435 Standard values are: 3437 Values Symbolic Name and Description 3439 '3' 'pending': The job is a candidate to start processing, but 3440 is not yet processing. 3442 '4' 'pending-held': The job is not a candidate for processing 3443 for any number of reasons but will return to the 3444 'pending' state as soon as the reasons are no longer 3445 present. The job's "job-state-reason" attribute SHALL 3446 indicate why the job is no longer a candidate for 3447 processing. 3449 '5' 'processing': One or more of: 3451 Expires May 7, 1998 3452 1. the job is using, or is attempting to use, one or 3453 more purely software processes that are analyzing, 3454 creating, or interpreting a PDL, etc., 3455 2. the job is using, or is attempting to use, one or 3456 more hardware devices that are interpreting a PDL, 3457 making marks on a medium, and/or performing finishing, 3458 such as stapling, etc., 3459 3. the Printer object has made the job ready for 3460 printing, but the output device is not yet printing it, 3461 either because the job hasn't reached the output device 3462 or because the job is queued in the output device or 3463 some other spooler, awaiting the output device to print 3464 it. 3466 When the job is in the 'processing' state, the entire 3467 job state includes the detailed status represented in 3468 the printer's "printer-state", "printer-state-reasons", 3469 and "printer-state-message" attributes. 3470 Implementations MAY, though they NEED NOT, include 3471 additional values in the job's "job-state-reasons" 3472 attribute to indicate the progress of the job, such as 3473 adding the 'job-printing' value to indicate when the 3474 output device is actually making marks on paper and/or 3475 the 'processing-to-stop-point' value to indicate that 3476 the IPP object is in the process of canceling or 3477 aborting the job. Most implementations won't bother 3478 with this nuance. 3480 '6' 'processing-stopped': The job has stopped while processing 3481 for any number of reasons and will return to the 3482 'processing' state as soon as the reasons are no longer 3483 present. 3485 The job's "job-state-reason" attribute MAY indicate why 3486 the job has stopped processing. For example, if the 3487 output device is stopped, the 'printer-stopped' value 3488 MAY be included in the job's "job-state-reasons" 3489 attribute. 3491 Note: When an output device is stopped, the device 3492 usually indicates its condition in human readable form 3493 locally at the device. A client can obtain more 3494 complete device status remotely by querying the Printer 3495 object's "printer-state", "printer-state-reasons" and 3496 "printer-state-message" attributes. 3498 Expires May 7, 1998 3500 '7' 'canceled': The job has been canceled by a Cancel-Job 3501 operation and the Printer object has completed 3502 canceling the job and all job status attributes have 3503 reached their final values for the job. While the 3504 Printer object is canceling the job, the job remains in 3505 its current state, but the job's "job-state-reasons" 3506 attribute SHOULD contain the 'processing-to-stop-point' 3507 value and one of the 'canceled-by-user', 'canceled-by- 3508 operator', or 'canceled-at-device' value. When the job 3509 moves to the 'canceled' state, the 'processing-to- 3510 stop-point' value, if present, SHALL be removed, but 3511 the `canceled-by-xxx', if present, SHALL remain. 3513 '8' 'aborted': The job has been aborted by the system, usually 3514 while the job was in the 'processing' or 'processing- 3515 stopped' state and the Printer has completed aborting 3516 the job and all job status attributes have reached 3517 their final values for the job. While the Printer 3518 object is aborting the job, the job remains in its 3519 current state, but the job's "job-state-reasons" 3520 attribute SHOULD contain the 'processing-to-stop-point' 3521 and 'aborted-by-system' values. When the job moves to 3522 the 'aborted' state, the 'processing-to-stop-point' 3523 value, if present, SHALL be removed, but the 'aborted- 3524 by-system' value, if present, SHALL remain. 3526 '9' 'completed': The job has completed successfully or with 3527 warnings or errors after processing and all of the job 3528 media sheets have been successfully stacked in the 3529 appropriate output bin(s) and all job status attributes 3530 have reached their final values for the job. The job's 3531 "job-state-reasons" attribute SHOULD contain one of: 3532 'completed-successfully', 'completed-with-warnings', or 3533 'completed-with-errors' values. 3535 The final value for this attribute SHALL be one of: 'completed', 3536 'canceled', or 'aborted' before the Printer removes the job 3537 altogether. The length of time that jobs remain in the 'canceled', 3538 'aborted', and 'completed' states depends on implementation. 3540 The following figure shows the normal job state transitions. 3542 Expires May 7, 1998 3543 +----> canceled 3544 / 3545 +----> pending --------> processing ---------+------> completed 3546 | ^ ^ \ 3547 --->+ | | +----> aborted 3548 | v v / 3549 +----> pending-held processing-stopped ---+ 3551 Normally a job progresses from left to right. Other state transitions 3552 are unlikely, but are not forbidden. Not shown are the transitions to 3553 the 'canceled' state from the 'pending', 'pending-held', and 3554 'processing-stopped' states. 3556 Jobs reach one of the three terminal states: 'completed', 'canceled', 3557 or 'aborted', after the jobs have completed all activity, including 3558 stacking output media, after the jobs have completed all activity, and 3559 all job status attributes have reached their final values for the job. 3561 4.3.7 job-state-reasons (1setOf type2 keyword) 3563 This attribute provides additional information about the job's current 3564 state, i.e., information that augments the value of the job's "job- 3565 state" attribute. 3567 Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT 3568 implement them, even if (1) the output device supports the 3569 functionality represented by the reason and (2) is available to the 3570 Printer object implementation. These values MAY be used with any job 3571 state or states for which the reason makes sense. Furthermore, when 3572 implemented, the Printer SHALL return these values when the reason 3573 applies and SHALL NOT return them when the reason no longer applies 3574 whether the value of the Job's "job-state" attribute changed or not. 3575 When the Job does not have any reasons for being in its current state, 3576 the value of the Job's "job-state-reasons" attribute SHALL be 'none'. 3578 Note: While values cannot be added to the 'job-state' attribute 3579 without impacting deployed clients that take actions upon receiving 3580 "job-state" values, it is the intent that additional "job-state- 3581 reasons" values can be defined and registered without impacting such 3582 deployed clients. In other words, the "job-state-reasons" attribute 3583 is intended to be extensible. 3585 The following standard values are defined. For ease of understanding, 3586 the values are presented in the order in which the reasons are likely 3587 to occur (if implemented), starting with the 'job-incoming' value: 3589 'none': There are no reasons for the job's current state. 3591 Expires May 7, 1998 3592 'job-incoming': The CreateJob operation has been accepted by the 3593 Printer, but the Printer is expecting additional Send-Document 3594 and/or Send-URI operations and/or is accessing/accepting document 3595 data. 3596 'submission-interrupted': The job was not completely submitted for 3597 some unforeseen reason, such as: (1) the Printer has crashed 3598 before the job was closed by the client, (2) the Printer or the 3599 document transfer method has crashed in some non-recoverable way 3600 before the document data was entirely transferred to the Printer, 3601 (3) the client crashed or failed to close the job before the 3602 time-out period. 3603 'job-outgoing': The Printer is transmitting the job to the output 3604 device. 3605 'job-hold-until-specified': The value of the job's "job-hold- 3606 until" attribute was specified with a time period that is still 3607 in the future. The job SHALL NOT be a candidate for processing 3608 until this reason is removed and there are no other reasons to 3609 hold the job. 3610 'resources-are-not-ready': At least one of the resources needed by 3611 the job, such as media, fonts, resource objects, etc., is not 3612 ready on any of the physical printer's for which the job is a 3613 candidate. This condition MAY be detected when the job is 3614 accepted, or subsequently while the job is pending or processing, 3615 depending on implementation. The job may remain in its current 3616 state or be moved to the 'pending-held' state, depending on 3617 implementation and/or job scheduling policy. 3618 'printer-stopped-partly': The value of the Printer's "printer- 3619 state-reasons" attribute contains the value 'stopped-partly'. 3620 'printer-stopped': The value of the Printer's "printer-state" 3621 attribute is 'stopped'. 3622 'job-interpreting': Job is in the 'processing' state, but more 3623 specifically, the Printer is interpreting the document data. 3624 'job-queued': Job is in the 'processing' state, but more 3625 specifically, the Printer has queued the document data. 3626 'job-transforming': Job is in the 'processing' state, but more 3627 specifically, the Printer is interpreting document data and 3628 producing another electronic representation. 3629 'job-printing': The output device is marking media. This value is 3630 useful for Printers which spend a great deal of time processing 3631 (1) when no marking is happening and then want to show that 3632 marking is now happening or (2) when the job is in the process of 3633 being canceled or aborted while the job remains in the 3634 'processing' state, but the marking has not yet stopped so that 3635 impression or sheet counts are still increasing for the job. 3636 'job-canceled-by-user': The job was canceled by the owner of the 3637 job using the Cancel-Job request, i.e., by a user whose 3638 authenticated identity is the same as the value of the 3639 originating user that created the Job object, or by some other 3641 Expires May 7, 1998 3642 authorized end-user, such as a member of the job owner's security 3643 group. 3644 'job-canceled-by-operator': The job was canceled by the operator 3645 using the Cancel-Job request, i.e., by a user who has been 3646 authenticated as having operator privileges (whether local or 3647 remote). If the security policy is to allow anyone to cancel 3648 anyone's job, then this value may be used when the job is 3649 canceled by other than the owner of the job. For such a security 3650 policy, in effect, everyone is an operator as far as canceling 3651 jobs with IPP is concerned. 3652 'job-canceled-at-device': The job was canceled by an unidentified 3653 local user, i.e., a user at a console at the device. 3654 'aborted-by-system': The job (1) is in the process of being 3655 aborted, (2) has been aborted by the system and placed in the 3656 'aborted' state, or (3) has been aborted by the system and placed 3657 in the 'pending-held' state, so that a user or operator can 3658 manually try the job again. 3659 'processing-to-stop-point': The requester has issued a Cancel-job 3660 operation or the Printer object has aborted the job, but is still 3661 performing some actions on the job until a specified stop point 3662 occurs or job termination/cleanup is completed. 3664 This reason is recommended to be used in conjunction with the 3665 'processing' job state to indicate that the Printer object is 3666 still performing some actions on the job while the job remains in 3667 the 'processing' state. After all the job's job description 3668 attributes have stopped incrementing, the Printer object moves 3669 the job from the 'processing' state to the 'canceled' or 3670 'aborted' job states. 3672 'service-off-line': The Printer is off-line and accepting no jobs. 3673 All 'pending' jobs are put into the 'pending-held' state. This 3674 situation could be true if the service's or document transform's 3675 input is impaired or broken. 3676 'job-completed-successfully': The job completed successfully. 3677 'job-completed-with-warnings': The job completed with warnings. 3678 'job-completed-with-errors': The job completed with errors (and 3679 possibly warnings too). 3681 4.3.8 job-state-message (text) 3683 This attribute specifies information about the "job-state" and "job- 3684 state-reasons" attributes in human readable text. If the Printer 3685 object supports this attribute, the Printer object SHALL be able to 3686 generate this message in any of the natural languages identified by 3687 the Printer's "natural-language-supported" attribute (see the 3689 Expires May 7, 1998 3690 "attributes-natural-language" operation attribute specified in Section 3691 3.1.3.1). 3693 4.3.9 number-of-documents (integer(0:MAX)) 3695 This attribute indicates the number of documents in the job, i.e., the 3696 number of Send-Document, Send-URI, Print-Job, or Print-URI operations 3697 that the Printer has accepted for this job, regardless of whether the 3698 document data has reached the Printer object or not. 3700 Implementations supporting the OPTIONAL Create-Job/Send-Document/Send- 3701 URI operations SHOULD support this attribute so that clients can query 3702 the number of documents in each job. 3704 4.3.10 containing-printer-uri (uri) 3706 This MANDATORY attribute identifies the Printer object that contains 3707 this Job object. This attribute permits a client to query the Printer 3708 object to which the job was submitted given only the Job URI. 3710 4.3.11 output-device-assigned (name) 3712 This attribute identifies the output device to which the Printer 3713 object has assigned this job. If an output device implements an 3714 embedded Printer object, the Printer object NEED NOT set this 3715 attribute. If a print server implements a Printer object, the value 3716 MAY be empty (zero-length string) or not returned until the Printer 3717 object assigns an output device to the job. This attribute is 3718 particularly useful when a single Printer object support multiple 3719 devices (so called "fan-out"). 3721 4.3.12 time-at-creation (integer(0:MAX)) 3723 This attribute indicates the point in time at which the Job object was 3724 created. In order to populate this attribute, the Printer object uses 3725 the value in its "printer-up-time" attribute at the time the Job 3726 object is created. 3728 4.3.13 time-at-processing (integer(0:MAX)) 3730 This attribute indicates the point in time at which the Job object 3731 began processing. In order to populate this attribute, the Printer 3732 object uses the value in its "printer-up-time" attribute at the time 3734 Expires May 7, 1998 3735 the Job object is moved into the 'processing' state for the first 3736 time. 3738 4.3.14 time-at-completed (integer(0:MAX)) 3740 This attribute indicates the point in time at which the Job object 3741 completed (or was cancelled or aborted). In order to populate this 3742 attribute, the Printer object uses the value in its "printer-up-time" 3743 attribute at the time the Job object is moved into the 'completed' or 3744 'canceled' or 'aborted' state. 3746 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 3748 This attribute indicates the number of jobs that are "ahead" of this 3749 job in the relative chronological order of expected time to complete 3750 (i.e., the current scheduled order). For efficiency, it is only 3751 necessary to calculate this value when an operation is performed that 3752 requests this attribute. 3754 4.3.16 job-message-from-operator (text) 3756 This attribute provides a message from an operator, system 3757 administrator or "intelligent" process to indicate to the end user the 3758 reasons for modification or other management action taken on a job. 3760 4.3.17 job-k-octets-processed (integer(0:MAX)) 3762 This attribute specifies the number of octets processed in K octets, 3763 i.e., in units of 1024 octets. The value SHALL be rounded up, so that 3764 a job between 1 and 1024 octets inclusive SHALL be indicated as being 3765 1, 1025 to 2048 inclusive SHALL be 2, etc. 3767 For implementations where multiple copies are produced by the 3768 interpreter with only a single pass over the data, the final value 3769 SHALL be equal to the value of the "job-k-octets" attribute. For 3770 implementations where multiple copies are produced by the interpreter 3771 by processing the data for each copy, the final value SHALL be a 3772 multiple of the value of the "job-k-octets" attribute. 3774 Note: This attribute and the following two attributes ("job- 3775 impressions-completed" and "job-sheets-completed") are intended to be 3776 counters. That is, if the "job-state" is 'processing' or 'processing- 3777 stopped', this value is intended to contain the amount of the job that 3778 has been processed to the time at which the attributes are requested. 3780 Expires May 7, 1998 3781 For any of these three attributes, the Printer may choose to return 3782 the special value of 'unknown' rather than choose to not support the 3783 attribute at all. 3785 4.3.18 job-impressions-completed (integer(0:MAX)) 3787 This job attribute specifies the number of impressions completed for 3788 the job so far. For printing devices, the impressions completed 3789 includes interpreting, marking, and stacking the output. This 3790 attribute is intended to be a counter as in the Job Monitoring MIB. 3792 For implementations where multiple copies are produced by the 3793 interpreter with only a single pass over the data, the final value 3794 SHALL be equal to the value of the "job-impressions" attribute. For 3795 implementations where multiple copies are produced by the interpreter 3796 by processing the data for each copy, the final value SHALL be a 3797 multiple of the value of the "job-impressions" attribute. 3799 4.3.19 job-media-sheets-completed (integer(0:MAX)) 3801 This job attribute specifies the media-sheets completed marking and 3802 stacking for the entire job so far whether those sheets have been 3803 processed on one side or on both. This attribute is intended to be a 3804 counter as in the Job Monitoring MIB. 3806 4.3.20 attributes-charset (charset) 3808 This MANDATORY attribute is populated using the value in the client 3809 supplied "attributes-charset" attribute in the create request. It 3810 identifies the charset (coded character set and encoding method) used 3811 by any Job attributes with attribute syntax 'text' and 'name' that 3812 were supplied by the client in the create request. See Section 3.1.3 3813 for a complete description of the "attributes-charset" operation 3814 attribute. 3816 This attribute does not indicate the charset in which the 'text' and 3817 'name' values are stored internally in the Job object. The internal 3818 charset is implementation-defined. The IPP object SHALL convert from 3819 whatever the internal charset is to that being requested in an 3820 operation as specified in Section 3.1.3. 3822 Expires May 7, 1998 3823 4.3.21 attributes-natural-language (naturalLanguage) 3825 This MANDATORY attribute is populated using the value in the client 3826 supplied "attributes-natural-language" attribute in the create 3827 request. It identifies the natural language used for any Job 3828 attributes with attribute syntax 'text' and 'name' whether supplied by 3829 the client and/or returned by the Printer object. See Section 3.1.3 3830 for a complete description of the "attributes-natural-language" 3831 operation attribute. See Section 4.1.1 for how a Natural Language 3832 Override may be supplied explicitly for each 'text' and 'name' 3833 attribute value that differs from the value identified by the 3834 "attributes-natural-language" attribute. 3836 4.4 Printer Description Attributes 3838 These attributes form the attribute group called "printer- 3839 description". The following table summarizes these attributes, their 3840 syntax, and whether or not they are MANDATORY for a Printer object to 3841 support. If they are not MANDATORY, they are OPTIONAL. 3843 Note: How these attributes are set by an Administrator is outside the 3844 scope of this specification. 3846 Expires May 7, 1998 3847 +----------------------------+----------------------+----------------+ 3848 | Attribute | Syntax | MANDATORY? | 3849 +----------------------------+----------------------+----------------+ 3850 | printer-uri | uri | MANDATORY | 3851 +----------------------------+----------------------+----------------+ 3852 | printer-name | name | MANDATORY | 3853 +----------------------------+----------------------+----------------+ 3854 | printer-location | text | | 3855 +----------------------------+----------------------+----------------+ 3856 | printer-info | text | | 3857 +----------------------------+----------------------+----------------+ 3858 | printer-more-info | uri | | 3859 +----------------------------+----------------------+----------------+ 3860 | printer-driver-installer | uri | | 3861 +----------------------------+----------------------+----------------+ 3862 | printer-make-and-model | text | | 3863 +----------------------------+----------------------+----------------+ 3864 | printer-more-info- | uri | | 3865 | manufacturer | | | 3866 +----------------------------+----------------------+----------------+ 3867 | printer-state | type1 enum | MANDATORY | 3868 +----------------------------+----------------------+----------------+ 3869 | printer-state-reasons | 1setOf type2 keyword | | 3870 +----------------------------+----------------------+----------------+ 3871 | printer-state-message | text | | 3872 +----------------------------+----------------------+----------------+ 3873 | operations-supported | 1setOf type2 enum | MANDATORY | 3874 +----------------------------+----------------------+----------------+ 3875 | charset | charset | MANDATORY | 3876 +----------------------------+----------------------+----------------+ 3877 | charset-supported | 1setOf charset | MANDATORY | 3878 +----------------------------+----------------------+----------------+ 3879 | natural-language | naturalLanguage | MANDATORY | 3880 +----------------------------+----------------------+----------------+ 3881 | natural-language- | 1setOf | MANDATORY | 3882 | supported | naturalLanguage | | 3883 +----------------------------+----------------------+----------------+ 3884 | document-format | mimeMediaType | | 3885 +----------------------------+----------------------+----------------+ 3886 | document-format- | 1setOf | | 3887 | supported | mimeMediaType | | 3888 +----------------------------+----------------------+----------------+ 3889 | printer-is-accepting-jobs | boolean | MANDATORY | 3890 +----------------------------+----------------------+----------------+ 3891 | queued-job-count | integer (0:MAX) | | 3892 +----------------------------+----------------------+----------------+ 3893 | printer-message-from- | text | | 3894 | operator | | | 3896 Expires May 7, 1998 3897 +----------------------------+----------------------+----------------+ 3898 | color-supported | boolean | | 3899 +----------------------------+----------------------+----------------+ 3900 | pdl-override | type2 keyword | MANDATORY | 3901 +----------------------------+----------------------+----------------+ 3902 | printer-up-time | integer (1:MAX) | MANDATORY | 3903 +----------------------------+----------------------+----------------+ 3904 | printer-current-time | dateTime | | 3905 +----------------------------+----------------------+----------------+ 3906 | multiple-operation-time-out| integer (1:MAX) | | 3907 +----------------------------+----------------------+----------------+ 3909 4.4.1 printer-uri (uri) 3911 This MANDATORY Printer attribute contains the URI for the Printer 3912 object. An administrator determines a printer's URI and sets this 3913 attribute to that URI. This MUST be an HTTP schemed URI, however the 3914 precise format of a printer URI is implementation dependent. 3916 4.4.2 printer-name (name) 3918 This MANDATORY Printer attribute contains the name of the Printer 3919 object. It is a name that is more user friendly than the value of the 3920 "printer-uri" attribute. An administrator determines a printer's name 3921 and sets this attribute to that name. This name may be the last part 3922 of the printer's URI or it may be unrelated. In non-US-English 3923 locales, a name may contain characters that are not allowed in a URI. 3925 4.4.3 printer-location (text) 3927 This Printer attribute identifies the location of the device. This 3928 could include things like: "in Room 123A, second floor of building 3929 XYZ". 3931 4.4.4 printer-info (text) 3933 This Printer attribute identifies the descriptive information about 3934 this Printer object. This could include things like: "This printer 3935 can be used for printing color transparencies for HR presentations", 3936 or "Out of courtesy for others, please print only small (1-5 page) 3937 jobs at this printer", or even "This printer is going away on July 1, 3938 1997, please find a new printer". 3940 Expires May 7, 1998 3941 4.4.5 printer-more-info (uri) 3943 This Printer attribute contains a URI used to obtain more information 3944 about this specific Printer object. For example, this could be an 3945 HTTP type URI referencing an HTML page accessible to a Web Browser. 3946 The information obtained from this URI is intended for end user 3947 consumption. Features outside the scope of IPP can be accessed from 3948 this URI. The information is intended to be specific to this printer 3949 instance and site specific services (e.g. job pricing, services 3950 offered, end user assistance). The device manufacturer may initially 3951 populate this attribute. 3953 4.4.6 printer-driver-installer (uri) 3955 This Printer attribute contains a URI to use to locate the driver 3956 installer for this Printer object. This attribute is intended for 3957 consumption by automata. The mechanics of print driver installation 3958 is outside the scope of IPP. The device manufacturer may initially 3959 populate this attribute. 3961 4.4.7 printer-make-and-model (text) 3963 This Printer attribute identifies the make and model of the device. 3964 The device manufacturer may initially populate this attribute. 3966 4.4.8 printer-more-info-manufacturer (uri) 3968 This Printer attribute contains a URI used to obtain more information 3969 about this type of device. The information obtained from this URI is 3970 intended for end user consumption. Features outside the scope of IPP 3971 can be accessed from this URI (e.g., latest firmware, upgrades, print 3972 drivers, optional features available). The information is intended to 3973 be germane to this printer without regard to site specific 3974 modifications or services. The device manufacturer may initially 3975 populate this attribute. 3977 4.4.9 printer-state (type1 enum) 3979 This MANDATORY Printer attribute identifies the current state of the 3980 device. The "printer-state reasons" attribute augments the "printer- 3981 state" attribute to give more detailed information about the Printer 3982 in the given printer state. 3984 Expires May 7, 1998 3985 A Printer object need only update this attribute before responding to 3986 an operation which requests the attribute; the Printer object NEED NOT 3987 update this attribute continually, since asynchronous event 3988 notification is not part of IPP/1.0. A Printer NEED NOT implement all 3989 values if they are not applicable to a given implementation. 3991 The following standard values are defined: 3993 Value Symbolic Name and Description 3995 '3' 'idle': If a Printer receives a job (whose required 3996 resources are ready) while in this state, such a job 3997 SHALL transit into the processing state immediately. 3998 If the printer-state-reasons attribute contains any 3999 reasons, they SHALL be reasons that would not prevent a 4000 job from transiting into the processing state 4001 immediately, e.g., toner-low. Note: if a Printer 4002 controls more than one output device, the above 4003 definition implies that a Printer is idle if at least 4004 one output device is idle. 4006 '4' 'processing': If a Printer receives a job (whose required 4007 resources are ready) while in this state, such a job 4008 SHALL transit into the pending state immediately. Such 4009 a job SHALL transit into the processing state only 4010 after jobs ahead of it complete. If the printer-state- 4011 reasons attribute contains any reasons, they SHALL be 4012 reasons that do not prevent the current job from 4013 printing, e.g. toner-low. Note: if a Printer controls 4014 more than one output device, the above definition 4015 implies that a Printer is processing if at least one 4016 output device is processing, and none is idle. 4018 '5' 'stopped': If a Printer receives a job (whose required 4019 resources are ready) while in this state, such a job 4020 SHALL transit into the pending state immediately. Such 4021 a job SHALL transit into the processing state only 4022 after some human fixes the problem that stopped the 4023 printer and after jobs ahead of it complete printing. 4024 The "printer-state-reasons" attribute SHALL contain at 4025 least one reason, e.g. media-jam, which prevents it 4026 from either processing the current job or transitioning 4027 a pending job to the processing state. 4029 Note: if a Printer controls more than one output device, the above 4030 definition implies that a Printer is stopped only if 4031 all output devices are stopped. Also, it is tempting 4032 to define stopped as when a sufficient number of output 4034 Expires May 7, 1998 4035 devices are stopped and leave it to an implementation 4036 to define the sufficient number. But such a rule 4037 complicates the definition of stopped and processing. 4038 For example, with this alternate definition of stopped, 4039 a job can move from idle to processing without human 4040 intervention, even though the Printer is stopped. 4042 4.4.10 printer-state-reasons (1setOf type2 keyword) 4044 This Printer attribute supplies additional detail about the device's 4045 state. 4047 Each keyword value MAY have a suffix to indicate its level of 4048 severity. The three levels are: report (least severe), warning, and 4049 error (most severe). 4051 - '-report': This suffix indicates that the reason is a "report". 4052 An implementation may choose to omit some or all reports. Some 4053 reports specify finer granularity about the printer state; others 4054 serve as a precursor to a warning. A report SHALL contain nothing 4055 that could affect the printed output. 4056 - '-warning': This suffix indicates that the reason is a "warning". 4057 An implementation may choose to omit some or all warnings. 4058 Warnings serve as a precursor to an error. A warning SHALL 4059 contain nothing that prevents a job from completing, though in 4060 some cases the output may be of lower quality. 4061 - '-error': This suffix indicates that the reason is an "error". 4062 An implementation SHALL include all errors. If this attribute 4063 contains one or more errors, printer SHALL be in the stopped 4064 state. 4066 If the implementation does not add any one of the three suffixes, all 4067 parties SHALL assume that the reason is an "error". 4069 If a Printer object controls more than one output device, each value 4070 of this attribute MAY apply to one or more of the output devices. An 4071 error on one output device that does not stop the Printer object as a 4072 whole MAY appear as a warning in the Printer's "printer-state-reasons 4073 attribute". If the "printer-state" for such a Printer has a value of 4074 'stopped', then there MUST be an error reason among the values in the 4075 "printer-state-reasons" attribute. 4077 The following standard values are defined: 4079 'other': The device has detected an error other than one listed in 4080 this document. 4082 Expires May 7, 1998 4084 'none': There are not reasons. This state reason is semantically 4085 equivalent to "printer-state-reasons" without any value. 4086 'media-needed': A tray has run out of media. 4087 'media-jam': The device has a media jam. 4088 'paused': Someone has paused the Printer object. In this state, a 4089 Printer SHALL not produce printed output, but it SHALL perform 4090 other operations requested by a client. If a Printer had been 4091 printing a job when the Printer was paused, the Printer SHALL 4092 resume printing that job when the Printer is no longer paused and 4093 leave no evidence in the printed output of such a pause. 4094 'shutdown': Someone has removed a Printer object from service, and 4095 the device may be powered down or physical removed. In this 4096 state, a Printer object SHALL not produce printed output, and 4097 unless the Printer object is realized by a print server that is 4098 still active, the Printer object SHALL perform no other 4099 operations requested by a client, including returning this value. 4100 If a Printer object had been printing a job when it was shutdown, 4101 the Printer need not resume printing that job when the Printer is 4102 no longer shutdown. If the Printer resumes printing such a job, 4103 it may leave evidence in the printed output of such a shutdown, 4104 e.g. the part printed before the shutdown may be printed a second 4105 time after the shutdown. 4106 'connecting-to-device': The Printer object has scheduled a job on 4107 the output device and is in the process of connecting to a shared 4108 network output device (and might not be able to actually start 4109 printing the job for an arbitrarily long time depending on the 4110 usage of the output device by other servers on the network). 4111 'timed-out': The server was able to connect to the output device 4112 (or is always connected), but was unable to get a response from 4113 the output device. 4114 'stopping': The Printer object is in the process of stopping the 4115 device and will be stopped in a while. When the device is 4116 stopped, the Printer object will change the Printer object's 4117 state to 'stopped'. The 'stopping-warning' reason is never an 4118 error, even for a Printer with a single output device. When an 4119 output-device ceases accepting jobs, the Printer will have this 4120 reason while the output device completes printing. 4121 'stopped-partly': When a Printer object controls more than one 4122 output device, this reason indicates that one or more output 4123 devices are stopped. If the reason is a report, fewer than half 4124 of the output devices are stopped. If the reason is a warning, 4125 fewer than all of the output devices are stopped. 4126 'toner-low': The device is low on toner. 4127 'marker-supply-low': The device is low on marker supply (ink, 4128 paint, etc.). 4129 'spool-area-full': The limit of persistent storage allocated for 4130 spooling has been reached. 4131 'cover-open': One or more covers on the device are open. 4133 Expires May 7, 1998 4134 'interlock-open': One or more interlock devices on the printer are 4135 unlocked. 4136 'door-open': One or more doors on the device are open. 4137 'input-tray-missing': One or more input trays are not in the 4138 device. 4139 'media-low': At least one input tray is low on media. 4140 'media-empty': At least one input tray is empty. 4141 'output-tray-missing': One or more output trays are not in the 4142 device 4143 'output-area-almost-full': One or more output area is almost full 4144 (e.g. tray, stacker, collator). 4145 'output-area-full': One or more output area is full. (e.g. tray, 4146 stacker, collator) 4147 'marker-supply-low': The device is low on at least one marker 4148 supply. (e.g. toner, ink, ribbon) 4149 'marker-supply-empty: The device is out of at least one marker 4150 supply. (e.g. toner, ink, ribbon) 4151 'marker-waste-almost-full': The device marker supply waste 4152 receptacle is almost full. 4153 'marker-waste-full': The device marker supply waste receptacle is 4154 full. 4155 'fuser-over-temp': The fuser temperature is above normal. 4156 'fuser-under-temp': The fuser temperature is below normal. 4157 'opc-near-eol': The optical photo conductor is near end of life. 4158 'opc-life-over': The optical photo conductor is no longer 4159 functioning. 4160 'developer-low': The device is low on developer. 4161 'developer-empty: The device is out of developer. 4162 'interpreter-resource-unavailable': An interpreter resource is 4163 unavailable (i.e. font, form) 4165 4.4.11 printer-state-message (text) 4167 This Printer attribute specifies the additional information about the 4168 printer state and printer state reasons in human readable text. If 4169 the Printer object supports this attribute, the Printer object SHALL 4170 be able to generate this message in any of the natural languages 4171 identified by the Printer's "natural-language-supported" attribute 4172 (see the "attributes-natural-language" operation attribute specified 4173 in Section 3.1.3.1). 4175 4.4.12 operations-supported (1setOf type2 enum) 4177 This MANDATORY Printer attribute specifies the set of supported 4178 operations for this Printer object and contained Job objects. No 32- 4180 Expires May 7, 1998 4181 bit enum value for this attribute SHALL exceed 0x8FFF, since these 4182 values are passed in two octets in each Protocol request [IPP-PRO]. 4184 The following standard values are defined: 4186 Value Operation Name 4188 0x0000 reserved, not used 4189 0x0001 reserved, not used 4190 0x0002 Print-Job 4191 0x0003 Print-URI 4192 0x0004 Validate-Job 4193 0x0005 Create-Job 4194 0x0006 Send-Document 4195 0x0007 Send-URI 4196 0x0008 Cancel-Job 4197 0x0009 Get-Attributes 4198 0x000A Get-Jobs 4199 0x000B-0x3FFF reserved for future operations 4200 0x4000-0x8FFF reserved for private extensions 4202 This allows for certain vendors to implement private extensions that 4203 are guaranteed to not conflict with future registered extensions. 4204 However, there is no guarantee that two or more private extensions 4205 will not conflict. 4207 4.4.13 charset (charset) 4209 This MANDATORY Printer attribute identifies the charset that the 4210 Printer object has been configured to represent 'text' and 'name' 4211 Printer attributes that are set by the operator, system administrator, 4212 or manufacturer, i.e., for "printer-name" (name), "printer-location" 4213 (text), "printer-info" (text), and "printer-make-and-model" (text). 4214 Therefore, the value of the Printer object's "charset" attribute SHALL 4215 also be among the values of the Printer object's "charset-supported" 4216 attribute. 4218 4.4.14 charset-supported (1setOf charset) 4220 This MANDATORY Printer attribute identifies the set of charsets that 4221 the Printer and contained Job objects support in attributes with 4222 attribute syntax 'text' and 'name'. At least the value 'utf-8' SHALL 4223 be present, since IPP objects MUST support the UTF-8 [RFC2044] 4224 charset. If a Printer object supports a charset, it means that for 4225 all attributes of syntax 'text' and 'name' the IPP object SHALL (1) 4227 Expires May 7, 1998 4228 accept the charset in requests and return the charset in responses as 4229 needed. 4231 If more charsets than UTF-8 are supported, the IPP object SHALL 4232 perform charset conversion between the charsets as described in 4233 Section 3.2.1.2. 4235 4.4.15 natural-language (naturalLanguage) 4237 This MANDATORY Printer attribute identifies the natural language that 4238 the Printer object has been configured to represent 'text' and 'name' 4239 Printer attributes that are set by the operator, system administrator, 4240 or manufacturer, i.e., for "printer-name" (name), "printer-location" 4241 (text), "printer-info" (text), and "printer-make-and-model" (text). 4242 When returning these Printer attributes, the Printer object MAY return 4243 them in the configured natural language specified by this attribute, 4244 instead of the natural language requested by the client in the 4245 "attributes-natural-language" operation attribute. See Section 4246 3.1.3.1 for the specification of the OPTIONAL multiple natural 4247 language support. Therefore, the value of the Printer object's 4248 "natural-language" attribute SHALL also be among the values of the 4249 Printer object's "natural-language-supported" attribute. 4251 4.4.16 natural-language-supported (1setOf naturalLanguage) 4253 This MANDATORY Printer attribute identifies the natural language(s) 4254 that the Printer object and contained Job objects support in 4255 attributes with attribute syntax 'text' and 'name'. The natural 4256 language(s) supported depends on implementation and/or configuration. 4257 Unlike charsets, IPP objects SHALL accept in requests any natural 4258 language or any Natural Language Override whether supported or not. 4260 If a Printer object supports a natural language, it means that for any 4261 of the attributes for which the Printer or Job object generates 4262 messages, i.e., for the "job-state-message" and "printer-state- 4263 message" attributes and Operation Messages (see Section 3.1.4) in 4264 operation responses, the Printer and Job objects SHALL be able to 4265 generate messages in any of the Printer's supported natural languages. 4266 See section 3.1.3 for the specification of 'text' and 'name' 4267 attributes in operation requests and responses. 4269 Note: A Printer object that supports multiple natural languages, often 4270 has separate catalogs of messages, one for each natural language 4271 supported. 4273 Expires May 7, 1998 4274 4.4.17 document-format (mimeMediaType) 4276 This Printer attribute identifies the document format that the Printer 4277 object has been configured to assume of the client does not supply a 4278 "document-format" operation attribute in any of the operation requests 4279 that supply document data. The standard values for this attribute are 4280 Internet Media types (sometimes called MIME types). For further 4281 details see the description of the 'mimeMediaType' attribute syntax in 4282 Section 4.1.9. 4284 4.4.18 document format-supported (1setOf mimeMediaType) 4286 This Printer attribute identifies the set of document formats that the 4287 Printer object and contained Job objects can support. For further 4288 details see the description of the 'mimeMediaType' attribute syntax in 4289 Section 4.1.9. 4291 4.4.19 printer-is-accepting-jobs (boolean) 4293 This MANDATORY Printer attribute indicates whether the printer is 4294 currently accepting jobs, i.e., is accepting Print-Job, Print-URI, and 4295 Create-Job operations. If the value is 'true', the printer is 4296 accepting jobs. If the value is 'false', the printer is currently 4297 rejecting any jobs submitted to it. 4299 Note: This value is independent of the "printer-state" and "printer- 4300 state-reasons" attributes because its value does not affect the 4301 current job; rather it affects future jobs. This attribute may cause 4302 the Printer to reject jobs when the "printer-state" is 'idle' or it 4303 may cause the Printer to accepts jobs when the "printer-state" is 4304 'stopped'. 4306 4.4.20 queued-job-count (integer(0:MAX)) 4308 This Printer attribute contains a count of the number of jobs that are 4309 either 'pending', 'processing', 'pending-held', or 'processing- 4310 stopped' and is set by the Printer. 4312 4.4.21 printer-message-from-operator (text) 4314 This Printer attribute provides a message from an operator, system 4315 administrator or "intelligent" process to indicate to the end user 4316 information or status of the printer, such as why it is unavailable or 4317 when it is expected to be available. 4319 Expires May 7, 1998 4320 4.4.22 color-supported (boolean) 4322 This Printer attribute identifies whether the device is capable of any 4323 type of color printing at all. All document instructions having to do 4324 with color are embedded within the document PDL (none are external IPP 4325 attributes in IPP/1.0). 4327 4.4.23 reference-uri-schemes-supported (1setOf uriScheme) 4329 This Printer attribute specifies which URI schemes are supported for 4330 use in the "document-uri" operation attribute of the Print-URI or 4331 Send-URI operation. If a Printer object supports these optional 4332 operations, it MUST support the "reference-uri-schemes-supported" 4333 Printer attribute with at least the following schemed URI values: 4335 'ftp': The Printer object will use an FTP 'get' operation. If the 4336 URI does not indicate a name or password in the URI itself, the 4337 Printer object will use anonymous FTP generating (if prompted) a 4338 password. Since many FTP servers require that anonymous FTP 4339 logins supply a password in the form a valid Internet email 4340 address, the Printer object MUST be able to generate such a 4341 password (syntactically correct, yet perhaps semantically 4342 meaningless) if needed. 4344 The Printer object MAY OPTIONALLY support other URI schemes (see 4345 section 4.1.6). 4347 4.4.24 pdl-override (type2 keyword) 4349 This MANDATORY Printer attribute expresses the ability for a 4350 particular Printer implementation to either attempt to override 4351 document data instructions with IPP attributes or not. 4353 This attribute takes on the following values: 4355 - 'attempted': This value indicates that the Printer object 4356 attempts to make the IPP attribute values take precedence over 4357 embedded instructions in the document data, however there is no 4358 guarantee. 4359 - 'not-attempted': This value indicates that the Printer object 4360 makes no attempt to make the IPP attribute values take precedence 4361 over embedded instructions in the document data. 4363 Section 15 contains a full description of how this attribute interacts 4364 with and affects other IPP attributes, especially the "ipp-attribute- 4365 fidelity" attribute. 4367 Expires May 7, 1998 4368 4.4.25 printer-up-time (integer(1:MAX)) 4370 This MANDATORY Printer attribute indicates the amount of time (in 4371 seconds) that this instance of this Printer implementation has been up 4372 and running. This value is used to populate the Job attributes "time- 4373 at-creation", "time-at-processing", and "time-at-completed". These 4374 time values are all measured in seconds and all have meaning only 4375 relative to this attribute, "printer-up-time". The value is a 4376 monotonically increasing value starting from 1 when the Printer object 4377 is started-up (initialized, booted, etc.). 4379 If the Printer object goes down at some value 'n', and comes back up, 4380 the implementation MAY: 4382 1. Know how long it has been down, and resume at some value greater 4383 than 'n', or 4384 2. Restart from 1. 4386 In the first case, the Printer SHOULD not tweak any existing related 4387 Job attributes ("time-at-creation", "time-at-processing", and "time- 4388 at-completed"). In the second case, the Printer object SHOULD reset 4389 those attributes to 0. If a client queries a time-related Job 4390 attribute and finds the value to be 0, the client MUST assume that the 4391 Job was submitted in some life other than the Printer's current life. 4393 4.4.26 printer-current-time (dateTime) 4395 This Printer attribute indicates the current absolute wall-clock time. 4396 If an implementation supports this attribute, then a client could 4397 calculate the absolute wall-clock time each Job's "time-at-creation", 4398 "time-at-processing", and "time-at-completed" attributes by using both 4399 "printer-up-time" and this attribute, "printer-current-time". If an 4400 implementation does not support this attribute, a client can only 4401 calculate the relative time of certain events based on the MANDATORY 4402 "printer-up-time" attribute. 4404 4.4.27 multiple-operation-time-out (integer(1:MAX)) 4406 This Printer attributes identifies how long (in seconds) the Printer 4407 object waits for additional Send-Document or Send-URI operations to 4408 follow a still-open multi-document Job object before taking one of the 4409 actions indicated in section 3.3.1. 4411 Expires May 7, 1998 4412 5. Conformance 4414 This section describes conformance issues and requirements. This 4415 document introduces model entities such as objects, operations, 4416 attributes, and attribute values. These conformance sections describe 4417 the conformance requirements which apply to these model entities. 4419 5.1 Client Conformance Requirements 4421 A conforming client SHALL support all MANDATORY operations as defined 4422 in this document. For each attribute included in an operation 4423 request, a conforming client SHALL supply a value whose type and value 4424 syntax conforms to the requirements of the Model document as specified 4425 in Sections 3 and 4. A conforming client MAY supply any registered 4426 extensions and/or private extensions in an operation request, as long 4427 as they meet the requirements in Section 6. 4429 Otherwise, there are no conformance requirements placed on the user 4430 interfaces provided by IPP clients or their applications. For 4431 example, one application might not allow an end user to submit 4432 multiple documents per job, while another does. One application might 4433 first query a Printer object in order to supply a graphical user 4434 interface (GUI) dialogue box with supported and default values whereas 4435 a different implementation might not. 4437 When sending a Get-Attributes or create request, an IPP client NEED 4438 NOT supply any attributes that can OPTIONALLY be supplied by the 4439 client. 4441 A client SHALL be able to accept any of the attribute syntaxes defined 4442 in Section 4.1, including their full range, that may be returned to it 4443 in a response from a Printer object. For presentation purposes, 4444 truncation of long attribute values is not recommended. A recommended 4445 approach would be for the client implementation to allow the user to 4446 scroll through long attribute values. 4448 A query response may contain attributes and values that the client 4449 does not expect. Therefore, a client implementation MUST gracefully 4450 handle such responses and not refuse to inter-operate with a 4451 conforming Printer that is returning extended registered or private 4452 attributes and/or attribute values that conform to Section 6. Clients 4453 may choose to ignore any parameters, attributes, or values that it 4454 does not understand. 4456 Expires May 7, 1998 4457 5.2 IPP Object Conformance Requirements 4459 This section specifies the conformance requirements for conforming 4460 implementations with respect to objects, operations, and attributes. 4462 5.2.1 Objects 4464 Conforming implementations SHALL implement all of the model objects as 4465 defined in this specification in the indicated sections: 4467 Section 2.1 - Printer Object 4468 Section 2.2 - Job Object 4470 5.2.2 Operations 4472 Conforming Printer implementations SHALL implement all of the 4473 MANDATORY model operations, including mandatory responses, as defined 4474 in this specification in the indicated sections: 4476 For a Printer object: 4477 Print-Job (section 3.2.1) MANDATORY 4478 Print-URI (section 3.2.2) OPTIONAL 4479 Validate-Job (section 3.2.3) MANDATORY 4480 Create-Job (section 3.2.4) OPTIONAL 4481 Get-Attributes (section 3.2.5) MANDATORY 4482 Get-Jobs (section 3.2.6) MANDATORY 4484 For a Job object: 4485 Send-Document (section 3.3.1) OPTIONAL 4486 Send-URI (section 3.3.2) OPTIONAL 4487 Cancel-Job (section 3.3.3) MANDATORY 4488 Get-Attributes (section 3.3.4) MANDATORY 4490 Conforming IPP objects SHALL support all operation attributes and all 4491 values of such attributes. The following section on object attributes 4492 specifies the support required for object attributes. 4494 5.2.3 IPP Object Attributes 4496 Conforming IPP objects SHALL support all of the MANDATORY object 4497 attributes, as defined in this specification in the indicated 4498 sections. 4500 If an object supports an attribute, it SHALL support only those values 4501 specified in this document or through the extension mechanism 4503 Expires May 7, 1998 4504 described in section 5.2.4. It MAY support any non-empty subset of 4505 these values. That is, it SHALL support at least one of the specified 4506 values and at most all of them. 4508 5.2.4 Extensions 4510 A conforming IPP object MAY support registered extensions and private 4511 extensions, as long as they meet the requirements specified in Section 4512 6. 4514 For each attribute included in an operation response, a conforming IPP 4515 object SHALL return a value whose type and value syntax conforms to 4516 the requirement of the Model document as specified in Sections 3 and 4517 4. 4519 5.2.5 Attribute Syntaxes 4521 An IPP object SHALL be able to accept any of the attribute syntaxes 4522 defined in Section 4.1, including their full range, in any operation 4523 in which a client may supply attributes. Furthermore, an IPP object 4524 SHALL return attributes to the client in operation responses that 4525 conform to the syntax specified in Section 4.1, including their full 4526 range if supplied previously by a client. 4528 5.3 charset and Natural Language Requirements 4530 All clients and IPP objects SHALL support the 'utf-8' charset as 4531 defined in section 4.1.7. 4533 IPP objects MUST be able to accept any client request which correctly 4534 uses the "attributes-natural-language" operation attribute or the 4535 Natural Language Override method on any individual attribute whether 4536 or not the natural language is supported by the IPP object. If an IPP 4537 object supports a natural language, then it MUST be able to translate 4538 (perhaps by table lookup) all generated 'text' or 'name' attribute 4539 values into one of the supported languages (see section 3.1.3). That 4540 is, the IPP object that supports a natural language NEED NOT be a 4541 general purpose translator of any arbitrary 'text' or 'name' value 4542 supplied by the client into that natural language, however the object 4543 MUST be able to translate (automatically generate) any of its own 4544 attribute values and messages into that natural language. 4546 Expires May 7, 1998 4547 5.4 Security Conformance Requirements 4549 All clients and IPP objects (that support the HTTP/1.1 mapping as 4550 defined in the IPP/1.0 Protocol Specification [IPP-PRO]) SHALL support 4551 the two authentication mechanisms for HTTP/1.1 as defined in RFC 2068 4552 [RFC2068] and RFC 2069 [RFC2069]. 4554 If a client or an IPP object supports secure communication channels, 4555 then that client or IPP object MUST support SSL3. SSL3 allows for 4556 clients and objects to negotiate the required security level.. Since 4557 Transport Layer Security (TLS) plans to support backwards 4558 compatibility with SSL3, then all implementations that support SSL3 4559 will be conformant with TLS as soon as TLS becomes an IETF standards 4560 track specification. 4562 For a detailed discussion of security considerations, see section 8. 4564 6. IANA Considerations (registered and private extensions) 4566 This section describes how IPP can be extended. 4568 6.1 Typed Extensions 4570 This document uses prefixes to the "keyword" and "enum" basic syntax 4571 type in order to communicate extra information to the reader through 4572 its name. This extra information need not be represented in an 4573 implementation because it is unimportant to a client or Printer. The 4574 list below describes the prefixes and their meaning. 4576 "type1": The IPP standard must be revised to add a new keyword or 4577 a new enum. No private keywords or enums are allowed. 4579 "type2": Implementers can, at any time, add new keyword or enum 4580 values by proposing the specification to: 4582 - the IPP working group while it is still chartered, or 4583 - the Printer Working Group [PWG] after the IPP working group is 4584 disbanded 4586 who will review the proposal and work with IANA to register the 4587 additional keywords and enums. IANA assigns the number for enum 4588 values and keeps the registry of keywords and enums. 4590 "type3": Implementers can, at any time, add new keyword and enum 4591 values by submitting the complete specification directly to IANA, 4593 Expires May 7, 1998 4594 no IPP working group or Printer Working Group review is required. 4595 IANA assigns the number for enum values and keeps the registry of 4596 keywords and enums. IANA is responsible for ensuring new 4597 keywords are unique. 4599 "type4": Anyone (system administrators, system integrators, site 4600 managers, etc.) can, at any time, add new installation-defined 4601 values (keywords, but not enum values) to a local system. Care 4602 SHOULD be taken by the implementers to see that keywords do not 4603 conflict with other keywords defined by the standard or as 4604 defined by the implementing product. There is no registration or 4605 approval procedure for type 4 keywords. 4607 Note: Attributes with type 4 keywords also allow the 'name' 4608 attribute syntax for administrator defined names. Such names are 4609 not registered. 4611 By definition, each of the four types above assert some sort of 4612 registry or review process in order for extensions to be considered 4613 valid. Each higher level (1, 2, 3, 4) tends to be decreasingly less 4614 stringent than the previous level. Therefore, any typeN value MAY be 4615 registered using a process for some typeM where M is less than N, 4616 however such registration is NOT REQUIRED. For example, a type4 value 4617 MAY be registered in a type 1 manner (by being included in a future 4618 version of an IPP specification) however it is NOT REQUIRED. 4620 This specification defines keyword and enum values for all of the 4621 above types, including type4 keywords. 4623 For private (unregistered) keyword extensions, implementers SHOULD use 4624 keywords with a suitable distinguishing prefix, such as "xxx-" where 4625 xxx is the (lowercase) fully qualified company name registered with 4626 IANA for use in domain names [RFC1035]. For example, if the company 4627 XYZ Corp. had obtained the domain name "XYZ.com", then a private 4628 keyword 'abc' would be: 'xyz.com-abc'. 4630 Note: RFC 1035 [RFC1035] indicates that while upper and lower case 4631 letters are allowed in domain names, no significance is attached to 4632 the case. That is, two names with the same spelling but different 4633 case are to be treated as if identical. Also, the labels in a domain 4634 name must follow the rules for ARPANET host names: They must start 4635 with a letter, end with a letter or digit, and have as interior 4636 characters only letters, digits, and hyphen. Labels must be 63 4637 characters or less. Labels are separated by the "." character. 4639 For private (unregistered) enum extension, implementers SHALL use 4640 values in the reserved integer range which is 2**30 to 2**31-1. 4642 Expires May 7, 1998 4643 6.2 Registration of MIME types/sub-types for document-formats 4645 The "document-format" attribute's syntax is 'mimeMediaType'. This 4646 means that valid values are Internet Media Types. RFC 2045 [RFC2045] 4647 defines the syntax for valid Internet media types. IANA is the 4648 registry for all Internet media types. 4650 6.3 Attribute Extensibility 4652 Attribute names are type2 keywords. Therefore, new attributes may be 4653 registered and have the same status as attributes in this document by 4654 following the type2 extension rules. 4656 6.4 Attribute Syntax Extensibility 4658 Attribute syntaxes are like type2 enums. Therefore, new attribute 4659 syntaxes may be registered and have the same status as attribute 4660 syntaxes in this document by following the type2 extension rules. The 4661 value codes that identify each of the attribute syntaxes are assigned 4662 in the protocol specification [IPP-PRO]. 4664 7. Internationalization Considerations 4666 Some of the attributes have values that are text strings and names 4667 intended for human understanding rather than machine understanding 4668 (see the 'text' and 'name' attribute syntaxes in Sections 0 and 4669 4.1.2.) 4671 In each operation request, the client SHALL identify the charset and 4672 natural language of the request which affects each supplied 'text' and 4673 'name' attribute value and requests the charset and natural language 4674 for attributes returned by the Printer object in operation responses 4675 (as described in Section 3.1.3.1). In addition, the client MAY 4676 separately and individually identify the Natural Language Override of 4677 a supplied 'text' or 'name' attribute using the technique described 4678 for the 'text' attribute syntax in Section 4.1.1. 4680 The Printer object SHALL support the UTF-8 [RFC2044] charset in all 4681 'text' and 'name' attributes supported. If the Printer object 4682 supports more than the UTF-8 charset, the Printer object SHALL convert 4683 between them in order to return the requested charset to the client 4684 according to Section 3.1.3.2. If the Printer object supports more 4685 than one natural language, the Printer object SHOULD return 'text' and 4687 Expires May 7, 1998 4688 'name' values in the natural language requested for those that are 4689 generated by the Printer (see Section 3.1.3.1). 4691 For Printers that support multiple charsets and/or multiple natural 4692 languages in 'text' and 'name' attributes, different jobs may have 4693 been submitted in differing charsets and/or natural languages. All 4694 responses SHALL be returned in the charset requested by the client. 4695 However, the Get-Jobs operation provides for a mechanism to identify 4696 the differing natural languages with each job returned. 4698 The Printer object also has a configured charset and natural language 4699 attribute that it uses when the requested charset or natural language 4700 are not supported. The client can query the Printer object to 4701 determine the list of charsets and natural languages supported by the 4702 Printer object and what the Printer object's configured values are. 4703 See the "charset", "charset-supported", "natural-language", and 4704 "natural-language-supported" Printer description attributes. 4706 The 'text' and 'name' attributes specified in this version of this 4707 document (additional ones will be registered according to the 4708 procedures in Section 6) are: 4710 Operation Attributes: 4711 job-name (name) 4712 document-name (name) 4714 Job Attributes: 4715 job-name (name) 4716 job-originating-user-name (name) 4717 job-state-message (text) 4718 job-message-from-operator (text) 4720 Printer Attributes: 4721 printer-name (name) 4722 printer-location (text) 4723 printer-info (text) 4724 printer-make-and-model (text) 4725 printer-state-message (text) 4726 printer-message-from-operator (text) 4728 8. Security Considerations 4730 It is required that the IPP be able to operate within a secure 4731 environment. IPP attempts to make use of existing security protocols 4732 and services, wherever possible. Examples of such services include the 4733 Digest Access Authentication in HTTP 1.1 [RFC2069] and the Transport 4735 Expires May 7, 1998 4736 Layer Security (TLS) services, currently under development in the 4737 IETF. 4739 It is difficult to anticipate the security risks that might exist in 4740 any given IPP environment. For example, if IPP is used within a given 4741 corporation over a private network, the risks of exposing document 4742 data may be low enough that the corporation will choose not to use 4743 encryption on that data. However, if the connection between the 4744 client and the IPP object is over a public network, the client may 4745 wish to protect the content of the information during transmission 4746 through the network with encryption. 4748 Furthermore, the value of the information being printed may vary from 4749 one use of the protocol to the next. Printing payroll checks, for 4750 example, would have a different value than printing public information 4751 from a file. In addition, there is always the threat of a virus 4752 attack. However, there are no known viruses or potential for viruses 4753 that are self-propagated throughout distributed printing environments. 4754 Therefore, IPP implementations may choose to implement protection 4755 against printer-damaging print jobs. 4757 Since the security levels or the specific threats that any given IPP 4758 print administrator may be concerned with cannot be anticipated, IPP 4759 MUST be capable of operating with different security mechanisms and 4760 security policies as required by the individual installation. Security 4761 policies might vary from very strong, to very weak, to none at all, 4762 and corresponding security mechanisms will be required. 4764 The initial security needs of IPP are derived from two primary 4765 considerations: 4767 - First, the printing environments envisioned for IPP include 4768 configurations where the client, the Printer, and the document(s) 4769 to be printed may all exist in different security domains. When 4770 objects are in different security domains the requirements for 4771 authentication and message protection are much stronger than when 4772 they are in the same domain. 4774 - Second, the sensitivity and value of the content being printed 4775 will vary. For example, a publicly available document does not 4776 require the same level of privacy that a payroll document 4777 requires. There are at least two parties that have an interest in 4778 the value of the information being printed, the person asking to 4779 have the information printed and the person who originated the 4780 information. This brings into the picture the need to worry about 4781 copyrights and protection of the content. 4783 Expires May 7, 1998 4785 The following sections describe specific security attacks for IPP 4786 environments. Where examples are provided they should be considered 4787 illustrative of the environment and not an exhaustive set. Not all of 4788 these environments will necessarily be addressed in initial 4789 implementations of IPP. 4791 8.1 Client and Printer in the Same Security Domain 4793 This environment is typical of internal networks where traditional 4794 office workers print the output of personal productivity applications 4795 on shared work-group printers, or where batch applications print their 4796 output on large production printers. Although the identity of the user 4797 may be trusted in this environment, a user might want to protect the 4798 content of a document against such attacks as eavesdropping, replaying 4799 or tampering. 4801 8.2 Client and Printer in Different Security Domains 4803 Examples of this environment include printing a document created by 4804 the client on a publicly available printer, such as at a commercial 4805 print shop; or printing a document remotely on a business partner's 4806 printer. This latter operation is functionally equivalent to sending 4807 the document to the business partner as a facsimile. Printing 4808 sensitive information on a Printer in a different security domain 4809 requires strong security measures. In this environment authentication 4810 of the printer is required as well as protection against unauthorized 4811 use of print resources. Since the document crosses security domains, 4812 protection against eavesdropping and document tampering are also 4813 required. It will also be important in this environment to protect 4814 Printers against "spamming" and malicious document content code. 4816 8.3 Print by Reference 4818 When the document is not stored on the client, printing can be done by 4819 reference. That is, the print request can contain a reference, or 4820 pointer, to the document instead of the actual document itself. If the 4821 client physically gets the document before it prints it, then this 4822 defaults to one of the previous cases. 4824 8.3.1 Unprotected Documents 4826 In many cases, documents to be printed are literally available to 4827 anyone. Documents, such as Internet Draft which are stored on 4829 Expires May 7, 1998 4830 anonymous FTP sites, are good examples of unprotected documents. No 4831 security mechanisms are required to protect access to these documents. 4833 8.3.2 Protected Documents 4835 Clearly, there are cases where the nature of a document requires that 4836 access to it be protected by some authentication and/or authorization 4837 mechanism, or where the right to print the document must be paid for. 4838 This would be the case for sensitive or confidential information, or 4839 where documents are copyrighted or sold for profit. Unauthorized 4840 access to content is a major concern in this environment. Protection 4841 against eavesdropping, document tampering and unauthorized access to 4842 the document are also concerns if the content is sensitive. 4844 8.4 Common Security Scenarios 4846 As discussed earlier, we cannot anticipate the security levels or the 4847 specific threats that any given IPP print administrator may be 4848 concerned with. Security policies might vary from very strong, to 4849 very weak, to none at all. In this section we will describe what we 4850 believe to be four common usage scenarios. 4852 1) No security at all 4853 2) Message protection during transmission 4854 3) Client authentication and authorization 4855 4) Mutual authentication, authorization, and message protection 4857 8.4.1 No Security 4859 If the printer requires no authorization and the client wants no 4860 message protection the client can send the print job, i.e., the job 4861 content and the job attributes without invoking any security 4862 mechanisms. The printer will print the job for the client. Print by 4863 reference also works well in this environment as long as no security 4864 mechanisms are required to access the documents to be printed. 4866 8.4.2 Message Protection During Transmission 4868 There are two types of security that could be used to provide message 4869 protection. These are channel security and object security. In the 4870 first case, the channel can be made secure using the Transport Layer 4871 Security (TLS) protocol, currently under development in the IETF. In 4872 the case of object security, each object is encrypted and sent over 4874 Expires May 7, 1998 4875 either a secure or insecure channel. The recipient has the 4876 corresponding key to decrypt the object and get the content. Several 4877 object security mechanisms are currently under study in the IETF. IPP 4878 neither mandates the use of these object security mechanisms nor does 4879 it prohibit the use of them. IPP will define a recommended mechanism 4880 for channel security, which is deemed more suitable to meet the IPP 4881 requirements. 4883 8.4.3 Client Authentication and Authorization 4885 This scenario requires client authentication. The authenticated user 4886 ID may be used for authorization purposes, and may be encrypted by the 4887 lower security layer. TLS supports both one sided and mutual 4888 authentication. IPP does not mandate the use of any specific 4889 authorization mechanism (see section 3.1.5.1). 4891 8.4.4 Mutual Authentication, Authorization and Message Protection 4893 This scenario requires mutual authentication and message protection. 4894 TLS can be used for this security feature in these configurations. 4896 8.5 Recommended Security Mechanisms 4898 IPP requires all IPP clients and Printers to support the 4899 authentication features in HTTP/1.1 and SSL3 with null security. This 4900 allows all implementation to be compliant with TLS as TLS become 4901 stabilized. 4903 IPP implementations should provide a range of security options to meet 4904 the needs of different installations and user populations. Many of 4905 the security services that are enabled at a given site will be done so 4906 by a site administrator. The mechanisms used to establish these 4907 services and to define user IDs and passwords to the system are 4908 implementation defined and outside the scope of IPP. 4910 The security protocol used by a particular IPP operation will depend 4911 upon the security services implemented on the Printer, the security 4912 policy established by a site administrator, and the selection made by 4913 the client. This requires that the correct handshake messages be 4914 passed to invoke the selected security service. These are described 4915 in the references for each security mechanism and are normally invoked 4916 by the client. The "security-mechanisms-supported" and "printer-more- 4917 info" attributes can be queried to help the end user know what to 4918 expect in terms of security. These attributes should also appear in 4919 the directory entry for each Printer. 4921 Expires May 7, 1998 4922 Note: When utilizing HTTP/1.1 as a transport for IPP [IPP-PRO], the 4923 security considerations outlined in HTTP/1.1 apply. When set by an 4924 administrator, IPP objects MUST generate a 401 (Unauthorized) response 4925 code to request client authentication and IPP clients should correctly 4926 respond with the proper Authorization header. Both basic 4927 authentication and digest authentication flavors of authentication 4928 should be supported. The administrator chooses which type(s) of 4929 authentication to accept. Digest authentication is a more secure 4930 method and is always preferred to basic authentication. 4932 For secure communication (privacy in particular), IPP should be run 4933 using a secure communications channel. TLS provides secure 4934 communications channels and provides for mutual authentication. The 4935 secure communications channel must be initiated prior to running the 4936 IPP protocol. There is no mechanism for bootstrapping a secure 4937 communication channel from within the IPP protocol itself. 4939 It is possible to combine a secure communication channel with either 4940 Basic or Digest Authentication. 4942 9. References 4944 [ASCII] 4945 Coded Character Set - 7-bit American Standard Code for 4946 Information Interchange (ASCII), ANSI X3.4-1986. This standard is 4947 the specification of the US-ASCII charset. 4949 [CS-POL] 4950 H. Alvestrand, "IETF Policy on Character Sets and Languages, work 4951 in progress , August 29, 4952 1997. 4954 [HTPP] 4955 J. Barnett, K. Carter, R. DeBry, "Initial Draft - Hypertext 4956 Printing Protocol - HTPP/1.0", October 1996, 4957 ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/ overview.ps.gz 4959 [IANA-CS] 4960 IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- 4961 notes/iana/assignments/character-sets 4963 [IANA-CSa] 4964 N. Freed, J. Postel: IANA CharSet Registration Procedures, Work 4965 in Progress (draft-freed-charset-reg-02.txt). 4967 Expires May 7, 1998 4969 [IANA-MT] 4970 IANA Registry of Media Types: ftp://ftp.isi.edu/in- 4971 notes/iana/assignments/media-types/ 4973 [IPP-PRO] 4974 Herriot, R., Butler, S., Moore, P., Tuner, R., " Internet 4975 Printing Protocol/1.0: Protocol Specifications", draft-ipp-pro- 4976 03.txt, November, 1997. 4978 [IPP-RAT] 4979 Zilles, S., "Rationale for the Structure and Model and Protocol 4980 for the Internet Printing Protocol", draft-ipp-rat-01.txt, 4981 November, 1997. 4983 [IPP-REQ] 4984 Wright, D., "Requirements for an Internet Printing Protocol", 4985 draft-ipp-req-01.txt, November, 1997. 4987 [ISO10646-1] 4988 ISO/IEC 10646-1:1993, "Information technology -- Universal 4989 Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture 4990 and Basic Multilingual Plane, JTC1/SC2." 4992 [ISO8859-1] 4993 ISO/IEC 8859-1:1987, "Information technology -- 8-bit One-Byte 4994 Coded Character Set - Part 1: Latin Alphabet Nr 1", 1987, 4995 JTC1/SC2. 4997 [ISO10175] 4998 ISO/IEC 10175 Document Printing Application (DPA), June 1996. 5000 [LDPA] 5001 T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. Taylor, P. 5002 Zehler, "LDPA - Lightweight Document Printing Application", 5003 October 1996, 5004 ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz 5006 [P1387.4] 5007 Kirk, M. (editor), POSIX System Administration - Part 4: Printing 5008 Interfaces, POSIX 1387.4 D8, 1994. 5010 [PSIS] Herriot, R. (editor), X/Open A Printing System 5011 Interoperability Specification (PSIS), August 1995. 5013 [PWG] 5014 Printer Working Group, http://www.pwg.org. 5016 Expires May 7, 1998 5018 [RFC1035] 5019 P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND 5020 SPECIFICATION", RFC 1035, November 1987. 5022 [RFC1179] 5023 McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 5024 1179, August 1990. 5026 [RFC1630] 5027 T. Berners-Lee, "Universal Resource Identifiers in WWW: A 5028 Unifying Syntax for the Expression of Names and Addresses of 5029 Objects on the Network as used in the World-Wide Web", RFC 1630, 5030 June 1994. 5032 [RFC1738] 5033 Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource 5034 Locators (URL)", RFC 1738, December, 1994. 5036 [RFC1759] 5037 Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 5038 J., "Printer MIB", RFC 1759, March 1995. 5040 [RFC1766] 5041 H. Alvestrand, " Tags for the Identification of Languages", RFC 5042 1766, March 1995. 5044 [RFC2044] 5045 F. Yergeau, "UTF-8, a transformation format of Unicode and ISO 5046 10646", RFC 2044, October 1996. 5048 [RFC2068] 5049 R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee, 5050 "Hypertext Transfer Protocol - HTTP/1.1", RFC 2068, January 1997 5052 [RFC2069] 5053 J. Franks, P. Hallam-Baker, J. Hostetler, P. Leach, A. Luotonen, 5054 E. Sink, L. Stewart, "An Extension to HTTP: Digest Access 5055 Authentication", RFC-2069, Jan 1997. 5057 [RFC2045] 5058 N. Fried, N. Borenstein, ", Multipurpose Internet Mail Extensions 5059 (MIME) Part One: Format of Internet Message Bodies " RFC 2045, 5060 November 1996. 5062 [RFC2046] 5063 Multipurpose Internet Mail Extensions (MIME) Part Two: Media 5064 Types. N. Freed & N. Borenstein. November 1996. (Obsoletes 5065 RFC1521, RFC1522, RFC1590), RFC 2046. 5067 Expires May 7, 1998 5069 [RFC2048] 5070 Multipurpose Internet Mail Extension (MIME) Part Four: 5071 Registration Procedures. N. Freed, J. Klensin & J. Postel. 5072 November 1996. (Format: TXT=45033 bytes) (Obsoletes RFC1521, 5073 RFC1522, RFC1590) (Also BCP0013), RFC 2048. 5075 [RFC2119] 5076 S. Bradner, "Key words for use in RFCs to Indicate Requirement 5077 Levels", RFC 2119 , March 1997 5079 [SWP] 5080 P. Moore, B. Jahromi, S. Butler, "Simple Web Printing SWP/1.0", 5081 May 7, 1997, ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf 5083 10. Copyright Notice 5085 This document and translations of it may be copied and furnished to 5086 others, and derivative works that comment on or otherwise explain it 5087 or assist in its implementation may be prepared, copied, published and 5088 distributed, in whole or in part, without restriction of any kind, 5089 provided that the above copyright notice and this paragraph are 5090 included on all such copies and derivative works. However, this 5091 document itself may not be modified in any way, such as by removing 5092 the copyright notice or references to the Internet Society or other 5093 Internet organizations, except as needed for the purpose of 5094 developing Internet standards in which case the procedures for 5095 copyrights defined in the Internet Standards process must be followed, 5096 or as required to translate it into languages other than English. 5098 The limited permissions granted above are perpetual and will not be 5099 revoked by the Internet Society or its successors or assigns. 5101 This document and the information contained herein is provided on an 5102 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 5103 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT 5104 NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN 5105 WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 5106 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 5108 11. Author's Address 5110 Scott A. Isaacson (Editor) 5111 Novell, Inc. 5112 122 E 1700 S 5114 Expires May 7, 1998 5115 Provo, UT 84606 5117 Phone: 801-861-7366 5118 Fax: 801-861-2517 5119 EMail: scott_isaacson@novell.com 5121 Tom Hastings 5122 Xerox Corporation 5123 701 S. Aviation Blvd. 5124 El Segundo, CA 90245 5126 Phone: 310-333-6413 5127 Fax: 310-333-5514 5128 EMail: hastings@cp10.es.xerox.com 5130 Robert Herriot 5131 Sun Microsystems Inc. 5132 901 San Antonio.Road, MPK-17 5133 Palo Alto, CA 94303 5135 Phone: 650-786-8995 5136 Fax: 650-786-7077 5137 Email: robert.herriot@eng.sun.com 5139 Roger deBry 5140 HUC/003G 5141 IBM Corporation 5142 P.O. Box 1900 5143 Boulder, CO 80301-9191 5145 Phone: (303) 924-4080 5146 Fax: (303) 924-9889 5147 Email: debry@vnet.ibm.com 5149 Patrick Powell 5150 San Diego State University 5151 9475 Chesapeake Dr., Suite D 5152 San Diego, CA 95123 5154 Phone: (619) 874-6543 5155 Fax: (619) 279-8424 5156 Email: papowell@sdsu.edu 5158 IPP Mailing List: ipp@pwg.org 5159 IPP Mailing List Subscription: ipp-request@pwg.org 5160 IPP Web Page: http://www.pwg.org/ipp/ 5162 Other Participants: 5164 Expires May 7, 1998 5165 Chuck Adams - Tektronix 5166 Jeff Barnett - IBM 5167 Ron Bergman - Dataproducts Corp. 5168 Sylvan Butler, HP 5169 Keith Carter, IBM Corporation 5170 Jeff Copeland - QMS 5171 Andy Davidson - Tektronix 5172 Mabry Dozier - QMS 5173 Lee Farrell - Canon Information Systems 5174 Steve Gebert - IBM 5175 Babek Jahromi, Microsoft 5176 David Kellerman - Northlake Software 5177 Rick Landau - Digital 5178 Greg LeClair - Epson 5179 Harry Lewis - IBM 5180 Pete Loya - HP 5181 Ray Lutz - Cognisys 5182 Mike MacKay, Novell, Inc. 5183 Carl-Uno Manros, Xerox, Corp. 5184 Jay Martin - Underscore 5185 Stan McConnell - Xerox 5186 Ira McDonald, High North Inc. 5187 Paul Moore, Microsoft 5188 Tetsuya Morita - Ricoh 5189 Yuichi Niwa - Ricoh 5190 Pat Nogay - IBM 5191 Ron Norton - Printronics 5192 Bob Pentecost - HP 5193 Rob Rhoads - Intel 5194 David Roach - Unisys 5195 Stuart Rowley, Kyocera 5196 Hiroyuki Sato - Canon 5197 Bob Setterbo - Adobe 5198 Devon Taylor, Novell, Inc. 5199 Mike Timperman - Lexmark 5200 Randy Turner - Sharp 5201 Atsushi Yuki - Kyocera 5202 Lloyd Young - Lexmark 5203 Bill Wagner - DPI 5204 Jim Walker - DAZEL 5205 Chris Wellens - Interworking Labs 5206 Rob Whittle - Novell 5207 Don Wright - Lexmark 5208 Peter Zehler, Xerox, Corp. 5209 Steve Zilles, Adobe 5211 Expires May 7, 1998 5213 12. APPENDIX A: Terminology 5215 This specification uses the terminology defined in this section. 5217 12.1 Conformance Terminology 5219 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 5220 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 5221 document are to be interpreted as described in RFC 2119 [RFC2119]. The 5222 sections below reiterate these definitions and include some additional 5223 ones. 5225 12.1.1 MUST 5227 This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", means 5228 that the definition is an absolute requirement of the specification. 5230 12.1.2 MUST NOT 5232 This phrase, or the phrase "SHALL NOT", means that the definition is 5233 an absolute prohibition of the specification. 5235 12.1.3 SHOULD 5237 This word, or the adjective "RECOMMENDED", means that there may exist 5238 valid reasons in particular circumstances to ignore a particular item, 5239 but the full implications must be understood and carefully weighed 5240 before choosing a different course. 5242 12.1.4 SHOULD NOT 5244 This phrase, or the phrase "NOT RECOMMENDED" means that there may 5245 exist valid reasons in particular circumstances when the particular 5246 behavior is acceptable or even useful, but the full implications 5247 should be understood and the case carefully weighed before 5248 implementing any behavior described with this label. 5250 Expires May 7, 1998 5251 12.1.5 MAY 5253 This word, or the adjective "OPTIONAL", means that an item is truly 5254 optional. One vendor may choose to include the item because a 5255 particular marketplace requires it or because the vendor feels that it 5256 enhances the product while another vendor may omit the same item. An 5257 implementation which does not include a particular option MUST be 5258 prepared to inter-operate with another implementation which does 5259 include the option, though perhaps with reduced functionality. In the 5260 same vein an implementation which does include a particular option 5261 MUST be prepared to inter-operate with another implementation which 5262 does not include the option (except, of course, for the feature the 5263 option provides.) 5265 12.1.6 NEED NOT 5267 The verb "NEED NOT" indicates an action that the subject of the 5268 sentence does not have to implement in order to claim conformance to 5269 the standard. The verb "NEED NOT" is used instead of "MAY NOT" since 5270 "MAY NOT" sounds like a prohibition. 5272 12.2 Model Terminology 5274 12.2.1 Keyword 5276 Keywords are used within this document as identifiers of semantic 5277 entities within the abstract model (see section 4.1.3). Attribute 5278 names, some attribute values, attribute syntaxes, and attribute group 5279 names are represented as keywords. 5281 12.2.2 Attributes 5283 An attribute is an item of information that is associated with an 5284 instance of an IPP object. An attribute consists of an attribute name 5285 and one or more attribute values. Each attribute has a specific 5286 attribute syntax. All object attributes are defined in section 4 and 5287 all operation attributes are defined in section 3. 5289 Job Template Attributes described in section 4.2. The client 5290 optionally supplies Job Template attributes in a create request 5291 (operation requests that create Job objects). The Printer object has 5292 associated attributes which define supported and default values for 5293 the Printer. 5295 Expires May 7, 1998 5296 12.2.2.1 Attribute Name 5298 Each attribute is uniquely identified in this document by its 5299 attribute name. An attribute name is a keyword. The keyword 5300 attribute name is given in the section header describing that 5301 attribute. In running text in this document, attribute names are 5302 indicated inside double quotation marks (") where the quotation marks 5303 are not part of the keyword itself. 5305 12.2.2.2 Attribute Group Name 5307 Related attributes are grouped into named groups. The name of the 5308 group is a keyword. The group name may be used in place of naming all 5309 the attributes in the group explicitly. Attribute groups are defined 5310 in section 3. 5312 12.2.2.3 Attribute Value 5314 Each attribute has one or more values. Attribute values are 5315 represented in the syntax type specified for that attribute. In 5316 running text in this document, attribute values are indicated inside 5317 single quotation marks ('), whether their attribute syntax is keyword, 5318 integer, text, etc. where the quotation marks are not part of the 5319 value itself. 5321 12.2.2.4 Attribute Syntax 5323 Each attribute is defined using an explicit syntax type. In this 5324 document, each syntax type is defined as a keyword with specific 5325 meaning. The protocol specification document [IPP-PRO] indicates the 5326 actual "on-the-wire" encoding rules for each syntax type. Attribute 5327 syntax types are defined in section 4.1. 5329 12.2.3 Supports 5331 By definition, a Printer object supports an attribute only if that 5332 Printer object responds with the corresponding attribute populated 5333 with some value(s) in a response to a query for that attribute. A 5334 Printer object supports an attribute value if the value is one of the 5335 Printer object's "supported values" attributes. The device behind a 5336 Printer object may exhibit a behavior that corresponds to some IPP 5337 attribute, but if the Printer object, when queried for that attribute, 5338 doesn't respond with the attribute, then as far as IPP is concerned, 5339 that implementation does not support that feature. If the Printer 5341 Expires May 7, 1998 5342 object's "xxx-supported" attribute is not populated with a particular 5343 value (even if that value is a legal value for that attribute), then 5344 that Printer object does not support that particular value. 5346 A conforming implementation SHALL support all MANDATORY attributes. 5347 However, even for MANDATORY attributes, conformance to IPP does not 5348 mandate that all implementations support all possible values 5349 representing all possible job processing behaviors and features. For 5350 example, if a given instance of a Printer supports only certain 5351 document formats, then that Printer responds with the "document- 5352 format-supported" attribute populated with a set of values, possibly 5353 only one, taken from the entire set of possible values defined for 5354 that attribute. This limited set of values represents the Printer's 5355 set of supported document formats. Supporting an attribute and some 5356 set of values for that attribute enables IPP end users to be aware of 5357 and make use of those features associated with that attribute and 5358 those values. If an implementation chooses to not support an 5359 attribute or some specific value, then IPP end users would have no 5360 ability to make use of that feature within the context of IPP itself. 5361 However, due to existing practice and legacy systems which are not IPP 5362 aware, there might be some other mechanism outside the scope of IPP to 5363 control or request the "unsupported" feature (such as embedded 5364 instructions within the document data itself). 5366 For example, consider the "finishings-supported" attribute. 5368 1) If a Printer object is not physically capable of stapling, the 5369 "finishings-supported" attribute MUST NOT be populated with the 5370 value of 'staple'. 5371 2) A Printer object is physically capable of stapling, however an 5372 implementation chooses not to support stapling in the IPP 5373 "finishings" attribute. In this case, 'staple' SHALL NOT be a 5374 value in the "finishings-supported" Printer object attribute. 5375 Without support for the value 'staple', an IPP end user would 5376 have no means within the protocol itself to request that a Job be 5377 stapled. However, an existing document data formatter might be 5378 able to request that the document be stapled directly with an 5379 embedded instruction within the document data. In this case, the 5380 IPP implementation does not "support" stapling, however the end 5381 user is still able to have some control over the stapling of the 5382 completed job. 5383 3) A Printer object is physically capable of stapling, and an 5384 implementation chooses to support stapling in the IPP 5385 "finishings" attribute. In this case, 'staple' SHALL be a value 5386 in the "finishings-supported" Printer object attribute. Doing so, 5387 would enable end users to be aware of and make use of the 5388 stapling feature using IPP attributes. 5390 Expires May 7, 1998 5392 Even though support for Job Template attributes by a Printer object is 5393 OPTIONAL, it is RECOMMENDED that if the device behind a Printer object 5394 is capable of realizing any feature or function that corresponds to an 5395 IPP attribute and some associated value, then that implementation 5396 SHOULD support that IPP attribute and value. 5398 The set of values in any of the supported value attributes is set 5399 (populated) by some administrative process or automatic sensing 5400 mechanism that is outside the scope of IPP. For administrative policy 5401 and control reasons, an administrator may choose to make only a subset 5402 of possible values visible to the end user. In this case, the real 5403 output device behind the IPP Printer abstraction may be capable of a 5404 certain feature, however an administrator is specifying that access to 5405 that feature not be exposed to the end user through the IPP protocol. 5406 Also, since a Printer object may represent a logical print device (not 5407 just a physical device) the actual process for supporting a value is 5408 undefined and left up to the implementation. However, if a Printer 5409 object supports a value, some manual human action may be needed to 5410 realize the semantic action associated with the value, but no end user 5411 action is required. 5413 For example, if one of the values in the "finishings-supported" 5414 attribute is 'staple', the actual process might be an automatic staple 5415 action by a physical device controlled by some command sent to the 5416 device. Or, the actual process of stapling might be a manual action 5417 by an operator at an operator attended Printer object. 5419 For another example of how supported attributes function, consider an 5420 system administrator who desires to control all print jobs so that no 5421 job sheets are printed in order to conserve paper. To force no job 5422 sheets, the system administrator sets the only supported value for the 5423 "job-sheets-supported" attribute to 'none'. In this case, if a client 5424 requests anything except 'none', the create request is rejected or the 5425 "job-sheets" value is ignored (depending on the value of "ipp- 5426 attribute-fidelity"). To force the use of job start/end sheets on all 5427 jobs, the administrator does not include the value 'none' in the "job- 5428 sheets-supported" attribute. In this case, if a client requests 5429 'none', the create request is rejected or the "job-sheets" value is 5430 ignored (again depending on the value of "ipp-attribute-fidelity"). 5432 12.2.4 print-stream page 5434 A "print-stream page" is a page according to the definition of pages 5435 in the language used to express the document data. 5437 Expires May 7, 1998 5438 12.2.5 impression 5440 An "impression" is the image (possibly many print-stream pages in 5441 different configurations) imposed onto a single media page. 5443 13. APPENDIX B: Status Codes and Suggested Status Code Messages 5445 This section defines status code enum keywords and values that are 5446 used to provide semantic information on the results of an operation 5447 request. Each operation response MUST include a status code. For 5448 error type status codes, the response MAY also contain a status 5449 message that provides a short textual description of the status. The 5450 status code is intended for use by automata, and the status message is 5451 intended for the human end user. Since the status message is an 5452 OPTIONAL component of the operation response, an IPP application 5453 (i.e., a browser, GUI, print driver or gateway) is NOT REQUIRED to 5454 examine or display the status message, since it MAY not be returned to 5455 the application. 5457 The prefix of the status keyword defines the class of response as 5458 follows: 5460 "informational" - Request received, continuing process 5461 "successful" - The action was successfully received, understood, 5462 and accepted 5463 "redirection" - Further action must be taken in order to complete 5464 the request 5465 "client-error" - The request contains bad syntax or cannot be 5466 fulfilled 5467 "server-error" - The IPP object failed to fulfill an apparently 5468 valid request 5470 Since IPP status codes are type2 enums, they are extensible. IPP 5471 clients are NOT REQUIRED to understand the meaning of all registered 5472 status codes, though such understanding is obviously desirable. 5473 However, applications SHALL understand the class of any status code, 5474 as indicated by the prefix, and treat any unrecognized response as 5475 being equivalent to the first status code of that class, with the 5476 exception that an unrecognized response shall not be cached. For 5477 example, if an unrecognized status code of "client-error-xxx-yyy" is 5478 received by the client, it can safely assume that there was something 5479 wrong with its request and treat the response as if it had received a 5480 "client-error-bad-request" status code. In such cases, IPP 5481 applications SHOULD present the OPTIONAL message (if present) to the 5482 end user since the message is likely to contain human readable 5484 Expires May 7, 1998 5485 information which will help to explain the unusual status. The name 5486 of the enum is the suggested status message for US English. 5488 The status code values range from 0x0000 to 0x7FFF. The value ranges 5489 for each status code class are as follows: 5491 "successful" - 0x0000 to 0x00FF 5492 "informational" - 0x0100 to 0x01FF 5493 "redirection" - 0x0200 to 0x02FF 5494 "client-error" - 0x0400 to 0x04FF 5495 "server-error" - 0x0500 to 0x05FF 5497 The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 5498 to 5) is reserved for private use within each status code class. 5499 Values 0x0600 to 0x7FFF are reserved for future assignment and SHALL 5500 not be used. 5502 13.1 Status Codes 5504 Each status code is described below. Section 13.2 contains a table 5505 that indicates which status codes apply to which operations. Section 5506 15.3 describes the algorithm for processing IPP attributes for the 5507 create and Job-Validate operations, including returning status codes. 5509 13.1.1 Informational 5511 This class of status code indicates a provisional response and is to 5512 be used for informational purposes only. 5514 There are no status codes defined in IPP/1.0 for this class of status 5515 code. 5517 13.1.2 Successful Status Codes 5519 This class of status code indicates that the client's request was 5520 successfully received, understood, and accepted. 5522 13.1.2.1 successful-ok (0x0000) 5524 The request has succeeded. 5526 Expires May 7, 1998 5527 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) 5529 The create or Validate-Job request has succeeded, but some attributes 5530 were ignored or unsupported values were substituted with supported 5531 values in order to process the job without rejecting it. See section 5532 3.2.1.2 that describes the Unsupported Attributes returned in a Print- 5533 Job Response and section that describes the processing of attributes. 5535 13.1.2.3 successful-ok-conflicting-attributes (0x0002) 5537 The create or Validate-Job request has succeeded, but some attribute 5538 values conflicted with the values of other attributes. These 5539 conflicting values were either (1) substituted with (supported) values 5540 or (2) the attributes were removed in order to process the job without 5541 rejecting it. See section 3.2.1.2 that describes the Unsupported 5542 Attributes returned in a Print-Job Response. 5544 13.1.3 Redirection Status Codes 5546 This class of status code indicates that further action needs to be 5547 taken to fulfill the request. 5549 There are no status codes defined in IPP/1.0 for this class of status 5550 code. 5552 13.1.4 Client Error Status Codes 5554 This class of status code is intended for cases in which the client 5555 seems to have erred. The IPP object SHOULD return a message 5556 containing an explanation of the error situation and whether it is a 5557 temporary or permanent condition. 5559 13.1.4.1 client-error-bad-request (0x0400) 5561 The request could not be understood by the IPP object due to malformed 5562 syntax. The IPP application SHOULD NOT repeat the request without 5563 modifications. 5565 13.1.4.2 client-error-forbidden (0x0401) 5567 The IPP object understood the request, but is refusing to fulfill it. 5568 Additional authentication information or authorization credentials 5569 will not help and the request SHOULD NOT be repeated. This status 5571 Expires May 7, 1998 5572 code is commonly used when the IPP object does not wish to reveal 5573 exactly why the request has been refused or when no other response is 5574 applicable. 5576 13.1.4.3 client-error-not-authenticated (0x0402) 5578 The request requires user authentication. The IPP client may repeat 5579 the request with suitable authentication information. If the request 5580 already included authentication information, then this status code 5581 indicates that authorization has been refused for those credentials. 5582 If this response contains the same challenge as the prior response, 5583 and the user agent has already attempted authentication at least once, 5584 then the response message may contain relevant diagnostic information. 5585 This status codes reveals more information than "client-error- 5586 forbidden". 5588 13.1.4.4 client-error-not-authorized (0x0403) 5590 The requester is not authorized to perform the request. Additional 5591 authentication information or authorization credentials will not help 5592 and the request SHOULD NOT be repeated. This status code is used when 5593 the IPP object wishes to reveal that the authentication information is 5594 understandable, however, the requester is explicitly not authorized to 5595 perform the request. This status codes reveals more information than 5596 "client-error-forbidden" and "client-error-not-authenticated". 5598 13.1.4.5 client-error-not-possible (0x0404) 5600 This status code is used when the request is for something that can 5601 not happen. For example, there might be a request to cancel a job 5602 that has already been canceled or aborted by the system. The IPP 5603 client SHOULD NOT repeat the request. 5605 13.1.4.6 client-error-timeout (0x0405) 5607 The client did not produce a request within the time that the IPP 5608 object was prepared to wait. For example, a client issued a Create- 5609 Job operation and then, after a long period of time, issued a Send- 5610 Document operation and this error status code was returned in response 5611 to the Send-Document request (see section 3.3.1). The IPP object 5612 might have been forced to clean up resources that had been held for 5613 the waiting additional Documents. The IPP object was forced to close 5614 the Job since the client took too long. The client SHOULD NOT repeat 5615 the request without modifications. 5617 Expires May 7, 1998 5618 13.1.4.7 client-error-not-found (0x0406) 5620 The IPP object has not found anything matching the request URI. No 5621 indication is given of whether the condition is temporary or 5622 permanent. For example, a client with an old reference to a Job (a 5623 URI) tries to cancel the Job, however in the mean time the Job might 5624 have been completed and all record of it at the Printer has been 5625 deleted. This status code, 'client-error-not-found' is returned 5626 indicating that the referenced Job can not be found. This error 5627 status code is also used when a client supplies a URI as a reference 5628 to the document data in either a Print-URI or Send-URI operation 5629 however the document can not be found. 5631 In practice, an IPP application should avoid a not found situation by 5632 first querying and presenting a list of valid Printer URIs and Job 5633 URIs to the end-user. 5635 13.1.4.8 client-error-gone (0x0407) 5637 The requested object is no longer available and no forwarding address 5638 is known. This condition should be considered permanent. Clients 5639 with link editing capabilities should delete references to the request 5640 URI after user approval. If the IPP object does not know or has no 5641 facility to determine, whether or not the condition is permanent, the 5642 status code "client-error-not-found" should be used instead. 5644 This response is primarily intended to assist the task of maintenance 5645 by notifying the recipient that the resource is intentionally 5646 unavailable and that the IPP object administrator desires that remote 5647 links to that resource be removed. It is not necessary to mark all 5648 permanently unavailable resources as "gone" or to keep the mark for 5649 any length of time -- that is left to the discretion of the IPP object 5650 administrator. 5652 13.1.4.9 client-error-request-entity-too-large (0x0408) 5654 The IPP object is refusing to process a request because the request 5655 entity is larger than the IPP object is willing or able to process. 5656 An IPP Printer returns this status code when it limits the size of 5657 print jobs and it receives a print job that exceeds that limit or when 5658 the attributes are so many that their encoding causes the request 5659 entity to exceed IPP object capacity. 5661 Expires May 7, 1998 5662 13.1.4.10 client-error-request-uri-too-long (0x0409) 5664 The IPP object is refusing to service the request because the request 5665 URI is longer than the IPP object is willing to interpret. This rare 5666 condition is only likely to occur when a client has improperly 5667 submitted a request with long query information (e.g. an IPP 5668 application allows an end-user to enter an invalid URI), when the 5669 client has descended into a URI "black hole" of redirection (e.g., a 5670 redirected URI prefix that points to a suffix of itself), or when the 5671 IPP object is under attack by a client attempting to exploit security 5672 holes present in some IPP objects using fixed-length buffers for 5673 reading or manipulating the Request-URI. 5675 13.1.4.11 client-error-document-format-not-supported (0x040A) 5677 The IPP object is refusing to service the request because the document 5678 data is in a format, as specified in the "document-format" operation 5679 attribute, that is not supported by the Printer object. This error is 5680 returned independent of the client-supplied "ipp-attribute-fidelity". 5681 The Printer object SHALL return this status code, even if there are 5682 other attributes that are not supported as well, since this error is a 5683 bigger problem than with Job Template attributes. 5685 13.1.4.12 client-error-attribute-not-supported (0x040B) 5687 In a create request, if the Printer object does not support one or 5688 more attributes or attribute values supplied in the request and the 5689 client supplied the "ipp-attributes-fidelity" operation attribute with 5690 the 'true' value, the Printer object shall return this status code. 5691 For example, if the request indicates 'iso-a4' media, but that media 5692 type is not supported by the Printer object. Or, if the client 5693 supplies an optional attribute and the attribute itself is not even 5694 supported by the Printer. If the "ipp-attribute-fidelity" attribute 5695 is 'false', the Printer SHALL ignore or substitute values for 5696 unsupported attributes and values rather than reject the request and 5697 return this status code. 5699 For any operation where a client requests attributes (such as a Get- 5700 Jobs or Get-Attributes operation), if the IPP object does not support 5701 one or more of the requested attributes, the IPP object simply ignores 5702 the unsupported requested attributes and processes the request as if 5703 they had not been supplied, rather than returning this status code. 5705 Expires May 7, 1998 5706 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) 5708 The type of the client supplied URI in a Print-URI or a Send-URI 5709 operation is not supported. 5711 13.1.4.14 client-error-charset-not-supported (0x040D) 5713 For any operation, if the IPP Printer does not support the charset 5714 supplied by the client in the "attributes-charset" operation 5715 attribute, the Printer SHALL reject the operation and return this 5716 status (see Section 3.1.3.1). 5718 13.1.4.15 client-error-conflicting-attributes (0x040E) 5720 The create or Validate-Job request is rejected because some attribute 5721 values conflicted with the values of other attributes. See section 5722 3.2.1.2 that describes the Unsupported Attributes returned in a Print- 5723 Job Response. 5725 13.1.5 Server Error Status Codes 5727 This class of status codes indicates cases in which the IPP object is 5728 aware that it has erred or is incapable of performing the request. 5729 The IPP object SHOULD include a message containing an explanation of 5730 the error situation, and whether it is a temporary or permanent 5731 condition. 5733 13.1.5.1 server-error-internal-error (0x0500) 5735 The IPP object encountered an unexpected condition that prevented it 5736 from fulfilling the request. This error status code differs from 5737 "server-error-temporary-error" in that it implies a more permanent 5738 type of internal error. It also differs from "server-error-device- 5739 error" in that it implies an unexpected condition (unlike a paper-jam 5740 or out-of-toner problem which is undesirable but expected). This 5741 error status code indicates that probably some knowledgeable human 5742 intervention is required. 5744 13.1.5.2 server-error-operation-not-supported (0x0501) 5746 The IPP object does not support the functionality required to fulfill 5747 the request. This is the appropriate response when the IPP object does 5748 not recognize an operation or is not capable of supporting it. 5750 Expires May 7, 1998 5751 13.1.5.3 server-error-service-unavailable (0x0502) 5753 The IPP object is currently unable to handle the request due to a 5754 temporary overloading or maintenance of the IPP object. The 5755 implication is that this is a temporary condition which will be 5756 alleviated after some delay. If known, the length of the delay may be 5757 indicated in the message. If no delay is given, the IPP application 5758 should handle the response as it would for a "server-error-temporary- 5759 internal-error" response. If the condition is more permanent, the 5760 error status codes "client-error-gone" or "client-error-not-found" 5761 could be used. 5763 13.1.5.4 server-error-version-not-supported (0x0503) 5765 The IPP object does not support, or refuses to support, the IPP 5766 protocol version that was used in the request message. The IPP object 5767 is indicating that it is unable or unwilling to complete the request 5768 using the same version as supplied in the request other than with this 5769 error message. The response should contain a Message describing why 5770 that version is not supported and what other versions are supported by 5771 that IPP object. 5773 A conforming IPP/1.0 client SHALL specify the valid version ('1.0') on 5774 each request. A conforming IPP/1.0 object SHALL NOT return this 5775 status code to a conforming IPP/1.0 client. An IPP object SHALL 5776 return this status code to a non-conforming IPP client. 5778 13.1.5.5 server-error-device-error (0x0504) 5780 A printer error, such as a paper jam, occurs while the IPP object 5781 processes a Print or Send operation. The response contains the true 5782 Job Status (the values of the "job-state" and "job-state-reasons" 5783 attributes). Additional information can be returned in the optional 5784 "job-state-message" attribute value or in the OPTIONAL status message 5785 that describes the error in more detail. This error status code is 5786 only returned in situations where the Printer is unable to accept the 5787 create request because of such a device error. For example, if the 5788 Printer is unable to spool, and can only accept one job at a time, the 5789 reason it might reject a create request is that the printer currently 5790 has a paper jam. In many cases however, where the Printer object can 5791 accept the request even though the Printer has some error condition, 5792 the 'successful-ok' status code will be returned. In such a case, the 5793 client would look at the returned Job Object Attributes or later query 5794 the Printer to determine its state and state reasons. 5796 Expires May 7, 1998 5797 13.1.5.6 server-error-temporary-error (0x0505) 5799 A temporary error such as a buffer full write error, a memory overflow 5800 (i.e. the document data exceeds the memory of the Printer), or a disk 5801 full condition, occurs while the IPP Printer processes an operation. 5802 The client MAY try the unmodified request again at some later point in 5803 time with an expectation that the temporary internal error condition 5804 may have been cleared. Alternatively, as an implementation option, a 5805 Printer object MAY delay the response until the temporary condition is 5806 cleared so that no error is returned. 5808 Expires May 7, 1998 5809 13.2 Status Codes for IPP Operations 5811 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 5812 SU = Send-URI, V = Validate-Job, GA = Get-Attributes, GJ = Get-Jobs 5813 C = Cancel-Job 5815 IPP Operations 5816 IPP Status Keyword PJ PU CJ SD SU V GA GJ C 5817 ------------------ -- -- -- -- -- - -- -- - 5818 successful-ok x x x x x x x x x 5819 successful-ok-ignored-or-substituted- x x x x x x 5820 attributes 5821 successful-ok-conflicting-attributes x x x x x x 5822 client-error-bad-request x x x x x x x x x 5823 client-error-forbidden x x x x x x x x x 5824 client-error-not-authenticated x x x x x x x x x 5825 client-error-not-authorized x x x x x x x x x 5826 client-error-not-possible x x x x x x x x x 5827 client-error-timeout x x x x x x x x x 5828 client-error-not-found x x x x x x x x x 5829 client-error-gone x x x x x x x x x 5830 client-error-request-entity-too-large x x x x x x x x x 5831 client-error-request-uri-too-long x x x x x x x x x 5832 client-error-document-format-not- x x x x 5833 supported 5834 client-error-attribute-not- x x x x 5835 supported 5836 client-error-uri-scheme-not-supported x x 5837 client-error-charset-not-supported x x x x x x x x x 5838 client-error-conflicting-attributes x x x x x x 5839 server-error-internal-error x x x x x x x x x 5840 server-error-operation-not-supported x x x x 5841 server-error-service-unavailable x x x x x x x x x 5842 server-error-version-not-supported x x x x x x x x x 5843 server-error-device-error x x x x x 5844 server-error-temporary-error x x x x x 5846 14. APPENDIX C: "media" keyword values 5848 Standard keyword values are taken from several sources. 5850 Standard values are defined (taken from DPA[ISO10175] and the Printer 5851 MIB[RFC1759]): 5853 Expires May 7, 1998 5854 'default': The default medium for the output device 5855 'iso-a4-white': Specifies the ISO A4 white medium 5856 'iso-a4-colored': Specifies the ISO A4 colored medium 5857 'iso-a4-transparent' Specifies the ISO A4 transparent medium 5858 'iso-a3-white': Specifies the ISO A3 white medium 5859 'iso-a3-colored': Specifies the ISO A3 colored medium 5860 'iso-a5-white': Specifies the ISO A5 white medium 5861 'iso-a5-colored': Specifies the ISO A5 colored medium 5862 'iso-b4-white': Specifies the ISO B4 white medium 5863 'iso-b4-colored': Specifies the ISO B4 colored medium 5864 'iso-b5-white': Specifies the ISO B5 white medium 5865 'iso-b5-colored': Specifies the ISO B5 colored medium 5866 'jis-b4-white': Specifies the JIS B4 white medium 5867 'jis-b4-colored': Specifies the JIS B4 colored medium 5868 'jis-b5-white': Specifies the JIS B5 white medium 5869 'jis-b5-colored': Specifies the JIS B5 colored medium 5871 The following standard values are defined for North American media: 5873 'na-letter-white': Specifies the North American letter white medium 5874 'na-letter-colored': Specifies the North American letter colored 5875 medium 5876 'na-letter-transparent': Specifies the North American letter 5877 transparent medium 5878 'na-legal-white': Specifies the North American legal white medium 5879 'na-legal-colored': Specifies the North American legal colored 5880 medium 5882 The following standard values are defined for envelopes: 5884 'iso-b4-envelope': Specifies the ISO B4 envelope medium 5885 'iso-b5-envelope': Specifies the ISO B5 envelope medium 5886 'iso-c3-envelope': Specifies the ISO C3 envelope medium 5887 'iso-c4-envelope': Specifies the ISO C4 envelope medium 5888 'iso-c5-envelope': Specifies the ISO C5 envelope medium 5889 'iso-c6-envelope': Specifies the ISO C6 envelope medium 5890 'iso-designated-long-envelope': Specifies the ISO Designated Long 5891 envelope medium 5892 'na-10x13-envelope': Specifies the North American 10x13 envelope 5893 medium 5894 'na-9x12-envelope': Specifies the North American 9x12 envelope 5895 medium 5896 'monarch-envelope': Specifies the Monarch envelope 5897 'na-number-10-envelope': Specifies the North American number 10 5898 business envelope medium 5899 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 5901 Expires May 7, 1998 5902 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 5903 'na-10x14-envelope': Specifies the North American 10x14 inch 5904 envelope 5905 'na-number-9-envelope': Specifies the North American number 9 5906 business envelope 5907 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 5908 'na-10x15-envelope': Specifies the North American 10x15 inch 5909 envelope 5911 The following standard values are defined for the less commonly used 5912 media (white-only): 5914 'executive-white': Specifies the white executive medium 5915 'folio-white': Specifies the folio white medium 5916 'invoice-white': Specifies the white invoice medium 5917 'ledger-white': Specifies the white ledger medium 5918 'quarto-white': Specified the white quarto medium 5919 'iso-a0-white': Specifies the ISO A0 white medium 5920 'iso-a1-white': Specifies the ISO A1 white medium 5921 'iso-a2-white': Specifies the ISO A2 white medium 5922 'iso-a6-white': Specifies the ISO A6 white medium 5923 'iso-a7-white': Specifies the ISO A7 white medium 5924 'iso-a8-white': Specifies the ISO A8 white medium 5925 'iso-a9-white': Specifies the ISO A9 white medium 5926 'iso-10-white': Specifies the ISO A10 white medium 5927 'iso-b0-white': Specifies the ISO B0 white medium 5928 'iso-b1-white': Specifies the ISO B1 white medium 5929 'iso-b2-white': Specifies the ISO B2 white medium 5930 'iso-b3-white': Specifies the ISO B3 white medium 5931 'iso-b6-white': Specifies the ISO B6 white medium 5932 'iso-b7-white': Specifies the ISO B7 white medium 5933 'iso-b8-white': Specifies the ISO B8 white medium 5934 'iso-b9-white': Specifies the ISO B9 white medium 5935 'iso-b10-white': Specifies the ISO B10 white medium 5936 'jis-b0-white': Specifies the JIS B0 white medium 5937 'jis-b1-white': Specifies the JIS B1 white medium 5938 'jis-b2-white': Specifies the JIS B2 white medium 5939 'jis-b3-white': Specifies the JIS B3 white medium 5940 'jis-b6-white': Specifies the JIS B6 white medium 5941 'jis-b7-white': Specifies the JIS B7 white medium 5942 'jis-b8-white': Specifies the JIS B8 white medium 5943 'jis-b9-white': Specifies the JIS B9 white medium 5944 'jis-b10-white': Specifies the JIS B10 white medium 5946 The following standard values are defined for engineering media: 5948 Expires May 7, 1998 5949 'a': Specifies the engineering A size medium 5950 'b': Specifies the engineering B size medium 5951 'c': Specifies the engineering C size medium 5952 'd': Specifies the engineering D size medium 5953 'e': Specifies the engineering E size medium 5955 The following standard values are defined for input-trays (from ISO 5956 DPA and the Printer MIB): 5958 'top': The top input tray in the printer. 5959 'middle': The middle input tray in the printer. 5960 'bottom': The bottom input tray in the printer. 5961 'envelope': The envelope input tray in the printer. 5962 'manual': The manual feed input tray in the printer. 5963 'large-capacity': The large capacity input tray in the printer. 5964 'main': The main input tray 5965 'side': The side input tray 5967 The following standard values are defined for media sizes (from ISO 5968 DPA): 5970 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined 5971 in ISO 216 5972 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 5973 ISO 216 5974 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 5975 ISO 216 5976 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 5977 ISO 216 5978 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 5979 ISO 216 5980 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 5981 ISO 216 5982 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 5983 ISO 216 5984 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 5985 ISO 216 5986 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in 5987 ISO 216 5988 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in 5989 ISO 216 5990 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 5991 ISO 216 5992 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined 5993 in ISO 216 5995 Expires May 7, 1998 5997 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined 5998 in ISO 216 5999 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 6000 ISO 216 6001 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 6002 ISO 216 6003 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 6004 ISO 216 6005 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 6006 ISO 216 6007 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 6008 ISO 216 6009 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 6010 ISO 216 6011 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in 6012 ISO 216 6013 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in 6014 ISO 216 6015 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 6016 ISO 216 6017 'na-letter': Specifies the North American letter size: 8.5 inches 6018 by 11 inches 6019 'na-legal': Specifies the North American legal size: 8.5 inches by 6020 14 inches 6021 'executive': Specifies the executive size (7.25 X 10.5 in) 6022 'folio': Specifies the folio size (8.5 X 13 in) 6023 'invoice': Specifies the invoice size (5.5 X 8.5 in) 6024 'ledger': Specifies the ledger size (11 X 17 in) 6025 'quarto': Specifies the quarto size (8.5 X 10.83 in) 6026 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 6027 ISO 269 6028 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 6029 ISO 269 6030 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 6031 ISO 269 6032 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 6033 ISO 269 6034 'iso-designated-long': Specifies the ISO Designated Long size: 110 6035 mm by 220 mm as defined in ISO 269 6036 'na-10x13-envelope': Specifies the North American 10x13 size: 10 6037 inches by 13 inches 6038 'na-9x12-envelope': Specifies the North American 9x12 size: 9 6039 inches by 12 inches 6040 'na-number-10-envelope': Specifies the North American number 10 6041 business envelope size: 4.125 inches by 9.5 inches 6042 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 6043 size 6045 Expires May 7, 1998 6047 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 6048 size 6049 'na-10x14-envelope': Specifies the North American 10x14 inch 6050 envelope size 6051 'na-number-9-envelope': Specifies the North American number 9 6052 business envelope size 6053 'na-6x9-envelope': Specifies the North American 6x9 envelope size 6054 'na-10x15-envelope': Specifies the North American 10x15 envelope 6055 size 6056 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 6057 in) 6058 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 6059 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 6060 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 6061 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 6062 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 6063 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 6064 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 6065 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 6066 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 6067 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 6068 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 6070 15. APPENDIX D: Processing IPP Attributes 6072 When submitting a print job to a Printer object, the IPP model allows 6073 a client to supply operation and Job Template attributes along with 6074 the document data. These Job Template attributes in the create 6075 request affect the rendering, production and finishing of the 6076 documents in the job. Similar types of instructions may also be 6077 contained in the document to be printed, that is, embedded within the 6078 print data itself. In addition, the Printer has a set of attributes 6079 that describe what rendering and finishing options which are supported 6080 by that Printer. This model, which allows for flexibility and power, 6081 also introduces the potential that at job submission time, these 6082 client-supplied attributes may conflict with either: 6084 - what the implementation is capable of realizing (i.e., what the 6085 Printer supports), as well as 6086 - the instructions embedded within the print data itself. 6088 The following sections describe how these two types of conflicts are 6089 handled in the IPP model. 6091 Expires May 7, 1998 6092 15.1 Fidelity 6094 If there is a conflict between what the client requests and what a 6095 Printer object supports, the client may request one of two possible 6096 conflict handling mechanisms: 6098 1) either reject the job since the job can not be processed exactly 6099 as specified, or 6100 2) allow the Printer to make any changes necessary to proceed with 6101 processing the Job the best it can. 6103 In the first case the client is indicating to the Printer object: 6104 "Print the job exactly as specified with no exceptions, and if that 6105 can't be done, don't even bother printing the job at all." In the 6106 second case, the client is indicating to the Printer object: "It is 6107 more important to make sure the job is printed rather than be 6108 processed exactly as specified; just make sure the job is printed even 6109 if client supplied attributes need to be changed or ignored." 6111 The IPP model accounts for this situation by introducing an "ipp- 6112 attribute-fidelity" attribute. 6114 In a create request, "ipp-attribute-fidelity" is a boolean operation 6115 attribute that is OPTIONALLY supplied by the client. The value 'true' 6116 indicates that total fidelity to client supplied attributes and values 6117 is required. The client is requesting that the Job be printed exactly 6118 as specified, and if that is not possible then the job MUST be 6119 rejected rather than processed incorrectly. The value 'false' 6120 indicates that a reasonable attempt to print the Job is acceptable. 6121 If a Printer does not support some of the client supplied Job Template 6122 attributes or values, the Printer SHALL ignore them or substitute any 6123 supported value for unsupported values, respectively. The Printer may 6124 choose to substitute the default value associated with that attribute, 6125 or use some other supported value that is similar to the unsupported 6126 requested value. For example, if a client supplies a "media" value of 6127 'na-letter', the Printer may choose to substitute 'iso-a4' rather than 6128 a default value of 'envelope'. If the client does not supply the "ipp- 6129 attribute-fidelity" attribute, the Printer assumes a value of 'false'. 6131 Each Printer implementation MUST support both types of "fidelity" 6132 printing (that is whether the client supplies a value of 'true' or 6133 'false'): 6135 - If the client supplies 'false' or does not supply the attribute, 6136 the Printer object SHALL always accept the request by ignoring 6137 unsupported attributes and by substituting unsupported values of 6138 supported attributes with supported values. 6140 Expires May 7, 1998 6142 - If the client supplies 'true', the Printer object SHALL reject 6143 the request if the client supplies unsupported attributes. 6145 Since a client can always query a Printer to find out exactly what is 6146 and is not supported, "ipp-attribute-fidelity" set to 'false' is 6147 useful when: 6149 1) The End-User uses a command line interface to request attributes 6150 that might not be supported. 6151 2) In a GUI context, if the End User expects the job might be moved 6152 to another printer and prefers a sub-optimal result to nothing at 6153 all. 6154 3) The End User just wants something reasonable in lieu of nothing 6155 at all. 6157 15.2 Page Description Language (PDL) Override 6159 If there is a conflict between the value of an IPP Job Template 6160 attribute and a corresponding instruction in the document data, the 6161 value of the IPP attribute SHOULD take precedence over the document 6162 instruction. Consider the case where a previously formatted file of 6163 document data is sent to an IPP Printer. In this case, if the client 6164 supplies any attributes at job submission time, the client desires 6165 that those attributes override the embedded instructions. Consider 6166 the case were a previously formatted document has embedded in it 6167 commands to load 'iso-a4' media. However, the document is passed to 6168 an end user that only has access to a printer with 'na-letter' media 6169 loaded. That end user most likely wants to submit that document to an 6170 that IPP Printer with the "media" Job Template attribute set to 'na- 6171 letter'. The job submission attribute should take precedence over the 6172 embedded PDL instruction. However, until companies that supply 6173 document data interpreters allow a way for external IPP attributes to 6174 take precedence over embedded job production instructions, a Printer 6175 might not be able to support the semantics that IPP attributes 6176 override the embedded instructions. 6178 The IPP model accounts for this situation by introducing a "pdl- 6179 override-supported" attribute that describes the Printer objects 6180 capabilities to override instructions embedded in the PDL data stream. 6181 The value of the "pdl-override-supported" attribute is configured by 6182 means outside IPP/1.0. 6184 This MANDATORY Printer attribute takes on the following values: 6186 - 'attempted': This value indicates that the Printer object 6187 attempts to make the IPP attribute values take precedence over 6189 Expires May 7, 1998 6190 embedded instructions in the document data, however there is no 6191 guarantee. 6192 - 'not-attempted': This value indicates that the Printer object 6193 makes no attempt to make the IPP attribute values take precedence 6194 over embedded instructions in the document data. 6196 At job processing time, an implementation that supports the value of 6197 'attempted' might do one of several different actions: 6199 1) generate an output device specific command sequence to realize 6200 the feature represented by the IPP attribute value 6201 2) parse the document data itself and replace the conflicting 6202 embedded instruction with a new embedded instruction that matches 6203 the intent of the IPP attribute value 6204 3) indicate to the Printer that external supplied attributes take 6205 precedence over embedded instructions and then pass the external 6206 IPP attribute values to the document data interpreter 6207 4) anything else that allows for the semantics that IPP attributes 6208 override embedded document data instructions. 6210 Since 'attempted' does not offer any type of guarantee, even though a 6211 given Printer object might not do a very "good" job of attempting to 6212 ensure that IPP attributes take a higher precedence over instructions 6213 embedded in the document data, it would still be a conforming 6214 implementation. 6216 At job processing time, an implementation that supports the value of 6217 'not-attempted' might do one of the following actions: 6219 1) Simply pre-pend the document data with the PDL instruction that 6220 corresponds to the client-supplied PDL attribute, such that if 6221 the document data also has the same PDL instruction, it will 6222 override what the Printer object pre-pended. In other words, 6223 this implementation is using the same implementation semantics 6224 for the client-supplied IPP attributes as for the Printer object 6225 defaults. 6226 2) Actually modify the embedded instructions to correspond to the 6227 semantics of the client-supplied IPP attributes. 6229 Note: The "ipp-attribute-fidelity" attribute applies to the Printer's 6230 ability to either accept or reject other unsupported attributes. In 6231 other words, if "ipp-attribute-fidelity" is set to 'true', a Job is 6232 accepted if and only if the client supplied attributes and values are 6233 supported by the Printer. Whether these attributes actually affect 6234 the processing of the Job when the document data contains embedded 6235 instructions depends on the ability of the Printer to override the 6236 instructions embedded in the document data with the semantics of the 6237 IPP attributes. If the document data attributes can be overridden 6239 Expires May 7, 1998 6240 ("pdl-override-supported" set to 'attempted'), the Printer makes an 6241 attempt to use the IPP attributes when processing the Job. If the 6242 document data attributes can not be overridden ("pdl-override- 6243 supported" set to 'not-attempted'), the Printer makes no attempt to 6244 override the embedded document data instructions with the IPP 6245 attributes when processing the Job, and hence, the IPP attributes may 6246 fail to affect the Job processing and output when the corresponding 6247 instruction is embedded in the document data. 6249 15.3 Suggested Operation Processing Algorithm for Create and Validate- 6250 Job operations 6252 When a Printer object receives a create request, the Printer object 6253 either accepts or rejects the request. When a Printer object receives 6254 a Validate-Job request it performs the same validation and returns the 6255 same results as for the Print-Job operation. In order to determine 6256 whether or not to accept or reject the request, the Printer SHOULD use 6257 the following algorithm or an equivalent one that produces the same 6258 results, including the status code precedence. 6260 In the following algorithm, processing continues step by step until a 6261 "rejects the request _" is encountered or the last step is reached. 6262 Each error return to the client SHOULD be made before the entire 6263 Document Content data stream is accepted, so that the client need not 6264 send all of the data for a request that is being rejected.: 6266 1. The Printer object checks to see if the requested major and minor 6267 version number is supported. If not, the Printer object rejects 6268 the request by returning the 'server-error-version-not-supported' 6269 status code in the response. The checking of the minor version 6270 number is implementation dependent. Some implementations MAY 6271 accept all minor version numbers, while others MAY only accept 6272 ones that are equal to or lower than the highest one that they 6273 support. 6275 2. The Printer object checks to see if the operation is supported as 6276 indicated in the Printer object's "printer-operations-supported" 6277 attribute. If not, the Printer rejects the request and returns 6278 the 'server-error-operation-not-supported' status code in the 6279 response. 6281 3. The Printer object checks to see if the client-supplied 6282 "attributes-charset" Operation attribute contains a supported 6283 charset value, i.e., the value is contained in the Printer 6284 object's "charset-supported" attribute. If not, the Printer 6285 object rejects the request and returns the 'client-error-charset- 6286 not-supported' status code. 6288 Expires May 7, 1998 6290 4. The Printer object checks to see if the client-supplied 6291 "attributes-natural-language" Operation attribute contains a 6292 supported natural language, i.e., the value is contained in the 6293 Printer object's "natural-language-supported" attribute. If not, 6294 the Printer object flags the value as not supported, but does not 6295 reject the request (even if "ipp-attribute-fidelity" is 'true'). 6297 5. For the Print-URI and Send-URI operations, the IPP object checks 6298 to see if the client-supplied "document-uri" Operation attribute 6299 contains a supported scheme, i.e., the value is contained in the 6300 Printer object's "reference-uri-schemes-supported" attribute. If 6301 it is not supported, the Printer object rejects the request and 6302 returns the 'client-error'-uri-scheme-not-supported' status code. 6303 The Printer object checks the length of the "document-uri" value. 6304 If it exceed the implementation-defined maximum length, the 6305 Printer object rejects the request and returns the 'client-error- 6306 request-uri-too-long' status code. 6308 6. The Printer object checks to see if the client-supplied 6309 "document-format" operation attribute, if supplied, contains a 6310 supported document format value, i.e., the value is contained in 6311 the Printer object's "document-format-supported" attribute. If 6312 it is not supported, the Printer object rejects the request and 6313 returns the 'client-error-document-format-not-supported' status 6314 code. If the client did not supply a "document-format" operation 6315 attribute, the Printer object assumes that the document format is 6316 that specified by the Printer's "document-format " attribute. 6318 7. The Printer object checks to see if the client supplied an "ipp- 6319 attribute-fidelity" Operation attribute. If the attribute is 6320 missing (not supplied by the client), the Printer assumes that 6321 the value is 'false'. 6323 8. The Printer object loops through all the client-supplied Job 6324 Template attributes, checking to see if the supplied attribute 6325 and values are supported, e.g., the value of the "xxx" attribute 6326 in the request is one of the values in the Printer's "xxx- 6327 supported" attribute. If an attribute is not supported, i.e., 6328 there is no corresponding Printer object "xxx-supported" 6329 attribute, the Printer object flags the attribute as unsupported. 6330 If an attribute value is not supported, i.e., there is no 6331 corresponding value in the Printer object's "xxx-supported" 6332 attribute, the Printer object flags the value as unsupported. If 6333 the attribute contains more than one value, each value is checked 6334 and each unsupported value is separately flagged as unsupported. 6336 Expires May 7, 1998 6338 9. Once all the Operation and Job Template attributes have been 6339 checked individually, the Printer object SHOULD check for any 6340 conflicting values among all the supported values supplied by the 6341 client. For example, a Printer object might be able to staple 6342 and to print on transparencies, however due to physical stapling 6343 constraints, the Printer object might not be able to staple 6344 transparencies. Each attribute value involved in a cross- 6345 attribute conflict is flagged as a conflicting. 6347 10. If there are any attributes or attribute values flagged as 6348 unsupported or conflicting, the Printer object: 6349 (1) copies the unsupported attributes to the Unsupported 6350 Attributes response group and sets their value to 'unsupported'. 6351 (2) copies the supported attributes and their unsupported 6352 attribute values to the Unsupported Attributes response group. If 6353 any attributes are multi-valued, only the unsupported values of 6354 the attributes are copied. 6355 (3) copies the supported attributes and their conflicting 6356 attribute values to the Unsupported Attributes response group. 6357 The Printer object only copies over those attributes that the 6358 Printer object either ignores or substitutes in order to resolve 6359 the conflict, and it returns the original values which were 6360 supplied by the client. For example suppose the client supplies 6361 "finishings" equals 'staple' and "media" equals 'transparency', 6362 but the Printer object does not support stapling transparencies. 6363 If the Printer chooses to ignore the stapling request in order to 6364 resolve the conflict, the Printer objects returns "finishings" 6365 equal to 'staple' in the Unsupported Attributes response group. 6366 If any attributes are multi-valued, only the conflicting values 6367 of the attributes are copied. 6368 (4) If "ipp-attribute-fidelity" is set to 'true', the Printer 6369 object rejects the request and returns the 'client-error- 6370 conflicting-attributes' status code, if there were any conflicts. 6371 Otherwise, the Printer object returns the 'client-error- 6372 attribute-not-supported' status code. 6374 11. If the requested operation is the Validate-Job operation, 6375 the Printer object returns: 6376 (1) the "successful-ok" status code, if there are no unsupported 6377 or conflicting attributes or values. 6378 (2) the "successful-ok-conflicting-attributes, if there are any 6379 conflicting attribute or values. 6380 (3) the "successful-ok-ignored-or-substituted-attributes, if 6381 there are only unsupported attributes or values. 6383 12. If "ipp-attribute-fidelity" is set to 'false' (or it was not 6384 supplied by the client), the Printer object: 6385 (1) removes all unsupported attributes from the Job object. 6387 Expires May 7, 1998 6388 (2) for each unsupported value, removes either the unsupported 6389 value or substitutes the unsupported attribute value with some 6390 supported value. If an attribute has no values after removing 6391 unsupported values from it, the attribute is removed from the Job 6392 object (so that the normal default behavior at job processing 6393 time will take place for that attribute). 6394 (3) for each conflicting value, removes either the conflicting 6395 value or substitutes the conflicting attribute value with some 6396 other supported value. If an attribute has no values after 6397 removing conflicting values from it, the attribute is removed 6398 from the Job object (so that the normal default behavior at job 6399 processing time will take place for that attribute). 6401 13. Once the Job object has been created, the Printer object 6402 accepts the request and returns to the client: 6403 (1) the 'successful-ok' status code, if there are no unsupported 6404 or conflicting attributes or values. 6405 (2) the 'successful-ok-conflicting-attributes' status code, if 6406 there are any conflicting attribute or values. 6407 (3) the 'successful-ok-ignored-or-substituted-attributes' status 6408 code, if there are only unsupported attributes or values. 6410 The Printer object also returns Job status attributes that 6411 indicate the initial state of the Job ('pending', 'pending-held', 6412 'processing', etc.), etc. See Print-Job Response, section 6413 3.2.1.2. 6415 14. The Printer object accepts the appended Document Content 6416 data and either starts it printing, or spools it for later 6417 processing. 6419 15. If there were no attributes or values flagged as 6420 unsupported, or the value of 'ipp-attribute-fidelity" was 6421 'false', the Printer object is able to accept the create request 6422 and create a new Job object. If the "ipp-attribute-fidelity" 6423 attribute is set to 'true', the Job Template attributes that 6424 populate the new Job object are necessarily all the Job Template 6425 attributes supplied in the create request. If the "ipp- 6426 attribute-fidelity" attribute is set to 'false', the Job Template 6427 attributes that populate the new Job object are all the client 6428 supplied Job Template attributes that are supported or that have 6429 value substitution. Thus, some of the requested Job Template 6430 attributes may not appear in the Job object because the Printer 6431 object did not support those attributes. The attributes that 6432 populate the Job object are persistently stored with the Job 6433 object for that Job. A Get-Attributes operation on that Job 6435 Expires May 7, 1998 6436 object will return only those attributes that are persistently 6437 stored with the Job object. 6439 Note: All Job Template attributes that are persistently stored 6440 with the Job object are intended to be "override values"; that 6441 is, they that take precedence over whatever other embedded 6442 instructions might be in the document data itself. However, it 6443 is not possible for all Printer objects to realize the semantics 6444 of "override". End users may query the Printer's "pdl-override" 6445 attribute to determine if the Printer either attempts or does not 6446 attempt to override document data instructions with IPP 6447 attributes. 6449 16. There are some cases, where a Printer supports a Job 6450 Template attribute and has an associated default value set for 6451 that attribute. In the case where a client does not supply the 6452 corresponding attribute, the Printer does not use its default 6453 values to populate Job attributes when creating the new Job 6454 object; only Job Template attributes actually in the create 6455 request are used to populate the Job object. The Printer's 6456 default values are only used at Job processing time if no other 6457 IPP attribute or instruction embedded in the document data is 6458 present. 6460 Note: If the default values associated with Job Template 6461 attributes that the client did not supply were to be used to 6462 populate the Job object, then these values would become "override 6463 values" rather than defaults. If the Printer supports the 6464 'attempted' value of the "pdl-override" attribute, then these 6465 override values could replace values specified within the 6466 document data. This is not the intent of the default value 6467 mechanism. A default value for an attribute is used only if the 6468 create request did not specify that attribute (or it was ignored 6469 when allowed by "ipp-attribute-fidelity" being 'false') and no 6470 value was provided within the content of the document data. 6472 17. If the client does not supply a value for some Job Template 6473 attribute, and the Printer does not support that attribute, as 6474 far as IPP is concerned, the result of processing that Job (with 6475 respect to the missing attribute) is undefined. 6477 18. The Printer object uses its own configuration and 6478 implementation specific algorithms for scheduling the Job in the 6479 correct processing order. Once the Printer object begins 6480 processing the Job, the Printer changes the Job's state to 6481 'processing'. If the Printer object supports PDL override (the 6482 "pdl-override" attribute set to 'attempted'), the implementation 6484 Expires May 7, 1998 6485 does its best to see that IPP attributes take precedence over 6486 embedded instructions in the document data. 6488 19. The Printer object continues to process the Job until it can 6489 move the Job into the 'completed' state. If an Cancel-Job 6490 operation is received, the implementation eventually moves the 6491 Job into the 'canceled' state. If the system encounters errors 6492 during processing that do not allow it to progress the Job into a 6493 completed state, the implementation halts all processing, cleans 6494 up any resources, and moves the Job into the 'aborted' state. 6496 20. Once the Job moves to the 'completed', 'aborted', or 6497 'canceled' state, it is an implementation decision as to when to 6498 destroy the Job object and release all associated resources. 6499 Once the Job has been destroyed, the Printer would return either 6500 the "client-error-not-found" or "client-error-gone" status codes 6501 for operations directed at that Job. 6503 Some Printer object implementations may support "ipp-attribute- 6504 fidelity" set to 'true' and "pdl-override" set to 'attempted' and yet 6505 still not be able to realize exactly what the client specifies in the 6506 create request. This is due to legacy decisions and assumptions that 6507 have been made about the role of job instructions embedded within the 6508 document data and external job instructions that accompany the 6509 document data and how to handle conflicts between such instructions. 6510 The inability to be 100% precise about how a given implementation will 6511 behave is also compounded by the fact that the two special attributes, 6512 "ipp-attribute-fidelity" and "pdl-override", apply to the whole job 6513 rather than specific values for each attribute. For example, some 6514 implementations may be able to override almost all Job Template 6515 attributes except for "number-up". 6517 15.4 Using Job Template Attributes During Document Processing. 6519 The Printer object uses some of the Job object's Job Template 6520 attributes during the processing of the document data associated with 6521 that job. These include, but are not limited to, "orientation", 6522 "number-up", "sides", "media", and "copies". The processing of each 6523 document in a Job Object SHALL follow the algorithm below. This 6524 algorithm is intended only to identify when and how attributes are to 6525 be used in processing document data and any algorithm that 6526 accomplishes the same effect can be used to implement this 6527 specification. 6529 1. Using the client supplied "document-format" attribute or some 6530 form of format detection algorithm (if the value of "document- 6531 format" is not specific enough), determine whether or not the 6533 Expires May 7, 1998 6534 document data has already been formatted for printing. If the 6535 document data has been formatted, then go to step 2. Otherwise, 6536 the document data SHALL be formatted. The formatting algorithm is 6537 implementation defined and is not specified by this 6538 specification. The formatting of the document data uses the 6539 "orientation" attribute to determine how the formatted print data 6540 is placed on a print-stream page, see section 4.2.15 for the 6541 details. 6543 2. The document data is in the form of a print-stream in a known 6544 media type. The "page-range" attribute is used to select, as 6545 specified in section 4.2.14, a sub-sequence of the pages in the 6546 print-stream that are to be processed and images. 6548 3. The input to this step is a sequence of print-stream pages. This 6549 step is controlled by the "number-up" attribute. If the value of 6550 "number-up" is N, then during the processing of the print-stream 6551 pages, each N print-stream pages are positioned, as specified in 6552 section 4.2.8, to create a single impression. If a given document 6553 does not have N more print-stream pages, then the completion of 6554 the impression is controlled by the "multiple-document-handling" 6555 attribute as described in section 4.2.6; when the value of this 6556 attribute is 'single-document', the print-stream pages of 6557 document data from subsequent documents is used to complete the 6558 impression. 6560 The size(scaling), position(translation) and rotation of the 6561 print-stream pages on the impression is implementation defined. 6562 Note that during this process the print-stream pages may be 6563 rendered to a form suitable for placing on the impression; this 6564 rendering is controlled by the values of the "printer-resolution" 6565 and "print-quality" attributes as described in sections 4.2.10 6566 and 4.2.11. In the case N=1, the impression is nearly the same as 6567 the print-stream page; the differences would only be in the size, 6568 position and rotation of the print-stream page and/or any 6569 decoration, such as a frame to the page, that is added by the 6570 implementation. 6572 4. The collection of impressions is placed, in sequence, onto sides 6573 of the media sheets. This placement is controlled by the "sides" 6574 attribute and the orientation of the print-stream page, as 6575 described in section 4.2.9. The orientation of the print-stream 6576 pages affects the orientation of the impression; for example, if 6577 "number-up" equals 2, then, typically, two portrait print-stream 6578 pages become one landscape impression. Note that the placement of 6579 impressions onto media sheets is also controlled by the 6580 "multiple-document-handling" attribute as described in section 6581 4.2.6. 6583 Expires May 7, 1998 6585 5. The "copies" and "multiple-document-handling" attributes are 6586 used to determine how many copies of each media instance are 6587 created and in what order. See sections 4.2.6 and 4.2.13 for the 6588 details. 6590 6. When the correct number of copies are created, the media 6591 instances are finished according to the values of the 6592 "finishings" attribute as described in 4.2.12. Note that 6593 sometimes finishing operations may require manual intervention to 6594 perform the finishing operations on the copies, especially 6595 uncollated copies. This specification allows any or all of the 6596 processing steps to be performed automatically or manually at the 6597 discretion of the Printer object. 6599 16. APPENDIX E: Generic Directory Schema 6601 This section defines a generic schema for an entry in a directory 6602 service. A directory service is a means by which service users can 6603 locate service providers. In IPP environments, this means that IPP 6604 Printers can be registered (either automatically or with the help of 6605 an administrator) as entries of type printer in the directory. IPP 6606 clients can search or browse for entries of type printer. Clients use 6607 the directory service to find entries based on naming, organizational 6608 contexts, or filtered searches on attribute values of entries. For 6609 example, a client can find all printers in the "Local Department" 6610 context. Authentication and authorization are also often part of a 6611 directory service so that an administrator can place limits on end 6612 users so that they are only allowed to find entries to which they have 6613 certain access rights. IPP itself does not require any specific 6614 directory service protocol or provider. 6616 Note: Some directory implementations allow for the notion of 6617 "aliasing". That is, one directory entry object can appear as 6618 multiple directory entry object with different names for each object. 6619 In each case, each alias refers to the same directory entry object 6620 which refers to a single IPP Printer object. 6622 The generic schema is a subset of IPP Printer Job Template and Printer 6623 Description attributes (sections 4.2 and 4.4). These attributes are 6624 identified as either MANDATORY or OPTIONAL for the directory entry 6625 itself. This conformance labeling is NOT the same conformance 6626 labeling applied to the attributes of IPP Printers themselves. 6627 MANDATORY attributes MUST be associated with each directory entry. 6628 OPTIONAL attributes SHOULD be associated with the directory entry (if 6629 known or supported). In addition, all directory entry attributes 6631 Expires May 7, 1998 6632 SHOULD reflect the current attribute values for the corresponding 6633 Printer object. 6635 In order to bridge between the directory service protocol and IPP, one 6636 of the MANDATORY attributes is the "printer-uri" attribute. The IPP 6637 client addresses an IPP Printer using its URI and so the directory 6638 entry's "printer-uri" becomes the link between the directory entry and 6639 the corresponding IPP Printer. 6641 The following attributes define the generic schema for directory 6642 entries of type printer: 6644 printer-uri MANDATORY Section 4.4.1 6645 printer-name OPTIONAL Section 4.4.2 6646 printer-location OPTIONAL Section 4.4.3 6647 printer-info OPTIONAL Section 4.4.4 6648 printer-more-info OPTIONAL Section 4.4.5 6649 printer-make-and-model OPTIONAL Section 4.4.7 6650 color-supported OPTIONAL Section 4.4.22 6652 finishings-supported OPTIONAL Section 4.2.6 6653 number-up-supported OPTIONAL Section 4.2.7 6654 sides-supported OPTIONAL Section 4.2.8 6655 media-supported OPTIONAL Section 4.2.11 6656 printer-resolution-supported OPTIONAL Section 4.2.12 6657 print-quality-supported OPTIONAL Section 4.2.13 6658 document-format-supported OPTIONAL Section 4.4.18 6660 Expires May 7, 1998